Yes, I've interviewed at companies that have interview type puzzles and coding, and take home tests. I greatly prefer the former regarding time use.
And, knowing the basic CS algorithms and data structures seems to be a good thing, since they make solving problems easier and lead to cleaner solutions. There's a reason they are considered the fundamentals in CS, even if they are baked into most languages nowadays.
> There's a reason [basic CS algorithms and data structures] are considered the fundamentals in CS, even if they are baked into most languages nowadays.
A linked list is such a fundamental piece of technology, and so obvious to anyone that's been working in a language for a while, that I feel it's perfectly acceptable to rule out a candidate who cannot write one.
It doesn't have to be perfect, and it doesn't have to have all of the optimizations and utility methods that you find in the standard libraries, but the ability to understand and work with a node that has a value and a pointer to the next node is kind of bare-minimum competency, isn't it?
The linked list is such a fundamental piece of technology that you never have to implement it.
I mean, I understand the linked list quite well, but in my multi decade software career, I've probably actually implemented one less than once a decade. So I think it's a very unrealistic interview question, and will sigh quite hard (internally) when asked to implement one in an interview.
> The linked list is such a fundamental piece of technology that you never have to implement it.
Is this a good reason not to ask it in an interview?
I'd expect any competent software engineer to be able to implement a linked list without too much trouble. It's maybe not a great interview question (depending on your point of view, you may not consider it to contribute much positive or negative hiring signal), but I don't consider it a "gotcha" question the way a lot of people seem to.
When I do whiteboard questions, its never to see someone regurgitate a common question. Its just nice to see someone solve a problem and what their thought patterns are. CS is pretty much an art, would you hire a violinist without hearing them in person?
No but I'd have an architect give me plans for a house written out. I'm not hiring artists I'm hiring engineer's. I'm not hiring your for your gorgeous code in x language, I'm hiring for problem solving skills and communication. And I do let people use computer or whiteboard, computer tends to more complicated logistically (wifi, preference of ide, power, logins, etc). A whiteboard only fails to work if I don't have new pens.
Software is far more art than you think, and rigid, formulaic thinking can be a detriment to good problem solving skills. Especially when solving something you can't just look up on the internet.
If your engineers aren't writing clean, readable, maintainable code that solves problems as simply as possible (ie, gorgeous), I'm not sure your hiring practices are doing you any good.
I'm not hiring artists I'm hiring engineer's. I'm not hiring your for your gorgeous code in x language, I'm hiring for problem solving skills and communication.
I agree with the second half (problem solving and communication) but take some issue with the the way you dismissed the art of it all. Maybe we have different ideas of what an artist is?
I tend to think of software in more blue-collar terms myself, perhaps more like a carpenter (who has to consider more than just aesthetics, but certainly can't ignore them) than a violinist, but my earlier comment was just continuing the established metaphor. Either way, I get the sense we agree more than we disagree here.
For Godsakes drop the architect - sw developer analogy already ! Its broken in so many ways.
A developer must be able to produce code that works - compiles and runs and solves the problem at hand.
Bonus points for making code reusable, reliable, readable, testable, functional or what-the-heck-ever-able.
Unless you write code and run and compile it, there's nothing to be discussed.
> Would you ask a violinist to draw the chords they would play on a whiteboard, or would you hand them a violin?
The violin is not generally considered chordal instrument. While you can technically pluck all the strings at once, or bow two strings at once, it's most often used for melodic and not harmonic parts. ;)
You would of course, you can do the exact same questions on a whiteboard with a shared computer. In my experience of doing either, some people are better at one or the other, but the challenge is essentially the same.
And, knowing the basic CS algorithms and data structures seems to be a good thing, since they make solving problems easier and lead to cleaner solutions. There's a reason they are considered the fundamentals in CS, even if they are baked into most languages nowadays.