It's our own damn fault
Over the course of my more than twenty years in the software development industry, I've worked with hundreds if not thousands of developers. Many of the projects I've been involved with have suffered from the same malady; a disconnect between expectations and realistic possibility.
The Agile Manifesto attempts to address many of the root causes of this malady. It encourages individuals to interact, collaborate, communicate, and respond to change. These are not easy things to do. Nor do they necessarily ensure quality software.
The Manifesto for Software Craftsmanship gives a clear nod to the Agile Manifesto and then extends it by addressing the need for quality software. These are not easy things to do.
Many developers look to this inequity and the challenges and realize they are helpless against unrealistic demands. External forces are at play; leadership, management, or sales - no matter. They neither listen nor care. They want it done. They want it all done. And they want it yesterday.
So we cluster together. We lament. We gnash our teeth. We wring our hands. We commiserate. And then we perform our duties in compliance with the demands set upon us.
It is not our fault. Try as we might, we get no respect. No recognition. No appreciation. If we don't crank fast and put in the long hours, they'll just find somebody who will.
We have no choice.
We are victims.
And we need only for "them" to understand and allow us to do our jobs well.
Where do we get off? Absolving ourselves of responsibility for the quality of our work by blaming others. We rationalize doing a lower quality job in the name of pressures, deadlines, and promises made by others. But it is we who deliver the software. It is we who ultimately make the decision to not test enough, not refactor, put in excessive hours, and not do a quality job.
And every time we do this. Every single time we say it can't be done but then deliver a steaming pile that closely resembles that which we said couldn't be done; we reinforce the behaviors. Every time we put in excessive hours to be heroes, we set a precedent for the next time. Every time we compromise quality in order to meet unrealistic expectations, we devalue ourselves and the service we provide.
We haven't the right to complain about the very behaviors we enable.
If we want to stop this pattern. If we want to improve the reputation of our profession. If we want "them" to understand, then we need to change our behavior. Take a stand. Do your job well regardless of the pressure. A doomed project is doomed whether we compromise on our values or not. The more of us who behave this way; the more of us who insist on quality from ourselves and our teammates, the more evident it will become that this is not only a better way, but the right way - perhaps the only way.
Do your job. The absolute best you can. Keep learning. Keep improving.
Never ask permission to do your job well.