How To Choose an “Excellent Computer Programmer” From Your Job Candidates
What are “Excellent Computer Programmers”?
My employer recently had to let go a programmer hired for a senior level programming position who was not up to the task of producing senior level code. The manager (a wonderfully patient mentor) worked with this programmer for over a year, and they were still producing junior level programmer code.
So how can you find one of those computer programmers that can:
- do whatever they are asked to do in any programming language/framework you specify (even if they have no experience in it at all);
- tell you how long it would take to write in that programming language/framework (at only a few hours into it);
- can offer alternate programming languages/frameworks to shorten the time to market;
- can tell you the impact of using the new programming language/framework;
- and can determine when the cost of writing and maintaining the custom solution will be more than the savings for having it.
In other words how do you find an “Excellent Computer Programmer”?
“Excellent Computer Programmers” Are Rare
I have had only four or five co-workers throughout the years (out of dozens) who were “Excellent Computer Programmers” . I, myself, am an “Excellent Computer Programmer”.
If you work with a computer programming department, you can usually determine if you have one on staff.
- Who do your senior programmers ask how to solve complex problems? Is it the same person for a variety of different complex problems?
- Do your senior programmers say something to another programmer like “you could probably do this much faster and better” about a variety of different tasks?
- Does that programmer mentor the other programmers so they can do the complex tasks themselves?
- Is that programmer motivated by the sense of accomplishment or helping others?
- Does this programmer write clean code that does the job and yet the code is elegant in its simplicity?
If so you might have an ”Excellent Computer Programmer” on staff.
The Wrong Way To Find Them
I have looked closely at many job postings (approaching two hundred) over the last few years.
Many of the job postings are extremely specific in the skills and experience they want like: Hibernate; RichFaces; Eclipse; EJB; and JBoss. Some even put version numbers for the libraries/frameworks/programming languages they list. Nearly all of these want these skill sets as required experience.
It makes me wonder if the hiring manager has given up on finding an “Excellent Computer Programmer” and is settling for junior level or mediocre programmers. Are they looking for the kind of junior level programmers that have a hard time not programming in anything different from the specific libraries/frameworks/programming languages that a wonderfully patient mentor taught them to be moderately proficient in.
Maybe the hiring manager hasn’t had the experience of having an “Excellent Computer Programmer” on their team before. Or maybe they are not aware that HR tends to filter out resumes for them. An “Excellent Computer Programmer” probably does not have the exact experience they list in the required section, so the programmer’s resume does not get past the HR filter.
I have been on at least one interview where they stopped asking questions and had concluded I could not do the job once they found out I had no experience in a specific library even though I had experience in a similar library. To my surprise, they did not ask about my ability to learn the new library. Since that interview years ago, I have started to volunteer the information of how the library/framework/language they are asking about is similar to something I already have experience with (this requires a slight amount of homework before the interview.)
What to Look For
1. A Variety of Programming Languages. Remember an “Excellent Computer Programmer” can work at a senior level in any programming language, even ones they have absolutely no experience with, so they tend to rack up experience in a lot of different programming languages. If you count up the number of programming languages I have used professionally including declarative languages (like HTML, ANT, XML, and XSLT) they total 20.
2. Three Years or More at Each Employer. Looking at how long they hold down each job can tell you if their variety of programming languages is an indication that: they learn new programming languages as needed; or they jump around from job to job because they have not found a good fit yet. I have been at my current employer for 9 years, yet I have far from stagnated in my career. This is because I have programmed in several programming languages while here. These include Java, JavaScript (DOM Scripting, AJAX, Prototype, and jQuery), PERL, PHP, PL/SQL (Oracle), SQL (MySQL), Flex, Actionscript 2.0, Actionscript 3.0, ANT and C.
3. Pet Projects Outside the Scope of Their Job Description. “‘Excellent Computer Programmers” tend to engage in pet projects that are outside the scope of their job description to fill in time when they: get burned out on the task they are working on; complete a task before the deadline; or during other down time. These usually can help the company they work for. My pet project is Software Development Security (SDS). SDS involves building software that is resistant to attacks like (but not limited to) SQL Injection, XSS, XSRF, Clickjacking, or Session Fixation/Hijacking.
4. Main Motivation Behind Their Programming. Of all the “Excellent Computer Programmers” I have known they all have a specific motivation behind why they chose computer programming as a career. You’ll get different answers, but they all boil down to two categories: personal accomplishment; and helping others. ”Excellent Computer Programmers” get animated and excited (relatively speaking) when talking about how they had a hard problem that they finally were able to solve. They also talk with a sense of pride about how their program was used to help other people. They never have as their main motivation: “to get a paycheck”. My main motivation is that I get a great deal of happiness when I have created a program that makes someone else’s job easier to do.
Conclusion
In order to hire a computer programmer who can do practically anything with any language under practically any environment constraints, including what you are specifically looking for in a programmer. You need to go past the “we need experience in these specific technologies” mind-set. Look for a programmer who: can adapt quickly due to experience in a wide variety of programming languages; is committed to getting the job done by staying at employers for the long haul; keeps doing programming related activities in their spare time; and are motivated by the challenge and impact of their programming.
