Live data from Hacker News

Show HN: A Senior Engineer's CheckList

news.ycombinator.com

111–120 of 155 posts

Re: Show HN: A Senior Engineer's CheckList

#111
post #103

Earlier quoted context omitted.

I think respect does not imply assumption of correctness. It's more like: there's a reason why the code looks like it does. The reason could be time pressure, some crucial information missing at the time when it was being implemented, etc. By all means try to improve it but don't look down on a person who created it. It's easy to judge from perspective of 6 or more months.

"The reason" can also be lack of basic competence in previous workers. That can be extended to the rest of the team or management around the worker(s) for not providing a guidance/help. "reason" can be "cause/effect" reason, but also "justifiable rationale". The files look like they do because someone typed keys and hit 'save' - cause/effect. But there's often no justification for how some code exists in its state th…

> "The reason" can also be lack of basic competence in previous workers.

That type of wording belies a destructive approach to the problem. What I'm told is "lack of competence" is often someone not being trained properly, or leadership that decided to make a deadline no matter what, or a junior dev that got called a senior dev to fill a seat at a cheaper rate, or someone who knew they didn't have the skills but didn't want to admit it and lose their job.

The other thing I often find is that regular complaining about other people's code is usually projection. The less forgiving someone is the more likely that their code and architectural decisions suck even more than the people they're complaining about.

There's a senior dev at my job who openly craps on other dev teams as incompetent - to the point that he literally says, "those guys are fucking stupid and their code sucks". This guy never documents his own work, makes inflexible architectural decisions that don't take anyone else into account, and generally causes hours worth of workaround code for me every month.

Re: Show HN: A Senior Engineer's CheckList

#112
post #53

About this one: > Respect code and systems that came before you. There are reasons for every code and every guard that exists in production Sometimes there's bad code in prod, or code that doesn't need to exist anymore. You should try to understand when something is there for a good reason versus a bad reason. Cut out the bad code, keep the good code. I've seen a lot of cases where people assume that current code is…

respect doesn't mean revere.

Replacing something simply because its not code you authorised or written isn't respectful. Replacing something because its not on a shiny platform, took too long to figure out, or simila, again isn't respectful.

replacing broken code, fixing bugs, changing architecture to adapt to another situation is fine.

Re: Show HN: A Senior Engineer's CheckList

#114

> [Reminder] One-on-one usually is not a status meeting I have never had a job where my one on ones didn't devolve into status meetings and chitchat. What the hell am I supposed to talk about?

It needn't devolve into status. I like how Rands thinks about nerd herding.

https://randsinrepose.com/archives/the-update-the-vent-and-t...

Re: Show HN: A Senior Engineer's CheckList

#115

These are excellent, except for one, which is to avoid politics. Politics is the art of making other people want the things that you want. If you can't do that, you're not a senior engineer. Politics is critical for your success, and honestly, a large number of these sixty points fall under, IMO, politics. tl;dr: s/"Avoid politics, but have right folks vouch for your work"/"Become an adept politician".

indeed, You need to be an adept politician.

This means developing empathy for other sides of the business, building up favours from other teams, forging alliances, listening, gathering intelligence and spotting trends.

at some point, you _will_ have to make hard decisions, your budget will be cut, project killed, etc, etc. If you are a skilled "work politician" you may be able to negate some, or all of the bad effects.

Re: Show HN: A Senior Engineer's CheckList

#116
post #53

About this one: > Respect code and systems that came before you. There are reasons for every code and every guard that exists in production Sometimes there's bad code in prod, or code that doesn't need to exist anymore. You should try to understand when something is there for a good reason versus a bad reason. Cut out the bad code, keep the good code. I've seen a lot of cases where people assume that current code is…

> you should try to understand the difference between code that should stay and code that should go.

I think that’s exactly what the rule is saying, I think almost everyone would agree. The problem is assuming that code is bad, or even actively looking for “bad”. If it’s in prod, that usually means it worked and was needed. Engineers in my experience do like to assume things are bad and actively look for reasons to re-engineer things without properly accounting for the number of ways things are going right. During my career, I’ve watched two separate large teams at two separate companies decide to rewrite a major codebase because they thought there was too much bad, and they thought there was a tower of abstraction. The result was they both dramatically underestimated the time needed to rewrite, and after having wasted literally tens of millions of dollars, ended up with roughly the same code quality as before and a couple of years of unnecessary down time. It’s more difficult to understand the code that came before and the reasons why it’s there, and it’s easier to judge it bad and decide to rewrite it without completely understanding it, that’s why the default should be to assume the code is there for a good reason, and try harder to understand the reasons.

That rule should, of course, be balanced with this rule, both are true:

> Simplify code, systems, and architectures relentlessly

I personally suspect that writing down and maintaining all the requirements and lifetimes for the codebase separately from the codebase, and having a regression test suite with complete coverage, is the way to safely deprecate features and continue to simply old large complicated codebases. But I’ve never seen that work in practice, yet...

Re: Show HN: A Senior Engineer's CheckList

#117
post #53

About this one: > Respect code and systems that came before you. There are reasons for every code and every guard that exists in production Sometimes there's bad code in prod, or code that doesn't need to exist anymore. You should try to understand when something is there for a good reason versus a bad reason. Cut out the bad code, keep the good code. I've seen a lot of cases where people assume that current code is…

The opposite can happen. Took over a system in Aug '18 with someone else. Previous 'senior engineer' had left after a year to go be a CTO someplace else. Everything seemed wrong - bad smells everywhere, spidey-sense a-tinging every day. In October, we found that code put in place had been losing data since April - we had 6 months of pure data loss. Data that people assumed was 'working' because ... they hit a button…

It's very situation dependent. I try to advocate for the old code when I can, but I've had similar experiences. The most recent example was a multithreaded app started by a person who understood neither mutexes nor pure functions. Doing a ctrl+f for "sleep" for quickly showed that code was doomed to always be breaking in inexplicable ways. Give code the benefit of the doubt as much as possible, but there is a point where old code deserves more suspicion than respect.

Re: Show HN: A Senior Engineer's CheckList

#118
post #75
post #71

Earlier quoted context omitted.

The only "problem" with that approach is that it invalidates most hand-wavy advice: "Make everything as simple as possible but no simpler." All well and good if your requirements are written in formal logic or if there is only a single axis along which complexity can be measured. "Hire only the best." What if the best only want to work with the best pay and the most interesting work? But "hire only the best of the ve…

"Hire only the best." What if the best only want to work with the best pay and the most interesting work? That's the interesting question. The hard choice, that I rarely see discussed, is what to do when "the best" won't work for you. Do you hire the "perfectly adequate" or do you not hire and not do that thing you want "the best" person to work on.

I think the short answer if higher the best you can, commit to getting better, and hoping that is enough!

Re: Show HN: A Senior Engineer's CheckList

#119
post #75
post #71

Earlier quoted context omitted.

The only "problem" with that approach is that it invalidates most hand-wavy advice: "Make everything as simple as possible but no simpler." All well and good if your requirements are written in formal logic or if there is only a single axis along which complexity can be measured. "Hire only the best." What if the best only want to work with the best pay and the most interesting work? But "hire only the best of the ve…

"Hire only the best." What if the best only want to work with the best pay and the most interesting work? That's the interesting question. The hard choice, that I rarely see discussed, is what to do when "the best" won't work for you. Do you hire the "perfectly adequate" or do you not hire and not do that thing you want "the best" person to work on.

one idea is to put your candidate out of their comfort zone and ask them to get their arms around something new. Try to figure out if they have a process for teaching and improving themself. Maybe if you can't hire the best you can find someone with the potential to be one of the best.

Re: Show HN: A Senior Engineer's CheckList

#120
post #70

'Get involved with hiring for your team and company, and maintain a high bar for hiring quality candidates.' Posts derailing this 'high bar' are posted semi-daily to Hacker News, no? It's a really big dilemma (extensive hiring process that weeds out good candidates due to time and frustration or take risks) and it makes it sound like it's just something, you can, you know, do on a Tuesday in your spare time, and then…

I wonder where people work where they can become a senior engineer in the first place without getting involved in hiring.

I certainly have sat in on interviews and think it's valuable experience for a senior, especially when you're looking to fill a particular gap on the team. I was more pointing out that this is a very generic comment around a very complex problem.
Post reply on HN