author here. Thanks for your thoughtful comment.<p>&gt; [meta] The title of this article sucks, really, it&#x27;s a bait,<p>It was not intended. The title just tries to summarize the post. Still, so much to learn about writing!<p>&gt;&gt; Lots of rework happens because of miscommunications with the user. Other times, the user doesn’t fully understand their problem (there’s not much we can do about this)<p>&gt; Agreed. That&#x27;s where &quot;lean programming&quot; comes into play. If you have the capacity to make the code change as requirements change then I think the issue is pretty much solved. However, not all languages&#x2F;solutions are equal in that matter. Obviously TDD, Agile techniques help.<p>I have a note on Agile. As I mentioned, I believe Agile or lean programming to be solutions. They don&#x27;t question anything about the status quo, they just try to cope with it. It&#x27;s good, it&#x27;s an improvement. But an incremental one from the perspective of the stack of poker chips.<p>&gt;&gt; If we assume that typing code is the way to program, we will never look for better alternatives.
&gt; Typing code is a medium. The fact is, for an engineers it usually the most convenient way to create a program.<p>Turns out that the medium has an huge effect on our understanding. <a href="https:&#x2F;&#x2F;signalvnoise.com&#x2F;posts&#x2F;2976-bret-victor-thinks-math-needs-a-new-ui" rel="nofollow">https:&#x2F;&#x2F;signalvnoise.com&#x2F;posts&#x2F;2976-bret-victor-thinks-math-...</a><p>&gt;&gt; Building software is 90% a human problem
&gt;Agreed, but like everything humans do.<p>The first rule of the tautology club is the first rule of the tautology club. Of course! the idea is to make programming something that humans don&#x27;t do, or at least, reduce how much human involvement you need. Humans are the weaker link in software development, we should do like with other things that humans don&#x27;t do <i>anymore</i>, figure out a solution and put our time to do something else.