News for hackers. Stuff that matters.
Re:Leetcode has taught me that I'm a bad engineer by onion2k on Wednesday January 05, 2022 @03:42AM (#29806620)
I've been delivering commercial products (that's the goal, no?)

No.

Once a company grows to a sufficient size the goal stops being delivering products and starts being not ^&*£ing up the product that generates a lot of money. The aim is to hire people who won't get things wrong, either by making errors or by introducing new unproven ideas.

Re:Leetcode has taught me that I'm a bad engineer by fileeditview on Wednesday January 05, 2022 @04:32AM (#29806951)
Just to think that people who do good in leetcode alike tasks will not get things wrong is funny to say the least.

When I was young I also was pretty good at these interviews and loved doing coding contests and such for fun. However when I joined a big company I learned what really is hard about software "engineering".

It's dealing with legacy code, finding and fixing bugs in highly distributed systems, understanding tickets from customers, managing integration of different components, balancing tests to be enough but not to be too much.

In general the hard tasks are very rarely one specific well determined problem such as finding a node in a tree in the most performant way.

Re:Leetcode has taught me that I'm a bad engineer by Jensson on Wednesday January 05, 2022 @05:29AM (#29807366)
> It's dealing with legacy code, finding and fixing bugs in highly distributed systems, understanding tickets from customers, managing integration of different components, balancing tests to be enough but not to be too much.

Right, if you can't do any of those and can only do leetcode you will get hired as a junior. Do you think that juniors need those things? No, of course not, they need to learn that on the job. So juniors gets leetcode. Now, since all juniors can do leetcode, why shouldn't we require seniors to also know it? Otherwise we would hire seniors who are worse than the seniors we grow ourselves. You can say that seems like an arbitrary requirement, but it makes sense, and there is no lack of senior engineers wanting to get hired at FAANG. And getting X years of experience isn't an accomplishment, even the dumbest software engineer will get there after X years.

Re:Leetcode has taught me that I'm a bad engineer by fileeditview on Wednesday January 05, 2022 @06:32AM (#29807759)
You didn't understand my point. It is that leetcode does not help at all (for 99% of jobs) because you are not faced with these problems.. you can of course claim that the juniors which excel in leetcode questions will be good at these other things I mentioned but I don't think there is much proof for that.

Of course you will gain experience anyways over time. But all your leetcode skills will fade into meaningless very fast when you see what the actual problems are.

Re:Leetcode has taught me that I'm a bad engineer by sumtechguy on Wednesday January 05, 2022 @08:49AM (#29808828)
I can do those leetcode bits. They just take time and energy. They can be fun in their own way, but I grew bored of them quickly. But all of the things you listed and leetcode have one glaring difference, collaboration. leetcode is a very solitary experience. You are basically picking at a puzzle by yourself and 'grind it out'. Yet all the other things you listed involve making everyone around you understand those bits. That is almost an entirely different skillset. Hell yesterday I sat back and just listened in a meeting to 3 different people state the issues they were having. I was able to help each one. Because 'been there done that', and another skill I picked up over the years listening to what everyone is saying. Not one bit of that was leetcode. But organizational and the same errors many devs stub their toes on. "oh go talk to so and so about that", "which error are you seeing in the log? oh that means blah blah blah, go talk to so and so and have them fix the wizzy wuttsy". Most issues in most organizations is either money, time, or knowing who to talk to. Big O, hash tables, CS style issues, are how you build the thing to sell. But day to day the business is run by people, time and money.

I have been meaning to go back and grind some of those problems out again. Just to refresh my memory on them. But notice I have to 'refresh my memory'? These problems usually do not come up. You are usually clicking some if conditions together and a few for loops. Nothing fancy. The interesting bits are figuring out someone elses framework using docs written in an afterthought and what 3 other methods do I need to call to fill out param 4 of this method just so I can get this thing to do what I want.

Re:Leetcode has taught me that I'm a bad engineer by still_grokking on Wednesday January 05, 2022 @09:00PM (#29818162)
This line of reasoning makes no sense at all.

Imagine a math professor would be required to be as fast in answering questions regarding times tables as a child in third class. I bet you wouldn't be able to hire almost any math professors any more because almost all of them would lack this skill!

Nobody would be of course so stupid to judge a math professor by asking them questions about the times table.

Well, but one, and only one, industry is bonkers enough to do exactly this.

Re:Leetcode has taught me that I'm a bad engineer by johnaspden on Friday January 07, 2022 @05:05PM (#29845472)
I'd be pretty damned suspicious of someone claiming to be a maths professor who couldn't tell me what seven eights are.
Re:Leetcode has taught me that I'm a bad engineer by jjav on Wednesday January 05, 2022 @03:50AM (#29806659)
"Deliver commercial products" includes the part of continuing to deliver those products over many years and many releases, without any regressions. It's part of the job.
Re:Leetcode has taught me that I'm a bad engineer by onion2k on Wednesday January 05, 2022 @04:04AM (#29806773)
OK, but it's a different set of skills. Leetcode challenges optimize for finding devs that believe there's One True Way to do things, and that creatively deviating or using a mathematically non-optimal solution for reasons outside of the code itself is Bad and Wrong. If you want to continue delivering a successful product without breaking things those are good things to look for.
Re:Leetcode has taught me that I'm a bad engineer by ethanwillis on Wednesday January 05, 2022 @07:06AM (#29807977)
If you don't want to break things you simply don't alter the state of being. If you want a successful product over time it requires innovation. These goals are at odds with each other.
Re:Leetcode has taught me that I'm a bad engineer by brandall10 on Wednesday January 05, 2022 @08:48AM (#29808805)
We’re generally talking about large complex distributed systems with tons of throughput.

As LC itself demonstrates, there typically are multiple ways to solve a problem. Most engineers will do the brute force approach and stop there because it does in fact solve the problem. And for most companies that will be enough.

The issue here is those types of solutions can be catastrophic for these larger tech companies… some algo that’s part of a tiny feature cab cause a massive performance regression.

When it comes to these algos, computer science dictates there is an optimal time and space complexity solution. There are also more clear and more obtuse ways to achieve what is technically an optimal solution from a performance perspective… often these can be found and discussed in the LC discussion sections. The more obtuse… ie trying to get to a minimal LOC, might be fun from a competitive programming perspective, but terrible for production code that needs to be maintained by coworkers.

So there is a craftsmanship aspect to it that goes above and beyond these algos, but ultimately there are optimal time and space complexity approaches that need to be adhered to.

Now no one is perfect. You’re not always going to come to an optimally performing solution. But if you’re good enough at this stuff, and your coworkers are good enough, it’s going to be rare that a PR enters the system that causes some notable bottleneck. And when it does, you should have the mental toolkit to quickly determine what happened.

Making a call to arms avoid this stuff as it stifles creativity is sorta like the folks who say learning music theory can harm someone’s ability to compose music. If you’re a pop songwriter, perhaps. But what if you need to compose a symphony? You’re just not going to luck into it with a basic understanding of music theory and advanced composition.

It’s just one kind of mental toolkit, and somewhat orthogonal to knowing the apis and design patterns of some framework you’re using to build a thins, the idioms of a language, etc.

Re:Leetcode has taught me that I'm a bad engineer by vanusa on Wednesday January 05, 2022 @02:54PM (#29814055)
But what if you need to compose a symphony?

Then the software industry isn't for you.

I'm definitely not saying it doesn't require dedication and brainpower and (in the right places) formal methods. But the overall creative process, and most especially the end product (and the aesthetics) of what we produce are about as far from a musical symphony ... as anything you could think of.

There's a good Steve Jobs quote about this, which I couldn't easily find, but which completely nails this distinction. Something along the lines of: "No - we're not here to build something that that people will look at in a museum hundreds of years for now. Very little of what we do will last for more than 10 years or so. It's about meeting people's needs in the here and now."

(Or to that that effect; I am horribly mangling the original).

Re:Leetcode has taught me that I'm a bad engineer by brandall10 on Friday January 14, 2022 @09:43AM (#29935023)
That's not the point I'm making. Symphony as in complexity of the overall problem and synchronicity of so many moving parts (ie. so many instruments, multiple melody lines working w/ a far more advanced ruleset).

It's a very different thing to bust out a bunch of features for a consumer product w/ relatively minor concerns relating to load/perf and something that operates at bleeding edge scale and complexity.

Re:Leetcode has taught me that I'm a bad engineer by still_grokking on Wednesday January 05, 2022 @09:23PM (#29818341)
OT: > learning music theory can harm someone’s ability to compose music. If you’re a pop songwriter, perhaps

This is a funny take on it as pop music is 99.9% just some basic music theory put in the shaker and than pressing the random shuffle button. The rest is mostly just dull and boring work.

That's the reason why after people once figured out how to actually do it are able to produce constantly hits for decades thereafter.

Re:Leetcode has taught me that I'm a bad engineer by brandall10 on Thursday January 06, 2022 @11:30AM (#29825678)
Let me amend that and say advanced music theory and composition. There is a definite thought out there that knowing too much impedes creativity.
Re:Leetcode has taught me that I'm a bad engineer by vanusa on Thursday January 06, 2022 @08:26PM (#29833447)
As pop music is 99.9% just some basic music theory put in the shaker and than pressing the random shuffle button.

No it's not. No more than writing a successful novel is a matter pressing the random shuffle button on all the distribution of plotlines and clichés you've seen before.

Re:Leetcode has taught me that I'm a bad engineer by cik on Wednesday January 05, 2022 @06:12AM (#29807629)
They're the same skill. The difference becomes implementation. When delivering consistently what you're also doing is critically examining when or if the trade off value exists.

Sometimes the best answer is the one that maintains an API that was introduced in a beta that one customer is using. Sometimes the best answer involves breaking a 15 year old API that the entire country's electrical grid requires. But in both cases we're always looking for a single answer, a One Ring to Rule them All. The end-point or approach-point trade off considerations are IMHO, the real issue.

Re:Leetcode has taught me that I'm a bad engineer by giantg2 on Wednesday January 05, 2022 @07:33AM (#29808165)
At a big company it's all about politics and optics. It doesn't matter what you actually accomplish, only what the people in power think of you and think you accomplished.
Re:Leetcode has taught me that I'm a bad engineer by vanusa on Wednesday January 05, 2022 @11:22AM (#29810944)
Which is part of the reason why the LC process exists -- to prop up the illusion that there's some kind of objective skill measurement happening.

And thereby distract us from the very central fact you have articulated.

Re:Leetcode has taught me that I'm a bad engineer by Aeolun on Wednesday January 05, 2022 @08:15AM (#29808475)
> The aim is to hire people who won't get things wrong

The problem is that this almost inevitably leads to a decline of the company.

Re:Leetcode has taught me that I'm a bad engineer by vanusa on Wednesday January 05, 2022 @11:18AM (#29810902)
No.

I'd say it's more like a "Yes and no." But it's definitely not a binary. Your "No" characterization is partially valid. But only partially.

And what's a great what to introduce mistakes and fuck up an existing product or team? By being overly confident about one's binary "No" answers.

Re:Leetcode has taught me that I'm a bad engineer by oreally on Wednesday January 05, 2022 @11:29AM (#29811051)
You'd want robots at that point. Or guillable people partaking and circle jerking in their own careerist cesspools. Better hope they don't get put in a leading/exploratory positions as the company dies a slow 30 year death.
Re:Leetcode has taught me that I'm a bad engineer by nix23 on Wednesday January 05, 2022 @06:02AM (#29807571)
>No.

Oh look...a googler ;)

Re:Leetcode has taught me that I'm a bad engineer by vanusa on Wednesday January 05, 2022 @11:26AM (#29811002)
You nailed it, friend.