Why software complexity persists
I was visiting Nin in Croatia today. It is one of the oldest towns in the Eastern Adriatic, having developed over 3000 years ago.
A lot changed in that time, but plenty stayed the same. We walked around and enjoyed a good meal.
I imagine this has not changed.
What about software?
Brooks’ Law still holds: adding more people to a late project makes it later. Modern tools like Slack and GitHub simplify things but don’t solve the fundamental problems of synchronizing a team.
Software is still complex, and it’s arguably becoming more complex. We’ve just built better tools to handle the increased complexity brought by cloud architectures, microservices, or apps.
But we haven’t solved the fundamental issues that make software development hard.
The limitation is still people.
A software project’s success depends on team dynamics, individuals, communication gaps, leadership, decision-making…
We haven’t found ways around these issues. Agile methodologies were an attempt to do so, but they failed spectacularly and mostly brought a different flavor of the good ‘ol’ waterfall.
Since I entered the industry as an amateur 20 years ago, the cognitive load on a developer only increased.
The number of tools, frameworks, libraries, procedures, languages, and architectures you need to know now is paralyzing. I don’t envy juniors who didn’t grow up with the technology but are thrown into the water to swim.
We’ve gone full circle with server-side rendering through SPAs and back to server-side.
And now, a new frontier is opening with AI.
It’s too soon to judge whether it’s actually going to make our jobs easier. Sure, some tricks are impressive, but I’ve still found them lacking for serious projects.
I wonder if, by adopting AI, we’ll increase the complexity again and develop better toolings around it without actually addressing the things that make development hard.
People.
What do you think?
Best regards,
Taj