This Computer Weekly Developer Network series is devoted to examining the leading trends that go towards defining the shape of modern software application development.
As we have initially discussed here, with so many new platform-level changes now playing out across the technology landscape, how should we think about the cloud-native, open-compliant, mobile-first, Agile-enriched, AI-fuelled, bot-filled world of coding and how do these forces now come together to create the new world of modern programming?
This contribution comes from Arup Chakrabarti in his role as senior director of engineering at PagerDuty — the company is known for its digital operations management technology that helps businesses across keep their infrastructure and applications running smoothly.
Chakrabarti writes as follows…
Modern software development is often about accommodating the expectations of a business customer whose experience has been shaped by consumer technology.
At one level, that means getting software into the customer’s hands at speed – and to being able to change, modify and update that software seamlessly. At another, it’s about functionality and personalisation for every customer.
As engineers strive towards greater efficiency and functionality, the complexity of our software development environments increases. To some extent it’s cyclical. Each burst of complexity, of new skill sets and new ways of working, is followed by a period of correction – often through automation.
We offload the complexity through abstraction. It’s not always recognised as such but the cloud is probably the best example of an abstraction layer of recent years. There’s a joke that you can solve any problem with an abstraction layer except the problem of too many abstraction layers. Tongue in cheek, of course, but there’s an element of truth to it.
Abstraction layers will continue to increase. They will also continue to improve.
Microservices enable a far greater focus on customer experience than was previously the case. Isolating areas of the overall code base enables the creation of mini innovation factories across the business – each operating at its own pace. With less to integrate there’s less stepping on toes. However, the use of microservices can itself lead to an explosion in complexity and all the challenges that come with that. It’s one of the reasons why Kubernetes and container schedulers were created.
We hear a lot of talk of low code but it’s not really about doing less. It’s a way to focus on what matters to customers – while reducing some of the heavy lifting around what does not.
What matters to customers is personalisation. Artificial intelligence and machine learning technologies enable a more customised experience for customers. Before they emerged, any requirement for personalisation took a huge amount of engineering time and effort. Developments were driven by both customer demand and the level of data – on both customers and their behaviours – we could feed into our analytics and recommendation engines.
Intolerance of failure
One of the biggest changes of recent years is customers’ intolerance for anything less than perfection when it comes to performance. Many believe engineers have their own ‘hundred millisecond rule’ to contend with. “Come back later” is no longer an acceptable response.
Webscale is pretty much taken as given these days – particularly in the wake of COVID-19 which saw companies scrambling to support new ways of working. New code and heavier volumes of traffic resulted in more incidents – 11 times more in some sectors, according to PagerDuty’s own data.
As an industry, we’ve got better at fixing things without affecting customer experience – including through an automated approach to digital operations management. It’s still early days for auto-remediation but we are starting to hand over more control to technology. With time and further advances in machine learning, we ought to be able to teach some of our systems to self-heal based on past events – even in circumstances that only occur once in a blue moon.
Customer experience in a line of code
Above all, modern software development recognises that customer experience goes far beyond user interface and can no longer be the responsibility of a discrete customer experience team. Modern software development embeds customer experience in every line of code – from the front end to the API – and is the responsibility of every developer throughout the product life cycle.