There’s an old joke about a programmer who goes shopping. Their partner says: “Pick up a loaf of bread. If they have eggs, get a dozen.” They come home with 12 loaves of bread.
The joke plays with the well-worn cliché of the programmer, logical but lacking in social skills, like Mr Spock on an off-day. At New Bamboo, the cliché doesn’t hold. Team work and social skills are as important as having a good understanding of Ruby to us. Our developers spend a significant amount of their time communicating, asking clients what they need, collaborating internally to figure out our best approach, and then explaining our ideas to the client in return.
As a result, our recruitment process is designed to not only test a candidate’s programming potential, but also to put these softer skills to the test.
The first part of the process, before we even review a CV, is to ask the candidate to complete a coding test in Ruby. It concerns a fairly esoteric part of the language, so candidates probably haven’t come across it before, which puts them all on an even footing. They complete the test at home in their own time, researching the language, experimenting and working out the best solution.
There’s a test suite the candidates use to confirm the code is correct, so our code review is more subjective. We look at the use of idiomatic Ruby, how the code is structured, and the approach the candidate took. We favour clean and descriptive code over clever code, and a lot of the value is in being able to write something that another team member can easily pick up. One of the questions we ask ourselves is: would we want to work with this code? Everyone does the same test, so we’re more lenient in considering submissions from less experienced programmers.
Often, we’ll do a phone interview to learn more about a candidate.
The next stage is to invite the candidate to join us for an afternoon or a morning. They get to meet the team over lunch, so they can learn more about what we’re working on, and we can get to know them better. While they’re with us, they do a pairing test, where they work with Olly – one of our most experienced developer – on a challenge inspired by the kinds of things we do day to day. We often using pairing here, where two programmers share a computer, two brains dedicated to a particularly thorny problem. It’s a good way for us to see how candidates work, and how they communicate what they’re doing. This isn’t a knowledge or memory test, so they’re encouraged to use the web to look things up and ask me for help. Obviously, it’s only simulated pairing, because we’ve seen a number of possible approaches to the problem, so we are not in the driving seat. It’s intended to be a realistic work scenario that gives candidates a taste of the kind of work we do.
At New Bamboo, team work and social skills are as important as having a good understanding of Ruby.
Finally, there’s an interview, which focuses on soft skills. That bit you’re probably familiar with, but by putting it at the end, we’re able to enter it with some understanding of the candidate’s strengths, and they’re able to enter it knowing much more about the work we do here. This is also a chance for the candidate to ask in detail anything they want to know about New Bamboo – it’s really important to us that our developers want to work here, and so we make sure they have a chance to check the fit too.
This multi-layered process, looking at technical competence and communication skills, has enabled us to build a company that brings in talent from all kinds of backgrounds. About a quarter of our team doesn’t have a degree, and of those that do, only half of them have a computer science degree. Ismael studied fine art, and Max read English literature, for example. Our recruitment process makes sure we value your expertise instead of your credentials, every time.
If you’re thinking about joining us, here are our top tips: first, learn Ruby. We rarely hire people who don’t already have some understanding of Ruby. Secondly, work on some real world problems and launch your solutions. They don’t have to be important or successful, but you learn so much by seeing a project through to release. That experience really shines in our tests.
If you’d like to join us, check out our jobs page. We’re currently on the look-out for senior ruby developers. Could one of them be you?