Warning: Minor rant below.
I can’t say how my mind got on this topic, but lately I’ve been thinking a lot about our industry’s approach to software development.
In many ways, software development is getting better. It’s ahead of where we were when I started as a professional developer over 20 years ago. But while languages and tooling have improved, I feel there are several core problems that we can’t seem to solve.
There are three significant issues I see our industry struggle with today. While there are many others, these have been top-of-mind for me lately.
More “Thinking Time”
The notion that a developer is only making progress when they are hands-to-keyboard is ludicrous. Sadly, this mindset is pervasive in our industry, and it may be the most harmful of the three I include here. The belief that we can build complex systems without a little pre-thought is crazy.
Changing this mindset requires some effort on the part of software developers — advocating for “thinking time” is a great place to start. But even more, management needs to understand that the “keyboard push” is the fastest way to undermine developers’ work and guarantee the final product will be substandard. Software developers love solving problems; it’s in their nature. When they’re deep in the code, they can have insights that nobody else will. We must provide space for developers to think through problems and give them the freedom to say something when a potential problem is found. Otherwise, we’re trying their hands and limiting their potential.
Unfortunately, I am not aware of any measurable that can quantify the value of “thinking time”. All I can offer is anecdotal evidence from both my time as a developer and the many conversations with other developers.
Robust UI Frameworks
Developing user interfaces is one area where I don’t think we’ve progressed as far or as well as we believe we have. While our frontends sure look better than the green screens of decades ago, most of those systems still run just fine. I fear the same won’t be said for all the apps we’re currently building using the latest framework hotness. Do we think all of these fancy “_js” applications will be as durable and not require some major intervention (read: rewrite) in the next few years? What is the shelf life of aa SPA? Will the SPAs we write today run unchanged 30 years from now?
UI frameworks are not just a problem from a maintenance standpoint. I often ask myself if we really are developing as fast as we can when we use them. It feels like each new framework / pattern provides solutions to some problems while creating new and unexpected ones at the same time (sort of like Whac-A-Mole, but less fun). No framework besides WPF has layout figured out. But even WPF makes it a battle to change the color of a control.
The UI framework issue is a tough problem to solve. You can see that by the number of proposed solutions out there. Every year brings a new solution promising solutions to our problems but ends up being just more of the same. I hope we will eventually stabilize on a small number of UI frameworks, but those hopes keep getting crushed.
It feels like software education is stuck in a rut by training computer science graduates, not software engineers. Good engineering discipline is still missing from the majority of software development programs. Most tech education is focused on just that, tech. We’re really good at teaching tech, but we’re not good at teaching how to think. This just (unintentionally) reinforces the mistaken belief that new tech will magically solve all of our problems for us. There is no magic wand, no silver bullet.
Once someone is in the workforce, they will struggle to find options for continued education that will address the missing engineering component. They might not even be looking for it because they weren’t trained to see engineering’s importance. We’re trying to address this in our Software Design and Development Clinics, but the industry needs this to happen before these developers join the workforce.
My little rant here doesn’t cover everything that needs to change in our industry. What I’ve listed here are just some things I’d like to see change because I see their impact so frequently. What would you like to see? Sound off in the comments below.