There’s no denying the fact that I’m heavily involved with mobile development. Currently my platform of choice is Android platform (the Google nexus one pictured to the right). However, I’m not just a Android programmer. My day job as most know is a .NET Developer. I spend most of my time working with ASP.NET MVC web applications. These two compliment each other very well (I’ll get to this in a minute), and since the Windows Phone 7 Series is going to be running .NET capable apps I’ll begin writing apps for those as well. I have no idea who will win the war in the mobile field in regards to carriers and operating systems (if the war can even be won) but I do know this …
The future of all software development will be heavily influenced by mobile development and mobile integration.
Why?
We’re all doing things on our phone. I check email, update twitter, update my Facebook page, upload photos, use navigation, look for restaurants (and a million other things), all from my phone. All of these features are only available because a developer (or team of developers) brought the features to the phone. Most of these applications are nice rich user interfaces which communicate with back end services via web API’s (usually REST API’s nowadays). For this to happen, the developer/team/company had to plan for this type of integration. You simply cannot fire up a Android app (or iPhone, WinMo, etc) and connect to a website and “get data”. Sure, you can open a web browser, but lets face it, that experience SUCKS. You have to plan and create an API that is agnostic to your platform if you want to survive on the mobile front.
For example – I’m currently developing a v1 product that is a mobile application. Currently I’m working on the Android piece, then I’ll port to WinMo & iPhone eventually. The application interfaces with a website via a REST API built with ASP.NET MVC. This allows me to program via “resources” that the client can interact with. This also opens up the doors to allow third party applications to be written against the API.
Why does this matter? Take a look at Twitter. Sure, its a great service and all, but the website stinks. It offers not great features and in the end, it really lacks what Twitter is a huge stream of information. Its hard to consolidate it so its readable and digestible. Twitter would be nowhere near the level of popularity without apps such as Twitterific, TwitterBerry, Tweetdeck, Twhirl, Echofon, Swift, Twidroid, Twikini, and many other apps. Of these apps, I’ve named a desktop app, a iPhone app, an Anroid app, a browser plug-in, a Windows Mobile App, a Blackberry app, etc, etc etc. This is all possible because the proper API’s were designed for consumption of third party devices. Now take away the mobile platform and we’re now stuck with a browser based “status update” system. Bringing the feature to the phone really hits home.
API’s
Twitter has many API’s, that include the REST style API as well as a US Short Code API that allows you to text your updates in. This is perfect. People can update on the fly if they need to. The reason why Twitter is successful is because its easy to use. There are no boundaries. Want to update while you’re on the train going into NYC? Sure, no problem. Text it in. Want to read your twitter feeds (friends, DM’s etc) while at the Dentist office? Sure, fire up your app on your phone. Don’t have an app? Download it from the app store, why not … it’s free. Sitting at home on the laptop, hit the website or fire up TweetDeck.
The interface options are endless. By preparing yourself for mobile consumption you can accomplish the following:
- Create an market for others to consume your content as they see fit.
- Allow yourself to consume your content via the apps you write for various platforms
- Expand your application service beyond the OS boundary of the problematic “this is a windows app” or “this is a MAC app” or “This is a Linux only app”
- … and … it will help your career, immensely.
The Future
I’ve been saying this for almost two years now. Mobile development will overtake classic software development because the rate of adoption of mobile phones is much higher than the rate of adoption of classic computers/laptops/net books. Overseas everyone uses their mobile phone for everything. This is a precursor to what’s coming to the US next as well as the rest of the world.
Even Google’s own Eric Schmidt believes that mobile development is the future of software development:
“Our programmers are doing work on mobile first,” he said. “We’ll still have a desktop version, but we’ll also have one on a high-performance mobile phone. The top programmers want to work on mobile apps.
“Phones are so much more personal and satisfying. The phone is no longer just a phone, it’s your alter ego – it’s fundamental to everything you do.” source
I’m not saying that classic desktop or enterprise software development will come to an end, but I do see that a lot more of it will be focused on “how” we as developers can make sure that the content we place online is consumable by external sources, such as mobile phones. REST API’s are soon to become more common than they are now, and I’m sure we as a community will devise better ways to expose and consume content as time goes on.
But if I can close with one thought, I’d close with this one: If you choose to learn anything new this year. Learn to program on a mobile platform. Learn Android, iPhone, WinMo, whatever, just learn to do it and … innovate. These devices are so powerful. They contain more hardware features than a classic computer. Storage (SD Cards), Cameras, Video Cameras, Microphones, GPS, SMS, Phone, Contact Management, Accelerometers. These are not phones anymore, they are computers in your pocket.