|
|
|
Advertisement
|
As important as technical ability, or perhaps more important, is personality. How well would the candidate fit the team? How well would they fit the work environment? People used various techniques to judge personality:
Randy Stafford: Good citizenship is probably more important than technical prowess, because if you have people with the right kind of attitude and demeanor, you can help them gain the technical knowledge and software development habits. But if you have people who lack humility and maturity, it can be extremely difficult to get them to cooperate in reaching a goal, no matter how bright they are or what they've accomplished in the past.
Chris Sells: I ask candidates, "Tell me about a problem you had with a boss or teammate. Tell me how you've dealt with a problem with a boss."
Jack Ganssle: I check references. Now, I know these people are the candidate's five best friends, and will not say anything negative. But I ask those references for names of people who know the candidate, and go to these others for insight. This way I spread the net beyond anything the candidate ever imagined.
Kevlin Henney: I try to imagine if I would go to a pub and talk non-tech with them—not if I like them, but whether I could get along with them. Are they pubbable? Could I talk to them in a non-office situation?
Dawn McGee: The most likable person is often not the best person.
Dave Thomas: I think every team of a certain size needs a professional pain in the ass, because teams get complacent, fixed in their ways. They need nudging out of their comfort zone once in a while, so they can look at problems from a different perspective. There are two kinds of pains in the ass: the obnoxious boor—to be avoided on all teams—and the person who never learned that grownups shouldn't ask "Why?" all the time. The latter is a treasure.
Perhaps the prominent theme of our discussion was that you need to try to get to know the candidate as best you can. Talk to the candidate in the interview. Try to get a feel for them. If possible, bring them in on a trial basis or for a probationary period. That would give you more time to get to know the candidate, and give the candidate more time to get to know you:
Chuck Allison: I talk to them. I get a feel for them. I always ask about what they've done. I have found that by discovering what a person is excited about technically, you can learn a lot of important things about them. In the past I've asked people to describe a project that was especially interesting to them, or that was challenging and successful. On occasion I've asked what they've done that they're the most proud of. This usually reveals the depth of one's understanding and mastery. It also gets them to turn on the fire hose verbally, and you can sit back and get most of the answers you need.
Randy Stafford: I look at past projects listed on their resume, and ask them to talk about those projects—how was the team organized, what the technologies and architectures were used, was the software successful in production, etc. In their answers I'm listening for what lessons they learned from those experiences, and whether those lessons match with lessons I've learned from my experiences and from professional literature. I get a glimpse into how they perceive themselves in relation to the world around them. Some come off as arrogant, some ignorant, some helpless. Others sound humble, intelligent, and motivated. I often ask them what software development literature they read. Continuous education is very important to me.
Angelika Langer: In Germany, hiring is like marrying someone. It's "until death do us part"—a marriage without the backdoor of a divorce, because you can't fire employees. The only chance for firing someone is during a three- to six-month probationary period, or when the company goes out of business.
The major filtering is done before the interview, based on the curriculum vitae (CV) and submitted papers, such as evaluations from former employers. (In Germany, employers must provide every employee with a written evaluation when they leave the company.) The interview itself is usually brief. The main tool in filtering is scrutinizing the CV and papers; 98 percent of all applicants are disqualified in this phase. The interview should confirm the impression you gain from the applicant's papers and allows you to sense their personality. The lucky winner then goes on a probationary period.
Probation definitely does not replace the filtering; it just keeps a last exit open until you really must commit.
Andy Hunt: We've hired people who interviewed well, but they were terrible at the job. If possible, hire them in for a trial period.
Dawn McGee: You could also bring candidates in for half a day, and have them do what they would be doing on the job.
To sum up the overlying themes from our hour-long discussion in Portland: You
should look for talent and fit more than specific skill sets. Ask open-ended
questions to initiate revealing dialog. Ask candidates to critique something. Ask
them to design something. Investigate their past experience. Review their code.
And through conversation and, if possible, a trial period, you should try to
become familiar with the candidate's technical abilities, talents, and
personality.
Do you have an opinion on the techniques mentioned in this article? Do you have a tool or technique you use to find good programmers? Please share your ideas in the News & Ideas Forum Topic: How to Interview a Programmer.
Bill Venners is President of
Artima Software, Inc. and Editor-In-Chief of Artima.com. He is the author of Inside the Java Virtual Machine
(Computing McGraw-Hill), a programmer-oriented survey of the Java platform's
architecture and internals. His popular columns in JavaWorld magazine
covered Java internals, object-oriented design, and Jini. Bill has been active in the Jini Community since its inception. He led the Jini
Community's ServiceUI project, whose
ServiceUI API became the de facto standard for associating user interfaces to Jini
services. Bill also serves as an elected member of the Jini Community's initial
Technical Oversight Committee (TOC), and in this role helped to define the
governance process for the community.
Resources
Chuck Allison is a professor of computer science at Utah Valley
State College in Orem, Utah. He has degrees in mathematics and practiced software
development professionally from 1978 to 2001, working for defense contractors and
other large corporations. He spent most of the 1990s as a contributing member of
the C++ Standards Committee and designed the standard bitset class. He has been a
columnist for the C/C++ Users Journal (C++ and Java) and the editor since
1992, and is now senior editor of the journal. He is the author of C & C++
Code Capsules (Prentice Hall) and co-author with Bruce Eckel of Thinking
in C++, Volume 2 (Prentice Hall). He has taught C++ and Java extensively
throughout the U.S. and is available for training and consulting from May through
August:
http://www.freshsources.com/
Josh Bloch is an architect in Sun Microsystem's Core Java
Platform Group. He has designed major enhancements to the Java APIs and language,
specifically for the Java Collections API and the java.math package. Most
recently, he led the expert groups that defined Java's assert and preferences
facilities. In his 2001 book, Effective Java Programming Language Guide
(Addison Wesley), Josh distilled his wisdom into 57 concrete guidelines for
designing and implementing Java programs:
http://java.sun.com/docs/books/ef
fective/
Alistair Cockburn is the founder of Humans and Technology and
Cockburn and Associates. Alistair is internationally known for his work in object-
oriented software development. Alistair does technical facilitation, process and
organization design, project setup, requirements gathering, and OO design:
http://alistair.cockburn.us/
Bruce Eckel is the author of Thinking in Java (Prentice
Hall), the Hands-On Java Seminar CD ROM, Thinking in C++ (Prentice
Hall), and C++ Inside and Out (McGraw Hill), among others. He's given
hundreds of presentations throughout the world, published more than 150 articles
in numerous magazines, was a founding member of the ANSI/ISO C++ committee, and
speaks regularly at conferences. He provides public and private seminars and
design consulting in C++ and Java:
http://www.mindview.net/
Jack Ganssle helps developers build better embedded systems
faster. He started, developed, and sold three electronics companies; including
one of the world's leading producers of embedded development tools. Jack is
Embedded Systems Programming's technical editor, as well the magazine's
monthly "Breakpoints" columnist. He has published more than 300 articles on
different aspects of embedded development, as well as two books (The Art of
Designing Embedded Systems and The Art of Programming Embedded
Systems both published by Newnes) on the subject. Online, he writes the
weekly "Embedded Pulse" column on embedded.com and is the editor of The
Embedded Muse, a free bi-weekly email newsletter:
http://www.ganssle.com/index.htm
Matt Gerrans began his professional life as an electronic
engineer but quickly saw the light and switched to software development. He now
has more than 12 years professional software development under his belt, including
work in C++, Java, Python, and yes, even JavaScript. He is the C# columnist for
Artima.com:
http://www.cyclethere.com/
Kevlin Henney is an independent consultant and trainer based in
the UK. Prior to becoming the founding director of Curbralan Limited, he was a
principal technologist for QA Training. He has developed and delivered training
course material and consultancy on many aspects of OO development, which he has
practiced across a number of domains for more than a decade:
http://www.curbralan.com
Andy Hunt and Dave Thomas are the "Pragmatic Programmers,"
recognized internationally as experts who develop high-quality software --
accurate and highly flexible systems. They helped write the now-famous Agile
Manifesto, and regularly speak on new ways to produce software. Their best-
selling book, The Pragmatic Programmer (Addison Wesley), describes their
software development best practices. They have more than 40 years combined
experience in the industry. They know practical software development:
http://www.pragmaticprogrammer.com/
Angelika Langer works as an independent freelance trainer,
mentor, and consultant with a course curriculum of her own. Her current work is
backed by more than a decade of experience as a software engineer working for
German and US companies and several years as a trainer and consultant. She enjoys
speaking at conferences all over the world. Her consulting and mentoring
assignments focus on code reviews, audits, project evaluations, special purpose
workshops, and more. Together with Klaus Kreft, she wrote the authoritative book
Standard C++ IOStreams and Locales (Addison Wesley) http://www.langer.camelot.de/ios
treams.htm. Angelika also served as a columnist for C++ Report http://www.langer.camelot.de/Articles/Articles.htm#C++ Report and
C/C++ Users Journal
Pete McBreen is the author of Software Craftsmanship and
Questioning Extreme Programming (both by Addison Wesley). He is an
independent consultant who actually enjoys writing and delivering software.
Despite spending a lot of time writing, teaching, and mentoring, he goes out of
his way to ensure that he does hands-on coding on a live project every year. Pete
specializes in finding creative solutions to problems that software developers
face:
Dawn McGee is a Business Consultant and Attorney. Formerly, she served as the Lead Analyst
for Underdog Ventures, LLC, in New York City and Global Partners, LLC, in Napa, California, focusing on investing
in companies that have a high social impact. Ms. McGee provides clients with legal and business advice on start up
issues, business plan reviews, business formation, venture capital financing, technology development agreements,
licensing agreements, intellectual property protection, private placements, joint venture agreements, real estate
issues and estate planning and business succession. She speaks frequently on the issues of angel investing, venture
financing and women's entrepreneurship. She can be reached at:
Scott Meyers is one of the world's foremost experts on C++
software development. He wrote the best-selling Effective C++ series
(Effective C++, More Effective C++, and Effective STL
(all Addison Wesley)), wrote and designed the innovative Effective C++
CD, is consulting editor for Addison Wesley's Effective Software
Development series, and is a member of the advisory board for Software
Development magazine. He also sits on technical advisory boards for several
start-up companies. A programmer since 1972, he holds an M.S. in computer science
from Stanford University and a Ph.D. from Brown University. Scott offers
consulting and training services to clients worldwide:
Chris Sells is a consultant, author, speaker, and general
technology wonk. He specializes in component-based and distributed systems in a
Windows environment, including .Net, Web Services, COM, C++, ATL and Win32:
Randy Stafford is a professional software developer and chief
architect at IQNavigator, Inc. He wishes he had more time for writing about
software development, but has recently contributed chapters to Martin Fowler's
Patterns of Enterprise Application Architecture (Addison Wesley) and
Floyd Marinescu's EJB Design Patterns (John Wiley & Sons). He's been
developing enterprise applications in Smalltalk or Java for 15 years in government
and commercial sectors, for companies large and small. His homepage on Ward
Cunningham's Wiki Wiki Web, where he has been a longtime community member, is:
Dave Thomas and Andy Hunt are the "Pragmatic Programmers,"
recognized internationally as experts who develop high-quality software --
accurate and highly flexible systems. They helped write the now-famous Agile
Manifesto, and regularly speak on new ways to produce software. Their best-
selling book, The Pragmatic Programmer (Addison Wesley), describes their
software development best practices. They have more than 40 years combined
experience in the industry. They know practical software development:
http://www.langer.camelot.de/
http://www.mcbreen.ab.ca/
dawnmcgee@excite.com
http://www.aristeia.com/
http://www.sellsbrothers.com/
http://c2.com/cgi/wiki?RandyStafford
http://www.pragmaticprogrammer.com/
|
Sponsored Links
|