Live data from Hacker News

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

simplethread.com

41–50 of 745 posts

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

#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 puzzled how someone can say such people do not exist.

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

#43
Perspective by definition is something that requires time, so any top 10 list of this kind can't be applied consciously with any rigor. I will say point 12 (everyone loves cheap wins, and hates substantive progress) is unadulterated (but unactionable) truth.

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

#44

> 13. Your data is the most important part of your system +1. Most (including me) internalise, if at all, this lesson the hard way through trial and error. I wish this is was taught in colleges. Software is mostly about manipulating data and it's a pity that not much is taught in a structured manner about building systems around data. I expected Domain Driven Design (DDD) would address this but it doesn't.

It is taught. And then you enter the real world and you find that everyone just ignores this shit whenever it is convenient (and unsurprisingly the data is garbage).

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

#46
post #33

I have seen many similar posts what people have learned but not once have I seen: "Don't assume anything". So many times when shit hit the bricks because someone assumed something about some other thing they clearly don't know everything about. Which eventually lead to the system failing.

It would be impossible to do any work at all without making assumptions. This attitude belies the fact that of the 1000s of assumptions you make every day 1 or 2 will end up being incorrect, but it's usually very, very hard or even impossible to know which in advance.

It’s fine when you don’t do it deliberately. It’s just that about 100% of the time someone says “I just assumed…” that is the source of whatever problem you are having.

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

#47
post #42
post #30

Earlier quoted context omitted.

Other computers

I see you work in finance. Where the humans are just office decoration.

It may be computers all the way down, but at the bottom there is a human. Somewhere. Poor thing.

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

#48
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…

Saying 10x programmers are a myth because it's crazy that someone could do in 1 day what another could do in 1 week makes the assumption that both programmers in the example have the same amount of context, background understanding, and experience.

The benefit of talented engineers comes from the fact that they avoid costly pitfalls - not that they pump out more code per hour worked.

I feel this "10x programmers are a myth" attitude comes from a good place of wanting to promote harmonious working and skill-up junior engineers, but it seems so totally detached from reality. I'm not sure the "benefit" of propagandizing against talented assholes is worth the cost of demotivating people who might be inspired that they could become a 10x engineer.

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

#49
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've also met one 10x programmer in my life. A lot comes down to being able to reason fast, architect well, and write code on the fly without resorting much to: * Documentation * The debugger / print() Becoming a 10x developer means that you have a set of skills that work well together in an end to end process from going to initial requirements to fully fledged architecture and/or code.

I think most people who have worked with me would consider me a 10x developer, I am capable of writing something in hours that would take others weeks (not in a half-arsed way, but taking all of the complexities of the domain into account). And I think that's what most people think a 10x'er is: that they can just do stuff quicker.

That's not what I think 10x'er is though. I think a 10x'er is someone who enables the 'average' developer to become a 2x, 3x, 4x developer. This can be through writing some core tech, a library used by all, or through mentoring and guidance. The 10x'er can then become a 100x or even 1000x developer. The 10x dev is the person who picks up the really difficult or ugly stuff and says: "Hold my beer, I'll get that done" - motivating the team and helping them to keep velocity. They lead by example and explain to the team why they've taken the approach they have.

Sometimes people use the term Rockstar to define a 10x developer. I think that's a loaded term that comes with an 'arrogance' tag. The true 10x developers shouldn't be arrogant (beyond the base level arrogance everyone of ability has), they can and should be the glue that holds a team together and helps everyone achieve more.

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

#50
post #26

Earlier quoted context omitted.

Sure, but that doesn't make it any less useful as a fact - especially when you are working with other developers who choose to try to ignore/avoid it as a maxim. Please don't tell me you've never met such a developer ..

I am such a developer.

See you in 30+ years! :P
Post reply on HN