Feeds

Interviewing C++ developers with extreme prejudice

Clever ways to find clever people

Providing a secure and efficient Helpdesk

These days I do a bit of pimping (a.k.a. "quant headhunting" in polite company - a "quant" is a quantitative analyst doing high-value numerical analysis) for expensive people at banks. It may scare or delight you, but a lot of the financial markets are run off C++ with Excel VBA.

The first pass across the prospective intake is to check they are up to date, and have moved beyond MFC. Sure, I respect those who've made this wretched confection of multiple inheritance, and intrusive base classes actually work, but they should have moved on.

STL (Standard Template Library; Dinkumware does multi platform STL implementations and licenses a version to Microsoft) is a must and opens up opportunities for good deep interview questions. Knowing about Boost (which will probably be in the next C++ standard) shows they are near enough to the state-of-the-art.

I like them enough to understand the problems of inheriting from STL classes and order (N) notation, and it doesn't hurt to be able to write the declaration of a vector of linked lists of stacks, even if you never do it in real life. However, many interviewers like to compose some stupidly complex declaration and ask what it means. What it means, of course, is that they have low standards.

A large percentage of development, naturally, is debugging, so I have an array of code samples broken in obvious and subtle ways to ask about - and, yes, a couple of the bugs are my own foul-ups.

A modern C++ programmer needs to show s/he can happily work at three levels of abstraction, so I like to run discussions at three levels: the middle level is where C++ isn't really very different from Java or even Delphi; you declare, loop and call until the job is done. Many never get far outside this layer in either direction.

Below, we have the "physical" system of memory, CPU and operating system. This is classical old style programming, and quite a few people never master it, which can lead to horrible errors. Even if you don't do much low level work, it's important that you have a good "model" of what is happening to your code, even if it's a simple one. A good example of physical level programming is force fitting a class over a C struct, or perhaps extending a system data structure so C++ can handle it better. Done properly you can convert a simple blob of memory to an elegant class with zero overhead. Same applies to threads; you need to combine the CompSci view of mutexes and semaphores with the understanding that the thread creation API doesn't "really" take a function, but an address. This is part of getting your code to work with other subsystems. Given the percentage of project pain in that area, the more interfacing someone has done the better.

Going up, you need to communicate ideas and model the gross behaviour of your code, and these days that means patterns. Good candidates will be able to work through all the Gang of Four stuff, and even an adequate candidate will be able to not only implement singletons; blackboards etc, but also explain where they are useful. Singleton is asked about in many interviews nowadays, as is MVC and, of course, factory. The larger the project, the more important patterns become, so it is important that the people you hire are up to speed. They may express their ideas in some form of UML (Unified Modelling Language) or the RUP (Rational Unified Process), which is good even if you don't use them yet. Programmers who cannot communicate their ideas aren't just inefficient, they are often quite dangerous.

For completeness, I often chuck in questions about overloaded and virtual functions, though I do worry about people who are too good at them, since it implies their code may be too clever and fragile when others modify it.

A good programmer has a balance between the high and low level views. I see too many people who sneer at low level stuff, only for it to bite them on the ankle later, in ways they simply can't understand.

But ultimately, interviews as such are far from ideal. In recent times, I've handed over a laptop and asked a candidate to write some code for a standard algorithm like quicksort or even just a hash table. In fact, I've found the best predictor of programming skill is actually the expression on their face when I do.

The bottom line, however, is not whether a programmer knows a particular syntax, or can list those operators which may be overloaded. All this is in online help or the web. More important is that s/he can make good decisions about what to use and can explain those decisions. ®

A longer version of this article is available here.

Dominic Connor is a director at P&D Quantititive Recruitment

Internet Security Threat Report 2014

More from The Register

next story
UNIX greybeards threaten Debian fork over systemd plan
'Veteran Unix Admins' fear desktop emphasis is betraying open source
Netscape Navigator - the browser that started it all - turns 20
It was 20 years ago today, Marc Andreeesen taught the band to play
Redmond top man Satya Nadella: 'Microsoft LOVES Linux'
Open-source 'love' fairly runneth over at cloud event
Chrome 38's new HTML tag support makes fatties FIT and SKINNIER
First browser to protect networks' bandwith using official spec
Admins! Never mind POODLE, there're NEW OpenSSL bugs to splat
Four new patches for open-source crypto libraries
prev story

Whitepapers

Forging a new future with identity relationship management
Learn about ForgeRock's next generation IRM platform and how it is designed to empower CEOS's and enterprises to engage with consumers.
Why and how to choose the right cloud vendor
The benefits of cloud-based storage in your processes. Eliminate onsite, disk-based backup and archiving in favor of cloud-based data protection.
Three 1TB solid state scorchers up for grabs
Big SSDs can be expensive but think big and think free because you could be the lucky winner of one of three 1TB Samsung SSD 840 EVO drives that we’re giving away worth over £300 apiece.
Reg Reader Research: SaaS based Email and Office Productivity Tools
Read this Reg reader report which provides advice and guidance for SMBs towards the use of SaaS based email and Office productivity tools.
Security for virtualized datacentres
Legacy security solutions are inefficient due to the architectural differences between physical and virtual environments.