7 ms·
> So if the cost of a developer who does negative work is so high, how do they get hired? Part of it can be explained by an interview process that needs improve
by matt_wulfeck 10y ago
> So if the cost of a developer who does negative work is so high, how do they get hired? Part of it can be explained by an interview process that needs improvement, but a less talked about part is the temptation to lower hiring standards.
I've seen plenty of people who can reverse binary trees or fizzbang etc who are terrible additions to teams and do "negative work". That's because having a grasp of CS fundamentals and know how to contribute to a team are totally different skills.
The way to overcome this is not smarter and/or more challenging interview questions, but by hiring engineers that come recommended by other engineers. This is by far the greatest indicator of a successful engineer I've ever seen. Nothing comes close to it. As far as I care, if someone I work with and respect recommends someone else that's enough for me to give them a try without even needing to whiteboard.
- bad_user 10y agoEven though CS fundamentals and contributing in teams are somewhat different skills, in my experience the terrible developers that contribute negatively to the project tend to be those that do not have a good grasp of CS fundamentals. I mean, some problems we are faced with are very, very challenging and if somebody can't figure out how to reverse a binary tree or do a FizzBuzz, then what can he do? Also I'm hearing this advice to hire engineers recommended by other engineers quite often, however speaking as somebody constantly engaged in hiring decisions at our company, I must say that recommendations don't scale. You see, outside the SF bubble of course, our friends are mostly not into software development and we engineers are kind of introverts, goes with the territory, so we don't have that many friends or acquaintances anyway, except for people that we meet on the Internet, which usually live in another city or country. If an employee can produce one good recommendation, that's way, way above the average. It's such a rare event actually that such employees need reward. This advice also misses the point. The problem is that our industry is constantly growing and there aren't enough good people to go around. Which means we have to take the plunge and hire beginners as well. Investing in the education of beginners is the only way a company can scale in talent. But even then you need a filter. You can't hire anybody that walks through that door, as firing people is a serious drag on morale and a net loss for the company. So what filter can you apply to beginners? CS education of course, or in other words what people should have learned in school.
- walrus1066 10y agoI find a lot of CS education is not applicable to most SE roles, as they operate at a higher level of abstraction. I've never had to implement a binary tree, if I did, I would be reinventing the wheel. A lot of the necessary skills are hard, if not impossible, to teach in higher education. Mainly because there, you tend to be given an exact, unambiguous specification. Whereas in the commercial world, I've never seen that to be the case, the developers role is to collaborate with the business to nail down the specifics of a high-level business goal. Implementing the code is the easy bit :)
- bad_user 10y ago> Implementing the code is the easy bit :) For web forms that replace an Excel spreadsheet, the kind that usually gets passed around over email or in a Dropbox, yes, the business requirements are usually the ones that are problematic, as you are expected to grok a lot of domain specific details in only a couple of days. But then again IMO, your experience is biased by the problems you've been working on. > I've never had to implement a binary tree, if I did, I would be reinventing the wheel. If you actually had problems involving trees, you'd know that besides the usual data-structures we all know and love, problems involving trees and graphs rarely have prepackaged solutions and the available solutions are leaky abstractions for which you have to know how they work in order to fine tune them or to make a choice between the available solutions. Consider that problems involving graphs many times involve NP solutions that are unacceptable, but that admit solutions producing approximate results, which may or may not be acceptable for your problem. And sure, maybe the problems that you're solving don't involve trees or graphs. That's fine, I think it's been 2 years since I saw a graph problem myself, but then again, medics learn a lot more than they need to treat the common cold, in order for them to be prepared. I wouldn't want to be treated by a doctor that doesn't have the proper education, since my life is on the line. And yet we are the industry that accepts people without a college degree, but given that we also have a lot of responsibility on our shoulders, how accepting can we get? Consider that we build software that controls buildings, that drive cars, that process the confidential data of people. And we as software developers, when we meet, what are we going to talk about anyway? Sure, you might have some personal projects we can talk about, but lets circle back to beginners. What are you going to talk about with somebody fresh out of college or high-school? And even with seniors, not everybody has an interesting project to talk about, so how are you going to assess their worth? Sure, you can always do a trial, but the reality is that firing people is hard and expensive, that's just the way things are and most companies prefer false negatives.
- walrus1066 10y agoDanger with this is people recommend based on friendship & personal gain as much as competence. You can end up with mini guilds of ~5 people, who know each other well, and help each other with their career by recommending each other as they migrate from company to company. Seen this happen twice now. At my current company, someone joined the devops/infrastructure team, then brought 4 over from his network at his previous company. Most are competent, but one seriously isn't, and he's protected by his cabal, who now dominate the team. He's a 'senior' engineer to boot!
- matt_wulfeck 10y agoI've seen it happen as well. If you look at each person individually you may have issues, but does the team function? Do they get their work done and stay out of your way? For all I care they can have a dog on their payroll as long as their team does what it's supposed to do and stays out of my way.
- walrus1066 10y agoThe team sort-of functions. But they're stuck in a form of groupthink, where they seem to prefer building their own tools/scripts, our server monitoring is poor/non-existent (only application logs), they are very reluctant to move to AWS, security obsessed to the point of manually setting routes and firewalls manually, very poor automation overall etc etc But because they dominate our devops/infra, it's very hard to penetrate the groupthink, our CTO is thankfully getting involved.
- user5994461 10y ago> I've seen plenty of people who can reverse binary trees or fizzbang That's the tests for entry level programmers who are 16-22: It's the basics for writing code (that could be learnt alone with a computer), it doesn't require to have had a programming jobs or to have maintained software in the long term in production.