The Future of Software Development

The future of software development is not found in a language, technology or technique but dependant on having a critical mass of educated individuals who apply themselves to the discipline.

I like to romanticise the history of computer science, the days where everything you could possibly need to know about a computer was printed in the included manual, from the schematic from which it was built right up to user guides explaining how to use the included software, if any. I envy those were lucky enough to be there when computers first became affordable to the general populous and they could know everything there was to know about the machine they had purchased.

As times marched on and graphical user interfaces became the norm, abstracting users from the tangled mess of syntax familiar to those using the command line, and I was born. Microsoft Windows 2.0 was just about to roll off the production line and Apple was introducing multitasking into their operating system, System 5, for the Macintosh SE and Macintosh II. Both companies laying the foundation for the computers people know and love (or hate) today.

Here in the UK, the government had been focusing of the computer literacy for around 5 years and a series of BBC programmes introduced the population to software development on the BBC Micro which was available, due to government grants, in every school and in high street retailers across the land. While I was a little late to this party, a suite of these machines were available for my use in the school computer lab and I cut my teeth on BASIC while everyone else was drawn to the pretty pictures available on the successor computers running the graphical operating system RISC OS.

There are no such drives today. While there are some general technology policies for a so called ‘Digital Britain’ concerning itself with accessible broadband and access to information there is little in the way of encouraging youth to look at computers as anything other than social entertainment devices. While I applaud the efforts of companies such as Apple to create ‘technology for the rest of us’ the increasingly limited access to the hardware will no doubt negatively affect the skill of the software developers of the future.

As computer science as a whole progresses so does it’s development tools. What was once a simple power-on prompt where the words

PRINT "Hello, World!"

would elegantly demonstrate the innate power and infinite control of the machine avaliable, users are now instead presented with ostensibly easy-to-use, but exceedingly imposing and complex environments each with their own preferred conventions in which to work. Scripting languages like Python rekindle this spirit but at the expense of  being totally incongruent with the interfaces to which users have become accustom.

One area in which Microsoft should be commended is their continued high quality support of software developers. Not only does Microsoft have a comprehensive press for their extensive library of developer references but provides high quality, accessible, and often free, tools and resources. Microsoft actively target potential developers with their Beginner Developer Learning Center and specifically Kids Corner and Small Basic.

Microsoft, here, dare to fail. Small Basic is not a finished product. It has it’s flaws. The hodge-podge of objects and parameterless sub-routines makes Small Basic a little confusing for new and experienced developers alike, but in a spirit of openness the lead author has ensured solid interaction with a community of developers resulting in gradual improvement to the fledgling product. It is, no doubt, a great effort in making computing, the way I want to remember it, accessible again. While I can understand efforts like Alice and Scratch, essentially the Lego of programming, their relation to ‘real world’ development is questionable at best. In holding this view I have to question Microsoft’s own choice and the value of yet another (intentionally hobbled) language, but here the ‘Graduate’ functionality is standing by for those ready to move on.

Without drives like Microsoft’s to bring development tools, most crucially at an appropriate level, to the masses students will continue to confuse computer science with ‘IT’. As the potential of those who, had they been able to overcome the initial hurdles of development, would have gone on to create great software is wasted the true power of technology will be limited to a smaller and smaller elite who were lucky enough to have been exposed to development in the right way and at the right time. While technological dictatorship certainly has its benefits, democratisation, the freedom of knowledge and open participation is the driving force behind the computer revolution of today.