The New Normal™ is shaping up to irreversibly affect business operations. These changes will go well beyond the predictable ones demanded for social distancing. It will be small businesses and startups that will have to do the most innovating and will have to implement new practices in order to thrive in the aftermath of a decimated economy, social isolation, destroyed supply chains, and fundamentally altered business models.
The Old Questions
One of these changes might be the questions you ask when you interview IT job candidates. They’ll probably be working mostly from home, so they need to be self-motivated, independent, critical-thinking problem solvers. Last year, and sadly, for many, many years, questions like these were typically asked:
“Where do you see yourself in five years?”
“What’s the difference between an abstract class and an interface?”
“What’s your greatest weakness?”
“Why do you want to work for us?”
“Describe a difficult problem and how you solved it.”
“How would you implement a singleton?”
You don’t want to ask these types of questions. They tell you very little, because these questions are so ordinary and expected that everyone has memorized and rehearsed the “perfect” answer well in advance. What do you think the answer will be to the question “Are you comfortable working remotely?” If you ask this, you’re not even trying.
First, consider candidates whose technical background and experience are beyond question based on their experience. Next, move on to probing questions that might uncover something about the candidate’s character, judgment, how they think, what they think about, and what they do about what they think about.
What's Important Now
Remember, you’re investing your time in finding the right engineer with whom you can trust and build a long-term professional relationship. I’ll provide a list of questions to give you some better idea about a candidate beyond whether they’ve memorized the syntax for defining a constructor in Typescript. But first, you should consider the type of candidate that will not only get the job done remotely, but also really help your business grow. What skill sets and traits are you lacking most?
Are you looking for someone cautious, who will look for external direction, or an opinionated influencer? You’ll be able to tell whether they are an independent thinker by asking the right question. Some software developers will agree with whatever Uncle Bob Martin or Martin Fowler says. When faced with a challenge, some will accept without question any practicable solution approach recommended by Microsoft, Google, Amazon, or Facebook.
On the other end of the spectrum, you’ll find contrarians-- programmers who forswear all kinds of ideas thought non-controversial by a majority of their peers-- test driven development, agile, even object-oriented design. Yet others, while withholding a value judgment about a topic, are able offer you an objective opinion about the origin or rationale for a concept (e.g. software design patterns) because they’ve done some actual thinking about the topic.
This shows you that they have healthy skepticism, carefully analyze concepts, and think about them in a more abstract way than others might.
Computer science in general, and software development in particular, has become such a broad field, no one can know everything. Sometimes, engineering decisions are made based on that engineer’s scope of knowledge and expertise (“every problem looks like a nail”). Upon consideration, an engineer might realize that his solution approach would look totally different if he had experience with some technology beyond his current scope of knowledge-- OLAP, TCP/IP, blockchain, embedded systems, neural networks, etc.
Software developers know that they need to independently update their skill sets as new techniques, practices, norms, and technologies become available or widely adopted. Asking the right question reveals not only whether the candidate has been able to self-manage in that area, but what they believe will be among the most important emerging technologies, especially those on the roadmap from their current starting position.
It’s human nature to seek enjoyable tasks and avoid unpleasant ones. Each person has their own personal inclinations regarding what these might be. Only by sheer will and determination will one surmount the psychological hurdle and become an expert in some language, tool, or technology which they think is byzantine, poorly designed, inferior, of questionable utility, or only tangentially related to their professional interests. If you hire someone to function primarily in an area they’ve taken a rather dim view of, they will be dissatisfied and somehow displeased from the very first day.
An experienced developer should be able to recall an occasion where a project was in trouble and be able to identify the root cause of the problem, what steps were taken to mitigate the problem, and whether actions taken were successful. He might possess insights or opinions about problems specific to your business or industry or have recently solved a problem similar to one you are currently facing.
So, here, finally are the questions I propose as most important and interesting more than any of the ones I can remember being asked, and indeed, I myself have asked potential candidates in the past. I’m not interested in giving applicants silly array programming tests; I don’t care what certificates they have or what training they’ve completed. I don’t care whether they enjoy golf, horseback riding, alligator wrestling or long walks on the beach. The social distancing software developer can be a different breed of animal-- one dedicated to self-improvement, learning, research, technology, and productivity by any means necessary.
The 10 Questions
Here’s what I care about:
1. What is something most people believe that you disagree with?
2. What is a technology or concept you wish you were more familiar with? Why?
3. What kind of task are you good at but dislike doing?
4. What do you know or do that no one else does?
5. What research being done or innovation developed within the last year is most exciting or interesting?
6. How would *you* select a candidate for this job? What factors would be most important in your decision?
7. Describe your perfect job including technology stack and scope of responsibilities.
8. What is the top warning sign that a project will fail and what should be done to address it?
9. Can you think of anything that could be done to improve ______________? What does the future of ________ look like?
10. When would you quit your job and start your own business? What kind of business would you start?
If you like the answer to one of these questions-- if that answer stimulated a real conversation or made you both think, don’t forget the bonus question: “When can you start?”