Programming is amazing: we get to draw up a system on a whiteboard, and then we can implement everything, all the way down (if we chose to). We can build significant systems in a matter of weeks.
The unique thing here is the range of the stack that we manipulate, there are a lot of hats to be worn by a single human! What other field allows to go from 0’s and 1’s (assembly) to fear-of-heights-inducing-levels-of-abstraction, like a bunch of boxes on a whiteboard, representing planet-scale designs?
This begs the question:
Which part of the stack is the most impactful to master ?
I find this really hard to answer, but very interesting. Typically, programmers tend to prefer one over the other. Some developers excel at finding the right function names, file organization structure, module interfaces, function signatures, code structure,… Other developers excel at reasoning about components, boxes, how things could go wrong, and how to connect things together at a very high level. They also feel like very different skills, that need separate and completely different practice and experience types.
If you take interviews at big tech companies as a reference, you’ll know that the “systems/architecture design” ones tend to have more weight in the decision to give a candidate a senior role. This implies that the design programming skill is the most valuable one (there are a lot of assumptions here, starting with the assumption that we interview correctly).
Most “famous” programmers are known for writing a wonderful library/interface/abstraction, not a system. When you ask developers who programmer they admire most is, they lean towards people that have written amazing abstractions (linux, the python requests package, rails, etc…). These, to me, fall into the details oriented programming category.
So corporations seem to value the systems design skills more, and individuals seem to admire the details oriented progamming skills more.
Which is king? It’s a tough one to answer! Obviously, it’s not a clear dichotomy, but people still lean towards one end or the other of the spectrum.