15 Characteristics of a Good Programmer
Business leaders are often challenged to find talented, experienced programming staff, especially if salaries must fit within certain budget guidelines. The fact that most of a programmer’s work is conducted in front of a screen makes the hiring process even more complicated. Over the past few months I've been hiring a bit of tech talent for my latest startup Hostt.com. This has been a big challenge as I live in the heart of Silicon Valley and talent is hard to persuade to leave big companies with large paychecks to work for a new, hip startup.
With everything I've been going through, I decided to write a post about some of the characteristics in the best programming talent that I've been able to attract to my startup. Beyond knowing the programming languages necessary to do the job, there are certain requirements that are essential in hiring the right programmer.Here are 15 characteristics that can signal an applicant would make a great addition to your programming team.
Impressive technical skills
One mistake many hiring managers make is hiring from a checklist of requirements. Instead of requiring three years of C++ and one year of Java, look at the big picture. A programmer who has worked mostly in an older language but has recently added a new language to his certifications may be the perfect fit, since his years of experience give him a great foundation in other areas of programming.
Sample interview question: Describe your experience with different programming languages.
Willingness to learn
Technology is always evolving and the skills and abilities a programmer has today will likely be outdated in a few years. It’s important to find a programmer who has an interest in following the latest trends and is eager to participate in any continuing education opportunities that are available.
Sample interview question: What do you do to keep your programming skills current?
Creating code is only part of a programmer’s job. When software doesn’t work as expected, a programmer is expected to get to the root of the problem quickly and effectively. Instead of spending hours blindly making changes, search for a programmer who prefers to carefully investigate his code and research possible issues until an answer is found.
Sample interview question: How do you handle bugs in your code? (next, I would give them a trial run to debug code)
Work environment match
Some programmers require complete silence to concentrate, while others thrive in chaos. A worker’s personal preferences are an important part of his productivity, so it’s best to be clear about your office environment up front to avoid problems after the person is hired.
Sample interview question: Describe your ideal work environment.
For those who have never attempted to create an application from scratch, programming can best be compared to solving an extremely difficult math equation. A good programmer thrives on finding ways to make something work, despite the odds. Otherwise, you may be hearing the phrase, “That can’t be done,” every time you propose an innovative new project.
Sample interview question: How would you create (insert near impossible task for your organization)?
Passion for the work
While some programming staff can simply serve as nine-to-fivers, many hiring managers are interested in finding someone who will gladly put in long hours when the situation merits it. Often these employees can be found during the interview process by their outside interests. True programmers are self-proclaimed “computer geeks,” spending their time gaming, building servers, or creating apps for friends. While this passion isn’t a necessity, it’s often a way to find top-shelf candidates.
Sample interview question: What are your hobbies?
Grace under fire
It may not seem like it to the outsider, but programming can be an extremely stressful profession. When deadlines are tight and nothing seems to be working, it’s easy to freeze up. The ideal programming candidate will be able to handle even the most stressful situations calmly and, most importantly, be able to continue working.
Sample interview question: Describe a time when you were under extreme pressure and your application wasn’t working. What did you do?
Programmers generally aren’t expected to have heavy-duty customer service talents. It seems to be understood at the outset that they’ll mostly be sitting in front of a computer all day. Yet programmers are regularly expected to interact with managers, co-workers, and clients, so the ability to work well with others is a must. This is especially true if your programmers are occasionally asked to participate in client meetings and explain how a system works.
Sample interview question: Explain how your favorite application works in a way a layman would understand.
Larry Wall, the original author of, The Perl Programming Languages, describes three good qualities in a good programmer: laziness, impatience and hubris. Laziness may sound like a bad trait for any employee to have, but IT managers have said that if you want to find the best way to do something, ask a lazy person. Chances are, that person will have found the quickest, most efficient way to do it. A company’s programming staff can often find a way to automate processes, saving time and money.
Sample interview question: Tell us about a time when you saved time by automating a process.
A business perspective
It’s easy to lose sight of the big picture while focusing on creating one piece of software. The ideal programmer has a business focus that allows him to move beyond the current application. A business-focused programmer will suggest ideas for new applications that can improve operations.
Sample interview question: Have you ever made a suggestion that improved a business’s processes?
Ability to plan
Rather than jumping into a new assignment, a good addition to your programming staff will first learn as much as possible about the desired end product. Once he’s completed that analysis, the programmer will first design the program structure before typing the first line of code.
Sample interview question: Explain your approach to a new design. What do you do first?
Ability to handle failure
Programmers rarely get everything right on the first try. In fact, failure is almost a certainty. It’s important to find programming staff that sees errors and bugs as a challenge rather than a sign of defeat. Persistence is important, as well as the ability to start over if necessary, even after hours of work.
Sample interview question: Have you ever spent hours on a code, only to find it was the wrong approach? What did you do?
A programmer rarely works alone, even if he’s the only developer in a company. The ability to work with programmers, business users, marketing and sales staff, and fellow programmers is essential.
Sample interview question: Share a rewarding team experience.
Willingness to research
A programmer’s language is only part of the picture. A good developer must learn about specific industries in order to design programs that work for its employees or customers.
Sample interview question: Tell us about a time you had to learn about a particular business? How did you do your research?
Respect for deadlines
Most programmers work on projects with deadlines. While it’s important that managers understand a reasonable turnaround time for coding a new application or repairing an existing one, programmers should also show respect for deadlines. It’s important to determine that an applicant will do everything possible to meet assigned deadlines.
Sample interview question: Describe a time when you had to meet a tight deadline.
It isn’t easy to find the right programmer, especially if your knowledge of programming is limited. One way to improve your hiring experience is to invite a member of your programming staff to participate in the interviews. They help to ask the questions that you won't know how to ask.