There are social networks like Facebook, MySpace, LinkedIn, and OpenSocial. There is the iPhone SDK, Google's Android, and RIM's BlackBerry. There are communications tools like Twitter, Jaiku, and Pownce.
There is the choice of development languages, and associated tools. Do you choose Java? Ruby on Rails? Python? PHP? Flash? Django? .NET?
How about cloud computing infrastructures? Amazon? Google AppEngine? Do you risk some unknown startup?
And the computing platform? Windows, Mac, Linux, or some combination? Or web only?
So many choices. How does a developer decide?
The easiest way is to follow the money. That certainly drove development on the Windows platform twenty years ago. But what if there is no obvious money?
In a world of free products, you'll need to choose the path to the greatest reward. That usually means the way the gets you product or service in front of the greatest number of people, as quickly as possible.
A couple of years ago I wrote a free offline blogging tool named Bleezer - just because I wanted to see if I could, and because I wanted to return the favour for all of the free software I've used over the years. For multi-platform support I chose Java, and I implemented the Blogger, Movable Type, and Wordpress interfaces. That was my last real desktop application.
A year ago when the Facebook Platform was announced I could see that Facebook was growing exponentially. I could see the potential for getting web-based applications in front of groups quickly, and virally, so it was a simple decision to learn that platform.
That decision in turn drove me to learn PHP and MySQL, since the platform provided a PHP API. My first app also required me to learn Flash, but I'm not happy with the exorbitant price of the development tools, so I've stopped working with it. I've also been doing some cross-social-network stuff, so I'm looking at OpenSocial.
Today I'm learning Ruby on Rails, as I've seen how quickly it can be used to build a web application. However, I'm also keenly aware from the experience of Twitter, that it may not be the most scalable choice. However, I'm not building anything that big yet, and time-to-market is of greater concern.
And like many others, I have the iPhone SDK sitting on my laptop, though so far it is untouched. I'm in Canada, which doesn't have the iPhone currently, but I have an iPod Touch, and I can already see that this is going to be an important platform. So the iPhone is next.
Back before the days of the Windows platform it was like the wild west. Every application looked different, and acted differently as well. Windows standardized everything so you only had to create one product, and all of the products on the platform behaved similarly.
Today we have much greater choice of tools to use, but we're back on the frontier again. A different platform for every tool, and precious little standardisation, except for efforts by Google such as Android and Open Social. And a new platform announced virtually every week.
Given a finite limit of development resources, maybe we should stop picking platforms and start pushing for some standardisation. Is it really necessary to have so many different ways of working with so many products that, at their core, do much the same thing?
Larry Borsato has been a software developer, marketer, consultant, public speaker, and entrepreneur, among other things. For more of his unpredictable, yet often entertaining thoughts you can read his blog at larryborsato.com.