If you read this blog or know me personally you know that I’ve been involved in a lot of Android development lately. Some fellow .NET co-workers have questioned me quite heavily on the “WHY” of this development exercise/etc. I’m a .NET guy, right? So … the question is …
Why am I developing Android Applications?
For me, this can be answered quite simply and the answers include a lot of personal opinions about software development and the future of technology in general.
Reason 1: Mobile Development is the Future of Software Development
*Note: This is stricly my opinion, I have not peformed any metrics of any sort, stricly my opinion from my personal experiences*
Head over to India, Japan, any country over in Asia and you’ll see EVERYONE doing EVERYTHING via their cell phone. Paying bills, watching TV, operating security systems, engaging in Social Media outlets. All of this happens on the mobile phone. The USA is next in line (along with Europe). Mobile phones are not just little applets that receive SMS messages and make phone calls. They do that now as well as a slew of other things such as allow you to surf the internet at high speed (3G), send/receive email, listen to music, make music, take pictures, record video, edit audio, edit pictures, video, play games. THESE ARE COMPUTERS in your pocket. They’re already powerful enough to do most of what I do on my laptop (other than program and other resource intensive tasks such as multimedia editing large files). In the end, we all chat, email, surf, etc all via our phone.The phone gives us that 80% of what we need, the other 20% is fullfilled via desktops/laptops. Again, it’s the pareto principle in action.
The future is here people. Mobile development is where we are going. We already have apps that allow you to display a barcode on the screen and the airport scanners can read the barcode. No need to print, nothing. Just pull up the email on your phone, view the barcode, scan it, show your ID and you’re on the plane. I’ve seen it in person. I can now view and pay bills online too. Yes, sometimes mobile sites suck, but this is where the embedded device turns into a client in a client/server architecture. We can build these very smooth and fluid User experiences with all of the UI tools that Android provides (as well as iPhone) to give the user a great expeience while using the app. Animations, scrollers, progress bars, etc. The only thing we need to do is download the data we need from the network via a webservice or REST api. Java has the tools needed to communicate with these types of architectures (I’m finding REST the easiest, but thats just me , othes may disagree). I’ve noticed that building an app that uses the network instead of the internet mobile site is a LOT faster and offers a greater UX for the user. The greater the UX, the more the user is going to use the app, enjoy and recommend it.
These phone are also multimedia powerhouses. We can take photos, listen to music and record video and then share it all from one location. Can you do that with a computer? Yes, but its a PITA compared to a phone. I can be at state fair, see something funny, snap a picture, post it to twitter with a message in under 1 minute. This WAS NOT POSSIBLE before mobile phones. Only the rich and the uber-geek could do this kind of stuff. Now grandma can do it.
Am I saying that desktops/laptops are dead? No. But I do see mobile phones taking a very large share of software develpment. Right now, if you get into it and find your niche, the mobile market is a streaming with cash. The mobile market is basically a free license to print money.
Just think about this… how often do you look at your phone? How often do you open it when your bored? When you’re at the doctors office, at the airport, waiting in line, etc. You probably have your phone open. Open phones open possibilities.
Reason 2: I wanted to re-learn Java.
Huh? Yes. I said it. I wanted to re-learn Java. Android is Googles Open Source OS for mobile phones. This OS is programmable via the JAVA language. Since Java and C# are virtually the same syntax and almost sister languages (sister from another mother kinda thing) I knew it wouldnt be that difficult. Also, I coded Java in college, so it would be like getting back on an old bike (I hoped at least – even though I’ve fallen down and scraped myself a few times a long the way). Learning a new language lets you see how things are done in another technology and it also forces you to open your eyes and see things from another perspective. Instead of NUnit, I’m using JUnit, instead of Castle Windsor, I’m looking at Spring and rolling my own DI tools for the Android platform. Overall the learning experience has been like this:
*Opens Eclipse and starts coding* Ahhhhhh, I see. Ok, cool. Man, this is really cool stuff! I love this! Wait, WTF is that!?!?! This stupid piece of garbage, who would do program it this way?!?! This is so dumb. I don’t know if I like this … *then a light bulb turns on in the brain* .. OHhhhh thats why its done like that, wow, thats smart and witty. *I’m impressed*. …. 2 days later …. WTF!?! Why doesnt this work!?!! ARRGGGHHHH!!!! *another light bulb turns on* … Ohhhh… duh. Oops.
So far, I’ve enjoyed it. Its been very fun (very frustrating at times too) and very challenging. Working with embedded devices gives you challenges and boundaries that you dont have in conventional line of business application development. 16 MB of ram as a limit really makes you think about memory allocation again. Fun at times, hell at other times.
Reason 3: I wanted to make an Android phone and .NET Work Together
One of my personal challenges was to make Android talk to .NET. This shouldnt be that hard, and it was not. I created a simple ASP.NET MVC application with a REST style api. I then enabled the web app to pass in a parameter via the querystring such as this www.example.org/customers/donnfelker/address?format=json which would return my request as a JSON object back to the Android app (the format option tells MVC to return it as JSON in my Controller). In the Android app I’d parse the JSON text and deserizlize it into a Java object and then work with it on the Android side. Before I knew it, in a few hours I had a fully operational application that communicated with an Internet site (HTTP GET and POST’s). Think of the possibilities. You have access to all of the power of the Android and now you can share that data on a website (where the website either acts as a site, or as a data repository for the mobile app, or both). The doors really open up at this point. Want to manage an account online? No problem. Interact with other users via your Android phone? No problem. It all happens through your site, seamlessly through an interface on the users mobile. If you build your site correctly, and if it gets popular enough you could easily implement a Layer 7 router and redirect traffic based upon popularity and traffic loads of the routes. Its not that hard. If you’re sellling a service, providing a service etc… and have a method of implementing a cash flow, this can instantly become a license to print money. I have personally spoken to many people that are making a good living off of paid and free apps on the mobile market. Its huge.
Reason 4: I have an Android phone
This one is pretty simple. I have an Android phone. I used to have a Windows Mobile Brick, but it was just that, a BRICK. I coded applications for it in .NET and I actually ended up despising the phone for how much it would crash, hang, etc. It was not just the hardware, I tried a couple different phones. The Windows Mobile OS (v6) is a brick IN MY OPINION. I’ve coded for it, its a pain, I’ve had the phones, they’re a pain and overall their UX is terrible and its my opinion, plain and simple. I just don’t like Windows Mobile. Their new versions look promising but at this point the iPhone and Android phones have taken such a large physical market share (and market attention) that the Windows Mobile phone is the red headed stepchild of the mobile industry. Again… IN MY OPINION.
In the end, its simple .. if I had to choose one answer … its the first one. Mobile Development is the future of software development. That is my opinion. It’s already here, we can only get better, faster, more efficient from here on out.
Leave a Reply
You must be logged in to post a comment.