Gabriel posted this rant regarding his frustration with trying to find the right developer talent for positions that we were trying fill. At the time, I was the final decision maker regarding these interview candidates, so I thought I would offer my perspective.
First of all, let me say that we did find the types of individuals we wanted. It just took time and work. We made offers to a couple of individuals who turned us down for counter offers. I would imagine we also passed on some developers who could have been really good. This would be because either we did a poor job of asking the right questions and learning about the candidate or the candidate did a poor job of selling us that they are the right person for the job. Regardless, if they did not make an impression, they did not get an offer. It’s too expensive to give a person an opportunity and have them turn out to be the wrong person which causes the team’s productivity to suffer.
There is some discussion in the comments of Gabriel’s post about “low quality” developers are not able to land “high quality” jobs because those jobs require you to already be highly skilled. I do not think this is true. A lower skilled individual just has to try harder. I am impressed with candidates that I meet who are currently working in a lower skilled development position and have the desire to move to a higher one. First it shows that they acknowledge their skill level. Second it shows that they have enough interest in development to want to become better. If you want a shot at something, show that you deserve it.
It is very true that a great deal of interviewers do a poor job of interviewing. Sometimes the interviewer does all the talking instead of asking good questions. Sometimes the interviewer asks questions about something new that they just learned themselves. Regardless how the interviewer conducts the interview, it is important for the candidate to “wow” the interviewer with at least one thing. It can be something technical, team related, enthusiasm, … something. If a candidate leaves and fails to do this, then it may the interviewer saying “I am not sure”, which then they will often move on to another candidate.
With the interviews that Gabriel described, we tried to give the candidate every opportunity to wow us. Most did not. I wish they did. I believe with most candidates, we gave them feedback and what we thought they should be learning in the hopes they would call us six months later and let us know of they’re progress. Maybe some will?
Below are a few thoughts that came to mind as factors when narrowing down the candidates.
What I mean by honesty is whether or not the candidate is honest to you and themselves about their knowledge and skill. Do they put things on their resume that they do not really know? A person may tailor their resume to be specific to a particular job application, but they should not try to make themself look smarter than they are because it will ultimately hurt them later. I understand that most people are capable of learning anything given the opportunity, but padding their skills makes them look dishonest. A great deal of hiring managers are not extremely technical and will throw out resumes if they do not contain certain buzz words, but those are probably lowered skilled jobs anyway. Higher skilled development positions are likely to have higher skilled interviewers.
If I ask a candidate about a skill on their resume and they explain to me that they’re a beginner in that skill, I am OK with that answer as long as they have some experience with the skill and they are honest about their level. But if the person tries to fake it and try to make me think they know more than they really do, then I have already made my decision that this person is not the right person for the job. How can I trust someone to do a task properly if I cannot trust them to tell me what they know and do not know?
Though some shops are forty hours a week shops, many are not. It is important to ensure that expectations regarding level of effort are well understood between the candidate and the employer. If extra hours need to be worked, then how much and how often? Is the candidate willing to commit to this? How will it look if one team member consistently works the minimum while others are working extra? It’s important that the team have a similar level of commitment or they will not really be a team.
All candidates possess as least some technical skill (we hope) but technology is so broad and and there are millions of different ways to solve problems. The chances that a candidate’s skills match perfectly are very slim. There will be gaps between what a new hire knows and what they need to know to perform their work. Experienced programmers will be expected to fill those gaps more quickly than less experienced programmers. The challenge of a hiring manager is to determine if the gaps are acceptable for the given candidate and open position. The challenge of the candidate is to convince the hiring manger that they will easily fill those gaps.
On / Off The Job Training
I think most developers would say that they could learn just about anything given the opportunity and we have all had the opportunity to learn a great deal of things “on the job”. But I have always felt that it was my duty as a professional to also learn things outside of my job. I want to know if a candidate is willing to invest in themselves before I invest three months to train them. I want to make sure I get the best return on investment that I can get. A candidate that demonstrates that they will work extra hard to get up to speed makes me feel good about investing in them.
When a candidate is coming from a lower skilled position, I want to know what are they doing currently to improve themselves. Yes, we all are busy, but a great deal of us still find time to read outside of work, if not code. If the under skilled candidate is not currently working to increase their skills, then I am sorry that I do not have any interest in teaching them. They have to make an effort more than just saying “I want”.
Of course everyone wants to get as must money as they can and every company wants to spend as little money as possible, but with higher compensation, comes higher expectations. Salary negotiation is about aligning those expectations. If the salary is too low, the new hire will not be happy and end up leaving for more money later. If the salary is too high, then the new hire is at risk if their work does not live up to company expectations. There has to be a balance. Some companies may have unreasonable expectations for an offered salary. Some candidates may have unreasonable salary requirements for their skill level. Even if a person has several years of experience, they may need to lower their compensation requirements if they are considering moving into an area where they are less experienced.
Compensation can be based on other factors besides experience and technical skill such as innovation, commitment, work quality and leadership. You do not have to be good at everything but you need to be good at something.
Hiring the right people is hard. Searching for the right job is hard. Having the right attitude and expectations can make it easier, but nothing can make it easy. Good luck to all!
It is well known that big software rewrites are often failures. They fail because they always look easier than they really turn out to be. To replace a system that has been around for years is likely to take years to rewrite. Plus you have to add in all that time required to fix new bugs, add the features that were missed, and handle a whole new set of discovered edge cases. While the rewrite is happening, the existing product is not getting the attention it needs. Bug fixing and enhancements stop and customers become frustrated. This can give the competition an advantage. They may gain market share by delivering features customers want and need while you spend two plus years rewriting and stabilizing your product.
If you haven’t already read it, check out “Things You Should Never Do, Part I” by Joel Spolsky from over 10 years ago that is still very relevant.
I’ve had this site redirected to my Los Techies blog for awhile now. Mainly because I didn’t know what else to do with it. Well today I thought I’d reboot the old blog that was here and try out WordPress for fun. I didn’t bother trying to convert the context because it was mainly garbage and it didn’t seem worth the effort. Installing and configuring WordPress was really easy and even with the first post I already feel much more confortable with it than Community Server.
I still plan to post technical related items to Los Techies, but I plan on using this blog for things that I feel like sharing that may not be software related.