During this morning's keynote address at the AWS Summit, the company's chief architect Glenn Gore spent some time discussing the changes he's seen in the way software is developed. Two things came to mind during that part of the presentation. The nature of what "software development" is has changed significantly and the skills of today's programmers are in flux.
Back in the olden days, before 2005 or so, applications were developed as large monolithic blocks of code. If one piece of code was changed, the entire application needed to be recompiled and tested prior to deployment.
Eventually that changed with the monoliths broken down into more manageable components with technology such as SOAP and XML used to move data between various components. However, this still wasn't fast enough.
New protocols were developed that passed messages between components faster with address-based APIs, JSON and other tools appearing.
Over time, those pieces were made smaller. The smaller sections of code were easier to change, test and deploy. This lead to "micro-services" which were further broken down to individual functions. For example, rather than writing code for geo-location, you can call that function into an app and re-use it. If the function is changed, you get the benefit of the change without having to recompile and test an entire application - assuming the way it interfaces with your application isn't changed.
This leads us, Gore said, to the world of "ephemeral functions". This is where pieces of business logic are coded and then linked together.
These functions only use CPU cycles and other resources when they are called. Unlike old-style applications which have an operating cost even when idle, Gore said these functions only cost when they are in use.
It's been a while since I dabbled (and only with moderate skill) in software development. But when we designed an application we had to build all the functions we wanted to use. Today, developers require a different set of skills.
Understanding business logic has always been a key skill for the software development team but I see those skills being increasingly in demand for actual coders. Today's developers have to understand business processes and logic far more closely.
But they also need to understand how business functions integrate and cooperate - something I noted earlier in an article from McKinsey. That means software development has to move from the old IT department dungeon into the bright lights of the marketing, finance and other carol-face business departments.
This shift to ephemeral functions has happened hand-in-hand with the evolution of DevOps and Agile development techniques where business value is quickly delivered and iterated upon, rather than entering into a long and largely linear development process that only delivers value after a long development cycle.
We've seen the skills and methodologies used by software makers change. But I think we are only at the start of that wave. And the developers that will be most in demand over the coming years will be those who can transcend the division between the technical side of software development and the direct needs of the customer.
Anthony Caruana was flown to Sydney for AWS Summit as a guest of AWS.