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 intelligence
- 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.
A platform 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
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.
Tools are going to provide more and more opportunity to create applications to people who aren’t engineers by abstracting increasing amounts of technical detail away from the creator. The purpose of tools is usually two-fold: To make things easier (usually by increasing abstraction) and to make the user more productive. Currently software developers use tools such as Eclipse or intelliJ which are very feature rich and provide access to all of the technical complexity that Java has to offer, but to use them effectively the user must go through quite a training curve and learn both the language and the tool. But tools do not have to be complex, especially when you consider something like MediaWiki, or Yahoo Pipes which allows the user take RSS feeds and filter or manipulate their output to create some completely new content, all without then need to learn a new programming language or complex tool. A trade-off exists in tools between abstraction and the number of problems it is capable of solving: the more abstract a tool is, the less the number of problems it can be capable of solving and vice versa. The takeaway form this point is that as the level of abstraction provided by tools steps up, the barrier of entry to developing software lowers and more people join in because it is just easier to do.
The last major point of the talk was about ‘High Technology’ and it’s comparison to ‘Technology for the Masses’. High tech is cutting edge and requires expertise to understand and fully make use of it. Tech for the masses focuses on use cases that are too small to be considered for development under a traditional model and are created by the users for the users. Minimum amounts of resource are required to get started and if something genuinely useful is created, more uses cases will be added over time. These two kinds of technology compliment each other very nicely because high technology expands the scope of what can be done and allows casual developers to build the small applications talked of earlier. Another important point is that it democratises the use and reach of technology by enabling others access to it. Technology for the masses drives the use of platforms and has the potential to create opportunities for monetization of simple applications (remember some facebook applications have over 1 million active users every week now). The two types of technology support each other in a symbiotic way:
High technology leads to creation of new platforms which create technology for the masses. Technology for the masses allows people to create new content and push the platform developers to use new high technology in a way that can enrich or even create further new platforms, and the cycle continues.
I realise that this has turned in to quite a long article now and I’ve tried to chop out some of the stuff that wasn’t so key to the talk but we’re done and it’s now time to review the three propositions that we started out with:
1. Software engineers are an endangered species
- They already are and always will be
2. High school and college students will take over the engineers jobs, and;
- Because engineers won't be needed to build everyday applications like they are building today
3. The engineers won't mind this happening
- Because rather than building the applications themselves, the engineers will be building platforms (meta-applications) so that 'the masses' can build applications.
To summarise, the application development model is opening up to a much broader audience and an exponentially larger number of applications can be built out now, not because there are exponentially more engineers but because engineers are building platforms that enable the masses to create applications. So software engineers of today will increasingly find themselves building platforms or platform-like software.
After the talk I had a few minutes to talk with Todd because I saw a number of similarities between the trend of allowing ‘the masses’ to create new content in a social setting and some projects that a large corporation I have worked for have undertaken. The drive at this particular company is to remove the more mundane tasks of managing content, creating simple forms and a host of other small utilities from the control of the IT department and give it to the business teams. Todd wasn’t’ surprised to hear this and said he sees what is happening in the social space as a trail-blazer for many other kinds of application development. Ultimately as executives become more aware of the ease of which simple applications are being created by a mass-user base, it seems natural that they will start to ask ‘why can’t I have my expensive engineers creating platforms for the rest of the business to then unleash their creativity on’? The truth is it has already started happening in places and I will be very surprised if demand in corporations doesn’t start to change in the direction the social platforms have gone.
Finally, I’d be really interested to hear your own thoughts on this topic because I only just read an article last week on The Register about how the end of the social networking bubble is nigh because analysis from comScore for the last quarter of 2007 showed a drop in the usage of sites facebook and MySpace. Even if it is a bubble that bursts, having heard this talk and compared it to the direction I’m seeing my company take with its IT projects, I think Todd Fast has a very valid point about this new development model and that we will see more of it happening in spaces other than social networking in future.