By: Louis Erlanger, Guest Contributor
The laws of physics dictate that if you are not mobile you are not going anywhere. A similar law governs survival for modern day software development careers in New York and the rest of the country.
Mobile development is the place to be to remain viable.
So what do you do if your experience is limited to PCs, networks and the web? For Microsoft developers, clearly the smoothest transition is to Windows phone and tablet development. The C# and VB languages are fully supported, and development can be done within the familiar Visual Studio environment. The official Windows Phone website is http://developer.windowsphone.com, and it contains a wealth of tutorials to get you started.
But here’s the dilemma: Windows phones and tablets are currently only a small piece of the mobile pie. iOS and Android phones and tablets currently rule the mobile world. So how does a Windows developer reach the rest of the pie?
1) Mono: The easiest option is to work with an open source framework called Mono. Mono allows a developer to create apps for all three platforms using C#. While this may seem like an easy way to go, there is a tradeoff: apps generated by Mono may run slower than native apps. Mono can be downloaded at http://www.mono-project.com, and the website also includes full documentation and tutorials.
2) Adobe Flex: A second option that also falls into the “path of least resistance” category is Adobe Flex, an open source framework for building mobile apps that work on both iOS and Android, as well as on the Blackberry. Again, your resulting apps may be a bit slower than native apps. Information and a downloadable SDK are available at http://www.adobe.com/devnet/flex.html.
3) Native iOS and Android:If you are willing to bite the bullet and learn native iOS and Android, the good news is that it is not as difficult as you may think. All mobile devices have some things in common:
The languages used for development are object-oriented. Native Android development is done in Java, and native iOS development is done in Objective C, and both of these languages have constructs that are similar to C#.
Mobile interfaces are all developed using some form of XML, which is familiar to most Microsoft developers.
Development conforms to the Model/View/Controller (MVC) paradigm already familiar to .NET developers.
Native iOS development is the biggest challenge for Microsoft people, as you will have to work on an Apple PC. You will also need to purchase an Apple ID, and all iOS apps must also go through an approval process before they are allowed to be placed in the Apple app store. The official apple iOS developer website is https://developer.apple.com/devcenter/ios/index.action.
Android is open source so there is no charge for Android development and tools, and no approval process for placing apps in the Google Play store. Android apps can be developed on a Windows or Apple PC. The official Android developer website is https://developer.android.com. You will also need to download the Eclipse Integrated Development Environment (IDE).
Okay, so you’ve made your decision about whether to use Mono, Flex or go native. What else do you need to know?
The first thing I would advise is to spend some time with mobile devices. Play with their features. Download some existing apps. Get a feel for the possibilities and the complications you may face. Mobile devices are not PCs. The average smart phone comes with many specialized, built-in functions, including voice (phone calls, voice recognition), text messaging, a GPS, and sensors to receive information about touch, movement, and orientation (landscape vs. portrait).
These can complicate your development, as you must code for phone call interruptions, changes in physical orientation, etc. Mobile devices also have much less memory and storage space than PCs. Code must be tight and memory management is a big consideration. Lastly, mobile devices come in many forms – phones, tablets, and in the case of Android, a huge number of manufacturers. Testing requires the use of emulators that mimic the functionality of various devices, and this increases testing time substantially.
The good news is that there are a lot of great resources out there to help a Windows developer move into mobile development. In addition to the ones mentioned, the educational website Lynda.com offers courses in Windows Phone, iOS, Android, and Flex development, and a subscription is only $25/month. The courses are clear, complete, and follow a logical progression.
There is also an excellent free educational website called The New Boston that has very good tutorials on iOS and Android development. It is run by a wise-cracking young man who starts many of his videos with “wassup people?”, but his courses are clear and logical, and as a bonus, entertaining.
Lastly, there are two very good books on beginning iOS and Android development written by mobile technology author and trainer Wei-Meng Lee that can be accessed here. The books are clearly written, logically organized and contain plenty of examples.
Moving to mobile development can be a challenge for Microsoft developers, but the work is rewarding and there are many tools and educational materials available to smooth the transition. Good luck!
About the Author:
Louis Erlanger is president of GPI International, a technology consulting firm that specializes in systems for the music and entertainment industry. An award winning musician, Erlanger spent over a decade designing and building computer systems for the world's largest music publisher, spearheading projects to put the company's one million song catalog online. GPI International has been in the .NET and mobile arena for over half a decade and has developed apps for radio stations, record companies and music publishers. Erlanger also hosts two weekly radio shows that cover music, science and technology.
About Infusive Solutions:
Infusive Solutions is a technical staffing firm helping candidates find SQL Server, SharePoint, Windows engineering, technical support and .NET jobs in NYC, New Jersey and the rest of the tri-state area.