"Fast must be cutting corners and not just actually better at programming" is a weird fallacy to hang your hat on.
hm, something about this that I just can't put my thumb on
1. https://en.wikipedia.org/wiki/ElitismThe code he produced was absolutely and completely unmaintainable. The joke was that this guy could program C in any language. His code kindof-sort-of worked, but only he understood it and when anyone else had to take over his stuff, the first thing they had to do was rewriting the part from scratch. Of course there were no tests, so when the new person broke something in their attempt to try to work with their code they were scolded. The person in question was the CTO of the company, by the way.
He was 3x alright, but at the expense of everyone else on the team. I was very glad to see him go.
There's a huge cost to having engineers who are bad at understanding and solving problems. The cost of having people who are good at understanding and solving problems is supposed to be that you pay them more, but that's not how employment incentive structures work in practice because information asymmetry and stigma around talking about salaries.
Yeah..... pass.
You can have beautiful code and garbage product, and great code and a garbage product.
If your PM is pushing bad products, that's on them. Your job is to deliver good product, not good code.
Let’s be honest: sometimes you’re not “changing the world” like many founders like to think, just building yet another shopping cart.
If you lose love for your craft there’s no product that’ll cure it.
The code analogy here would be nerding out on how to use a hammer in spectacular ways, but not really do anything interesting with it.
You can still really love your tools, but you shouldn't focus on them as much as what you're building with them.
These two are not disjoint, but instead quite related.
> Your job is to deliver good product, not good code.
If your job is software engineering, then "good code" is what facilitates "good product." It boils down to maximizing the "abilities":
- Understandability
- Applicability
- Testability
- Maintainability
- Flexibility
- Durability
Better to have hacky code that delivers value than to deliver nothing.
"Hacky code" is most often a result of those responsible for delivery having gaps in their understanding of the product need.
When engineers have a deep understanding of what is needed, there is rarely a need for hacks. Of course, the obvious exception to this is when libraries and/or external services mandate them.
Who cares if it slows down feature development if you never have to change it. If it does impact the product, it then becomes part of the product value you're delivering. This is the time you should be investing in better code.
I'm not saying that you should disregard your code, just that it's not what you should put at the top of your list.
You can build amazing products with amazing code, and they will often raise each other up.
A great example is Redis, that codebase taught me how to write C code, and I also use Redis everywhere.