A common mistake that many developers make, is that assume their job is to write code. That’s not what a developer does.
A developer’s job is to solve problems.
Part of the process of solving problems usually involves writing code, but that part of the process is surprisingly small. Building something useful takes more.
It takes knowing how to build iteratively, so that you can add pieces to the puzzle as you gain a greater understanding of the problem, because it’s not possible to build the perfect product from the start. It takes being able to validate features without writing code, because as it turns out, writing code is crazy expensive.
A system for testing, evaluating, and discarding ideas is also massively important, because without one, an entire team of developers will spend increasingly more and more of their energy carrying the mental weight of all the useful ideas they’ve implemented to help them be more productive.
I could keep going, but you get the picture.
None of these thing have much to do with writing code, but they are some of the most important parts of building a successful product. And yet, a large number of developers care more about being able to build, from memory, the optimal time-complexity solution for searching a binary tree.
That’s nice, but it’s not important. In fifteen years of working in the software industry, I have personally needed to build something from the pages of The Art of Computer Programming exactly zero times.
Don’t get me wrong – algorithms and data structures are important. But the most perfect and correct software in the world is a waste of human effort if nobody can use it. Master the art of solving problems, learn to build iteratively, become an expert at working cooperatively, and then worry about writing better code.
Because it takes more than just writing code.