4 ms·
This is what really irks me about the industry as a whole. Large companies like Facebook and Google have hiring processes in place that aim to weed out the stro
by DigitalSea 12y ago
This is what really irks me about the industry as a whole. Large companies like Facebook and Google have hiring processes in place that aim to weed out the strong from the weak by making them solve complex algorithmic puzzles and solve them on a whiteboard, and for larger companies like Facebook or Google who have massive troves of data, this kind of makes sense to me, but only if you're hiring a programmer to work with your data, not make things pretty or interface with existing services.
However, what does not make sense to me is the asinine requirement that a web developer needs to know or understand algorithms. A front-end developer working with HTML, CSS and Javascript will never EVER need to know how to write an algorithm. In my 12 years as a developer thus far I have never needed to solve a complex math problem or write an algorithm to markup some HTML, the closest I get to math problems is simplistic operations in Javascript like calculating the scroll distance from the top of a page or mathematically moving an element around the page in a particular way and I generally use a calculator for these problems.
The problem is many startups try and replicate the likes of Google and have the attitude of, "Well, if Google require you to solve complex math puzzles on a whiteboard in 30 minutes, then that is what we will do too" - reality check: A developer working with HTML, CSS and Javascript does not need to know algorithms whatsoever. Only a developer working with data or writing an algorithm to sort it should need to know that stuff. You are not Google, so stop pretending you only hire smart developers who know how to solve unrealistic math problems that they will never encounter.
I have heard from friends and experience a couple of times myself, broken recruiting processes that ask you to solve non-realistic problems and complex math puzzles (which I always fail myself). My policy is unless I am going for a job working and sorting through data, I should not need to know how to write an algorithm on a whiteboard.
The only skill I think all developers should know regardless of whether you are a front-end developer or writing complex algorithms to sort through billions of rows of privately collected American data through a secret Government program is regular expressions. I do not know regular expressions extremely well, but I know them enough to be useful with them and I think this is one area where most developers fail. You might know the latest tools, heck, you might even know how to write an algorithm to sort through a large set of data, but if you can not write a regular expression (even for the most basic of tasks), then I think we have a problem.
The interview process for most developers should be simple like this: Can you write regular expressions? (yes) or (no) - if (yes) then write me a regular expression to get the value between two curly braces in my Node.js application and you have got the job.
There are always going to be companies out there with this unrealistic inflated image of how smart a developer should be. To be quite honest, I would not call myself an overly smart person. A lot of the problems I solve on a daily basis are merely following simplistic troubleshooting steps with a combination of Google and reading the documentation. Most of my day job is simply just common sense. Web developers in particular are over-glorified Googler's with an eye for detail and a large bottle of strong adhesive used for gluing different pieces together. And you know what? There is nothing wrong with that, it is the truth, because I am one of those people.
- deleted 12y ago[deleted]
- deleted 12y ago[deleted]
- Ntrails 12y agoRegEx is just ludicrous a general requirement to "program" as anything else. I've never particularly wanted it to write the mathematical models I work with. I can think of just a single instance where I've used one in the last year and that was to display integers as ordinal numbers (hardly a sizeable task). Every job needs a spec. Every spec should inform the interviewer and the interviewee of the skills and competencies expected by the role, and therefore what will be brought up in the interview. Adding "everyone should be able to criteria unrelated to role" is madness
- lostcolony 12y agoAgreed. I can write a regex the (very) few times I need one, but it generally entails me looking up a cheat sheet to get the appropriate character classes. If you were to put me in front of a whiteboard I would flub the most simple of tasks (from the original post, "{(.*)}", I think? Did we mean to include whitespace, and does . translate properly? Because that's partly language dependent when it comes to white space, newlines, etc, and how the regex parser works. Did we mean to capture empty cases? Did we intend for it to be greedy?). Does that mean I can't program? Ha ha ha, no. Does that mean I can't manipulate strings like a boss? Ha ha ha, no. I first reach for the language's tools, before I reach for regular expressions (the OP, I would first reach for doing a string search for {, and then one for }, from the rear if you want it greedy, and substringing what is in the middle; it's far less ambiguous, and any dev will know exactly what it does). Even when something ~technically~ takes a regex, if what I'm looking for is just a literal (as it often is; does this string contain X or not?), I don't need to 'know' regexes. So there's a LOT I can do without knowing regular expressions. Meanwhile, I -have- needed to be able to recognize that something was running in O(n^2) time, and what I could do to optimize it to O(n). I -have- needed to implement my own search and bucket sort routines. EDIT: Oh, wait, no, for the regex I'd need to escape the brackets, too. Etc. See? Now I have two problems.