Live data from Hacker News

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

simplethread.com

121–130 of 745 posts

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

#121

Earlier quoted context omitted.

I think part of the reasoning is in the trades there's the presumption that to be a master you must also be old (with exceptions, Da Vinci was active when he was still younger, 20). In the programming industry, there's likely a bias more toward younger people, and hiring offices ask for the world. They'd like a whole staff of masters and rockstars. Though that doesn't preclude "older" people from being known as maste…

That is a interesting thought, that seems to imply that those young programmers will not improve. If you are a master at 25, what do you call yourself after you have gained twenty more years of experience? It may be that those 25 year old's a more like journeymen then masters, or that programming is more like sports where youthful vigor are more important than experience.

John Carmack programmed Wolfenstein at 21 and doom when he was 22. At that point he did what most "masters of that craft" couldn't do. What would you call him? And what would you call him now, 30 years later?

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

#122
post #68

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

Can't agree with this enough. Sometimes it is directly for other humans (a GUI), other times it is indirectly related (an ETL job that converts data into a form that can be easily used to drive a recommendation engine which provides recommendations ... to people). This is tied into asking "why", another one of the author's points. At the end of the day, if you dig deep enough, the why will be related to human happine…

> At the end of the day, if you dig deep enough, the why will be related to human happiness.

At one of my jobs, one of my tasks was to take client HR feeds and load them into downstream systems for travel management. On your second day of employment at your company, you should have a profile in our system which was a portal that displayed all travel policies and a profile in whatever booking tool your company used.

We knew who your manager was so approval emails went out automatically. We knew what corporate card was assigned to you, so you never had to deal with that. We knew what preferred vendors your company had agreements with etc

All I was doing was data manipulation and loading on a scheduled or triggered basis. But ultimately it allowed new hires in a new environment to have an easy time booking their trip for mandatory training.

Any time our process failed, you had a traveler stressed out that they wouldn’t be able to book the trip in time or have to outlay money and reimburse later or get stuck at a distant airport.

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

#123

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

I think this applies to not just software, but engineering in general. See, science is mostly about observing the natural phenomena. On the other hand, there are jobs that are mostly about taking care of people's needs. Engineering sits in the middle. It's a mediator. We have to understand the circumstance of both sides - nature (this could be something like hardware capacity in our case) AND people. Just taking care of one side makes you a bad engineer. You need to be technical and sympathetic at the same time.

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

#124

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…

I think that depends on the context in which you’re working. Flashes of genius don’t have much place an an enterprise code base. Everything is rigorously standardized and separated into layers. Each layer has a bunch of bookkeeping about dependencies, interfaces, mocks, expectations, and test cases. This is not really brain work; it’s typing. Now maybe if you’re really brilliant, you’ll do much better than average with the implementation of a really tricky layer. But the layers are rarely tricky, implementing them never takes all that much time, the slow part is always the integration and associated mocking rituals. Typing speed pays better dividends than brainpower in terms of productivity, there.

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

#125

> I’d rather someone give me opinions that I violently disagree with than for them to have no opinions at all. I've been a developer for 15 years... anybody else feel like the further they get into their career, the more they want to keep their opinions to themselves? I feel like as a junior dev I had way stronger opinions and I was a lot more vocal about them. Now, I still have opinions, but I've learned that nobody…

Junior dev: Let's use this amazing algo I learned in school!

Senior dev: This won't work but it's no use explaning why since they've made up their minds (as have I).

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

#126

Earlier quoted context omitted.

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…

> 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. Yes, because that's how it's always presented. And if it's not, then it's also a myth because then it's not a 10x dev, it's 10x context, background understanding, and ex…

> it's 10x context, background understanding, and experience.

A person who is able to build 10x context, background and understanding is a 10x developer. Most people lack the ability to do that. Your post makes it seem like you could give those traits to anyone easily, but it doesn't work that way building the right mental models and being able to generalize your knowledge are key factors in talent.

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

#127

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.

Bias and poor processes. When people become reliant upon a technique or process to attain viability that means of execution becomes more important than the thing you are producing. As a result people will defend slow unproductive means of execution to the death. This is also a socially reinforced phenomenon.

It is completely realistic to achieve 10x (or even much greater) productivity and it isn’t challenging, but it requires abandonment of closely held ideas that are socially reinforced.

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

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

IF 10x exist, some will be popular and most won’t. Obviously he won’t know the obscure ones or pick examples you can’t relate to. So while he didn’t prove his point perhaps, perhaps you didn’t disprove his either. :)

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

#129

Earlier quoted context omitted.

And, as the article says, your advice and the GP’s are contextual. If you’re interested in creating software that makes people happy, solves their problems, gets cherished and recommended - then work hard to not lose sight of that goal in the thick of crafting a massive code edifice. If you’re interested in pushing the limits of your own creativity, and building a technical structure capable of handling domain comple…

Even if YOU are the only user, you're still writing software for a human. Hopefully.

You’re writing software for all of your future selves.

http://www.catb.org/~esr/writings/unix-koans/prodigy.html

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

#130

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…

I think that depends on the context in which you’re working. Flashes of genius don’t have much place an an enterprise code base. Everything is rigorously standardized and separated into layers. Each layer has a bunch of bookkeeping about dependencies, interfaces, mocks, expectations, and test cases. This is not really brain work; it’s typing. Now maybe if you’re really brilliant, you’ll do much better than average wi…

I find this true to an extent, but this also where a lot of unnecessary complexity, risk aversion and process live.
Post reply on HN