Journal Articles

CVu Journal Vol 12, #1 - Jan 2000 + Project Management
Browse in : All > Journals > CVu > 121 (30)
All > Topics > Management (95)
Any of these categories - All of these categories

Note: when you create a new publication type, the articles module will automatically use the templates user-display-[publicationtype].xt and user-summary-[publicationtype].xt. If those templates do not exist when you try to preview or display a new article, you'll get this warning :-) Please place your own templates in themes/yourtheme/modules/articles . The templates will get the extension .xt there.

Title: Recent Interview Experiences (and Other Gripes)

Author: Administrator

Date: 03 January 2000 13:15:35 +00:00 or Mon, 03 January 2000 13:15:35 +00:00

Summary: 

Body: 

As a contract C++ developer I'm one of those who has been unfortunate enough to have borne the full brunt of the slowdown in the contractor market in recent months. In that period I have had a number of interviews, some good and some not so good but, collectively, they've revealed a diversity of interviewing styles. These range from being asked virtually nothing at all to being subjected to intense technical grilling. Now, I'm one of those who frequently gets nervous in interview situations and I often make a hash of questions I perfectly well know the answers to. However, there have been many occasions on which I've been asked what I consider to be poor questions and one occasion on which the interviewers got the answers to two of their questions wrong, while I was right.

One example of a particularly poor interview question I've been asked is this: "how frequently do you comment your code?"

Had I been bolder I would have told the interviewer that it was a stupid thing to ask. However, my response was to expand the question and, instead, describe my commenting strategy. So I said I try to provide sufficient summary comments such that someone can get a rough idea of what my code is doing just by reading the comments. I said that I comment my intention, e.g., why a particular section of code is there or why it's doing what it's doing. I also said that I attempt to minimise comments by making my code as self-documenting as I can, paying attention to the names of identifiers and routines; and also by assigning complex, or even not so complex, conditional expressions to readable Boolean variables.

This particular interview was primarily a "personnel-style" interview, even though it was for a contract position. This means that I was asked questions such as: "name five terms that your colleagues would use to describe you." Well, I was completely floored by that one! I was also asked why I decided to become a contractor. I was tempted to answer: "to minimise the occasions on which I'm subjected to personnel-style interviews!" (Which is true.)

Another interesting occasion was a very gruelling telephone interview, with two interviewers in conference call mode. Although I made a hash of several questions there were two questions which they got wrong and I got right. One of them concerned pure virtual functions. I pointed out that a pure virtual function need not be overridden in a derived class. They claimed that it must. The correct answer is that it need not be but if it isn't, then the derived class remains abstract. They also claimed that the Microsoft Foundation Classes do not contain templated collection classes. Wrong again. Afterwards, I dug up the exact page reference from Stroustrup on pure virtual functions and asked the agent to pass it on to the client. Needless to say I was not offered the position.

I have not been in the IT industry that long, having spent several years in another profession. While I was trying to break into the industry I had periodic conversations with a very experienced C++ developer friend of mine who used to comment that there was a lot of incompetence in the industry. I thought he was exaggerating at the time but now I'm not so sure. I certainly do not consider myself to be anything close to an expert. Many of the contributors to C Vu are well above my level of expertise, but I do constantly strive to improve and learn about best practices.

Other bugbears about the job-seeking process are the imprecision, and often unreasonableness, of many job specifications and the lack of knowledge demonstrated by recruitment agents. Recently, an agent presented me with a specification that read "C++, Visual C++, Visual Studio and C development using Borland C++ 5." This last requirement was a "must have." I was also asked how many years' experience I had of C, C++, Visual C++ and Visual Studio respectively. There are several things that are unsatisfactory about this scenario.

  1. Many agents seem to think that Visual C++ is actually a different programming language from C++. By and large, these days, if you're doing Visual C++ you're also doing C++ but not vice-versa. What the agents should be focusing on is specifics such as exposure to MFC or COM, as compared to generic C++. To be fair, many do, and often it's not entirely the agents' fault, as they are just following the client's brief.

  2. Visual Studio is a suite of development tools. Does the client want knowledge of all the tools or just a few? If so, which? Visual C++ is a member of Visual Studio. Does knowledge of Visual C++ alone suffice? I expect not.

  3. C++ is [nearly] a superset of C so if you're a C++ programmer you're also a C programmer but not vice-versa. OK, it's not quite as simple as that but being a C++ programmer should carry reasonable weight in being considered for a role that requires C skills. Also, in practice, I suspect that many C++ programmers use many features that are appropriate to C but which should be passed over when using C++. Leaving aside the features of the Standard C++ library, which has only just been finalised, how many alleged C++ programmers use stdio.h instead of the preferable iostream.h or use #define for constants rather than const declarations? I've encountered many.

  4. If Borland C++ is being used only to do C programming why is it mandatory and why version 5? If one already has experience of C then any lack of familiarity with the Borland IDE can be picked up in a day. It's a different matter if one must have knowledge of Windows programming using the Borland OWL libraries. Perhaps this is indeed what is involved but if so the client should say so.

Of course, much of the unreasonableness of job specifications is for the purpose of excluding potential candidates. By specifying that Borland C++ 5 is mandatory the client can drastically cut back on the number of applicants they need to consider. This is especially so when it's an employers' market - as it is, at the moment, in the contract arena.

Which brings me to Silas Brown's question in last month's C Vu. He asks why so many recruiters insist on Visual C++ experience, rather than general C++ experience, for a Visual C++ job. Well, partly it's for the reason I stated above. However, in the case of Visual C++, most usage is likely to include Windows development and most of that uses MFC. So it's this latter knowledge that most recruiters are looking for. If you have experience of C++ under, say, Unix then one is unlikely to become proficient in Visual C++ overnight. Often, for permanent jobs this does not matter. But if there is only one vacancy, and the employer has a number of candidates to choose from, all of whom have Visual C++ experience, what chance would you expect the Unix C++ developer to have?

Suppose the Unix developer has 6 years of C++ experience while the Visual C++ developers have only eighteen months. Given that it's likely that the Unix candidate is a better C++ developer one would expect the employer to pay some attention to this fact. Not a chance! It can be frustrating but that's the way the world works. In general, employers put too much store on candidates' having specific knowledge of certain technologies rather than on their being skilled practitioners of their trade.

Notes: 

More fields may be available via dynamicdata ..