Live data from Hacker News

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

simplethread.com

301–310 of 745 posts

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

#301
This is a great list. My two from 10 years of experience would probably be:

- Simplicity is everything. Complexity is fun but business is not about fun. It’s about solving problems. It’s about having other people be able to read your code and quickly understand it. Or having a system that can be debugged without a PhD in the specific tool you’re using.

- Everything is a tradeoff. If something feels too good to be true it probably is. If it’s easy up front, it’s probably hard in other ways. If you want to make something faster you’ll probably need to make it more complicated.

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

#302

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.

Nicely put. Yet I would add that your code is preferable to third party code if you can solve the same problem with 10x less SLOCs or complexity.

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

#303
post #184

Earlier quoted context omitted.

I do a lot of dev work with non-profits and such. About a year ago I was working on an extremely difficult project as a volunteer where I was insistent that a specific part was vitally important to getting the project to move forward (generalizing tables extraction from scanned OCR docs) and I was spending a lot of time on it. One of the devs I worked with, with 40+ years of experience, basically told me this exact t…

Make an API out of that. There is huge demand for it.

Looks this does it https://www.extracttable.com/

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

#304

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…

On the edge of possible/impossible, ratios will lose their meanings. In the same way, you can say "Einstein is a 10,000x scientist."

Continuing with this analogy and using Kuhn's concepts, maybe it's better to bracket out breakthroughs (paradigm shifts) when talking about everyday productivity (normal science).

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

#305

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 the "10x programmer" as a term is confusing.

In one analogy it could be the 10x bricklayer. One who does a well defined job 10 times faster than the others. I think this is the notion people oppose.

Another analogy is the 10x classical composer. A person who produces music that is 10 times better music. But this is much more about creative/artistic capacity than about producing. Nobody oppose this.

I that your examples incarnate the same idea: It is not about producing code faster. It is about having better ideas.

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

#306

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

No, I've been doing this for ~30 years now and I have really strong unpopular opinions on things. Like: - NPM/Yarn/Gems etc is a disaster waiting to happen. Having lots of dependencies is a security nightmare and a maintenance issue. As these projects get dropped by their original maintainers we'll start seeing more supply-side attacks and more vulnerabilities going unpatched. - Docker is a great solution for a speci…

Those seem like pretty unobjectionable opinions. Have an upvote!

You want a controversial opinion (on HN), how about mine:

"It's not always a good tradeoff to throw something under the bus to save developer time."

So many important things are routinely sacrificed at the altar of developer speed and comfort, app runtime performance being the big one. It's used to justify all sorts of crazy things we do in modern software to ship faster, but so hard to push back on because developers are expensive and software needs to be done yesterday.

Some things are worth giving up so that developers can move faster, but I argue not everything. Need to evaluate case by case.

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

#307

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

No, I've been doing this for ~30 years now and I have really strong unpopular opinions on things. Like: - NPM/Yarn/Gems etc is a disaster waiting to happen. Having lots of dependencies is a security nightmare and a maintenance issue. As these projects get dropped by their original maintainers we'll start seeing more supply-side attacks and more vulnerabilities going unpatched. - Docker is a great solution for a speci…

Quite brave to share these unpopular opinions like “npm is bad” on HN.

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

#308
Agree with most of this.

> 1. I still don’t know very much

Same here, Im still realising how much I dont know.

> The 10x programmer is a silly myth.

Yes it is. It's a stupid harmful myth. Everyone on HN and Reddit think they are the "10xers", and its used as an excuse to be rude and insufferable.

Some time ago, I decided I'd be happy being a 1x programmer[1]

> Don’t mistake humility for ignorance

Very true. Some of the best engineers I worked with, those who would never get job at these 10x companies, were quiet and reserved. But when you actually talked to them, you realised it was humility and a willingness to learn.

> Interviews are almost worthless for telling how good of a team member someone will be

Yes, interviews are just a form of hazing. The survivors are those who can stand the hazing, not the best programmers

1. https://new.pythonforengineers.com/blog/confessions-of-a-1x-...

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

#309

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's the quote? Knowledge can be taught. Wisdom can't be taught or told... it can only be learned through experience? Edit: Ah, found it. "Wisdom cannot be imparted. Wisdom that a wise man attempts to impart always sounds like foolishness to someone else ... Knowledge can be communicated, but not wisdom. One can find it, live it, do wonders through it, but one cannot communicate and teach it." - Siddhartha

The way I was told it: "Knowledge is knowing it's a one-way street. Wisdom is learning to look both ways anyway."

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

#310
> “if they ask about time off in the first interview then they are never going to be there!”

The fact that this attitude is common scares me when I'm doing interviews.

Time off is incredibly important to me. What's the use of making a great income if you can't get the time off to enjoy it?

The culture about the use of PTO varies wildly between companies. A friend of mine worked somewhere that supposedly gave 20 days PTO per year, but trying to actually use more than a single day at a time was always met with denials, and even if you did take a Friday off, you were expected to work 10 hours/day the other 4 days of that week to make up for it.

So yeah, when I'm interviewing, I want to know how much time people are taking off, but I don't want the interviewer to think I'm lazy and will be trying to avoid work as much as possible.

Post reply on HN