10 ms·
We’re Bad at Interviewing Developers – Interview with Kerri Miller
- deleted 11y ago[deleted]
- paulus_magnus2 11y agoperhaps you should not hire developers but people who will own a whole "vertical slice" i.e. do what typically is sliced horizontally between business - product owner - analyst - architect - developer - tester
- wpietri 11y agoI like the spirit of this, in that I personally enjoy working some in other areas. Plus, I think dividing out work like "analyst" and "architect" can be super dangerous: it shifts individual focus from project success to looking like an awesome producer of architecture documents or analysis documents. On the other hand, I think the model you suggest would also be problematic because on a project of any size you need to glue back together a lot of very thin slices. It adds the problem that no one person is going to be amazing at all those things, so a fair bit of important work will get done poorly. I think the best model is instead cross-functional, closely collaborating teams where the decision about who does what is extremely fluid. That gets the benefit of lots of people doing (and understanding) different sorts of work. But it lets key work be done by people with strong expertise. Real-world examples of this include IDEO's pursuit of "T-shaped" people: http://chiefexecutive.net/ideo-ceo-tim-brown-t-shaped-stars-the-backbone-of-ideoae%E2%84%A2s-collaborative-culture/ http://chiefexecutive.net/ideo-ceo-tim-brown-t-shaped-stars-... And Atomic Object's use of "poly-skilled, co-located teams of generalists": http://spin.atomicobject.com/2011/09/16/poly-skilled-teams-deliver-products/ http://spin.atomicobject.com/2011/09/16/poly-skilled-teams-d...
- jasode 11y ago>We don’t do a really good job of hiring with intent. We decide that we need more people, but we don’t do a really good job of figuring out what we need those people to actually do, and who we actually need to hire. I don't understand what she's talking about here. Every time I see a job opening, the software hiring manager and the team peers know there's a pain point that needs to be solved. E.g. "We need to an embedded C programmer to make this firmware talk to our USB protocol". "We need a developer to port the Java code to Go." "We need to expose our mainframe transactions as a REST API", etc. Look at the previous "Who's Hiring" thread. Do those posters look like they post the job slots without a clear intent? https://news.ycombinator.com/item?id=10152809 https://news.ycombinator.com/item?id=10152809 >just automatically do, and we don’t think about, “Well, what questions are we trying to answer by asking a candidate to solve a problem?” Are we dinging people for trivia questions, for not remembering, “Oh, I need this third option flag, or an obscure method from a core library.” I'm not sure where her experience with whiteboarding comes from. In my experience, companies use whiteboarding to sketch out algorithmic thinking. Whiteboarding is the opposite of reciting trivia such as the "3rd parameter to an obscure library function" Interviewers don't care about perfect syntax or missing semicolons. >Instead, I really want to focus on questions that are asking about decisions that they’ve made, what choices have they made, and what choices would they make again in the future? Are they reflective about mistakes that they’ve made? Are candidates looking for opportunities to improve, and how do they actually go about it? Do they make plans for themselves, like how they would improve a certain skill set, whether that be a technical skill set or a more soft skill set, for example, management, or project shepherding for example. Those are the kinds of questions that I think really get you at the heart of not necessarily what somebody knows, but what they’re capable of. Those questions are fine but it's wrong to prioritize them over concrete programming questions. Companies are trying to evaluate if the candidate can actually program and those "Emotional Quotient" questions she favors are easy to bs about. Instead, companies need to assess real programming skills and they can start with FizzBuzz and then move on to more comprehensive evaluations -- whether it's the take home programming problem or the onsite whiteboard algorithms discussion.
- scrabble 11y agoI've been in this situation. Where I'm being told, "Hire more developers! We need more developers!" I respond with, "I don't need any more on my team right now. We can't handle more with our processes and the head count on our other teams." That's not important though. To the people I was working with, more developers meant you could do more work, even if we didn't have a plan for what that work would be yet. Incredibly frustrating since more devs could actually contribute to gumming up the works if not brought in appropriately.
- sjclemmy 11y agoYou may know this, but for anyone else who doesn't this is called Brookes Law "adding manpower to a late software project makes it later" [https://en.wikipedia.org/wiki/Brooks%E2%80%99_law https://en.wikipedia.org/wiki/Brooks%E2%80%99_law]. I fell foul of this recently, I bowed to the pressure and hired more resource even though I knew it wouldn't make the difference expected. It was more of a political statement; "I'm listening to what you're saying and see? I'm doing what I can to make the project go faster." They were essentially paying to feel that things were being done to meet the deadline.
- wpietri 11y agoI'm hiring right now, and I read a lot of job descriptions before I wrote ours. [1] I've definitely seen what she's talking about: generic go-hire-engineers job descriptions. I also think the kind of thing you describe, hiring for a very specific technology, is a similar failure mode. The technological pain point of the moment rarely lasts; the more stable needs are actually organizational. For example, over the next couple of years I want to be able to hire junior engineers, so right now I'm much less concerned with a particular technology stack than with someone who really likes mentoring and working in closely collaborative environments. That way I can bring the junior people rapidly up to speed. I also have seen whiteboard coding interviews where interviewers are inclined to ding people for not remembering small details, so it's a legitimate concern. [1] http://www.codeforamerica.org/jobs/chime/ http://www.codeforamerica.org/jobs/chime/
- 11y ago
- nerdy 11y agoTesting for communication skills is awesome advice and probably rarely ever consciously focused on.
- adekok 11y agoAs a related note, the best predictor of university physics scores is high school English scores. Why? Because physics is about making a conceptual model. i.e. telling a story about a problem. And then solving it. For interviewing, communications skills are a must. People will be working in a team, and must be able to explain themselves. And get along with others. Another thing rarely checked for is the flip side... understanding explanations. If you have to explain something four times to a candidate, you'll probably have to explain things 1000 times on the job.
- espes 11y ago> As a related note, the best predictor of university physics scores is high school English scores. That's pretty counter-intuitive. Can you give a source?
- adekok 11y agoIt's been twenty years since I saw that... google doesn't offer anything useful.
- dalke 11y agoI am also skeptical. Quoting from http://news.harvard.edu/gazette/2006/02.23/05-ap.html http://news.harvard.edu/gazette/2006/02.23/05-ap.html : > The study by researchers at Harvard University and the University of Virginia (UVA) found the best predictors of success in college science courses to be high school classes that foster mathematical fluency, value depth over breadth, and feature certain types of laboratory work. The study appears to be https://www.cfa.harvard.edu/smg/ficss/research/articles/Science_educator_advanced.pdf https://www.cfa.harvard.edu/smg/ficss/research/articles/Scie... . Table 4, model D, page 14 shows that science grades, followed closely by math grades, are much better than the English grade at predicting "College Science Grade". (It does not specifically pull out physics.)
- dominotw 11y agomeh this tripe again.
- robmcm 11y agoContract to perm is the best way by far. In the UK the contract rates are typically significantly higher, so even if the person isn't offered a job at the end they aren't bothered. Everyone wins
- mjohn 11y agoAlso if the company ends up being a bad fit, then it looks less bad on the person's CV than if they join as a perm and then leave after a few months.
- organsnyder 11y agoDepends on the individual's preferences and life situation. I was offered a contract-to-hire position earlier this year, and turned it down because the contract term happened to coincide with the expected birthdate of our third child. Even though I was confident that I would succeed in the position, I didn't want to deal with any uncertainty around that date. Also, in the United States, health insurance is usually tied with employment; while the ACA (Obamacare) has made it significantly better with the introduction of the exchanges, it's still a hassle to switch insurance providers, especially around a major life event such as the birth of a child. In my particular case, the company I did opt for ended up being a bust, to the point that I resigned without having another offer in place. It ended up working well—I'm in a job now with tons of job security, good pay, a good work environment, and interesting work—but I ended up in the exact situation I was hoping to avoid when I rejected the CtH position.
- llimllib 11y agoAlso if I were employed at a good company but was possibly interested in leaving, I would never leave it for a contract-to-perm position.
- derekp7 11y agoI came into my current position as a CtH, but that was only because I was laid off at the time. So with CtH, you either get people who want to stay contractors, or people who are unemployed.
- gloves 11y ago@patio11's starfighter project could help this...
- brobinson 11y agoWhen it's available. Can't wait for it!
- rorykoehler 11y agoAs a non-CS graduate looking for my first full-time job as a Junior Developer I can only ask one thing of prospective employers. Please give clear feedback that will help give direction to the candidate if you reject them. I have done a number of code challenges and while I don't mind doing the challenges (I look at them as training) and I can always create a working solution there is nothing worse than receiving a simple 'we won't be continuing with your application' email with no other feedback. If you are going to take up a candidates time with a code challenge the least you can do is help the candidate become a better developer by providing constructive feedback. You owe it to the applicant and also to the community at large. I have had about a 50/50 experience in this regard. Of all the companies that reject me with good feedback I am left feeling content that I have improved as a candidate throughout the process. The others who don't provide feedback leave me feeling like I've wasted some time that would be better spent reading about best practices and techniques or developing my own software.
- vellum 11y agoOnly do a code challenge if it takes a <=4 hrs. If it takes longer than that, then make sure it's a substitute for the onsite whiteboard portion. If they're using a code challenge, in addition to the whiteboard interview, and as a first pass filter, walk away.
- onresolve 11y agoI typically give smaller challenges and review with candidate in real time via google docs. There's no type ahead but the challenges are more about understanding the approach to solving rather than if it compiles. One can argue the value of arbitrary tasks, but I've found that it certainly gives me good feedback to how someone writes software from self refactoring, following a perceived coding standard, and if they attempt to test there code. Just my take
- mc32 11y agoSome companies are loath to exposing themselves to any kind of litigation. And to some extent, it's understandable. Some people can feel deserving and that someone turned them down because something about them personally rather than their direct abilities. And there is truth to both sides. Some employers discriminate on irrelevant things, and some employees have bad attitudes (personalities) or are simply incompetent. Still, as an individual, I am resistant to the current tend where employers look for "someone we'd like to hang out with". I have a life, I don't share the same interests of a recent grad. When I was a recent grad I didn't like the collegiate attitude anyway. So, it's off-putting, but it's a big filter nowadays. It's let's have lunch with the team so you can get to know them....
- biztos 11y agoI love the idea of asking the candidate to "teach me something, preferably something nontechnical." It sounds like a great way to test for communication skills while also learning something about the person's interests. Plus it could make the process a lot more fun for the interviewer. However I expect it would depend as much on the personality of the interviewer as on the interviewee. And at least in the US, it could have legal implications if you decide not to hire someone because they didn't have anything "interesting" to teach you.
- mc32 11y agoI'm one of those people who take a long time to warm up to others. I'm not someone's buddy just because we happen to be in the same situation, place or because we agree on something. So this exercise would be artificial and forced. And, yes, for sure, I can put on a show, but it's not me and I'd be doing it because that the game or expectation and further, I think it's rather beside the point.
- leetrout 11y agoI know this is OT but on the off chance someone from FC sees this- these videos are painful to watch with the low frame rate. I'm glad this one has the soundcloud link. Some of the others I've enjoyed don't and it's much easier to just listen.
- PaulHoule 11y agoIt tires me that there is so much talk about the problem of hiring developers and very little about the problem of "what do you do once you hire them?" That is, they may treat you like a rockstar when they sign you, but then if you complain because you got a crappy Dell laptop that was a hand-me-down from a salesman who couldn't sell, that your build process takes 40 minutes and that this could cut that to 20 minutes. Of course they have the "sick system" excuse that there is no money, but you get blamed for complaining about the 40 minute build, and then you get blamed that it takes forever to do anything because you are always waiting for that 40 minute build to finish and the system is such a house of cards that if you work on anything else in parallel whatever you would have learned from that 40 minute build is invalidated.
- zombees 11y agoThis. My company uses about 40% of their engineering time manually completing firmware builds (literally dragging and dropping dozens files back and forth for various in house tools) and dealing with the super awesome proprietary version control system that requires about an hour of clicking around, rebasing and navigating to create a release. We scare new people away who were trained on the cutting edge tools (git, continuous integration, etc) because "we spend a lot of money on these 'professional' tools"
- seanmcdirmid 11y agoUnless you are relocating, fail-fast annulments should be allowed (I can quit after 1 week/month, it doesn't go on my resume). Maybe it should even go both ways.
- ghaff 11y agoIn what way aren't they "allowed" (at least in general in the US)? It's pretty much up to you what you put on your resume. Leaving off a very short-term position that didn't work out seems entirely above-board to me.
- pc86 11y agoYou are free to leave anything off your resume, and I'm pretty sure you've never been legally required to stay at a job you don't want to, particularly in the first week. What exactly do you want that you don't already have?
- warrentr 11y agoThese fogcreek interviews are pretty good. It is too bad the video quality is so poor.
- keehun 11y agoWonderful article! Expected an interview with NPR' Kerri Miller
- agentultra 11y agoThe golden nugget for me was the suggestion to ask the candidate to teach you something. I'm terrible at operating under pressure and generally need to take my time with any problem I'm given. Unless you actually work in an environment where it's critical find the optimal solution to a large constraint search problem in 30 minutes or the tower blows up I don't see what the difference is to taking a couple of hours to find the solution. The only way I'd be able to do that is if I'd seen the exact problem before a couple of days ago and can recall the solution from memory. For problems I haven't encountered before I need a pad of paper and make a lot of mistakes before getting to the right answer. I'm just slow, deliberate and not well equipped to win at Jeopardy. It's not my bag. But if you asked me to teach you something I could go on for hours on procedural generation algorithms, pseudo-random number algorithms, neat tricks from old languages, compilers, macros... yadda yadda.
- vonmoltke 11y ago> Unless you actually work in an environment where it's critical find the optimal solution to a large constraint search problem in 30 minutes or the tower blows up I don't see what the difference is to taking a couple of hours to find the solution. Not to mention, if this scenario is frequent enough that you really need to screen for it in interviews there is probably something fundamentally wrong with the way you are running your business.
- agentultra 11y agoAnd yet it's bewilderingly common to use it as a low-pass filter. The reason I like the suggestion is that it asks the candidate to show you how something works which seems like it would demonstrate their ability to understand a topic, how they approach it, and importantly whether they can communicate what they know in a way that other people can understand. I'm more interested in whether a candidate can write a decent bug report and form a coherent patch than how many puzzle solutions they've memorized to slip through my filters.
- chucky_z 11y agoI had written a large chunk but removed it after reading most of the article. I will go out on a limb and simply comment that I felt the interview where I'm currently at was done correctly, and addressed most of the issues that this article raises. As a note, I was hired as a sysadmin/dba/devops for a smallish startup. They brought me in for a total of ~20 hours of interview, and in that time I discussed work-related topics with every single C-level. I went through a standard interview with questions, and then a longer skill test that included every current engineer at the company. For the last few hours they paired me up with a current engineer to work on some database issues they'd been having. I've been very happily employed here now for around 7 months, and after adding this company to my resume I've had quite a lot of offers on LinkedIn. I feel nothing other than "Oh, this company has offered me an interview, that's really cool!" towards these offers. I think it's one of the best things in the world to have that feeling, and I wish everyone who was hired in an engineer position felt the same way.