Understanding the reasoning behind the four agile values
Why the Four Agile Values don&#x27;t work:<p>1. Nobody applies rigor to anything complicated anymore. The only way you can produce anything that works without rigor is to only produce very small things that you can prove work. So you can produce a lot of very small work and say &quot;I&#x27;m developing so fast!&quot;, and meanwhile all the components connected together can be a tire fire. Short-term wins and long-term pain. This applies to a lot of the Agile process, but also the avoidance of processes and tools. Processes and tools can help or hurt, depending on how you use them. Even Agile is a process.<p>2. Working &quot;software&quot; is completely meaningless. What is actually valuable is <i>a working solution to a user problem</i>. I can make a program that very reliably spins in a loop forever, doing nothing. Who the fuck wants that? Not a user. And a large system, which is what a lot of software today is written for, cannot be connected together, operated, troubleshooted, etc without documentation. Nobody&#x27;s going to be able to run your software or fix it when it breaks if they have no documentation, because <i>they didn&#x27;t write your software</i>, so they have no fucking idea what to do with it. So we end up with a lot of unmaintainable widgets that don&#x27;t solve user problems.<p>3. No software developer actually collaborates with a customer, because software developers have never cared about a customer. They care about their precious code, their algorithms, their design, their bugs, their tests. They don&#x27;t care if the customer hates the software. I have literally never heard a developer utter the words &quot;so how does the customer like the software?&quot; This whole rule of customer collaboration is just an excuse not to have to think about a contract.<p>4. &#x27;Responding to change&#x27; pretty much just means &#x27;push out shit software and wait for bug reports&#x27;. For the first year of operation, Agile software is garbage. Because there was no coherent plan, it doesn&#x27;t work for the customer, it isn&#x27;t maintainable, and the other parts of a complex system that it operates as a part of will constantly break in weird ways. We don&#x27;t need to make a plan, so we don&#x27;t need to figure out how this thing is supposed to work, so in 6 months when we finally get around to a customer use case, we&#x27;ll realize this architecture never would have worked within the constraints they&#x27;re running it in.<p>Software development is not &#x27;too damn complex&#x27;. Software developers are just lazy. We know that, because developers brag about being lazy all the time (I do too). They have these huge egos, and they believe that they&#x27;re intelligent or talented because they can design an efficient algorithm or create &#x27;beautiful code&#x27;. But the end result of all that code is what matters, not the code itself.<p>Agile is simply a 180-degree reaction to decades of work in developing processes that result in reliable solutions. The processes got complicated, so the software developers said, &quot;fuck it, i&#x27;m just going to wing it&quot;. And as a result, most modern software is less reliable and more complicated than decades-old systems that are both simpler and solve more problems.