When Apple made it clear that apps created with Adobe's Flash Packager
for iPhone would not be permitted in the App Store, Steve Jobs had an
explanation: "We know from painful experience that letting a third
party layer of software come between the platform and the developer
ultimately results in sub-standard apps and hinders the enhancement and
progress of the platform."
Many, myself included, found Jobs' explanation to be somewhat disingenuous. Tools that facilitate cross-platform development aren't necessarily responsible for bad code and poor software; bad development practices and poorly-skilled developers almost always are.
Steve Jobs' position represents one extreme, but one of its biggest competitors, Google, may represent the other. Yesterday, Google formally unveiled App Inventor, a free piece of software that is designed to enable non-developers to build Android apps:
To use App Inventor, you do not need to be a developer. App Inventor requires NO programming knowledge. This is because instead of writing code, you visually design the way the app looks and use blocks to specify the app's behavior.
The App Inventor team has created blocks for just about everything you can do with an Android phone, as well as blocks for doing "programming-like" stuff-- blocks to store information, blocks for repeating actions, and blocks to perform actions under certain conditions. There are even blocks to talk to services like Twitter.
On the surface, App Inventor appears to be a nifty little program that has some interesting applications, particularly in the realm of education. And since it's made by Google, one would hope that Google will ensure that it evolves as Android's capabilities evolve, negating some of the concerns Jobs expressed about third party development tools and the iPhone.
But there's still a big problem: while it may be possible for a visual app creation tool like App Inventor to produce acceptable code, whether it provides enough to create interesting, quality apps that boost the Android ecosystem is another matter entirely.
In my opinion, the biggest problem with App Inventor is that Google is opening up Android, and most importantly the Android Marketplace, to a group that can realistically only do so much: non-developers. This is not to say that non-developers don't have anything to contribute, but when it comes to building the best mobile development platform and a strong ecosystem, a bit of pragmatism is in order. I might, for instance, have an idea of what I'd like my dream house to look like, but because I'm not an architect, it would be impossible for me to actually design it. After all, there are lots of details, and architects are trained to fill them in.
Developers are like architects, and even though there are probably plenty of non-developers out there with great app ideas, it's unlikely they'll be able to implement them well, even with Google's help. It's not just the technical limitations inherent in a tool like App Inventor; it's the fact that most non-developers simply won't have a good enough grasp of the software development process and best practices to produce quality results, especially with more complex app ideas.
Because of that, Google's efforts risk creating a flood of simple App Inventor-built apps that find their way into the Android Marketplace. While there's nothing inherently wrong with simple apps (some of the best apps are incredibly simple), the Android Marketplace, which is nearly 100,000 apps strong already, doesn't need a slew of simple apps created by wannabe developers. It needs better apps and better developers. Google also needs to make Android Marketplace more competitive financially for developers vis-à-vis the App Store. In short, Google's priority should be providing developers with better tools for monetization. Improving the Google Checkout-based app-buying experience, for instance, would probably go a long way towards making Android a more rewarding platform to work with.
Up until now, Google has arguably done a great job with Android and it seems to be on the right track, both in terms of Android's penetration and general developer interest. This latest move, however, does call into question how well thought out Google's strategy really is. Google isn't going to make Android a more attractive platform for developers or consumers by trying to turn non-developers into developers. For Google's sake, it might be worth considering that non-developers aren't developers for a reason.
Photo credit: laihiu via Flickr.