My Experience as a Recruiter Pairing with a Software Developer

According to wikipedia, Pair Programming is an agile software development technique in which two programmers work together at one workstation. One, the driver, writes code while the other, the observer or navigator, reviews each line of code as it is typed in. The two programmers switch roles frequently.
A few days ago, I initiated an hour-long pairing session with a highly-experienced software developer/engineer who has had deep experience leading teams, writing and delivering customised software as well as interviewing candidates for my company ThoughtWorks.
No, we didn’t pair to code. Instead, we paired on screening software developer CVs, applying the concept of evolutionary architecture to my technical understanding (evolutionary recruiting so to speak), to ensure that the definition of what I’m continuing to look for is kept up-to-date.
The hour was filled with mutual learning and fruitful conversations, but here’s the gist of what I learned:
- We validated a common understanding that we are looking for developers with well-written CVs that get to the point quickly, highlighting their own achievements. There are the typical CVs that fill more than 4 pages with repeated content that don’t really say much about the individual’s contribution, and is more of a copy-pasted job description of the past/existing role. The care taken to clean up how you present yourself is a reflection of the pride taken in the work that you do as well.
- The term “Techno Functional” refers to someone who is relatively hands-off from code, as compared to a full-stack developer. A candidate who has been a Techno Functional Consultant for an extended period of time would have a lower chance of being a good fit for our roles, but there are always exceptions. Sure, googling the term would yield a definition of the term, but getting the direct feedback from someone who has worked with a large number of people with different roles on various projects through experience is worth so much more.
- Since we were looking for senior developers who are polyglot programmers, we expect working knowledge and experience in at least 2 programming languages because of the breadth of knowledge that we need in the type of work that we do with clients. While this was something I already knew, it acted as a good reminder as I’ve been recently increasingly giving people who have just worked in 1 language ecosystem (like .NET) a shot. However, further interviews with such candidates have tended to yield negative results, so it got me to be more careful when considering similar candidates.
- The value of side / personal projects in Github is high. That’s where you learn at an accelerated pace. While there is much to learn when you engage in pair programming, working alone on your own projects allows you to go fast and go deep.
- Certifications in different areas of technologies is a good sign as it signals a breadth of interest and curiosity, and action that was taken to follow up on that curiosity. This was another good reminder for me as I don’t pay much attention to certifications since it’s not a requirement for ThoughtWorks, but will now be something that I take into further consideration.
With that said and done, recruitment in ThoughtWorks is never a case of trying to find the same exact shape that would fit into our roles, but instead is a broader sweep of people who have diverse interests and work at those interests. Being part of a community that pioneered agile and continues to live and breathe it allows me to really understand what it means to have an agile mindset, through actually experiencing the benefits of fast feedback, amongst other things.
If you’re a technical recruiter and you’re reading this, go look for an experienced software developer and pair with one today. You’ll never look back!
