The full room of expectant people drawn in by the title of this presentation were in my opinion rewarded with one of the most interesting and entertaining sessions of the week. Todd Fast of Sun Microsystems put forward the suggestion that software development is changing and moving away from a traditional model where mainly engineers build applications, towards a model where anybody of any background will be building applications.
He started off with three simple propositions:1. Software engineers are an endangered species;
2. High school and college students will take over the engineers jobs, and;
3. The engineers won’t mind this happening
Then moved on to one of the topics that made this whole talk so entertaining, why software engineers are ‘Genetic Freaks’:
- Above average ability to abstract
- Above average interest in Monty Python and other absurdist comedies
- Below average tolerance for imprecise answers
- Below average fashion sense
- Willing to sit in this particular JavaOne conference at the end of a long day instead of hitting the bars
Fast was pointing out that engineers tend to be quite different to the majority of other people for the above reasons but then asked ‘what if all those other people could develop applications too?’ He refers to them as ‘Casual Developers’ and noted that most of them don’t identify themselves as developers, are under the age of 30, casually use advanced technology every day and consume and produce information at a dramatically higher rate then others. Further, the casual developer is much more likely to interact with others asynchronously and non-linearly (SMS, email, etc) and assemble very personalized views of their world using technology.
With the above definition stated, we next looked at what trends are happening in the technical and social spheres recently and found that; Java is now a mature technology, simple solutions are better, the web is a tool that exists most places, software delivery can’t keep up with demand and Web 2.0 applications are becoming more prevalent. On the social side; social computing is becoming a main pillar of mass culture with social features bringing technology to the masses, application development is merging with application usage and content creation is merging with content consumption. Social networks now provide viral distribution channels that the mass-market of technically-savvy people are highly comfortable using, to the extent that the traditional methods of delivering software now feel like a constraint to the them.
The question was then raised: ‘What is an application?’ with the answer being stated as ‘an application is a piece of software that helps a user solve a specific task’. Today, the traditional software developer makes their money using powerful tools and much expertise to create applications for other people but they take a lot of time and effort to create. Examples of traditional applications would be media players or productivity suites. Applications can be large (amazon.com, SAP) or small (shell scripts or widgets), the point being that anything is an application as long as it helps a user with a task. In terms of web applications, size and scope or feature set are becoming less of an important way to judge what makes an application and instead it is the number of people who use it. We then moved on to look at what makes a platform, because small applications tend to be built on platforms.
was defined as ‘a piece of software that
enables applications’ because it:
- Solves common problems so that applications don’t have to
- Exposes facilities that make writing applications easier
- Acts as a fertilizer for ecosystems that are built around them
- Is more than the sum of its parts, looking something like an open source model with many more contributors than the original set of developers or creators
Small applications that are deployed on platforms are currently experiencing an explosive growth in numbers because platforms such as facebook, MySpace, Ning and Meebo are providing higher levels of abstraction for creating application models, lowering the bar of entry in to the software development realm. These applications are usually based around social computing use cases and are developed very rapidly using non-traditional tools and techniques. These small applications are being developed by people in the huge pool of cognitive surplus that exists today, described so well by Clay Shirky in his speech ‘Gin, Television and Social Surplus’ (well worth a read). One of the big points of that talk is that Wikipedia has had an estimated 1 billion hours of human thought put in to it, while TV watching in the US alone gets about 2 trillion hours of attention paid to it every year! That’s the equivalent of 2,000 Wikipedias. The surplus is so large in fact that even a small change could have major ramifications. The main point here is that applications are now easier to write because of platforms like facebook and so more and more people will be tempted to cut some of their TV-watching time and use it for more creative purposes like maintaining Wikipedia entries or sharing pictures or other information.
There are some problems with creating software for the medium too though, particularly social sites like facebook, where applications can see explosive growth and just as quick a demise in popularity as the novelty wears off. Applications can really be viewed more as disposable assets now because much smaller amounts of effort go in to creating and distributing them so when the popularity wanes they can be discarded without a big write-off of effort. This tends to happen with apps like ‘Zombies’ where there isn’t any truly usable functionality but what about other applications that do add some value to peoples lives, such as iLike, the music and concert information app that had over 2 million users in just three weeks? They are becoming victims of their own success at the moment because they grow so fast, needing huge amounts of server capacity in a short period of time and also haven’t yet found good ways of capitalizing on their success by monetizing usage somehow.