3 ms·
> It's like if a virtuoso musician were told that he can't play music anymore. He needs to move on to conducting That's because coding skill, once you reach a
by twblalock 4y ago
> It's like if a virtuoso musician were told that he can't play music anymore. He needs to move on to conducting
That's because coding skill, once you reach a certain baseline, is good enough and other things like architecture matter far more than raw ability.
Unless you are an outlier like John Carmack, improving your coding ability really does not improve your ability to provide business value. The difference between a junior and senior engineer is really the difference in knowledge about what can go wrong, and that knowledge is fundamentally about architecture and edge cases, not coding ability.
> Some business somewhere ought to make an effort to let the virtuoso coders keep doing their thing, and break out the engineers who want to go into system design as a separate career track.
That does happen, mostly at large companies that can spare the resources. I know a number of people who have been around for decades and make a lot of money doing that.
- bcrosby95 4y ago> The difference between a junior and senior engineer is really the difference in knowledge about what can go wrong, and that knowledge is fundamentally about architecture and edge cases, not coding ability. What do you define as part of coding ability? You're making design decisions anytime you code things. Sometimes its smaller scale but sometimes it's larger. Edge cases and consequences of your code are abound in every line you type. Trying to divorce these things from coding ability feels really artificial. If they aren't coding ability, what is? Raw typing speed?
- twblalock 4y agoThe difference is understanding the architecture at a higher level: how programs communicate with their dependencies, how to do resiliency and failover, how to scale an entire system of such programs, how to react when something is wrong in such a complex system, and crucially how to design your programs so they can behave as expected when things fail.
- still_grokking 4y agoAnd how do you program such complex software in the first place if you don't know all those things? Not understanding the architecture means not knowing what you do at all! If you don't know what you're doing you should be strictly prohibited form doing it anyway. Or else you will very likely cause damage. Or do you think it's viable that some programmers require constant hand holding with almost every line of code they write because they otherwise don't know what and how to implement anything correctly? The model "coding monkey" just does not work; as everybody knows…