“It has never been more difficult to be a software developer than it is today,” says Nigel Simpson, a former director of enterprise technology strategy at Walt Disney.
And they’re not the only one who thinks so, writes the U.K. Group editor of InfoWorld:
“Complexity kills,” Lotus Notes creator and Microsoft veteran Ray Ozzie famously wrote in a 2005 internal memo. “It sucks the life out of developers; it makes products difficult to plan, build, and test; it introduces security challenges; and it causes user and administrator frustration.”
If Ozzie thought things were complicated back then, you can’t help but wonder what he would make of the complexity software developers face in the cloud-native era. The shift from building applications in a monolithic architecture hosted on a server you could go and touch, to breaking them down into multiple microservices, packaged up into containers, orchestrated with Kubernetes, and hosted in a distributed cloud environment, marks a clear jump in the level of complexity of our software. Add to that expectations of feature-rich, consumer-grade experiences, which are secure and resilient by design, and never has more been asked of developers. “There is a clear increase in complexity when you move to such a pervasive microservices environment,” said Amazon CTO Werner Vogels during the AWS Summit in 2019. “Was it easier in the days when everything was in a monolith? Yes, for some parts definitely.”
Or, as his colleague, head of devops product marketing at AWS, Emily Freeman, said in 2021, modern software development is “a study in entropy, and it is not getting any more simple.”
On the other hand, complex technologies have never been easier to consume off the shelf, often through a single API — from basic libraries and frameworks, to image recognition capabilities or even whole payments stacks. Simply assemble and build your business logic on top. But is it really that simple?
The article also cites a critical 2020 blog post by RedMonk analyst Stephen O’Grady. “The process of application development is simply too fragmented at this point,” O’Grady wrote. “The days of every enterprise architecture being three-tier, every database being relational, and every business application being written in Java and deployed to an application server are over.
“The single most defining characteristic of today’s infrastructure is that there is no single defining characteristic. It’s diverse to a fault.”
Read more of this story at Slashdot.