Here are some serious outstanding problems in software:<p>* Considering how fast modern computers are, software is so damn slow.<p>* Software frequently stops working. When it does, the process to diagnose the bug and fix it conclusively is not a straightforward one.<p>* Software is poorly understood. Most developers today work with other people’s abstractions. It’s rare to find a software system that someone can describe the inner workings of end to end.<p>* Software is excessively complex. To understand a codebase, you might have to crawl through ten layers of dependencies, imports, and scaffolding before finding code that actually does anything.<p>These are just some obvious ones off the top of my head. Does following the advice on this list make me any better at tackling any of these problems?<p>Could someone conceivably do <i>none of the things on this list</i>, and still be a very skilled developer who makes strong strides toward solving these problems?