…computer science is a liberal art, it’s something everyone should know how to use, at least, and harness in their life. It’s not something that should be relegated to 5 percent of the population over in the corner
Steve Jobs (1955 – 2011)
We react to software the same way we react to movies and music. The language of our lives
Andy Ihnatko
I should perhaps clarify the title of this post a little further; it refers to the liberation of software or more specifically software development. OK, but liberate from what? Liberation from the countless labels, preconceived notions and misconceptions relating to how really great software is made. If we accept that software applications increasingly perform as vantage points into our world, we inevitably realise the emerging synthesis of software and culture, technology and art.
The evolution of our everyday devices experienced through a multiplicity of screens, year-on-year increases in processing capacity, reduction in physical size and cost coupled with improvement in network connectivity (although slow by comparison) has brought us to an extraordinary juncture and as we discover new and exciting ways to interact with information, design and development must be centred around human experience.
And herein lies part of the problem, I’ve already used two labels – design and development – in reference to how software is built and these in turn can imply that the two are distinct from each other. Design and development by and large have evolved within the traditionally distinct spheres of art and computer science. The reasons for this are not complicated and have been discussed in previous posts; the key point today is that this separation can no longer be supported. Thinking in terms of separate activities will only lead to failure as ideas merge unsuccessfully.
I recently had the opportunity to attend the inaugural Úll conference in Dublin where Kyle Neath, Director of Design at GitHub, addressed the topic of design versus development stating that “labels are frustrating and lead to arbitrary conflict.” Interestingly, while Kyle’s professional title suggests design, he describes himself as a builder, holding skills in both design and development. Whether in education or professional work how can we expect to fully realise our potential if we insist on classifying talents, abilities, skills and duties in strict verticals?
So, what about the realities of software development? Not that long ago it was necessary to spend a significant amount of time just negotiating the complexities of pushing an application live. Today however, thanks to the work of many extremely clever people, excellent tools and frameworks exist; these tools and frameworks enable the management of complexity which in turn grants us the opportunity to invest more time in ideation and build. I believe it is unfair to charge computer science departments with sole responsibility for informing future builders in the use of these tools and frameworks. The next set of problems facing the human network are very much harder and it is here that computer science should be allowed to concentrate – investigating future tools, frameworks, solutions and possibilities. More importantly, it is now within the reach of a far greater proportion of the population to start dreaming up and realising new software applications.
The acquisition of the popular mobile photo-sharing service Instagram by Facebook for a staggering 1 billion dollars has been a topic of much discussion in recent weeks. Instagram CEO and co-founder Kevin Systrom is not strictly an engineer; he had previously worked in marketing and taught himself how to code in his spare time. The meteoric success of Instagram (first 30 million users in less than two years) is attributable to a variety of factors; the leading contributor however is that the application did a simple thing really, really well. Not that it was a new idea – sharing photos with friends is hardly new – just that the execution was at all times user-focused and of a very high standard. You only had to use the application once to realise that great care and attention had been invested in the user experience. Ideas need the support of passion and it is not the case that innovation is restricted to experts within specific domains.
What if software development in the context of interactive systems simply requires a new name? A name which captures more fully the breadth of relevant subject areas? This is not to suggest a dumbing down of the endeavour, not at all! Only that we evoke a more rounded approach and avoid unnecessarily alienating future builders through the use of predominantly engineering based naming conventions and examples. Education clearly has a significant role to play and an urgent reconstitution of the art science balance is necessary; with particular attention on the early school years. It is vitally important that our children are prepared to explore, create and persevere in technology rich environments; not to function simply as users of software but to maximise their potential as builders of new systems. Engineering and art are nothing more than manifestations of human creativity and therefore share much in common.
In closing I feel I should highlight that the above is not intended as an argument in favour of generalist skill sets; I have indicated in previous posts that excellence requires focus; whatever the subject area we simply must have depth. We accept (rapid) change as a reality and therefore knowing everything is unrealistic, however, in addition to our key strengths, we should each be versatile enough to develop solid understandings of the mechanics of related disciplines and in so doing gain perspective on the bigger picture.