4 ms·
Mainly because a lot of the things you just listed are incredibly stupid requirements. Do you know the job I'm hiring for? Perhaps I'm hiring for something
by lambda 12y ago
Mainly because a lot of the things you just listed are
incredibly stupid requirements.
Do you know the job I'm hiring for? Perhaps I'm hiring for something a little more complicated than a front-end developer over a CRUD app.
If I spent my life doing ruby sites that save basic data
into a mysqldb, why does it matter whether I use
sometching that takes 100,000 operations or 10,000 ones,
when the web page still opens in 0.5 vs 0.51 seconds?
Because sometimes, those 100,000 operations actually wind up pushing it from 0.5 to 5 seconds. Or even worse, something that works with 1,000 records in .5 seconds, once you go up to 100,000 records takes over an hour, because you're doing something that takes O(n^2) time, so a hundredfold increase in number of records leads to it taking ten thousand times longer. If you don't even know what big-O notation is, or how to think about an algorithm like that, you may not even realize why everything has suddenly gotten so slow; or even worse, you may have designed and implemented a large system with that O(n^2) baked in to the very fundamental design, so it would require a huge rewrite to eliminate it.
Who gives a fuck about TCP when the browser abstracted
that all away?
It is not always abstracted away as cleanly as you would like. For example, here is a bug that occurred when Firefox sent an HTTP request in several smaller packets rather than one larger one, and that caused it to break when talking to IIS:
https://bugzilla.mozilla.org/show_bug.cgi?id=137155 https://bugzilla.mozilla.org/show_bug.cgi?id=137155
How would someone impacted by that be able to even figure out what's going on, if they don't know anything about what HTTP is built upon?
Imagine asking a front end developer to make a console
app in their interview
Hey, it's a good thing this isn't my front-end developer interview; in that, I give people a basic REST API to program against, and have them write a simple frond-end for it, using any toolkit they like. No console apps at all in my front-end interview.
This is my back end, systems interview, for people working on a network attached storage system, where we frequently need to debug complex problems in a distributed environment, solve compatibility problems with third party proprietary software in which the options for debugging it are slogging through syscall traces or stepping through it in IDA, where we've had performance problems where tweaking the kernel's TCP retransmit timeout for systems that we knew were on the local network has made a huge improvement.
You do a particular type of programming. You seem to want
to judge everyone else by your niche without
understanding that a lot of the skills you list as
essential are actually almost completely irrelevant to
huge swathes of programmers.
Or maybe my interview is tailored for the job that I'm hiring for? As I said, this is my back-end, systems interview, and I have a different one for front-end developers.
And as I said, I don't expect every developer to pass every question. I do still ask the TCP and algorithmic complexity questions to front-end developers, but if they do poorly on those while being able to write up a front-end to spec based on the API I give them, and being able to describe intelligently how they would design a more complex interface with richer interactivity, then I know that they can do the job assigned and we have sufficient other people who can do review to ensure that they don't write themselves into a corner complexity-wise or help them debug weird problems due to something in the networking stack. Or if they do well at the TCP and algorithmic complexity, but are relatively new to front-end development, I know that they have a good base of background knowledge and analytic mind, which means they should be able to pick up the rest of the skills they need without too much difficulty.
But if someone does poorly on everything, or more than a couple of the questions, it means that we would basically be flying blind hiring them; we would need to train them up on everything they need to do, and in the end, there's no guarantee that they'd actually be able to perform.
- mattmanser 12y agoYou ask TCP questions to front end developers? It sounds like you are exactly the sort of interviewer this article is calling out. Do you not think that this sort of specialised stuff is really easy to learn? That you should be asking questions to discover programming ability, not pointless reference knowledge in quiz questions? I've debugged complex IIS bugs and found insane bugs in IMAP implementations that were caused by a change in the way Outlook handled the protocol. I did not need to know that before I debugged it. That sort of reference knowledge is rapidly discoverable while you do the debugging. Most of that stuff I will never need to know again.
- lambda 12y agoWhen I say "TCP questions", I mean that I ask the standard "what happens when you type google.com into your browser and press return," and expect to get them to mention TCP at some point. If they don't, I specifically prompt them, asking what protocols HTTP is built on top of, and how it finds the address of the server to contact. I am not looking for detailed knowledge of receive windows, sequence numbers, or anything of the sort. I consider knowledge that TCP exists, and DNS exists, to be sufficient. And as mentioned repeatedly, even if they know nothing of this question, this is one of many. I want to see if they are the type to dig into the stack and learn more than just their particular domain, but the basic programming exercise and portfolio are the most important things that I look at.
- eropple 12y ago> You ask TCP questions to front end developers? The browser's abstractions are leaky, and given that I tend to work with small teams, an understanding of how the sausage is made is important. And I don't think you can really understand HTTP without understanding TCP at at least a high level. So if I'm hiring for a senior frontend person, I'd expect them to know how it works, and in discussing things (not "technical questions", I just talk to interviewees and go from there) I'd expect some demonstration of things that can make me feel confident that they won't be unduly thrown in day-to-day work by something involving it.
- 12y ago