Engineering Mobile application projects (part 1)
Mobile applications project management and methodologies differs from other traditional software projects. Mobile projects development has gained its full momentum and is in all rage in this present day and age. I have seen that tips/guide in management specifically in mobile projects are (rather) lacking or not thorough enough and thus, i decided to write my own. Here is a little background on myself: I have 3+ years in developing enterprise and public apps and have exposure in the full development lifecycle of mobile projects. There is no magic one solution-fit-all though, because every projects have their intricacies.
The first step is gathering requirements. I will skip this because it applies to any software projects really. It is a crucial stage where you will need to understand how the system work in order to effectively gather the requirements and it will eventually lay the foundation stone for the rest of the development lifecycle.
0x01: Choice of development tools
You need to know for whom you are developing. Is it a general public app or an enterprise application? This is the first question that pops in mind because it is an important criteria for choosing your development tools.
Who is the client?
If you are developing for the general public, i almost always will develop a native app. Each platform have their own design guidelines and you must be sure to adhere to that if you want a good rating. Web cross-platforms apps doesn’t quite follow a specific design patterns from the iOS, Android and other platforms.
Below i will give you a case for using Native apps and using a cross platform such as phonegap/cordova. Note i have excluded technologies like Xamarin which compiles down to native code for the target platforms. I haven’t personally used it yet but if you have the opportunity i will strongly encourage you to since i really like C# as language, Visual Studio as the IDE and, well everything looks really neat.
|Native Pros||Cross-platform pros|
|Adhere to design guidelines||Single codebase for all the platforms|
|Native API access||Cuts down development cost|
|Native performance||Faster than developing on all platforms|
Ultimately the client will dictate the development tool choice. Based on their criteria, you need to choose a platform. If the client is an enterprise who doesn’t quite care about UX design guidelines and for whom the app will be rather data-centric, you may go the cross-platform route if they agree. Note that web app won’t be available in the app store so
Form factor consideration
Another important point is to know for what device the client is going to use- Tablet or smart phone (or even phablet?). For iOS this is not so crucial since an iPhone app will run inside a small viewport in a tablet and will not break everything.
Things get more complicated for Android because of all the device fragmentation – there are all kinds of screen resolutions and form factors. If the client specifies only one of them (tablet only or smartphone only) – it will certainly be a big burden removed from your shoulders. This will greatly simplify your design and development. I will talk more on that later.
0x02: App Design
The design is the place where your client will get a good idea on how the app will look like. The graphical layer is the final layer after all planning and interactions have been decided. I think that every mobile developer need to be specially good in UI design and patterns. You need to learn about the best practices and have a good notion on how the end-users will want to use the app. You will notice in the Appstore and play store that apps often get very favorable ratings and overall user satisfaction if they have a very good UI.
Graphics are usually created in Photoshop with Adobe Illustrator often used to create scalable images. There is a MAC OS application called Sketch which is a much cheaper option for those interested in starting out in UI design. You will need to export your files in png files, more specifically png-24. Other apps to resize your images is also very useful. But there are many other free and open-source tool that you may use, just google it.
If you are designing for iOS head to the iOS Human Interface Guidelines (HIG) to understand what Apple want from you in terms of look and feel as well as controls and navigation.
If you are developing for Android head to the Android design guidelines – your place for learning how to design Android apps. There is a tool called Resizer which automatically resize png files and 9 patches in several densities (it generates ldpi, mdpi and hdpi png files automatically).
The brainstorming session
A great way to start the design phase is to start with a brainstorming session and ask yourself the following questions:
- What the application experience is
- What the application is meant to do
- Who is the intended audience
You will eventually able to flesh out the form and functions of the app. With this you should be able to:
- Have a clear, concise sentence or two about the app
- Core feature
- People who will be using the app
When planning out, it is best to start on paper. It is important to distinguish between clickable actions and informational items. Pen & paper is the best to start, you might only need this and there is even no need to use a wireframing apps. Don’t get too design heavy at this stage. Placement is what is most important at this stage. A good idea is to annotate and document your designs so that your client will better understand your ideas and reasoning as well as asking fewer questions.
High fidelity design
Next, you can move to a professional software to design your app and move to digital wireframing. You can distribute them to the entire team or with the client. Here you will choose your themes and colors you will use for the app. You will also choose the icons. control designs and any other misc graphical images designs. At this point the service of a graphical designer will be really helpful.
Make your Spec
After the design have been carried out, you need to create a spec containing specifications of all the screens and explain how to transition to other screen is made. You will need to identify all the use-case and design your UML diagrams, models and other data structure to explain the system to the developers. The mobile developers can then start the development process. Now you may use one of the different development methodologies that exists; you will mostly use one of the Agile methodology. You should target a test-driven approach to development. This is up to you to decide.
In the next part of the series i will talk on some of the development tools the mobile developer can use. Stay tuned.
Hope you enjoyed my guide, feedbacks are welcomed.