5 ms·
This leetcode (and similar) nonsense is really ruining our industry. I've been delivering commercial products (that's the goal, no?) for over twenty years, reg
by jjav 5y ago
This leetcode (and similar) nonsense is really ruining our industry.
I've been delivering commercial products (that's the goal, no?) for over twenty years, regularly get high praise and top ranks in reviews, get promoted often including to "distinguished" and "chief" levels (always as a technical IC, not in management).
Yet.. no way I'd ever pass any of these leetcode style memorization interviews. I guess companies think that proves I can't develop? Funny. But sad. Our industry should not be like this.
Personally I feel lucky that this leetcode interview disease started after I was fairly senior already, so I'm getting hired based on track record and connections who love to hire me to deliver products. Hopefully, fingers crossed, that'll carry me to retirement.
But if I was in my 20s or early 30s, I'd be looking to leave tech entirely and go into something else where experience is actually appreciated and valued. None of my high school friends who went into medicine, law, finance, etc have this type of problem in their industries.
- onion2k 5y agoI'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.
- jjav 5y ago"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.
- onion2k 5y agoOK, 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.
- cik 5y agoThey'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.
- ethanwillis 5y agoIf 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.
- brandall10 5y agoWe’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.
- fileeditview 5y agoJust 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.
- Jensson 5y ago> 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.
- fileeditview 5y agoYou 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.
- 5y ago
- nix23 5y ago>No. Oh look...a googler ;)
- vanusa 5y agoYou nailed it, friend.
- giantg2 5y agoAt 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.
- vanusa 5y agoWhich 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.
- deleted 5y ago[deleted]
- Aeolun 5y ago> 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.
- vanusa 5y agoNo. 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.
- oreally 5y agoYou'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.
- avgcorrection 5y ago> I've been delivering commercial products (that's the goal, no?) for over twenty years, regularly get high praise and top ranks in reviews, get promoted often including to "distinguished" and "chief" levels (always as a technical IC, not in management). So… the industry is apparently working fine for you, right? > But if I was in my 20s or early 30s, I'd be looking to leave tech entirely and go into something else where experience is actually appreciated and valued. Yeah, sure. Not for everyone. It’s unfortunate.
- mockingbirdy 5y ago> But if I was in my 20s or early 30s, I'd be looking to leave tech entirely and go into something else where experience is actually appreciated and valued. I'm in my 20s and think about this a lot although I already moved to management (with a lot of software development, still) as well. There's a great article [1] analyzing this problem (quotes from the article: "Professionals with higher cognitive ability drop out of STEM careers earlier and faster", "High-ability workers are faster learners, in all jobs. However, the relative return to ability is higher in careers that change less, because learning gains accumulate"). Knowledge depreciates a lot faster in software development than many other fields. That's why I really think about going into finance or sales (still fast-paced), but attending expensive top business schools and starting as an analyst with a low salary again is pretty rough after already building my current skillset. Currently feel a bit stuck with my career options right now. Money's still good and the work is fun, but working in a field that is set up to be a grinding mill as an IC is not an entertaining thought. High-tech projects will still be fun, I guess, but still definitely something to consider. Specializing early on may mitigate this. [1]: https://whoisnnamdi.com/never-enough-developers/ https://whoisnnamdi.com/never-enough-developers/
- moghul 5y agoGood assessment on the need to shift domain to ensure long-term stability. However, can you help me understand why you shortlisted finance and sales?
- mockingbirdy 5y agoFor sales: After attaining product-market fit and everything becoming more stable, it’s all about sales. Software development in the growth stage turns into an endless grind of features and bug fixes and is regularly seen as simply a cost. Sales is the mechanism that allows the business to get new customers, so this is something which has a higher impact in the growth stage. For finance: Managing finance and deals is one of the most important aspects in any business. You can make the same money compared to tech without a ceiling and I’m personally interested in economics and financial topics. Both have a quantifiable aspect (deal/fund size, new revenue/customers) that makes it easier to measure your impact on the business. This means that it’s easier to get a fair compensation - although bad performance will get noticed easily, too. And the knowledge in these areas compound, especially in sales. On a personal note, I’m interested in psychology and economics and can build connections with others quickly, so these two fit quite well and I'm convinced that sales and finance are important ingredients for any type of work (philanthropic included). Best of all worlds would be to build a MVP using software development skills until product-market fit is reached, then being able to grow customers using sales skills and then supporting further growth with external capital and managing an exit using finance skills. - In reality, these are all separate roles, but I'd like to be able to work in these other two areas, too.
- luckyscs 5y agoI've looked at the other options, medicine, law, finance, your avg swe the best lifestyle, stress+time+creativiry to pay ratio, and flexibility around work.