5 ms·
Can you imagine having to learn all this just to make a connection to a database, process some data, and then persist it somewhere?
by pcestrada 6y ago
Can you imagine having to learn all this just to make a connection to a database, process some data, and then persist it somewhere?
- tourist_on_road 6y agoBut it might come handy when implementing - route optimization problems - Building database query optimization engine You can argue that not everyone is implementing these from scratch every day. But it could be argued that given an opportunity, an engineer should have the skills and ability to build these systems.
- jkachmar 6y agoBullshit. It has been my personal experience, and the experience of many people I’ve spoken with, that this kind of trivia is learned in order to get a job and then forgotten immediately afterwards because it’s useless. Anecdotal example: a former colleague is an incredibly talented systems programmer and has had to study leetcode garbage for the last few months in order to feel qualified to interview for a position with a team that he had previously been on at an older employer. As another commenter said elsewhere, these types of questions are used because they’re legal proxies for “IQ tests”, and because they filter for people who are willing to sacrifice much of their personal time for the sake of the company.
- biztos 6y agoI don't think the knowledge is useless as much as it's properly abstracted away into core libraries for 99.999% of the real-world use-cases. Maybe the questions started as "IQ tests" (or a proxy for "fresh out of a Stanford-like CS Program?") but my impression is that now it's a mild (or not) proxy for hazing. "I suffered through this crap and by God you are going to suffer through it to, or you can't join my little club, and by the way I just make a hundred dollars telling you that." Edit: clarity & speling
- jkachmar 6y agoI think knowledge of the concepts is very useful, but precise recall of the algorithmic implementations is absolutely useless. It’s very different for someone to have a solid grasp of, say, cache-aware programming techniques, algorithms and data structures that are necessary for low-latency architectural work, etc. ...but I’m aware of very few positions (if any???) that require the ability to arbitrarily synthesize that information on the spot. EDIT: Originally meant to lead with the fact that I broadly agree with what you’re saying, I just wanted to clarify my original objection.
- tourist_on_road 6y agoIn this regard. I like the google approach for not asking questions that are publicly available on internet. These are basic computer science fundamentals and critical thinking capabilities that essential for performing the job atleast for software development roles.
- deleted 6y ago[deleted]
- bcrosby95 6y ago> But it could be argued that given an opportunity, an engineer should have the skills and ability to build these systems. Having the skills and ability to build these systems doesn't mean you can regurgitate all the algorithms required to build them on a whiteboard in 30-60 minutes. It means you have to ability to search for algorithms and apply them to your problem at hand over the course of several days, weeks, or even months. Do you really think anyone building these systems spent only 60 minutes both deciding upon, and coding ANY of their algorithms and called it a day because they obviously chose the best one?
- tourist_on_road 6y agoIsn't it what computer science is all about. You won't necessarily see the exact problem. But having the ability to reduce the problem at hand to an efficient algorithm that you might have "regurgitated".
- PragmaticPulp 6y agoThe popular sentiment on computer science knowledge has done a complete 180 in the past several years. Not that long ago, it was popular to complain that junior SWEs didn't really understand the algorithms, the data structures, and what was going on behind the scenes. The complaint was that they were just copy and pasting from internet searches until things sort of worked on their machine, but they couldn't recognize when an O(n^2) solution was going to work on their local n=10 test set but bring down the main website. Now that knowledge of CS fundamentals has become valued in interviews, the pendulum has swung the opposite way. We have more free resources than ever before to practice and study CS fundamentals, algorithmic challenges, and even practice your interview skills. It's never been easier for a junior SWE to sit down, put in the effort, and work their way into a $200-300K job with sufficient dedication. Yet people never tire of complaining about Leetcode or having to understand CS fundamentals online. Personally, I've never met anyone who was good at Leetcode yet produced bad code in production. I'm sure there's someone out there who knows a guy who knows a guy who can somehow ace Leetcode but can't write an efficient website backend, but it's not the norm.
- anon349852034 6y ago> Personally, I've never met anyone who was good at Leetcode yet produced bad code in production. It's all anecdotal evidence. I've worked with some brilliant people at most places I've been and I can't think of 1 person who even had LeetCode account. Producing great production code is more about experience and knowledge of the domain than knowing how to bang out algorithms.
- deleted 6y ago[deleted]
- PragmaticPulp 6y ago> I've worked with some brilliant people at most places I've been and I can't think of 1 person who even had LeetCode account. That's not the point, though. No one said that Leetcode is mandatory for being a good programmer. The point is that Leetcode, however imperfect, is still a usable signal for programming ability. Those excellent programmers you know would likely not have much difficulty with Leetcode style problems if they were to try them. That's the point.