Live data from Hacker News

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

simplethread.com

161–170 of 745 posts

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

#161

The 10x programmer is a silly myth. The idea that someone can produce in 1 day what another competent, hard working, similarly experienced programmer can produce in 2 weeks is silly. You know, 10x is an optimistic number here. Some programmers will do in 1 day what you wont achieve in a life time. And not understanding that makes you a bad programmer by my book simply because this is the foundation of the job. So let…

Agreed, I don't know why the industry (or people?) in general have a problem with accepting this abilities gap. It's as if the notion of people being arbitrarily born more or less with a knack for something is evil. Let me tell you the story of when I realized I was (at best), a "not-mediocre" dev: 1. I've been programming for fun even as a kid. That's what got me into it: If you count kid-programming as "programming…

> Agreed, I don't know why the industry (or people?) in general have a problem with accepting this abilities gap.

I don’t think it’s that people have a problem admitting that there are significant outliers. It’s that there’s a backlash to the fetishization of “hiring 10x programmers” and most people claiming to be one really aren’t.

I know I’m good at it, but I am not and will probably never get to 10x on just writing code. I’ve worked with people who have a better claim to being a 10x. And having seen that, I have also never encountered any company that claims to hire 10x engineers that actually has a process to consistently hire even 1-2x engineers.

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

#162
5. Software is a means to an end

Yes, yes and yes. Many times we lose sight of the fact our job is to support the business (money-making) functions of the company. The software itself isn't the end-all-be-all point of what the organization does unless you write open source software all day long and survive off donations. My gut tells me that most departments are like this and sees themselves as the core of the company but I think software engineers think of themselves more highly than most (and more highly than they should). A bit of humility would really help - myself included more than most probably.

I agree with a lot of what he says... A few points are a little off IMHO but I've only been doing this for a few more years than this gentleman. Perhaps I'll feel differently in a few more. :)

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

#163
post #152

Earlier quoted context omitted.

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 c…

> Dealing with python environments and packages makes me want to avoid python if at all possible. I see this a lot, and I don't blame folks for having this stance. It's taken me over a decade to dial in my workflow. Quick rundown: - don't use python2. Ever. - don't use the system python, or brew python for anything other than bootstrapping - only use `pip install --user` for exactly one thing: `pip install --user pip…

None of that fix the fact that 3 years later, all of your dependencies will have conflicting requirements.

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

#165

Earlier quoted context omitted.

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 mu…

How long would it have taken you or me to write Doom, or Quake? How long would it have taken Carmack, if it'd just been him? I think you have a false dichotomy here. Carmack isn't 10x better a C or assembly than me. But in his domain he's easily 10x smarter and more productive than me. And on top of that, he has a quarter century more experience in graphics programming than me. That shit accumulates. Yes, actually. I…

> How long would it have taken you or me to write Doom, or Quake?

Almost definitely not 10 years.

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

#166
An excellent article. Thank you for your insights. I used to run a software engineering practice and I must admit that almost all of your points resonated with me.

I'd like to add that one should catch oneself when falling into the "Perfect is the enemy of good" trap. As engineers, we would like things to be perfect, but sometimes at the peril of late delivery, little feedback, and development of features not required.

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

#167

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.

The best code is no code; the second best code is high quality third party code; the third best code is your code; the worst code is low quality third party code, and that one is by a huge margin.

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

#168
# 20 - Always strive to build a smaller system, is probably the most important one. The new generation of engineers have yet to learn (again) that complexity kills. The amount of resources spent maintaining unnecessary complexity is staggering. Your small thing does not have to be a distributed system.

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

#169

> 11. One of the biggest differences between a senior engineer and a junior engineer is that they’ve formed opinions about the way things should be I found that another thing which separates a junior from a senior is tendency to give up and cut corners. Stuck a wall making that integration test work? get back to it after the current task, don't settle on manual testing. But maybe that's a trait of bad developers, rat…

Umm, I don't agree (with OP). Senior (or juniors, if it matters) engineers who have strong opinions about anything are, in my limited experience, very stubborn and difficult to work with. I find myself more and more answering with "it depends, give us more time to see what can be done/what tools we can use".

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

#170

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...

> 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...

That's probably because many devs were socially isolated when growing up. (How do you think they got so much time spent tinkering with computers?)

Also, it is generally hard to imagine yourself in other's shoes. Example: imagine trying to use your UI but with a 60-year old vision instead of that of a 20-yo. Example: imagine having no formal address or no citizenship (stateless).

Post reply on HN