I’ve been developing mobile apps for the past 5 years, starting as a senior .NET developer with no previous experience in mobile. The whole time was like a roller coaster with successes like hundred thousands of installs in days and flops struggling to meet product deadline for a consultancy project.
Here I wanted to summarize what it takes to learn mobile development for an ASP.NET developer and how much an independent consultant can earn from it. I won’t be speaking about games here. It’s a different world with different tools and a business model.
Generally, mobile applications are very similar to what you used to build for desktop or web. There are several views, data providers, navigation, security, and design. However, some parts are different and sometimes require external frameworks to be implemented. You have to learn new languages, frameworks, and approaches.
The most notable thing is security. Most of your users won’t use secure corporate networks, but will use public networks. It may be complicated to make user management systems like Active Directory work correctly. Another problem is that your app will probably be installed on a personal device of an employee. If this employee leaves the client’s company or the device gets stolen, you should be able to block access to the application and erase all data stored on the device locally. Companies like Blackberry and Apperian provide solutions to address this issue.
The other important thing is integration with a smartphone. You may need to send notifications, take pictures with a camera or use geo-location. So, you should learn and use frameworks to access these capabilities of a mobile device. These APIs are different for every platform you may target. Fortunately, there are products that help you learn just a single API. Services like Azure or Xenarius will take most of the hassle of themselves.
With a quick search, you will find that there are only five approaches to building mobile applications:
- Consultants make a native application for every platform a business wishes to target. By saying ‘native’, I mean using Java and the NDK framework on Android and Objective-C/Swift and the Cocoa Touch framework for iOS. Native applications use technologies used to build most system applications. These applications can benefit from the use of system controls and these apps usually look like a part of the system. Most important tools like IDE, the debugger or notification framework are provided by Apple and Google and are free.
- Application templates prebuilt by a template vendor. Usually, you receive a zip-archive with source code for both platforms. Developers should take the code and adapt it according to their business requirements. This will take some time but much less than making the whole application from scratch. Examples are: myapptemplates.com and ibuildapp.com
- The fourth approach is a mobile application builder. These designers allow you to build an application without dealing with low-level code of the native framework. They allow you to focus on higher-level tasks like the user flow, data structures, and business logic. These app-builders may produce hybrid applications like Appery, Mendix or native apps like Xenarius or Filemaker. Some will require writing code like Appery, others provide a visual business logic designer (Mendix or Xenarius). Most of the app builders will force you to use their cloud services. If you decide to cancel your subscription, your apps will stop working. The only exception is Xenarius where you can leverage your web-development skills. Xenarius doesn’t force you to use their cloud service. Instead, you build a web service yourself using a framework of your choice and then tell your mobile app to use this service. If you decide to cancel the subscription, your app continues to be functional.
- Also, there are several frameworks targeting multiple platforms. The most known are Xamarin and QT. Xamarin was built on top of Mono – an open-source implementation of the .NET runtime. This toolkit allows you to write native applications in C#. You get full access to system APIs. You can write an application that is indistinguishable from an app written in Objective-C but you will get two separate code-bases for both platforms. Alternatively, you can use the Xamarin.Forms framework that will hide native APIs from you. You will lose in flexibility but will save on size of your codebase.
The most important tools: IDEs, the debugger, simulators, and frameworks are provided by Google and Apple for free. You should pay a small fee to be registered as a developer within their systems and after that, you can download IDEs for free, build and deploy your apps. At the time of publication, prices were: one-time $25 fee to register as a developer in the Play Store and $99/year to register as a developer with Apple.
You will also need a Mac computer to write apps targeting iOS and several devices to test your application. Both Apple and Google provide simulators that allow you to test and debug applications on your computer. Unfortunately, behavior on a real device can be different and it’s better to have a set of smartphones of different models and different OS versions. You can save by buying used devices. They will fit perfectly for testing purposes.
If you plan to use Xamarin, you can survive without a Mac computer. Their tooling allows you to build your apps on Windows. However, their toolkit isn’t free. Prices are starting from $999/year per developer. Your apps won’t stop working if you decide to cancel your subscription, though.
Hybrid applications can be made in various web IDEs or even plain text editors. Most of them are free and versatile. You may be OK without a Mac if you use the PhoneGap build service. The service is provided by Adobe and allows developers to build their hybrid applications in the cloud. You upload your signing certificates to the service, source code of your app and get a compiled bundles targeting every platform. You can download and test them from your smartphone or publish them to the Play Store or App Store. The service costs $10/month.
App builder prices vary. Some charge per developer like Xenarius, some charge for every user like OutSystems, others charge for an amount of consumed resources.
The learning curve is steep, especially for iOS development. Apple addresses this issue with the new programming language Swift, but it’s still a long way to go. Stanford’s “iPhone Application Development” course will take about 6 weeks to watch videos and complete all homework. Practicing on some test project will take even more time. For some folks, it takes about 8 months to become employable. Double this number to be ready for writing apps for two platforms.
It may take less if you decide to start building hybrid applications or plan to use a tool like Xenarius. You will spend some time figuring out their IDE interface, but you won’t have to study the system libraries to start writing real-world apps for your clients.
It will also take less time to make an app using an app builder.
“18 weeks. As per flyingcow.mobi most frequent project estimates it would take to create core front- and backend part of an iOS app.” Monisha Mann, Analyst
“The whole thing usually takes months, from the starting of the analysis to the app store release. For example, 6 months is an acceptable duration for that period, but I have seen many projects that go on for years.” Yunus Mihei, iOS developer
Personally, I gave up on Objective-C development in a month and eventually moved to Xamarin platform and, generally, I was happy with it. I found Objective-C to be extremely verbose and XCode to be inconvenient to use. I had previous experience with C++ and C# development and I still struggled with the Objective-C syntax. On the other hand, XCode was inconvenient compared to Visual Studio and Eclipse I used in the past. There were no shortcuts for obvious tasks and I had to move my hands from keyboard to mouse more frequently than I’d like. However, Android tools and frameworks are much more convenient. Especially with free IntelliJ IDEA.
The problems mobile developers are facing are common for the whole software development industry. There is a big problem with job estimates. When I was building a shopping list app Tote Bag, it took me about a week to make the UITableView work the way I wanted it to do. I didn’t expect a 5-day delay in a place which I expected to finish before lunch. While being quite surprising for clients, it’s sad truth for all software developers. The worst of all estimates are those made too early and never corrected. Unfortunately, even if estimates are done by developers when requirements are collected, most of the time programmers still can’t generally keep to their estimates.
Unfortunately, failing to meet your own estimates may lead to reputation losses and conflicts with clients. It’s better to allocate more time than you will actually need, but not too much to still keep competitive prices. Of course, native development, taking so much time, is very expensive. By using alternative approaches, you can offer more competitive rates compared to mobile developers writing fully-native mobile applications. This will lead to lower budgets, shorter projects, met deadlines and happy customers. At the end of the day, you will be booked better with a bigger number of projects. Happy coding!