Live data from Hacker News

Things I’ve learned in my 20 years as a software engineer

simplethread.com

81–90 of 745 posts

Re: Things I’ve learned in my 20 years as a software engineer

#81
20 years of experience here. My little contributions:

21. Do not mistake hype and popularity for quality.

22. The best code is no code, but configuration is worse than code. Maintaining 1000 lines of YAML is worse than 9000 lines of code.

23. The best code is no code, but replacing a script with a zoo of tools and libraries is often worse.

Re: Things I’ve learned in my 20 years as a software engineer

#82

> 11. ..... > Nothing worries me more than a senior engineer that has no opinion of their tools or how to approach building software. The more you learn the more you realise you were wrong. Having an opinion has often come to mean one is a fan boy of something and will have it no other way. I have heard team leads say "this python code is bad because it uses no classes" or "we need to use EMR so we can process all cu…

The more I learn the more I realise everyone else is wrong too. Especially when it comes to general purpose tools - there's so many tradeoffs even in an ideal world but really often the original author just did things wrong, but right enough that his solution stuck and everyone kept piling on and building on top.

PHP and node come to mind immediately.

Ruby is down right retarded with promoting Concerns for modeling cross cutting concerns and fat controller/model is a pattern for creating technical debt.

Dealing with python environments and packages makes me want to avoid python if at all possible.

Using C# and Java means I'm probably going to have 3 projects for a hello world.

I'm not positively opinionated about my tools - it's more about deciding which one sucks least for a particular task.

Re: Things I’ve learned in my 20 years as a software engineer

#83
post #41
post #6

This is a very insightful list. But there is one thing I'd quibble with: while it's inherently a super-subjective metric, I would say that 10x programmers do exist. Both in the "can support a company by themselves" sense and the "mad lone genius" sense. Not all the 10x programmers are good at working with other people or on other people's ideas. 0.1x programmers are often lost or afraid, although they may just be uni…

My go-to examples of 10x developers are benevolent dictators like antirez (of Redis), evanw (of esbuild + Figma CTO), youyuxi (of Vue), Carmack, etc. Both qualitatively and quantitatively, their output is at least 10x of a typical developer at a typical company, not even counting everything these people do besides writing code. Many more are not famous but are in the same league of impact/productivity - I'm genuinely…

To pose it another way: for general software Dev (not some niche use case that only one guy understands), let’s say building websites in Vue or React, the idea of a 10x developer is that they can work in January and another, average, programmer can then spend February, March, April, May, June, July, August, and Sept… and the average guy won’t get more done?

Or they come in only every other Monday and contribute as much as a median Dev working full time?

It just doesn’t seem reasonable at all, at least if we read it literally.

I have worked with and met great, outstanding, developers who are much better than me. Some of them famous. None of them are anything close to 10x as productive, and I’m not particularly great. They’re much smarter than me, for sure, but they’re not 10x as productive.

Re: Things I’ve learned in my 20 years as a software engineer

#84
post #35
post #6

This is a very insightful list. But there is one thing I'd quibble with: while it's inherently a super-subjective metric, I would say that 10x programmers do exist. Both in the "can support a company by themselves" sense and the "mad lone genius" sense. Not all the 10x programmers are good at working with other people or on other people's ideas. 0.1x programmers are often lost or afraid, although they may just be uni…

>, I would say that 10x programmers do exist. Yes but I think the underlying issue is that some people really Really don't like to acknowledge (or are unaware) there's a small set of elite programmers that can do things average coders can't. But any label we use to describe them (i.e. "10x", "rockstar", "ninja", etc) will be psychologically distasteful. I previously commented about that effect: - https://news.ycombin…

We don't call Vermeer a 10x painter, Beethoven a 10x composer, nor Shakespeare a 10x author. It would be silly to call Turing a 10x computer scientist, or rockstar and ninja would be insulting.

Vermeer, Beethoven and Shakespeare are masters of their crafts. The same word we use for skilled tradesmen. Why can't we call them master programmers?

Re: Things I’ve learned in my 20 years as a software engineer

#85
post #6

This is a very insightful list. But there is one thing I'd quibble with: while it's inherently a super-subjective metric, I would say that 10x programmers do exist. Both in the "can support a company by themselves" sense and the "mad lone genius" sense. Not all the 10x programmers are good at working with other people or on other people's ideas. 0.1x programmers are often lost or afraid, although they may just be uni…

I like to say that I am a 10x developer 10% of the time. My work tends to be very "bursty" followed by long bouts of low productivity. It probably has more to do with my mental health than anything else. :/

Re: Things I’ve learned in my 20 years as a software engineer

#86
post #41

Earlier quoted context omitted.

My go-to examples of 10x developers are benevolent dictators like antirez (of Redis), evanw (of esbuild + Figma CTO), youyuxi (of Vue), Carmack, etc. Both qualitatively and quantitatively, their output is at least 10x of a typical developer at a typical company, not even counting everything these people do besides writing code. Many more are not famous but are in the same league of impact/productivity - I'm genuinely…

You mix popularity with 10x. Not all 10x programmers are popular. I believe 10xers exist within a business or technical context. This isn't limited to the field of computer science, but even traditional engineering (Edison) and sciences (Newton) have plenty 10x examples.

I'm not mixing - as I wrote, many more are not famous, but their impact is similar. When discussing abstract concepts, it helps to have concrete examples of that phenomena. Using "famous" people is a shortcut to define a shared definition for what "10x" might look like.

And yes, there are "10x" teachers, investors, lawyers, storytellers, sales folks, etc. Similarly, the distribution of talent that helps with "software development" might have a very long tail, leading to extraordinary performance versus the median.

Re: Things I’ve learned in my 20 years as a software engineer

#87
post #59

Earlier quoted context omitted.

With that argument you could say that everything humans ever did was for humans. So either it is a platitude or it is wrong.

You could say that, but my cat thinks you'd be wrong. However, I'm yet to see my cat boot up the computer.

Ultimately pets are for humans, whatever you do for your cat you do for humans. The same logic works there.

Re: Things I’ve learned in my 20 years as a software engineer

#88

> 11. ..... > Nothing worries me more than a senior engineer that has no opinion of their tools or how to approach building software. The more you learn the more you realise you were wrong. Having an opinion has often come to mean one is a fan boy of something and will have it no other way. I have heard team leads say "this python code is bad because it uses no classes" or "we need to use EMR so we can process all cu…

While I agree, I think the essence of this comment is that the converse of OP is not true, i.e. "you should trust a senior engineer that has strong opinions". As a sibling pointed out, it's sort of two steps: 1) make sure they have opinions, then 2) ask yourself if those opinions are that of a fan-boy or somebody who has been around the block enough to know a thing or two.

Re: Things I’ve learned in my 20 years as a software engineer

#89
post #56
post #28

Earlier quoted context omitted.

Presumably a 1x programmer is an average programmer. The type who does his job acceptably. He doesn't create huge problems, nor solve them. He is a fine team player and team member, but not a leader. Nobody despairs when he leaves, and he will be forgotten after a few months. Basically, the majority of programmers.

This was about minus 1x, so having a negative impact. And yes, these do exist.

Now that I think about it, the worst code seem to lead to situations where the top developers can really show their value.

I mean if the code base is quite good and is kept that way, then a normal developer can deal with it quite well. But if you get a legacy mess, then the hard-core developer can make really drastic changes that have enormous value to the maintainability, future development and bug-wise.

If a normal developer tries to tackle that mess, it's easy to get into trouble and drown in the sea of opportunities and not see the big picture and take a proper road plan to improve things.

So in a way -1 developers enable the top developers to show the gap between them and the normal devs.

Re: Things I’ve learned in my 20 years as a software engineer

#90

40+ years of experience here, and I'll tell you the #1 thing I've learned: * Software is a social service. Its for other humans. Incredibly, it doesn't matter how educated the developer, they still seem to have to learn this lesson themselves, over and over, until it sinks in...

What do I do with this, though?

I think I get what it means but how do I act on it?

Post reply on HN