Here&#x27;s the thing: everything sucks. Every industry, profession, even hobby is full of seemingly arbitrary limitations, poor tooling, quirky hacks you have to work around, little bits of required know-how that seem ancillary to the central goals. Ask your friends in other engineering disciplines, politics and public policy of all kinds, finance, medicine, and energy. Everything sucks because the world is complicated and path dependency calls the shots. The question to ask is whether things are getting better or worse.<p>And things in programming are getting emphatically better! For all the incidental complexity and pointless thrashing about [1], almost everything about writing software is better than it was just <i>10 years ago</i>, which is not a very long time. The people who say things like &quot;nothing ever changes&quot; or &quot;we&#x27;re just reinventing old technology&quot; have some seriously rose-tinted glasses. It&#x27;s <i>so</i> much easier to do just about everything. The tools are better, the hardware is better, the quantity and quality of information is better. And we have better, bigger software doing more important things, which is why the industry is doing so well. The sky is doing the opposite of falling.<p>That isn&#x27;t to say there isn&#x27;t room for improvement, or that complaining about broken things is wrong. That lets us keeping fixing things. It&#x27;s more that &quot;everything is broken and stupid&quot; isn&#x27;t a very useful lens, and leads to fool&#x27;s errands like this:<p>&gt; It’s time to kill the aimless, bottom-up, ad-hoc incrementalism in programming in favor of purposeful, top-bottom and planned innovation.<p>I&#x27;ll stick to my massive pile of working software that solves real problems, warts and all. And I&#x27;ll continue to help improve it wherever I can so that it works better.<p>[1] I joked recently that Javascript library developers would be more efficient if they had their CI servers deprecate their APIs automatically before releasing them