Live data from Hacker News

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

simplethread.com

441–450 of 745 posts

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

#441
post #145
post #15

Earlier quoted context omitted.

Software is whatever you want it to be. I can write software that is not for other humans. That's the most fun part of software engineering to me, when you don't care about the users and just do it just for the fun of doing it.

Almost any advice is useless if you write code purely for your own enjoyment. This is why the context is so important. If you enjoy writing convoluted unmaintainable useless code then who is to stop you? Just understand most advice does not apply to your context. Most software development advice tacitly assume you want to write code which works and is long-term maintainable (potentially by someone other than yourself…

> If you enjoy writing convoluted unmaintainable useless code then who is to stop you?

Does anyone actually do this? I think it's the opposite.

I've spent truly absurd amounts of time thinking about how to do things properly. I read books, read other people's code, read programming language implementations, I just read and learn as much as I possibly can before I even start doing anything. I want my code to be right. I want it to represent the truth of how the world works.

In a professional context where people actually have deadlines, working code is usually enough to satisfy them. How complex and maintainable it is tends to be a lesser concern, to be addressed at a later time or never.

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

#442
post #313

Earlier quoted context omitted.

This is especially true if the company uses "unlimited"/not-tracked/etc. time. Otherwise, unless you know someone at the place (and even then it can vary by group), you're left with making assumptions about norms that may not be accurate. Personally, I've never not used all my PTO in a given year and would consider being unable to do so a show stopper.

The author's company avoids that "unlimited PTO" pitfall in their job listings by describing the benefit as: > generous time off

That doesn't necessarily mean it's "unlimited". It could be that you get eight weeks and they just don't say so.

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

#443
I've been developing software for decades and here's the most important thing I've learned: systems will be around running for far longer than you ever thought possible, even when you allowed for systems being around for far longer than you thought possible!

Keeping that in mind, I'm continually amazed at the number of developers who just love complexity. Don't get me wrong, they all profess to strive for simplicity but their work betrays them. They just love intricate dances carefully coordinated across several components, never minding how anyone 5, 10, 15 or 20 years down the road will ever comprehend this madness or how it will ever be maintained without incurring exorbitant costs.

I religiously adhere to the KISS principle - Keep It Stupid Simple. Once you think it's simple look for ways to make it even more simple. Think about operations failing at the worst time of day possible on the worst possible day of the year - how will you quickly find and resolve the issue? What if it's a new hire who gets the call? I'm just amazed at how developers gloss over this, all while bitching about the "spaghetti code" they inherited. It boggles the mind.

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

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

I've been pondering the wisdom of having engineers do interviews at all. Interviewing, and getting someone to reveal their hand to you, is a massively specific skill, one that few get good at, let alone software engineers. Why is it that we think a 2 hour course on ethics and STAR can make someone capable of telling the difference between a con artist and a genius?

I do wonder if having a professional hiring team to dig into who the person is, and then just trial them for competence would be a superior strategy?

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

#445
post #149

Earlier quoted context omitted.

I like to say that I am a 10x developer 10% of the time. My work tends to be very "bursty" followed by long bouts of low productivity. It probably has more to do with my mental health than anything else. :/

Sounds like ADHD hyperfocus.

Was just coming here to say, this is my exact situation

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

#446

Earlier quoted context omitted.

Your quote of the article made me think I was going to hate the advice, but then I realized you quoted it out of context, here's the full quote: > People might claim they have “signals” for these things… “if they ask about time off in the first interview then they are never going to be there!” But these are all bullshit. If you’re using signals like these you’re just guessing and turning away good candidates

Maybe we should all ask this question in our interviews so we can avoid these shitty teams that way!

Unfortunately, there are too many different ways to be shitty, so while it would filter out a few, a lot of shitty teams wouldn't be detected by that particular question.

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

#447

Earlier quoted context omitted.

When you say "[s]ome programmers will do in 1 day what you wont achieve in a life time" you are no longer talking about the 10X programmer myth. You're talking about invention, rather than day-to-day productivity.

They're the same thing if your day-to-day productivity requires invention, as it does in Carmack's case (and I would argue most programmers)

I would argue that that's not the case for most programmers, at least not in the sense of developing a new p2p protocol, or a fast inverse square root algorithm. Would John Carmack code, e.g. a checkout system for an iPhone app 1000x faster than most programmers? I doubt that.

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

#448
post #313

Earlier quoted context omitted.

This is especially true if the company uses "unlimited"/not-tracked/etc. time. Otherwise, unless you know someone at the place (and even then it can vary by group), you're left with making assumptions about norms that may not be accurate. Personally, I've never not used all my PTO in a given year and would consider being unable to do so a show stopper.

Unlimited just means they don’t have to pay out when you quit or get laid off, doesn’t it?

Yeap, PTO is a liability on the books and unlimited PTO is a way to get rid of it.

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

#449

Earlier quoted context omitted.

When you say "[s]ome programmers will do in 1 day what you wont achieve in a life time" you are no longer talking about the 10X programmer myth. You're talking about invention, rather than day-to-day productivity.

They're the same thing if your day-to-day productivity requires invention, as it does in Carmack's case (and I would argue most programmers)

They are not the same thing, unless they achieve what a 1x programmer won't on a lifetime on a day-to-day basis.

If the 10x, 100x or 1000x programmer does not do the 10x, 100x or 1000x times on average on their day to day then they are not 10x, 100x or 1000x programmers.

(for whatever the heck a 1x programmer is, which people talking about 10x programmers oddly always skip on giving any decent definition)

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

#450

Earlier quoted context omitted.

> It's as if the notion of people being arbitrarily born more or less with a knack for something is evil. The stretch from person A is a better programmer / SW engineer than B to 'thus, person A is innately better' is unnecessary. In my experience, the programmer that spends more time programming is almost always better than the one who does not. You can hate side projects, open-source work, whatever as much as you w…

> You can hate side projects, open-source work, whatever as much as you want, but IME, the programmers that engage in that (and thus have multiple times more actual experience than one who works 9-5) are universally the 10x people. The usual correlation-vs-causation disclaimer goes here. How many open source developers spend time on it because they produce good code? I spent quite a bit of time on side projects and h…

  > "I spent quite a bit of time on side projects and helping (as I thought) others with projects that I like. After many years of doing this I have come to the conclusion that I simply cannot produce really good code."
I have essentially no hobbies outside of programming, and a ton of side projects + OSS contributions in free time (check my GitHub) and I'm still no x10 dev.

Who cares if it's "GOOD" code -- did you have fun/did you enjoy it? It surely couldn't have been SHIT code, because you cared even the slightest degree.

Statistically, I figure most people writing code don't give a rat's ass and are there to pay rent.

"GOOD" is just skewed by the fact that you can also write code so brilliant it changes the course of humanity -- that's quite an upper bound to place on "great" or "10/10" code.

-------

On the topic of "x10 Developer/Engineer" and terminology:

You know "that 1 genius kid in the grade/school" who is just on a completely different level -- that's been my experience with these "x10" programmers.

There's a 17 year old in the Scala Discord (christ, she's legally a CHILD!) that I thought was a 30-something with some higher degree and was teaching me a bunch of stuff. I about spit out my drink when it casually came up in conversation from some older regular that she was 17.

Half of what she says I can't understand.

That's the sort of thing that comes to mind, for me anyways. Even though I live and breathe code, I think I'd have to be delusional to think I'd ever be as competent as her.

I could maybe memorize the amount of KNOWLEDGE she has currently, but there's a depth of understanding that I can't begin to comprehend.

Post reply on HN