A Bit of App Experienceby Matt Cholick
Last month, I finished up translating a friend's iPhone App into Android. It was a really fun piece of development.
Most of the day I spend my time working on large software systems. Much of that time is spent improving the same piece of software that I started writing bug fixes for clear back in 2007. There's nothing wrong with that; in fact, that's what makes my day interesting. Large and long running software has it's own unique set of intriguing problems to solve.
When working on that kind of software, though, there's really no end in sight. There are always things to change or improve. We have thousands of end users, too, all with different needs for a complex system. The age and size of the system also means that some pieces are always using older technologies rather than every component being new and shiny.
This little app was enjoyable because it was so radically different from all that. It was a piece of software that I finished completely developing in just a few evenings of work. It also has a very small feature set so I was able to put a lot of polish into what it does do. For example, I put a great deal of thought into getting scaling and expanding to fill as much of the screen as possible on any Android device size.
Getting to work on something completely on my own was another nice difference. As software scales up in size, the administrative overhead required to support it expands as well - large systems like the one in my day job end up with multiple specialists responsible for their own sets of individual components. This was a nice break from all that: no meetings, no infrastructure team, no database administrators, no design team, no project managers - just and IDE and me. It was a refreshing change.
Computer science is really a strange discipline; the medium we work with is infinitely flexible. We artificially constrain ourselves to help repeat success and use patterns to communicate. The bad here, though, is that it's easy to not explore the infinity of other solutions to problems - to get suck solving things in some familiar but suboptimal way. At conferences and in readings, I've seen the recommendation that a developer should learn a new language every year. Though not a new language, Android has been different enough development to fill that need and prod a few mental muscles into action. The guys at Google are damn sharp; seeing the patterns they used and the API they built for their operating system has gotten me thinking about things in a different way.
I'm right at 100 sales at this point. Interestingly, Amazon's Appstore has sold about 5 units for every one sold in Google's Play. I'm guessing this is due the fact that several free apps in Play do similar things. I won't be retiring any time soon, but it was enjoyable enough that I'll definitely write something again (once I've wrapped up my graduate classwork).