GLOBAL – As the end of the Appstravaganza series comes into sight, we’ve spoken to Tero Ahola, Team Manager at Digia Plc, to find out what goes into making an app. Or more importantly, our very own Nokia Conversations app, which will be ready for public release soon.
What were the main objectives for the app?
Being able to access the official Nokia blog with your Nokia. Meaning that the application needs to be able to handle a lot of different media content with a simple user interface. The application gives you several intuitive methods to browse through the articles written by Nokia Conversations authors. You are also able to share your favorite articles in social media, take part in discussion with the authors and your fellow readers, listen to podcasts and watch videos.
How long has it taken to create so far?
We started the development in May. In Finland we have a four week holiday season in July (that’s when you don’t have to use winter tires in your car for domestic trips). So the total development time was a little over two months. Including a few late night development sessions and a couple of weekends squeezing bugs.
What have been the hardest and easiest parts of that? Why?
The hardest part in this kind of a rapid application development project is to share your time right, i.e. to decide how much time to use for each part of the application. This estimation is also something that should not be affected by your personal preferences. For example integrating podcasts to the mobile application got me really excited and thanks to the mobile application, I’ve now been able to listen the Conversations podcasts while commuting. It was a hard decision to move on to next task on my work list instead of trying out just “one more thing” on the podcast player.
Unsurprisingly one of the easiest part of the implementation was loading the articles and the related content from Conversations service. The reason is that the existing QtQuick UI components integrate really well on remote XML data sources and also that the Conversations server developers did really good job in implementing the features we needed for the mobile application. During the whole project only a half bag of Juhla Mokka was consumed on creating Qt or Symbian C++ classes (Juhla Mokka is a Finnish coffee brand used at Digia offices for stimulation and sometimes also for work estimation purposes).
What are the tools you’ve used?
The target platform for the application was Symbian^3 and the preferred development framework Qt Quick with Qt for selected parts. More specifically we used the latest version of Qt available for the target devices (4.7.3 at the time of writing) and Qt Creator as the IDE for development, building and debugging. Qt Simulator made the deployment to the target device smoother, because it allows you to try out for example different layouts and user interface flows as they appear on the target device.
Testing on the target device is also needed, for example the usability of touch controls needs experimenting with different screen sizes and landscape vs. portrait orientation.
How did you test the app and what changes did that bring in?
Most of the testing was related to how the actual end user uses the application. For application development using a declarative programming language like QML means that separating the UI from implementation (or business logic) becomes natural. The APIs and libraries you are using have already been implemented and tested comprehensively, you are working on user interface level and most of the verification is actually done from user perspective; even the unit tests. Declarative programming also gives you the opportunity to experiment with different user interface concepts easily. For application development projects this is a huge improvement: you can now make user interface design decisions during development sprints, based on feedback received from tests done on the end user role. So in addition to the usual verification process we carried out tests with prototype versions of the application on the target devices to find out which one of the alternative designs matches the user’s need best.
What have been the big changes since the first versions of the app?
This is my favorite attribute in agile projects: for me as a developer it feels like we’ve been making progress incrementally, step by step. The first versions of the app were basically able to show the headlines of the articles in two different layouts and now you can browse the articles almost every way you can imagine, get a list of suggested articles, share them to your friends, search with keywords and watch, and listen to, the multimedia content included. Considering the total workload during the project one of the big things was definitely implementing the use cases of browsing through articles and reading an article. We spent a lot of time and effort to design the list and article layouts and to improve their readability and performance.
Where next for the app?
We had a couple of really interesting use cases, like offline usage and notifications on new articles that did not make it to the first version of the application because of priority reasons. I would like to see those in the next version of the application. I’ve now been using the application during the project on Symbian^3 phones and I see it as a good communication channel between Nokia and their customers, so I would like to see it released also for N9 and Mango. For N9 there are only a few use cases that require actual porting because of platform specific implementation (like hardware keys for volume control). And also for Mango the implementation would be feasible, because of the similarities of QML/Qt and XAML/Silverlight in concept level.
What are your top tips for someone wanting to get started in mobile app development?
Keep it simple. Ask yourself a question “what is the problem your application solves?” Focus on the user and make your solution easy to use and reliable.
Start with examples. A Hello World example is a good starting point if you have never used the development environment before. Then you can proceed to the libraries you need. Reading the examples shown in the documentation or included in the development kits as source code give you quite a good overview of the basic use cases for each component or library. Also pay attention to the things that seem to be missing from the examples or documentation; they may give you a hint on the features that will take more effort to implement. In case of open source platforms also the unit and integration test cases of the platform help you to find out the expected functionality of the APIs.
Thanks to Tero for taking the time to talk to us about the app. If you have any questions or comments for Tero, let us know in the comments below.
Image credit: Paulig.