News for hackers. Stuff that matters.
Re:You're not a senior engineer until you've worked on a leg... by calebpeterson on Monday February 17, 2025 @11:13AM (#43080420)
I once had a manager that was fond of saying:

> Experience is what you get when you don’t have any.

The only better experience than working on a legacy codebase is working on a greenfield project long enough to watch it become legacy and see the good and bad consequences of past decisions.

Re:You're not a senior engineer until you've worked on a leg... by namdnay on Monday February 17, 2025 @11:18AM (#43080482)
And the only better experience than "working on a greenfield project long enough to watch it become legacy and see the good and bad consequences of past decisions" is working on a second greenfield project long enough to see that drastically overcompensating for all the bad things from the first one is not the right solution either :)
Re:You're not a senior engineer until you've worked on a leg... by fjjjrjj on Monday February 17, 2025 @11:24AM (#43080544)
And the only better experience than that is killing a new greenfield project before it gets to production because the old software was good enough and the problems were organizational in how the software was being used.
Re:You're not a senior engineer until you've worked on a leg... by 4ndrewl on Monday February 17, 2025 @11:51AM (#43080853)
The best code is the code that doesn't exist.
Re:You're not a senior engineer until you've worked on a leg... by antisthenes on Monday February 17, 2025 @12:10PM (#43081095)
Certainly the most secure code. Not sure about best.
Re:You're not a senior engineer until you've worked on a leg... by ticklemyelmo on Monday February 17, 2025 @12:16PM (#43081166)
Better on every axis: security, performance, resource consumption, reliability, verification, documentation...
Re:You're not a senior engineer until you've worked on a leg... by greenchair on Monday February 17, 2025 @12:49PM (#43081504)
exactly..which is also why lines of code written is one of if not the worst possible metric of productivity. easy to game too.
Re:You're not a senior engineer until you've worked on a leg... by escapecharacter on Monday February 17, 2025 @01:17PM (#43081776)
I marked my transition to senior engineer when my net lines of code flipped to negative.

Not that I game that obviously, it just occurred naturally for a ~4 month period

Re:You're not a senior engineer until you've worked on a leg... by bell-cot on Monday February 17, 2025 @12:49PM (#43081510)
> Better on every axis...

How 'bout job security?

Re:You're not a senior engineer until you've worked on a leg... by rzzzt on Monday February 17, 2025 @02:04PM (#43082229)
Anyone can write no code.
Re:You're not a senior engineer until you've worked on a leg... by MonkeyClub on Monday February 17, 2025 @06:47PM (#43084374)
But it takes a master to not write the write piece.
Re:You're not a senior engineer until you've worked on a leg... by lawn on Monday February 17, 2025 @12:56PM (#43081582)
I thought it was pretty funny how we had this large project that was supposed to replace a legacy system (that was mostly a bad hack that got pushed to production).

But when it was finished it failed to meet the basic requirements for the only customer that used the system.

Re:You're not a senior engineer until you've worked on a leg... by lmm on Monday February 17, 2025 @07:48PM (#43084801)
Once you're senior enough those cases won't be funny any more, just sad.
Re:You're not a senior engineer until you've worked on a leg... by lawn on Tuesday February 18, 2025 @12:02AM (#43086231)
I have a very dark sense of humor sometimes.

But yes, it's sad.

Re:You're not a senior engineer until you've worked on a leg... by Cthulhu_ on Tuesday February 18, 2025 @08:43AM (#43089352)
I wish this happened tbh. I've seen one where the greenfield (Scala, AWS, etc) is still living alongside the old good enough software they went back to (C# / .NET) ten years on.
Re:You're not a senior engineer until you've worked on a leg... by jcheng on Monday February 17, 2025 @12:14PM (#43081131)
Re:You're not a senior engineer until you've worked on a leg... by gorbachev on Monday February 17, 2025 @11:35AM (#43080671)
I keep telling people v1 of anything always sucks.

One of the tells of an inexperienced engineer I use is how much they disparage the previous team's work.

Re:You're not a senior engineer until you've worked on a leg... by maerF0x0 on Monday February 17, 2025 @11:45AM (#43080794)
> how much they disparage the previous team's work.

And many fail to discern between "disparage" and "critique" or even "Question in order to learn"

One of the greatest failings I've seen in leadership in our time is the idea that in order to make a critique one must come with a solution in hand. As a leader I want to know the things that are going wrong as soon as they're seen, not to require someone to go through the heavy lifting of a solution before they say a word. Now, of course, there's a difference between bitter unhelpful cynicism, and simply identifying a gap between the current state and optimality.

Re:You're not a senior engineer until you've worked on a leg... by indymike on Monday February 17, 2025 @02:14PM (#43082316)
> And many fail to discern between "disparage" and "critique" or even "Question in order to learn"

I think I’ve had the conversation with new to my organization devs a few hundred times: “Look... saying code is crap or stupid is telling others you’ve given up on learning. How about asking why it is the way it is?”

> greatest failings I've seen in leadership in our time is the idea that in order to make a critique one must come with a solution in hand.

The pattern works at very high levels in an org chart, but with developers and those that manage them it breaks the whole concept of problem solving. You have to be able to identify and understand problems before you can come up with a solution... and usually, with software, the solution is developer hours.

Re:You're not a senior engineer until you've worked on a leg... by philote on Monday February 17, 2025 @11:39AM (#43080723)
I always pick apart previous teams' work.. it's how I learn. I question most every decision because I'm curious why they made those decisions. And it lets me think about how I'd do it better. And yes, I know that many poor decisions are not necessarily the developer's fault. It could be bad specs, lack of time, etc.
Re:You're not a senior engineer until you've worked on a leg... by bdcravens on Monday February 17, 2025 @12:29PM (#43081317)
In most cases, "better" means different things in different contexts. (Customer-driven vs performance-driven, for example) Of course, this isn't news for most of us. Where I think a lot of us fall short is assuming that definition has changed since the code was written.
Re:You're not a senior engineer until you've worked on a leg... by belthesar on Monday February 17, 2025 @01:42PM (#43081988)
This harkens back to Chesterton’s Fence. It’s always worthwhile to interrogate why things were done the way they were, especially when first coming onto a project. Knowing the why of a decision is essential to understanding if and how it should be changed. Especially if the reason is “this is what we had the time and knowledge to do at the time.”
Re:You're not a senior engineer until you've worked on a leg... by darepublic on Monday February 17, 2025 @03:35PM (#43083058)
The people who have those answers have long gone. The only person left is a project manager who tells you it's up to you to figure it out. After you make a change in production they will come to you with questions after a few months, just when you assumed things must have gone well
Re:You're not a senior engineer until you've worked on a leg... by lmm on Monday February 17, 2025 @07:57PM (#43084886)
> It’s always worthwhile to interrogate why things were done the way they were

It really isn't. A lot of the time you end up spending a lot of effort to understand something that was dumb to start with and has been dumb ever since. Something like the bullshit asymmetry principle applies - any idiot can take 5 minutes to write a line of code that will baffle a team of experts for hours. (I've done so often enough myself).

Re:You're not a senior engineer until you've worked on a leg... by throwaway422432 on Tuesday February 18, 2025 @01:34AM (#43086694)
They usually shut up when they realise the "previous team" was one of the founders who is paying their wage.

When your v1 code takes a company to profitability it was good enough.

Re:You're not a senior engineer until you've worked on a leg... by beoberha on Monday February 17, 2025 @11:43AM (#43080766)
Oh man this one hits home. I don’t do much coding anymore but my general advice to folks I lead is you’re never going to be happy with how you did things and just make sure it scales and is well tested.
Re:You're not a senior engineer until you've worked on a leg... by calebpeterson on Monday February 17, 2025 @11:22AM (#43080517)
So true!
Re:You're not a senior engineer until you've worked on a leg... by pjmorris on Monday February 17, 2025 @12:38PM (#43081400)
Fred Brooks has a whole chapter, 'The Second System Effect', on this in 'The Mythical Man Month.'

"The general tendency is to over-design the second system, using all the ideas and frills that were cautiously sidetracked on the first one."

Brooks reasons that the combined experience of doing the first project well and the second project badly leads to better designs from then on.

Re:You're not a senior engineer until you've worked on a leg... by purplethinking on Monday February 17, 2025 @02:25PM (#43082429)
And the only better experience than that is that all software is pain
Re:You're not a senior engineer until you've worked on a leg... by kerkeslager on Monday February 17, 2025 @11:40PM (#43086133)
At this point I just don't think total rewrites from scratch are a good idea, full stop. I've never seen a rewrite from scratch that didn't lose most of the learned solutions from the previous attempt, repeat most of the same mistakes and have to re-discover the solutions, and utterly fail to even attempt a passable improvement on a model of the core complexity of the problem being solved.

I'm not granting a "rewrite from scratch in Rust" exception even though that's in vogue right now. I'm not saying don't rewrite it in Rust, I'm saying don't rewrite it from scratch. It's harder to write new features in Rust while maintaining the old C code, but it's the right way to do it.

Re:You're not a senior engineer until you've worked on a leg... by rcxdude on Tuesday February 18, 2025 @04:20AM (#43087668)
AKA fighting the last war. Can be difficult not to focus on trying to avoid painful things from past projects, though.
Re:You're not a senior engineer until you've worked on a leg... by regularfry on Monday February 17, 2025 @11:48AM (#43080821)
This is literally the approach recommended in Team Topologies. The same team should own vN and vN+1, so that they both have to operate their own design and have the opportunity not to make the same mistakes again. It should be the default.
Re:You're not a senior engineer until you've worked on a leg... by rafaelmn on Monday February 17, 2025 @02:38PM (#43082567)
That would require staying in one company for more than 2 years, which means you probably lost out on 20-30% of income over next 2 years.
Re:You're not a senior engineer until you've worked on a leg... by jorgesborges on Monday February 17, 2025 @03:44PM (#43083117)
It’s okay to enjoy work and focus on your craft for two years rather than jump for more money. If you like your employer and colleagues and are growing as an engineer isn’t that better in the long term? I think jumping around can risk creating an engineer who leaves a place worse than when they started.
Re:You're not a senior engineer until you've worked on a leg... by lmm on Monday February 17, 2025 @07:52PM (#43084851)
> If you like your employer and colleagues and are growing as an engineer isn’t that better in the long term?

No, growing as an engineer just means the reality of software development will make you more miserable.

> I think jumping around can risk creating an engineer who leaves a place worse than when they started.

Of course it does, but companies have made the choice to pay more for that than for someone who stays and makes the place better, we should give them what they want.

Re:You're not a senior engineer until you've worked on a leg... by kerkeslager on Monday February 17, 2025 @11:57PM (#43086202)
> It’s okay to enjoy work and focus on your craft for two years rather than jump for more money.

These aren't mutually exclusive.

> If you like your employer and colleagues and are growing as an engineer isn’t that better in the long term?

Better than liking your employer and colleagues and growing as an engineer and also having more money? No.

This isn't a field with low demand for talent. You can have all these things--don't settle for less.

> I think jumping around can risk creating an engineer who leaves a place worse than when they started.

That's a risk that companies should be willing to pay to avoid.

But a lot of companies aren't willing to given their engineers adequate pay increases each year, and it's not engineers' responsibility to accept less money than they are worth. If you want more experienced engineers, you have to pay for more experienced engineers. That's just basic free market economics: if you don't like that you don't like capitalism.

Some companies understand this and do better, but these are the exceptions not the rule. If you find such an exception, stick with them!

I fundamentally disagree with the narrative that engineers are supposed to be passionate about their craft and learning and interest and not care about the money. That's propaganda spread by corporations to get us to accept less pay, and if you believe it you'll be exploited. And as it turns out, the places that pay the best are also usually the best places to be passionate about your craft, so there's no real conflict. The places that pretend to pay you in learning and passion instead of money generally don't deliver on the learning and passion either.

Re:You're not a senior engineer until you've worked on a leg... by regularfry on Tuesday February 18, 2025 @04:07AM (#43087596)
It does not. It requires the team to be stable. It says nothing about the composition of that team.
Re:You're not a senior engineer until you've worked on a leg... by pavel_lishin on Monday February 17, 2025 @11:17AM (#43080464)
Especially when they're your decisions, decisions you pushed for and felt very good about at the time.
Re:You're not a senior engineer until you've worked on a leg... by calebpeterson on Monday February 17, 2025 @11:23AM (#43080541)
Yep!

There is no teacher quite like cause and effect.

Re:You're not a senior engineer until you've worked on a leg... by TeMPOraL on Monday February 17, 2025 @11:27AM (#43080600)
Reinforcement learning, as usual, for the win!
Re:You're not a senior engineer until you've worked on a leg... by konfusinomicon on Monday February 17, 2025 @11:57AM (#43080930)
oh the hills that were conquered and those to have died upon, captain hindsight strikes again!
Re:You're not a senior engineer until you've worked on a leg... by ixtli on Monday February 17, 2025 @11:58AM (#43080949)
Came here to say this. Ive had to work on slop, and it never stops being slop unless the stars align and you can do a bunch of work which is short term unprofitable. What people really should do is work on the same project for five years. Watch the interest wax and wane and more importantly watch the requirements change. Then you'll stop looking at things in black and white like "good project bad project"
Re:You're not a senior engineer until you've worked on a leg... by atoav on Monday February 17, 2025 @11:53AM (#43080880)
I always tend to say: "Everybody learns better from their own mistakes, but if you are empathic you can also learn from other people's mistakes".

The latter is less costly and only requires you "only" to open your eyes and look at projects that are in an ugly state the right way. Yet surprisingly few people are capable of looking at someone elses fucked up project and not going all like: "Hah! Idiots! I would never have mad that decision".

Maybe however that crusty piece of code used a framework that — back in the day — was the hottest, trendiest piece of technology out there and you are currently in the process of committing similar sins, and you won't know it.

For me adminstration of Linux servers has been an invaluable source of inspiration. You are directly and 100 percent exposed to the effects of software aging in a changing environment. And you directly wittness which software ages like fine wine and which ages more like milk.

Re:You're not a senior engineer until you've worked on a leg... by globnomulous on Monday February 17, 2025 @12:18PM (#43081195)
> which software ages like fine wine and which ages more like milk

Now I'm curious. What software has aged well? What software hasn't? Do certain types or categories of software tend to age better or worse?

Re:You're not a senior engineer until you've worked on a leg... by quickslowdown on Monday February 17, 2025 @02:33PM (#43082508)
cURL is my personal go-to when discussing things like this. The Unix implementation is old, stable, functional, and has changed elegantly with the times.
Re:You're not a senior engineer until you've worked on a leg... by svachalek on Monday February 17, 2025 @11:26AM (#43080573)
"You either die a hero or you live long enough to become the villain"
Re:You're not a senior engineer until you've worked on a leg... by calebpeterson on Monday February 17, 2025 @01:09PM (#43081708)
Never thought of that in the context of software projects. It works really well!
Re:You're not a senior engineer until you've worked on a leg... by softfalcon on Monday February 17, 2025 @01:01PM (#43081636)
Too bad a lot of devs love to greenfield, slap it together, then bugger off to the next project pronto.
Re:You're not a senior engineer until you've worked on a leg... by lmm on Monday February 17, 2025 @07:59PM (#43084894)
When that's both more pleasant and better paying, who can blame them?
Re:You're not a senior engineer until you've worked on a leg... by hinkley on Monday February 17, 2025 @02:43PM (#43082610)
Come on to a brownfield project and ask a lot of pointed questions about how we got here.
Re:You're not a senior engineer until you've worked on a leg... by pz on Wednesday February 19, 2025 @05:55PM (#43108815)
In particular, I appreciate that you assign value to the consequences and not the decision itself. Anytime junior engineers on my team would complain about "shitty code" I'd assure them that someone would be complaining about their code in a few years.

Having the context or, better yet, responsibility for the past decisions is great for developing a pragmatic approach to software design AND empathy for other software engineers.