Live data from Hacker News

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

simplethread.com

251–260 of 745 posts

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

#251

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

Most people mostly care about his/her own opinions, and others opinions only insofar as they reflect on himself/herself (even though of course the others are also thinking about themselves mostly), we're hopelessly self-involved creatures like that. Nonetheless there is inertia and subtle shifts that can come from sharing them, and though it may often feel like coming up against a brick wall if you look in the right way you'll see the bricks may be aligned a bit differently, and you can trace some of those differences to opinions you may have expressed.

As always the wise approach is probably somewhere in the middle, in this case choosing your battles. You don't have to voice every opinion, but you shouldn't be silent if you have a strong and well-formed opinion about something important.

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

#252
I think I agree with every point on that post.

Only thing that I would add to the context:

If someone is a junior developer and has position where he has to "just write code" don't worry much about that advice. Yes you should understand what this advice is and look for ways to grow into that mindset but as junior dev such person still has privilege to fully focus on coding stuff as quickly as possible to learn have their movements worked out.

Then as such junior gets to 2 or more years of experience this advice should sink in and such person should start working as those points guide. After 2 years of being code monkey and having the feel for the code one can start looking at bigger picture.

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

#253
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 think he's beating up a straw man, here.

> The idea that someone can produce in 1 day what another competent, hard working, similarly experienced programmer can produce in 2 weeks is silly.

Over such short time scales, maybe, but the idea that someone could contribute in 1 year what another programmer wouldn't accomplish in 10 years is highly plausible, to me.

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

#254

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…

This is the opposite of how you should want any knowledge worker to think. If you believe that there’s some innate ability that makes people 10x better at a skill than you rather than hours of practice and study then you are much less likely to acquire that skill or learn those skills efficiently. You need to have a growth mindset to be an effective knowledge worker not a fixed mindset. This is discussed in the book…

[deleted]

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

#255
I have some comments as a software engineer of 8+ years of professional experience.

> 1. I still don’t know very much

Yep.

> 2. The hardest part of software is building the right thing

That's definitely hard but I'd say it's the people that are the hardest part.

> 3. The best software engineers think like designers

I'm not sure I entirely agree. It's also in total conflict with the growth economy the employs many of us; properly designing stuff takes time. No matter what, I always end up in a situation where "they want this as soon as possible". Being able to take the time to actually design something seems more like the exception than the norm. The only way around it is experience so that something resembling good design can occur by knee-jerk.

> 4. The best code is no code, or code you don’t have to maintain

> 5. Software is a means to an end

> 6. Sometimes you have to stop sharpening the saw, and just start cutting shit

Yes.

> 7. If you don’t have a good grasp of the universe of what’s possible, you can’t design a good system

Honestly, I don't that any of us have a good grasp of the universe of possibilities. A "good" system is highly subjective. Bad code is at least somewhat measurable if it doesn't work, isn't efficient, or takes a long time for engineers to understand.

There may be no such thing as good code. There's working code and there's code that fails to do its job.

> 8. Every system eventually sucks, get over it

I'd put an asterisk in front of "every". Many "good" systems turn out to suck not only because people ruin them but because engineers learn, grown, and change. While I tend to hate codebases more over time, there are some that I come back to years later and am still impressed by.

> 9. Nobody asks “why” enough

Yes. This has to be part of company culture, however. Many get defensive when subordinates question even the simplest of things, no matter how much they encourage that you "ask questions".

> 10. We should be far more focused on avoiding 0.1x programmers than finding 10x programmers

Maybe, but I've met more 10x developers than I have 0.1x. And I've met exactly one 10x developer.

There was one guy who got canned at the first company that I worked for, and my bosses justified it because they thought he "wasn't doing anything". In actuality, he was directed poorly. Some people can just ignore bullshit management but others need seniors who can provide direction and some level of mentorship. That doesn't mean they are 0.1x developers. It may mean that team leaders haven't managed to find that developer's particular strength.

The closest I've found to 0.1x developers were some dudebros I met during my education, but every one of them flunked out.

> 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've always had opinions so I'm not sure I relate to this as a senior engineer. I have more opinions, and sometimes more nuanced ones, but in many ways I feel similar to how I did as a junior engineer. I'm frequently astounded by how much more I need to learn.

I guess the major difference I see is in the kind of opinions. Many juniors have opinions, but they are largely additive. Senior engineers who have been in the battle field long enough have opinions but they're more subtractive, or saying "you know, we don't need to add more steps to our toolchain, and maybe we don't need another framework".

> 12. People don’t really want innovation

Innovation rocks the boat for businesses beyond a certain "escape velocity" and what many consider "innovative" is actually confusing since innovation by definition is non-standard.

> 13. Your data is the most important part of your system

> 14. Look for technological sharks

> 15. Don’t mistake humility for ignorance

Yes.

> 16. Software engineers should write regularly

Meh.

> 17. Keep your processes as lean as possible

If I had things my way, I'd get rid of "standups" and "retros", uninstall unadulterated bullshit like Pivotal Tracker in favor of something much simpler like Trello or even a Google spreadsheet, eliminate estimations, and only have meetings that are goal oriented.

> 18. Software engineers, like all humans, need to feel ownership

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

> 20. Always strive to build a smaller system

Yes.

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

#256

In my 22+ years of work as an Engineer/Architect, I've found that: 1. Software development skill means nothing if the power goes out, always cultivate other skills and passions, those passions will drive you to develop more meaningful, functional, and well informed tools. 2. My resume never parses correctly on the job application, no matter how big the company is, and I'll always have to retype it over again. 3. The…

>> resume never parses Every time I rewrite my CV I always think, finally it's picture perfect. Next time I revisit it, because I'm looking for another job, I always think, who the F wrote this piece of crap. I'm either slowly making progress or I'm running in circles.

I found a lot more success in the working world once I choose to just embrace the "normalcy" of certain things that routinely don't make sense in the working world, and to simply try to make what I can make work better.

The working world is really nonsensical and absurd if you ask me, but the end goal of doing a job for money that in turn allows me to do things that "make sense" to me is the payoff.

Self Sacrifice is sometimes necessary for success, but it is a finite resource, and can hurt or destroy you if not carefully applied (the simple equation)

A resume just needs to show the mountains you've climbed against the odds, without lamenting about the battle scars you got along the way... Resume formatting is really just fluff, that you don't need if they need you because you've proven that you can climb real mountains. :P

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

#257
post #184

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

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

#258

Earlier quoted context omitted.

Presumably you want to maximize the positive impact your volunteering has on others.

But having people working on potentially extremely useful moonshots that they are interested in for free is a huge win. I think it's really just a case of bad advice, and not all developers with 40+ years of experience are correct. In my opinion, it's better to have a motivated volunteer engaged and working on something with unknown impact that she is interested in, rather than get her to work on boring things with l…

of course not, humans are most often wrong about everything. Someone with experience is just that. Our perspective changes.

I started coding at 12 because everyone said it was much to hard for me. Now im old and motivate people by doing the same. At the same time its good to be reminded by others what happens if you drop one thing in favor of the other.

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

#259

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…

The reason people struggle with the idea of 10x programmers is that people are very bad at evaluating the impact of others. Obviously we can all agree on a select few but for those who are just "regular" workers there is often not enough context.

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

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

> while it's inherently a super-subjective metric, I would say that 10x programmers do exist

Even worse than super-subjective, it seems like people don't agree on the definition of "10x programmer".

Is that 10x value (code * code quality) produced per unit of work-time? Per brain cycle? Are you controlling for programmer experience, or domain knowledge, as [1] pointed out? Do you actually mean 10x, or is that a stand-in for "significantly more productive" with an unknown value? Do you include collaborative skills and working with a team, or even entirely base your definition off of that?

I'm both curious as to the exact definition you have in mind, and also trying to point out the more general issue so that others arguing past each other can realize that they have two different ideas in mind.

[1] https://news.ycombinator.com/item?id=28797923

Post reply on HN