"Programmers are confessing their coding sins to protest a broken job interview process"
-
-
“The only world where you would actually need to be able to recall an algorithm would be a post-apocalyptic one, where the hard drives of all the computers connected to the internet were fried, and all copies of foundational academic papers and computer science textbooks had been reduced to ashes,” coding instructor Quincy Larson wrote in a blog post. “Whiteboard interviewing is a discrete skill, much like being able to remember Pi to a thousand decimal places.”
-
Indeed.
now of course i use a whiteboard when interviewing, but not to write code on. i use it for design challenge. "design me a system that is capable of doing X and Y. Use whatever notation you feel comfortable with, i'll ask questions if i can't follow it." then once they do that "now, we have complication Z that was just added to the requirements. How do you alter your design to accommodate it?"
I want to see how my interviewees react on the spot, and how they think.
though i have GOT to get HR to stop phrasing it as a "whoteboarding session" i've lost track of the number of candidates that have been scared by that phrase. Okay, yeah it's scary, but it's not the scary they think it is, it's a much less scary type of scary.
-
@accalia said in "Programmers are confessing their coding sins to protest a broken job interview process":
i've lost track of the number of candidates that have been scared by that phrase
It's the accalia in it that scares 'em off…
-
@dkf said in "Programmers are confessing their coding sins to protest a broken job interview process":
@accalia said in "Programmers are confessing their coding sins to protest a broken job interview process":
i've lost track of the number of candidates that have been scared by that phrase
It's the accalia in it that scares 'em off…
but.... but..... but....
I'M ADORABLE!
-
@accalia said in "Programmers are confessing their coding sins to protest a broken job interview process":
I'M ADORABLE!
Yes, but your spellaring is occasionally surprising to those who might not be expecting it.
-
@dkf said in "Programmers are confessing their coding sins to protest a broken job interview process":
@accalia said in "Programmers are confessing their coding sins to protest a broken job interview process":
I'M ADORABLE!
Yes, but your spellaring is occasionally surprising to those who might not be expecting it.
giulty as cahrged.
-
@accalia The sword might put people on edge, too.
-
Hello, I am an anonymous internet user. I have never had a programming job. However I know how to write bubble sort, I know what NP complete means and I can figure out how to invert a binary tree. Because it's not fucking hard.
If they're looking for someone who knows data structures, and you can't do that, then you're not fit for the job. In fact, having written a successful program doesn't even mean you're a good programmer.
-
@Kian said in "Programmers are confessing their coding sins to protest a broken job interview process":
@accalia The sword might put people on edge, too.
it's foam.
also i leave it at my desk when i do the interview.
-
This means companies tend to favor recent computer science grads from top-tier schools who have had time to cram; in other words, it doesn’t help diversify the field with women, older people, and people of color.
"I don't like this type of interview process. How can I make it about race and gender?"
-
I generally sympathize with the sentiment, but the guy who admitted that, quote, can't read an input stream without copying and pasting code from stack overflow, end quote, is beyond ridiculous. Looking up documentation? Perfectly fine. Seeing example usage on SO? Well, if you're confused by unusual syntax or something, fair enough. Copying and pasting in whole? Fuck off, you don't deserve anything more than internship.
-
@accalia said in "Programmers are confessing their coding sins to protest a broken job interview process":
@Kian said in "Programmers are confessing their coding sins to protest a broken job interview process":
@accalia The sword might put people on edge, too.
it's foam.
also i leave it at my desk when i do the interview.
Is the sword to scare away the marketing team?
-
@Gąska said in "Programmers are confessing their coding sins to protest a broken job interview process":
Looking up documentation? Perfectly fine. Seeing example usage on SO? Well, if you're confused by unusual syntax or something, fair enough.
Google opens stackoverflow faster than the documentation in anything I've used later.
-
@fbmac probably because there's no documentation at all
-
@Gąska I search anything at Google and use whatever I find more useful.
As someone that doesn't usually stick with a language, I frequently look for the right syntax of things.
-
@fbmac said in "Programmers are confessing their coding sins to protest a broken job interview process":
@Gąska I search anything at Google and use whatever I find more useful.
SO is pretty much useless unless you have exactly the same problem, or if you're only not sure about syntax. It will tell you what to do to do this, but will not tell you what to do to do that, or what you should absolutely never ever do, ever - the last part being usually the most important when trying to code up a new feature and trying to figure out if it will work at all.
-
This post is deleted!
-
I totally agree with the idea that expecting one to regurgitate academic concepts from rote is a bad interviewing practice. I might, during a phone interview, just ask someone to summarize what a binary tree or a linked list is just to gauge how well they know some fundamental concepts, but I'm not going to ask them to write out an algorithm from memory as if they're doing some CS exam.
That said, I do programming exercises, not on whiteboards, but using screensharing (ala @cartman82) with Google and these exercises are specifically meant to gauge how well people work out a problem using logic, not by just copy-pasting code from a well-known algorithm, whether they're "copy-pasting" from their memory or from a SO question. Anyone can just memorize algorithms. Hell, a non-turing complete computer application can store and fetch from memory, so what the hell does that prove? In any software engineering job, you need to solve problems, not just recite how to perform a merge-sort.
-
@anonymous234 said in "Programmers are confessing their coding sins to protest a broken job interview process":
This means companies tend to favor recent computer science grads from top-tier schools who have had time to cram; in other words, it doesn’t help diversify the field with women, older people, and people of color.
"I don't like this type of interview process. How can I make it about race and gender?"
Doesn't saying that imply that women, older people, and people of color can't perform on the same level as young, white, males and ought to be able to meet a different (lower) standard? By doing so, they're actually promoting the perpetuation (and enforcement) of the very thing they condemn.
-
@fbmac said in "Programmers are confessing their coding sins to protest a broken job interview process":
I search anything at Google and use whatever I find more useful.
That's OK until you hit something where either nobody's got the answer or there's some gigantic topic in the general vicinity that makes the search impossible. I was looking for a tool this morning to use to warn us about issues in our codebase that will make it hard to move to Python 3 (I can't help the fact that it hasn't been migrated yet, but I'd love something to help us assess the cost of migration). All I could find was descriptions of people saying how one should stop developing for py2 immediately and so on. No help at all.
-
@fbmac said in "Programmers are confessing their coding sins to protest a broken job interview process":
Google opens stackoverflow faster than the documentation in anything I've used later.
If you look something up on SO and paste it without either looking at the official documentation or being able to tell me what exactly the snippet does, I will consider ending the interview at that exact point. At the very least, you have to verify that the SO answer is actually correct.
-
@dkf said in "Programmers are confessing their coding sins to protest a broken job interview process":
warn us about issues in our codebase that will make it hard to move to Python 3
Isn't there an automatic converter that complains if it finds something it cannot translate? That should produce a good approximation.
-
@anonymous234 said in "Programmers are confessing their coding sins to protest a broken job interview process":
Hello, I am an anonymous internet user. I have never had a programming job. However I know how to write bubble sort, I know what NP complete means and I can figure out how to invert a binary tree. Because it's not fucking hard.
Good for you.
@anonymous234 said in "Programmers are confessing their coding sins to protest a broken job interview process":
If they're looking for someone who knows data structures, and you can't do that, then you're not fit for the job. In fact, having written a successful program doesn't even mean you're a good programmer.
Emphasis added. It's all about requirements. If you're going to be writing e.g. a runtime library for an embedded system, then knowing the bubble sort algorithm from memory might be important. If you're not going to be doing that (99% of programming gigs), then it's a waste of everyone's time.
-
@asdf I never talked about copypasting it, I think everyone agree that's a bad idea.
Never see anyone do that anyway, I think it's a myth. You can't paste stackoverflow answers into a working solution.
-
@fbmac said in "Programmers are confessing their coding sins to protest a broken job interview process":
I never talked about copypasting it
... no, but the guy @asdf quoted did.
You can't paste stackoverflow answers into a working solution.
Ohhh, but you can sure try.
-
@heterodox said in "Programmers are confessing their coding sins to protest a broken job interview process":
... no, but the guy @asdf quoted did.
Didn't he quote me?
-
@fbmac said in "Programmers are confessing their coding sins to protest a broken job interview process":
Didn't he quote me?
Actually, I suppose if you follow the chain, the subject of copypasting was first brought up by Gąska, who was the one quoting the guy in the article.
Just so we're all clear, we're talking about this:
-
@heterodox oh, in his case I assume the code he is pasting is small enough you can understand while doing it, and it save looking for syntax details and what object is what. Input streams are simple enough for that.
Now, if you catch someone following some stackoverflow suggestion for something like disable https certification validation to solve a certificate issue, or storing a password in plain text, or computing it's hash client side, then I can understand why he would be rejected.
-
@anonymous234 said in "Programmers are confessing their coding sins to protest a broken job interview process":
However I know how to write bubble sort, I know what NP complete means and I can figure out how to invert a binary tree.
Meh. I'll bet I could invert a binary tree, but TBH without looking up the term I have no idea what's being asked. I'm sure I've gone over the details of a bubble sort before but who fucking cares?
@anonymous234 said in "Programmers are confessing their coding sins to protest a broken job interview process":
If they're looking for someone who knows data structures, and you can't do that, then you're not fit for the job.
Like...they'll sit around playing with structures all day?
Well, obviously there are more detail oriented jobs or whatever, but those are going to be pretty few and far between.
/blakeyrat
-
@fbmac said in "Programmers are confessing their coding sins to protest a broken job interview process":
Now, if you catch someone following some stackoverflow suggestion for something like disable https certification validation to solve a certificate issue
FIRE THEM OUT OF A CANNON INTO THE SUN.
-
@Gąska said in "Programmers are confessing their coding sins to protest a broken job interview process":
SO is pretty much useless unless you have exactly the same problem, or if you're only not sure about syntax. It will tell you what to do to do this, but will not tell you what to do to do that, or what you should absolutely never ever do, ever - the last part being usually the most important when trying to code up a new feature and trying to figure out if it will work at all.
I've discovered a lot of things that have helped me when the question was similar to what I was trying to do. Like...something about an API or some feature I didn't even know about that gave me new ideas about how to solve the problem.
-
@boomzilla said in "Programmers are confessing their coding sins to protest a broken job interview process":
I've discovered a lot of things that have helped me when the question was similar to what I was trying to do. Like...something about an API or some feature I didn't even know about that gave me new ideas about how to solve the problem.
Right. It takes a certain amount of cluefulness to interpret SO answers, though, in order to reject things like @fbmac's examples.
Luckily there are plenty of ways to test for cluefulness without writing code in a fashion that doesn't represent the target work environment.
-
@asdf said in "Programmers are confessing their coding sins to protest a broken job interview process":
At the very least, you have to verify that the SO answer is actually correct.
That's why you compile and run it after you paste it. Only partly joking. When you're using some unfamiliar API or library or something, that's really the only way to verify it.
-
@fbmac said in "Programmers are confessing their coding sins to protest a broken job interview process":
@asdf I never talked about copypasting it, I think everyone agree that's a bad idea.
Never see anyone do that anyway, I think it's a myth. You can't paste stackoverflow answers into a working solution.
We have a "standard reusable" function that is copied verbatim from a StackOverflow answer, including the part of the code that was made useless by edits to the answer.
-
@heterodox said in "Programmers are confessing their coding sins to protest a broken job interview process":
Right. It takes a certain amount of cluefulness to interpret SO answers, though, in order to reject things like @fbmac's examples.
Bah! That's what the rest of the answer's voters are for.
-
@boomzilla said in "Programmers are confessing their coding sins to protest a broken job interview process":
Bah! That's what the rest of the answer's voters are for.
Hm, s/voters/commenters complaining about the quality of answers/ and that's a fair point.
-
@anonymous234 said in "Programmers are confessing their coding sins to protest a broken job interview process":
If they're looking for someone who knows data structures, and you can't do that, then you're not fit for the job. In fact, having written a successful program doesn't even mean you're a good programmer.
True, but their screening process can still be kinda idiotic. I interviewed for Google's ops team once and failed where I had to solve the scenario of an Apache exploit that became public on Friday afternoon. Supposedly a patch is available from my vendor. I opted for installing the patch in test, watching it for a while and then rolling it out ASAP. Too bad: the patch contained a memory leak and brought the site down. The interviewer wanted me to suggest keeping the old version for a while and instead using mod_security to add a rule against it.
For one thing you can expect an operator to judge whether a bug affects only components after mod_security in the request processing, at least not more reliably than a vendor's package maintainer, so the decision would be dangerous in the first place. For another, two weeks after the interview they found a major vulnerability in mod_security I know why I'm not a fan of increasing the attack surface by adding complexity, at least not unless I absolutely have to secure a stinking codebase of PHP-or-something using the web server instead of just doing the right thing and dumping or fixing it.
-
@boomzilla said in "Programmers are confessing their coding sins to protest a broken job interview process":
Meh. I'll bet I could invert a binary tree, but TBH without looking up the term I have no idea what's being asked
Likewise. I have some idea what a binary tree is, and with an explanation I think I could probably work out how to do it.
@boomzilla said in "Programmers are confessing their coding sins to protest a broken job interview process":
I'm sure I've gone over the details of a bubble sort before but who fucking cares?
One of the few actual computer sciencey things (as opposed to programming to solve a problem) that I was taught during my training. Immediately followed by "you will never use this because it's inefficient and any language you use will have some sort of standard library that includes a sort function"
-
@boomzilla said in "Programmers are confessing their coding sins to protest a broken job interview process":
That's why you compile and run it after you paste it. Only partly joking. When you're using some unfamiliar API or library or something, that's really the only way to verify it.
And here's where I strongly disagree. I you're using an unfamiliar API, then you should definitely look at the documentation of that API before using any solution to check whether that's the recommended way of using that API. At the very least, look up the functions the SO post uses. If you want to do it right, also read the relevant chapters of the written documentation, if available.
But never ever follow a suggestion from a random stranger on the internet without understanding exactly what the suggestion is.
-
@asdf said in "Programmers are confessing their coding sins to protest a broken job interview process":
And here's where I strongly disagree. I you're using an unfamiliar API, then you should definitely look at the documentation of that API before using any solution to check whether that's the recommended way of using that API.
If such a thing existed I probably wouldn't be desperately scraping around on SO. Like, the alternative is imagining someone wrote something in the online javadocs or slogging through some old blog post that uses a different framework and does basically the same thing as the SO post but is actually less helpful and there are no other comments talking about the pros and cons of whatever it is.
@asdf said in "Programmers are confessing their coding sins to protest a broken job interview process":
But never ever follow a suggestion from a random stranger on the internet without understanding exactly what the suggestion is.
JFC, no one would ever get anything done. Do I have to do the same thing when I discover some method via autocomplete?
-
I would probably expect someone to clunk out a bubble sort, mainly because it's very simple and a naive algorithm. I would also expect them to explain that such an algorithm should be avoided, and why. However, if it's not relevant to the job itself, because we use higher-level libraries and frameworks, I probably wouldn't ask it in an interview. Again, there are better questions to ask that would gauge a software engineer's problem solving skills.
-
@asdf said in "Programmers are confessing their coding sins to protest a broken job interview process":
I you're using an unfamiliar API, then you should definitely look at the documentation of that API before using any solution to check whether that's the recommended way of using that API.
There is a lot of depends here.
Depends of how unfamiliar you are with the API.
Depends on how trustworthy the documentation is.
Depends on how complex the task is.
Depends on how critical the project is.On an extreme case, I wouldn't spend a day reading crappy documentation about how to open a file in a weird language to write a 10 line utility program I will be the only user.
Or to solve a toy problem in an interview if I am not aware this would be judged.
-
@boomzilla said in "Programmers are confessing their coding sins to protest a broken job interview process":
@anonymous234 said in "Programmers are confessing their coding sins to protest a broken job interview process":
However I know how to write bubble sort, I know what NP complete means and I can figure out how to invert a binary tree.
Meh. I'll bet I could invert a binary tree, but TBH without looking up the term I have no idea what's being asked. I'm sure I've gone over the details of a bubble sort before but who fucking cares?
You could probably do it blindfolded in your sleep with one hand tied behind your back. Basically it means to reverse the tree, so that walking it in left-to-right order produces a list in the opposite order than the original.
The easy way is to just swap the child nodes for each node.
A complicated way would be to define/overload operators/functions to reverse the algorithms that access the tree.
-
@boomzilla said in "Programmers are confessing their coding sins to protest a broken job interview process":
Do I have to do the same thing when I discover some method via autocomplete?
Is your IDE unable to show the Docstring of an autocompleted method? If so, that's TRWTF, then.
If I had a nickel for every time I pointed out an issue in a code review that could have been avoided by simply reading the fucking DocString of the used method/class (which would have immediately led to the conclusion that it's being used incorrectly or not the right tool for the job), I'd be rich.
@fbmac said in "Programmers are confessing their coding sins to protest a broken job interview process":
On an extreme case, I wouldn't spend a day reading crappy documentation about how to open a file in a weird language
Holy shit, did @ben_lubar build a programming language on top of Dwarf Fortress?
to write a 10 line utility program I will be the only user.
Obviously, I was talking about production code.
-
@fbmac said in "Programmers are confessing their coding sins to protest a broken job interview process":
You can't paste stackoverflow answers into a working solution.
Because if you do, it will no longer be working.
-
@asdf said in "Programmers are confessing their coding sins to protest a broken job interview process":
Is your IDE unable to show the Docstring of an autocompleted method? If so, that's TRWTF, then.
If I had a nickel for every time I pointed out an issue in a code review that could have been avoided by simply reading the fucking DocString of the used method/class (which would have immediately led to the conclusion that it's being used incorrectly or not the right tool for the job), I'd be rich.
Sounds like people aren't following the critical advice of compiling and running the code.
-
@boomzilla said in "Programmers are confessing their coding sins to protest a broken job interview process":
Sounds like people aren't following the critical advice of compiling and running the code.
So bugs, security problems or performance issues are completely impossible in code that compiles and works with your test cases?
-
@asdf said in "Programmers are confessing their coding sins to protest a broken job interview process":
So bugs, security problems or performance issues are completely impossible in code that compiles and works with your test cases?
The stuff you work with must have much more detailed docstrings than I'm used to.
-
@asdf said in "Programmers are confessing their coding sins to protest a broken job interview process":
Is your IDE unable to show the Docstring of an autocompleted method? If so, that's TRWTF, then.
In my case yes. The framework we have for wtfdevice doesn't have docstrings. And it's documentation is full of unhelpful oneliners. If we have a "burp" function with 40 parameters the doc would say: "does a burp".
Edit: And there is nothing for wtfdevice in stackoverflow too. I have to go with guessing.