Interview number 4 yesterday was my worst ever, and I wasted half a day of annual leave humiliating myself in front of some very learned and accomplished people.
I'm mainly a C guy, but I do a bit of C++ at work. I taught myself from books and frobbed with it a little at home but I don't use it on any of my own fun projects because it isn't fun and it's a dead end. My semi-current employer sent me on an embedded real-time C++ course a few years back which was very good. It really explained the lunacy of the language in great detail. The instructor even advised us to avoid iostream (i.e. cout and such nonsense) and used the good old-fashioned C stdio functions :-)
So yesterday I ill-advisedly went to an interview for a very senior C++ position. Originally I'd applied for an intermediate one, but that one got filled by an internal transfer. They liked me from the telephone interview (I knew what a page table was and about exception handlers) so they invited me to this one.
I'm afraid I didn't do very well. I was presented with a technical test first in a room with a glass wall. They knew I'm a Linux guy but they gave me a Windows PC with Visual Studio and a new project with a main() function (with a funny Windows name) ready to go. I had 45 minutes.
The test looked very easy. It was about some fairly elementary data structures, and hubris got the better of me. Instead of going for a simple, hard-coded solution I went to town thinking I'd get it done in the 45 minutes. Whoops.
There were two people. The one I'd spoken to before made little attempt to hide his disappointment at what I'd done. I'd tried my best to do things the "right way" for C++ but I'd forgotten the special baroque and silly syntax for initialising member variables in a class, so I put the initialisation in the constructor. I made sure I brought that up before they did.
We had a good chat about things, about the merits and downsides of various solutions, why exceptions are bad in an embedded system etc. etc.
They let me out to go to the toilet.
When I came back, another one had joined in and they were talking about me in the glass-walled room. They came out and left me to sit there.
Five minutes later, the first one came back, eyes looking down at the floor to tell me that they'd decided there was "no point in doing the second part of the interview because, well, you failed the technical part."
Computer people are not known for their tact and diplomacy.
He did say that they needed someone who was up to a particular standard who could start straight away, that they couldn't take someone on and wait 6 months for them to learn. He said that I should practice these things at home, which was nice of him. He didn't say "you're completely useless." Although he was clearly thinking it.
But he might as well.
I knew the job was way above me. The lower end of the salary range was 30% above what I'm on just now.
I'm not sure how interesting I'd have found the work anyway.... and C++ .. Ugh!
So I'm going to take his advice and write a bunch of noddy C++ programs to demonstrate various algorithms, data structures and techniques, including different ways of implementing things.
Although C++ isn't great and there are better languages about now, it's pretty pervasive in this industry and will be with us for decades to come, like FORTRAN and COBOL. It would be very silly to avoid learning it for ideological or emotional reasons. (I've learned it mostly on my own in my own time.) The thing is, I haven't used it enough in my day job to be good enough to impress at an interview. And everyone, every company, has different opinions on how C++ should be used...
I want to learn D and Scala, but I'll have to concentrate on C++ just now because that is what pays the bills these days.