on 16 January 19
Each year I keep marvelling at the number of new technologies that come out to enable all kinds of applications, and 2015 was no different. It becomes harder and harder to track the number of new entrants into the technology landscape of each area of information technology after a while simply because of the sheer numbers of new names, and the number of upgrades and improvements being released for existing technologies.
Technology has certainly enabled more and more disruption, and most people have seen that frequently-circulated meme that talks about how some of the largest companies now don’t own the most physical assets. It says, for example, that Uber is the world’s largest cab company but it doesn’t own any cabs. And that Facebook owns no content, and Airbnb owns no real estate. These companies are all based on creative ideas that were enabled by an infrastructure of technology.
If one looks at all the infrastructural software technologies, frameworks, languages, libraries and services available to developers today, one has to recognize that with all the disruptive evolution they’ve enabled in the business world today, surely the developer’s role has had to evolve too? What kind of evolution has that been, and where is it going?
Decades ago, there was far less variety in terms of software tools to work with. There were languages that were fairly low level compared to the ones available today, and any time a reusable framework or libraries had to be built they needed to be developed from scratch by developers. And when these developers ran into a technical problem they had to just keep looking up books for solutions, or look to the experts available within their immediate reach. There was no internet access some decades ago, never mind access to all sorts of resources, online developer communities and discussion boards from around the world to share the problem with.
For that reason, the developer of yesterday had to remain mired in code, and focus his or her energies on thinking about algorithms, and how to implement and debug them to achieve every single step of processing.
But all that has changed now. The focus has moved on to how to select and put together the right software components from the large variety of available choices, whether open source or proprietary. There are containers, messaging platforms, databases, and frameworks that enable all kinds of patterns and architectures. Standards have been created to allow uniform software interactions from the enterprise level down to the lowest levels of network communication, and so the developer’s role has shifted from being a pure coder of the lowest level computing tasks to also being able to make the right design and architectural choices at various levels of scope.
Looking at it from a broader perspective, the developer’s role has continued to expand in terms of value add, and has moved from implementing algorithms for specific computing tasks to developing code that implements business functionality quicker by selecting and plugging together or using more and more pieces that are readily available within the reach of a URL.
What this also does is free up a developer’s time to address tasks that are higher up the value chain and to apply more creativity towards the application of technology rather than the creation of technology. There is evidence that this is happening in the appearance of a vast number of mobile apps that have been the brainchild of developers rather than business folk. Whether or not they all have mass appeal or business value is a separate question, but there’s no denying that the appearance of so many finished apps is a result of the developer being able tlo lift his or her head up from all the lower level technical tasks that took up all his time a few decades ago, and also understand a business domain and think up solutions to its problems at a business level.
At this level, being an expert at at least one language (such as Java) has become a basic capability that is taken for granted, and when even a child could start dabbling with something like Scratch, a professional developer’s real value lies not in being able to just write bug-free code in a language, but to think up solutions to business problems like an architect, and to be able to apply the language to work with a variety of additional technologies involving building real time solutions using available frameworks like Spark, containers like the IBM or Solaris ones, tools, possibly a variety of databases including no-SQL ones like MongoDB, how to work with cloud services, and to be very clued up on the opportunities provided by newer environments like Node.js.
In short, the developer’s role has changed. It’s a whole new world in software technology now, and any developer that isn’t constantly studying the landscape for the latest developments, and isn’t thinking creatively all the time may still have a job, but it just may not be the hottest one any more, not by a long shot.
This blog is listed under Development & Implementations Community