Earlier this year I got an offer I couldn't refuse. Several friends and former co-workers of mine were forming a company named Sepia Labs, and they asked me to join them. They planned to create a mobile group sharing app, and they wanted me to develop the Android version.
I've been itching to get into mobile development for a long time, but I didn't even own an Android, let alone know how to develop for one. Yet there was no way I could turn down the chance to learn mobile development while working with people I know and respect.
So I joined Sepia Labs, and we immediately set out to design a different kind of mobile group sharing app, one that values privacy above all else. The end result is Glassboard, which we launched today for Android and iPhone, and will soon be available for Windows Phone 7. I'm really proud of what we accomplished with Glassboard, and I hope you'll give it a try (and after you get it, this post will help you get started).
Now, I can tell you that switching to Android wasn't easy after almost two decades of Windows development. I had to learn a new language (Java), a new IDE (Eclipse), a new platform (Android) and a new programming mindset (mobile) in a very short time. Oh, and just to make it harder, I decided to do it all on a Mac. I guess you could say I was looking for a challenge :)
And a challenge it definitely was.
The first challenge was trading my iPhone for an Android. I've used an iPhone for several years, and my new Android felt unpolished and geeky by comparison. But I slowly warmed to it, and now I love my Android so much that on the rare occasion I pick up my iPhone I curse it for not having a back button.
The second challenge was learning Java. My usual approach to learning new things is to just jump in and get my hands dirty, but I decided not to do that with Java. Instead, before I wrote any code I read a ton of books on the language (my favorites were this one and this one). I had Java books all over the place - on my desk, next to my bed, in my car, and in every bathroom of the house. I wanted to really understand the language before I used it so I could design Glassboard correctly (and not have to redesign it a dozen times as I learned more about Java). Surprisingly, I liked Java right away. It does feel a little too object-oriented sometimes, and it was hard getting used to garbage collection and the C-like syntax, but it made sense to me. It's a very well thought out programming language.
Next I had to figure my way around Eclipse so I could actually write some Java code. Like Nick Farina, I absolutely hated Eclipse at first. I despised its strange, overloaded user-interface. I made up new swear words as I stumbled around trying to decipher its overwhelming array of menu items. But I've definitely grown to appreciate Eclipse. It has some incredibly powerful features that I haven't seen elsewhere, and it rarely gets in my way - in fact, it actually helps me write better code. And funny thing is, when I work on FeedDemon now, I wish that Delphi had the features I've gotten used to in Eclipse.
I thought my biggest challenge would be switching to the mindset of a mobile developer, but that hasn't been nearly as hard as I expected. I've written for years about simplicity, killing features and doing away with options, all of which are requirements for mobile development. Mobile development forces you to focus on exactly what your software needs to do, and I really enjoy that.
But developing specifically for Android has been a huge challenge. There's an awful lot to learn - intents, activities, AsyncTasks, XML layouts, services, BroadcastReceivers and on and on and on. Once you wrap your head around everything it all makes sense and fits together well, but getting to that point doesn't come quickly. And as is always the case, the thing that takes the most time is learning your way around all the gotchas. If you're just getting started with Android development, be prepared to spend a lot of time on StackOverflow!
Of course, I can't write my first post about Android without mentioning its supposed "fragmentation" problem. It is a problem, but it's mostly blown out of proportion. Desktop developers have always had to create software that works across different OS versions, different devices and different screen sizes, so the fact that you have to do that on Android isn't a big deal. But it is a big deal when different Android devices handle things differently - video playback and recording, for example, are challenging due to device differences, and getting video streaming to work reliably across devices feels impossible (as Netflix discovered).
All in all, learning so much new stuff in such a short time has been both thrilling and exhausting. I'm finally doing mobile development, something I've wanted to do for years. But take it from me: if someone offers you a job that requires switching from Windows to Android development and learning it all in a few months, stock up on the caffeine - you're going to need it!
PS: Hopefully this post explains why it's been so long since there was a new build of FeedDemon. I am still working on FeedDemon, and a new release is already underway.
>>I am still working on FeedDemon, and a new release is already underway.
Hello. That's good. I look forward to.
Posted by: Leo | Monday, August 22, 2011 at 08:07 AM
The Java books you recommend - are those good for beginner programmers, or are they better for developers already familiar with OOP concepts?
Posted by: critter42 | Monday, August 22, 2011 at 09:32 AM
@critter They're pretty advanced - I don't recommend them for those new to programming. But they're great if you've been programming a while and are new to Java.
Posted by: Nick Bradbury | Monday, August 22, 2011 at 09:35 AM
When I open the app for the initial run, and am presented with the login/signup screen, I am unable to hit the back button to leave the app. Are you disabling the back button on this screen?
Posted by: Andrew | Monday, August 22, 2011 at 11:11 AM
This is great news Nick! I would like to know what you think of a Mac after using a PC for so many years. I can see an iMac in my future. I've downloaded the iPhone version and will check it out.
Speaking of FeedDemon is there going to be a Mac version? :).
Posted by: Zack Jones | Monday, August 22, 2011 at 11:12 AM
@Andrew Thanks for bringing that to my attention. It's a bug - expect to see it fixed soon.
Posted by: Nick Bradbury | Monday, August 22, 2011 at 11:29 AM
Very interesting article, now that you have some experience with Android, are you gonna try out "real" Linux too? :) I personally benefited greatly from the switch and haven't used Windows for a while except some troublesome games. Even though I'm not that much of a dev (yet, in the process of learning me some python) I think it's an awesome system. Or do you lack the time and/or will to work into it? I'm going to test Glassboard on my Optimus 2x now and provide feedback if possible/necessary.
Posted by: davidroth9 | Monday, August 22, 2011 at 02:07 PM
@Zack The first month or so after switching to a Mac was rough, and I still have trouble remembering the keyboard shortcuts, but overall it's been a good switch and I needed the change. But it's hard for me to really compare Windows with a Mac since I don't develop for the Mac - being a Windows dev completely colored my opinion of the OS.
Posted by: Nick Bradbury | Monday, August 22, 2011 at 02:39 PM
Hey Nick! Good luck with the app, it's really a great idea and the multiplatform support is a killer feature!
Too bad my iOS is 4.1 :( I'll probably upgrade this weekend.
I want to get into Android dev, I was wondering how long it took to develop such an app? I'm trying to figure out the learning curve of the framework.
Have you considered Titanium Mobile (I know it doesn't support WP7), instead of developing and iOS + Android version.
Posted by: Aviel Lazar | Tuesday, August 23, 2011 at 06:47 AM
@Aviel Thanks! I started learning Java/Android on February 1, and I'd say it was 2-3 months before I was able to develop something usable. Then it took another 2-3 months to refine it to the point that it was releasable.
Titanium Mobile looks good, but we already had a skilled iOS developer (Brent Simmons), and I prefer using the "official" tools.
Posted by: Nick Bradbury | Tuesday, August 23, 2011 at 09:54 AM
So any chance of an Android version of FeedDemon now then?
I have found a rather nice app called gReader that works quite well.
Looking forward to an updated FD
*takes out credit card*
Posted by: tomppi | Tuesday, August 23, 2011 at 11:52 AM
Congratz on the new app. A question about FeedDemon - I haven't used it for some years, and am wanting to give it a new look. Will the upcoming version require a license upgrade or can I get the upgrade if I buy new FD license now?
Posted by: Dltq | Tuesday, August 23, 2011 at 08:35 PM
@Ditq The upgrade I mentioned will be free.
Posted by: Nick Bradbury | Tuesday, August 23, 2011 at 08:53 PM
Very interesting post! I made the same transition from Windows to Android development, and oddly enough it occurred over the same timeline from February until now. I'd second your recommendation of Effective Java.
We had the added difficulty of learning some Ruby on Rails development, since we weren't just building an android app, but a system for others to use to make apps on the web...kind of like wordpress in a way.
Posted by: Lorne Laliberte | Wednesday, August 24, 2011 at 01:42 AM
Need to handle the back button to exit? from the login/signup screen
Device : Galaxy SII
Posted by: AndoKid | Wednesday, August 24, 2011 at 01:57 AM
@Nick thanks! Good luck to you and the team.
Posted by: Aviel Lazar | Wednesday, August 24, 2011 at 02:51 AM
@AndoKid Sorry about the back button bug. This is fixed in our internal build, which will be in the Android Market within a few days.
Posted by: Nick Bradbury | Wednesday, August 24, 2011 at 09:06 AM
The app doesn't appear to be available in the Windows Phone 7 marketplsce. If you follow the link in this post, you get to it but with no option to purchase/install. If you search for it, there are no results. Any idea why that is?
Posted by: Nick | Thursday, August 25, 2011 at 05:17 AM
Our WP7 is briefly delayed. I've removed the link until it appears in the marketplace.
Posted by: Nick Bradbury | Thursday, August 25, 2011 at 09:04 AM
Thanks for sharing ... i have not made the jump in any direction yet, recently competed a couple of personal projects in Visual Studio, but after some absence from development (re-built a house on my own) upon my return, 4 weeks ago, that it would take a lot more time and effort (and money) to get these products to a Windows only market (downloaded from an internet site i have not built) which i can only see as a shrinking market ... it just does not make business sense ...
So, although i am late in on the game, i want to be a player, so going to buy some apple hardware, set up a linux based server and going to have a think ...
Well done to you, facing up to challenges and managing change is what it's all about ...
Posted by: glyn thomas | Thursday, August 25, 2011 at 01:07 PM
@Glyn Good luck making the transition to mobile! It's not easy, but it's worth the effort - if for no other reason than to be doing something new after so many years of Windows development.
Posted by: Nick Bradbury | Thursday, August 25, 2011 at 02:30 PM
Thanks for sharing your experiences. I was in much the same position, developing for Windows since the 3.1 days. I was amazed at how easy it was to port one of my C#/WinMo apps to Java/Android. It had been a very long time since I did anything in Java, and I didn't realize how similar the languages were. There were some of my classes that literally didn't change at all, except for the declaration syntax.
I love how easy and cheap it is to get started with Android and sell on the Android Market. My ported app has been fairly successful. I don't know how long it will keep up, but I'm making almost $70 per day from it right now.
Posted by: CSX321 | Friday, September 02, 2011 at 12:34 PM
So after working with android what is your honest opinion in the best OS out there.
I used symbian then got a windows phone. after a while I switched to a HTC hero then desire hd and have never changed back. I love android but find most people are stuck into the iphone. What do you think?
Posted by: Wedding ideas | Friday, September 02, 2011 at 01:37 PM
You say, "most people are stuck into the iphone," but in fact the latest numbers show that there are a lot more Android phone users than iPhone users.
http://www.businessinsider.com/comscore-july-2011-mobile-subscriber-market-share-report-2011-8
Posted by: CSX321 | Friday, September 02, 2011 at 04:04 PM
Honestly, I'm torn.
It took a while for me to warm up to Android after using an iPhone for so long, but when I use an iPhone now I feel so limited. And as a developer, I *love* the ease of getting software into the Android Market. So for me personally, Android is the best.
But for my non-techie wife, I still think the iPhone is a better choice. It's simpler, has fewer things to fiddle with, and just feels less geeky overall.
Posted by: Nick Bradbury | Friday, September 02, 2011 at 04:28 PM
I'm in a very similar boat, although Java is my first OOP! Like you, I instantly liked it. It's so much clearer and more logical than other languages. I usually jump straight in but spending a good amount of time reading about OOP and android has definitly saved me time in the long run.
Thanks
Posted by: Max mumford | Tuesday, September 06, 2011 at 06:01 AM
thought you had died....I guess we have to wait 2 years more for any new stuff in feeddemon... ha well
Posted by: homesite_1997 | Wednesday, September 07, 2011 at 10:11 AM
Nick, it's great to see you're still alive! And even better to hear you're on Android and still developing FeedDemon. Been using FD for so many years that I just hate to see it die. I'm a new/old programmer, I say this because I'm not young and I'm finishing up my degree. Programming is not easy, but it gets easier with every class. I'm also interested in developing for mobile, and I may go in that direction - don't know yet. At the moment, I read my RSS feeds online using the Android browser because I can't find a decent stand alone reader for Android (hint). Best of luck in your new job and interest! And "thanks" for the great software you've put out!
Posted by: Abe | Saturday, September 10, 2011 at 03:44 PM