Sometimes I make games. Sometimes I make websites. This is my blog.
There’s a common misconception that mobile is the future of software development. Mobile, in this context, means a touchscreen device like your phone or tablet.
I’m not picking on this particular author — he is simply regurgitating a common assumption — but this is the type of sentiment I’m writing about:
The era of the laptop and personal computer will eventually come to an end, but not until they allow developers and power users to do everything they can on high-end devices as easily on mobile devices. Before this can happen professionals of all sorts, the power users of the various platforms will need as much memory and processing power as they are currently using. (Source: grack.com)
I disagree with this mindset, almost entirely.
I do agree that most software development will happen for mobile devices, but I do not believe that software development will be on mobile devices, at least for quite a while, if ever.
There are two types of users: creators and consumers. The creators among us are the ones who tinker, who take things apart, who build things “just because.” Their needs are entirely different from the consumers, who enjoy having things “just work,” and do not need to know (or want to know) how it does that. Simply, consider the difference between a person who watches a movie and a person who makes a movie.
The problems with being a creator on mobile platforms are not related to the amount of performance we can get from them. Indeed, some of the higher-end tablets are very fast and quite capable of handling software development (my field), at least from a hardware point-of-view. It’s not the performance of mobile hardware, it’s their draconian software licenses and their sick culture of walled gardens which prevent us creators from doing our work.
The number one issue holding software development back on mobile devices is the operating systems which they run. Android, iOS, BlackBerry, and Windows Phone, all require “rooting” before most of the software is even available to a developer. As a developer, I don’t want to work on a device that does not obey my commands, nor do I want to work on one that requires a hack in order to obey my commands. This sort of device might be great for your mom and dad to watch things on, but it’s certainly not designed for creators to build things on.
Right now, the ideal development machine is the one in which I use: a PC laptop, running Linux and Windows. It lets me build anything I want quickly and without hassle. I don’t have to deal with any sort of bogus license agreements or ask for permission to build software for it.
In Canada, cell phones are sold locked to a certain carrier. This means that before you can switch providers, you have to call and pay to have your phone unlocked. Who really owns the phone, then? Can you imagine having to do that for your car if you wanted to buy gasoline at Shell instead of Esso/Exxon? It’s outrageous and a huge overstepping of authority by cell phone providers.
The most exciting parts of building hardware or software come from the freedom to explore, to scratch your own itch, then share that solution with your friends, who will go on to use it and change it to scratch their own itches. Mobile is heading in the opposite direction: locking everything down to keep the technical bits hidden away, and the fun of creation along with it.
There is a place for consumers. After all, the market cap of consumers is many times that of creators. But the place for consumers cannot come at the expense of the place for creators. Maybe the two never meet? Would that be a problem? Is there a solution which solves both needs? Does there have to be?
Until things change course and mobile device manufacturers start selling devices with open and libre software set, including operating system, and offering sane license agreements, this creator will stick with his laptop and Linux + Windows, thank you very much.
My go-to IDE for everything for the past 5 years has been Netbeans, so to switch to Eclipse is something new for me. But, Eclipse is insanely popular, so there’s got to be a good reason for it.
Google seems to love it, too, and it’s always great to be in tune with them. I used to develop stuff for the Google App Engine and it was the same thing as it is with Android this go-around: if you didn’t use Eclipse, it was a bugger to get going. Relying on a third-party plugin from Kenai to access a closed system was just too much of a reach-around and I got out of there.
So, Eclipse. Excited.
Why Android? Well, this recent hullabaloo about Ouya has got me excited. I’ve been toying with game development now for years and after completing a few games in the past few Ludum Dare/7dfps/Guelph Game Jams, I can safely say that the idea of getting my games up on the TV screen with a controller turns my crank.
Playing games on a PC/laptop is just not the same as on a console. Don’t get me wrong, I’ve got hundreds of PC games and love them dearly. But, there’s something special about a controller in your hands and a big TV screen in front.
I’m looking now through the Youtubes and Googles for Android development stories, tips, tricks, hints, tutorials, cautions, etc. If you’ve got experience in this area and would like to share your story, I’d love to read it.