Mozy is hiring. I mean, Decho is hiring. Decho is the silly name given to replace the awesome of Mozy. We still call it Mozy, we can’t help it.
Anyway, we’re hiring. Specifically, my team, the client team, is hiring. And since Mozy decided to make me the manager of the Windows client team, that means I’m participating in the interviews. This is stressing me out, because I feel like I am deciding the fate of people.
The process of getting hired at Mozy (arrgh, Decho) goes something like this:
- Apply and submit a resume.
- If we like your resume we will do a phone interview.
- If you do well in the phone interview we will bring you in for on-site interviews.
- If you do well in the on-site interviews we will assign you a homework assignment.
- If you do well on the homework and you are the best candidate we have for the position, there’s a decent chance you’ll get an offer.
Development work at Mozy is primarily done in C++. Objective-C on the Mac side. Pretty much you have to know C and C++ and/or Objective-C to get a development job, unless you want to work for the web team, using Ruby. But those guys are kinda weird. They sit on a different floor in the building and everything. We’re not talking about those guys.
So during the phone screen, we ask you to rate yourself on C++.
We explain the rating scale like this: 0 means you are my father, waiting for this computer fad to go away, and you haven’t really heard of C++. 1 means you wrote Hello World in C++ once, and might be able to do it again today. On the other end of the scale, 10 means your name is Bjarne Stroustrup, or maybe Herb Sutter or Andrei Alexandrescu. 9 means you have written books on C++; 8 means you could write a book on it, or teach courses on it.
Please, people. Do not flatter yourself on the C++ scale.
I interviewed with Google once, over the phone. They asked me this same question with pretty much the same scale, except they made no mention of my father. I told them I was a 6 or a 7. And I actually have taught courses on C++.
Lately we’re asking people this question and invariably we’re getting people saying, “Oh, based on that scale, I’m a 7 or an 8.” Even kids in college. Now I’m not saying that kids in college can’t be a 7 or an 8 – just, keep in mind, we’re not seeing a lot of true 7′s or 8′s among experienced professionals. I’m just sayin’.
When you say in your interview, “I’m a 7 or an 8,” what you are telling me is this: “I know C++ better than you.” Now, you don’t probably know me personally, so hey, maybe you are better. All I’m saying is, you’d better be ready to prove it when we bring you on-site.
For example, you’d better know at least most of this stuff:
- How to define a template class
- How to correctly define the assignment operator for a class
- How to overload the insertion and extraction operators for a class you define
- How to iterate over an STL vector
- Whether ++i is better, worse, or the same as i++, performance-wise, and why
- What methods the compiler will create for you if you don’t create them yourself, and the implications of this
- How to indicate in your developer contract whether a class is meant to be subclassed, which methods are overrideable, and how you insist that only subclasses can be instantiated
- How to specify default values for parameters
If you are a 7 or an 8, you probably should have read most of “The C++ Programming Language” and/or “Effective C++” and/or “Advanced C++” and/or a number of equivalents. Having read “Design Patterns” would certainly help, although lately those have kinda lost their glimmer and so I don’t weigh on those like I used to.
- What const and mutable mean
Yeah. const. Don’t be like the self-proclaimed C++ expert I worked with at Enterasys Networks, who told the whole company he was the go-to guy for C++ questions, who, when asked, “Why does it say const after this method declaration?” replied, “Oh, they just do that a lot in C++; it doesn’t mean anything.” Yeah. Don’t be a doofus.
Don’t try to impress me by saying you are a 7 or an 8 if you aren’t. Really – you don’t have to be a 7 or an 8 to get a job at Mozy (Decho…hrm). If you say, “Oh, I’m probably a 5,” that tells me you are a good, solid C++ dude (or dudette, whatever) that knows how to write decent C++ applications. You’ll probably get asked to come in for an interview anyway.
When we bring you in, it is my job (and Cody’s) to figure out how much of C++ you really know. We will start out at the point you specified and go from there. If you are really a 5 or a 6, but you said 7 or 8, you will feel like we’re being very brutal on you. Hey, you are the one who said you knew your stuff.
Oh – one more thing. Some of you experienced hires don’t think you should have to go through all of this to get a job with us. Well, we make the rules. Every one of us that works there has gone through it. If you think the rules of Monopoly are dumb, nobody’s gonna think bad of you if you decide not to play. But if you want to play but not follow the rules, well, don’t be too surprised if people take issue with that. If you’re gonna try to work at Moz – uh, Decho, at least for my team, just go through the process like everyone else.
Okay, I feel better. Whew. Oh, and by the way, if you really are a 7 or an 8 (or better), I have a link for you.