Skip to content

  1. How to Interview a Software Developer

    I have spent a lot of time over the past 10 years recruiting and hiring technical talent. There are three main things that I look for during an interview to determine if my candidate has what it takes to be a part of the team: relevant skills and experience, great communication, and passion. This article assumes you’ve already identified candidates you’d like to screen by phone (a completely separate topic).

    Relevant Skills and Experience

    I have found that many interviewers use softball questions that give interviewees the opportunity to express opinions and to project an ideal view of themselves instead of focusing on specific experiences which qualify them for a job. While this line of questioning has its merits at certain times during the recruiting process, it shouldn’t be used used to determine whether the candidate is qualified. Qualifications should focus on relevant experience.

    Macy Dog

    First we focus on job history. I have the candidate walk me through her resume while I begin to assess whether she has faced similar challenges to those she can expect in my job. Then we begin to launch into specific experience-based skill sets. For instance, “Tell me about the last time you were responsible for designing a data model from scratch,” or “Describe your last time interacting with a RESTful web service? Walk me through the service and what languages and libraries were involved? What was surprising and what did you learn?,” or “Describe to me a time you leveraged a design pattern – what problem were you trying to solve and what pattern did you use?”

    Notice these are all open ended questions with no simple yes/no or one sentence answers. These should be tailored to the specific role you’re hiring for, but remember that experienced technologists can answer questions that are timeless. They may not be able to answer detailed questions about the latest and greatest technologies because they have likely been focused on real world solutions with a slightly dated technology. It’s okay, these guys know how to learn and where to find information when they need it. Lessons they have learned in other environments will save them from repeating past mistakes.

    Oh, and another favorite question is “Tell me about the last time you really screwed up.” If your candidate can’t give you an open, candid and detailed response to this, I’d question whether or not he has taken on any significant challenges in his career. Have him walk you through how he got into trouble in the first place, but focus on what he did to recover and the ultimate outcome. You want to know what actions he personally took to address the situation, not those of his manager or teammates.

    Finally, I’ll walk through a quick case study which forces the candidate to the white board to show code snippets, data models, or other relevant diagrams. The case study should be something easily understandable within a short period of time, but representative of a real-world problem. The important takeaway from this activity is an understanding of the candidate’s thought process in real time. Is it logical or chaotic? Have they solved a problem like this before? If not, were they able to come to reasonable solution based on the information you gave them?

    Communication

    That’s the technical stuff, and it’s necessary to know your candidate has the hard skills. Jeff Atwood recently posted a great article on How to Write Without Writing, and makes the point that there’s more to programming than writing code:

    Over the last 6 years, I’ve come to believe deeply in the idea that that becoming a great programmer has very little to do with programming. Yes, it takes a modicum of technical skill and dogged persistence, absolutely. But even more than that, it takes serious communication skills…

    Often what separates good and great programmers is the difference in how they communicate and collaborate. I find this to be particularly true when I run across a candidate who has spent significant time mentoring during their career. Those who teach often have a deeper mastery of a given topic than their peers who have not, and a teach must be an above-average communicator to teach complex logical concepts.

    One of my favorite interview questions for any level hire – new developer to experienced architect – is “Teach me something, anything.” This question gives me a unique view into the candidate’s psyche. Will the topic be germane to the job or an unrelated personal passion? Candidates who meet my expectations in answering this question will usually start by clarifying what I know about the subject before launching into their lesson. Good communicators find a baseline of knowledge and work to build upon it a shared understanding of the topic at hand. This simple question can also help you gage how comfortable the candidate will be in communications with clients and senior management. Do they unknowingly patronize me or do they approach my lack of knowledge of their chosen topic diplomatically?

    Passion

    Once I’ve determined that relevant experience and communication are acceptable, it’s time to see what makes this person tick. Are they passionate about technology, and just as importantly, are they passionate about my company, my customers and the role? “What do you know about [my company]?”, or “Why [my company]?” are nice open-ended questions that let you know whether the candidate has done his homework. Are you just one of the 10′s or 100′s of companies he spamming his resume to, or is he genuinely interested in this specific opportunity? Is this a local candidate that’s desperate for a local job? Or is it someone who’s willing to move cross-country for the opportunity that you’re going to provide? (your resume screening process can actually help weed these guys out, here’s how). After all, there are hundreds of other companies out there they could be interviewing with.

    Passion for the technology itself is a must in this industry because tools and techniques literally change by the week. If a candidate is to stay relevant outside of her day to day work, she will take the initiative to stay abreast of technology developments as time allows. My favorite question to ask in this area is “When is the last time you learned a new technology just because you were interested in it?” Many candidates won’t have learned anything outside of what is required for their job. If you sense this is the case, it should send up a red flag. I’d suggest that it is impossible to keep up in this industry without making personal investments of time outside of day to day job duties and work projects.

    Conclusion

    There are many good techniques out there to help you hire great technologists. These are a few that have served me well. Once the requisite skills are verified nothing can be more important than communication and passion for most technology jobs. In fact, whether you’re hiring an engineer, professional services architect, business analyst, interaction designer, QA analyst, or any other role for your organization, your best bet is to find someone passionate and communicative. When they become employees their passion will sustain them through the inevitable rough patches, and an ability to communicate effectively could literally save you money, goodwill and reputation as you strive to delight your customers.

    Categories: Management, Product Development, Recruiting.

  2. Dealing with Meetings

    I decided to cancel/decline 12 meetings that were on my calendar for this week. Why? Because I actually want to get some work done. We have all become quite accustomed to frequent interruptions in the corporate environment, namely email, phone and random, drive by discussions, but worst of all – meetings.

    Many have written on the topic before, but here’s my take on how you can take the initiative to improve meetings in your environment:

    • Make decisions – A meeting is an environment where decisions should be made. If this is a meeting to communicate, consider using another medium and cancel the meeting.
    • Prepare an agenda – If there is no agenda for the meeting, it is likely that the time will be unproductive, and the result will be a follow up meeting. Decline or cancel the meeting until the organizer creates an agenda.
    • Prepare background information – Even if you do have an agenda, are there outside sources of information critical to the decisions that need to be made in the meeting? If so, gather and consolidate that information prior to the meeting. If that information must be gathered from individuals, call or email them personally prior to the meeting to gather the necessary info.
    • Eliminate recurring meetings – I cancelled most of my one on ones and have opted out of a number of recurring meetings this year. I freed up over 4 hours a week and I can safely say that I’m not lacking information or interactions that I had when those meetings were on the calendar. Hopefully by next year I can free up another 2-3 hours a week.
    • Limit meeting participants – Just this week, I was in a meeting with 8 other participants for an hour. 9 hours worth of meeting time of highly paid resources adds up quickly. If you can’t share a pizza among meeting participants you have too many of them (credit goes to Jeff Bezos for that concept!). Does this meeting really need to include 9 people, or could 1-2 people work out the details and communicate that to a broader audience via a medium other than another meeting?
    • Schedule shorter time periods - …And stick to the schedule. Why do we only schedule 30 or 60 minute meetings? Because that is what Microsoft Outlook and other calendaring applications do by default. According to Parkinson’s Law, “work expands to fill the time allotted.” In the same way meeting time usually expands to fill the time allotted.
    • Be hyper-aware 0f remote participants - If meeting participants are distributed, consider having everyone participate via phone. When there are two or more people in a conference room and individuals on the phone it can be difficult for the remote participants to hear, causing frustration. Make sure it’s clear who’s speaking at all times. Use a shared whiteboard tool such as typewith.me to take notes collaboratively.
    • Have a scribe – One participant should be tasked with taking notes and promptly circulating them to all meeting participants.

    Meetings fundamentally break up our days into unusable chunks. The human mind thrives when focused on a single activity. Often you must fight to keep contiguous blocks of availability to get real work done. Sure, running from meeting to meeting can create a sense of importance and even provide the illusion of effectiveness, but we should all beware mistaking busyness for getting things done.

    Categories: Culture, Management, Productivity.

  3. Do you need permission to succeed?

    It’s your project, your career, your life – why not take the bull by the horns and make a difference? Do you want to be told what to do by someone else for the rest of your life in exchange for a paycheck, or do you want to make a name for yourself?

    I had to intervene in a project that was off the rails several weeks ago, and today I was asked for performance feedback on the responsible project manager from his HR manager for “coaching” purposes. I had many data points to share, but the underlying theme is that this person simply does not have the capacity and/or the desire to lead – he was the wrong person for the job. Complex projects with ill-defined problems and even less defined solutions need an architect, a creative thinker who knows how to leverage all resources at her disposal to execute and succeed.

    If you want to be a cog in a wheel and follow a methodology, there is an entire class of project work out there just for you. They have better definition, they have been done before, and they are predictable.  However, if this is the role you prefer to play, don’t be surprised if you get caught up in the next big riff and spend 12 months searching for work. All companies, startups to large enterprises, need people who can make things happen and who aren’t afraid to break the rules, bend policies and shake things up to get something done for a customer.

    Question is, where do you stand?

    Categories: Management.

    Tags:

© Copyright Jay Nathan, 2010-2013