Help with a competency quiz



  • We all have the typical WTFs where we work.  Some are related to developers and their coding WTFs, most are related to management.  I work for a manager who defines incompetent.  He claims he has experience, but really he has just worked in IT doing support and obviously never developed software (and based on conversations about hardware support he was obviously not any good at that either).  One quotable quote that should illustrate his lack of knowledge is when I was working on a webapp and we came across a couple javascript effects that didn't work in Safari, he said "They don't have the right version of Java."  He is one of those guys that just throws out buzz words not knowing what they mean and sounds smart to someone else who doesn't know what they mean.

     

    I've tried explaining to other managers that he does not have the technical expertise to manage software projects.  Some of them (who are also not technical) disagree.  So I suggested that if I put together a quiz that tested basic knowledge of some high level skills that anyone managing a software project should know, he would not be able to pass ('pass' is really undefined, I just mean not do well).  I've come up with a few questions but need some help from you folks.  What kind of questions would you ask on a quiz like this?  Remember I'm trying to test high level knowledge and not necessarily things like 'What does this code do?'  One question I had in mind was "Describe the difference between managed and unmanaged coding and list some risks and benefits of both."


  • Considered Harmful

    "What are race conditions and what mechanisms exist to avoid them?"

    "What is polymorphism,  and in what situations is it useful?"

    "Explain Big O notation and its implications."

    "Explain the difference between procedural and object-oriented programming.  When is each appropriate?"

    "Explain the difference between imperative and declarative programming.  Which tasks are they suited for?"



  • Given that you appear to be developing web-based apps, I'd think a few questions along the lines of:

     

    - Briefly explain the difference between Java and Javascript.   

    - Briefly explain the difference between AJAX and XML.

    And if you're also doing 'normal' development (I'm going to assume C++ here):

    - Briefly explain the difference between .NET and C++

     

    I know that all of the above could be considered 'trick' questions.  Like asking "briefly explain the difference between an apple and a cow".  Anyone competent will tell you "one's a small round fruit that grows on a tree, one is an animal with pleasant tasting flesh".

     

    If you don't like being 'tricky', you could rephrase it more like:

    - Give an example of a project where you would choose to develop in C++ rather than .NET. 

    Not quite as tricky.  An obvious answer would be "if I'm developing for a unix/linux target platform".  Also, strictly speaking the question doesn't give enough information to answer it properly, but if he's as incompetent as you say then he'll try and answer and make a fool of himself.

     

    Anyway, feel free to ignore my examples, but my advice is:

    Rather than asking questions to test his knowledge (like your example - which could be bluffed through convincingly enough to bamboozle anyone who doesn't know better), you should ask questions that test his ignorance.  Ask questions that a competent would answer in one sentence (like my trick questions), but that an incompetent would write an essay about.

     

    Keep me updated!
     



  • I recommend not using trick questions.  The only purpose they serve is to make the testee look like a jackass.  It may sound like my advice is in conflict with your goal, but it isn't.... you don't want to make him look like a jackass, you want to make it incontrovertibly clear that he is a jackass.

    As such, you must play fair.




  • Even higher level:

     

    What is a deadlock? A manager should understand the basic concept.

    What is the difference between interpreted languages and compiled languages?

    What does a compiler do?

    What is a cookie? (not the kind mom makes) When should/shouldn't one be used?

    What is SQL injection?

    What is a stored procedure?

     

    be sure to report back here!


     

     

     



  • What web browser to you use? Why? Include citations.



  • You could ask for definitions of common buzz-words, like "What combination of technologies are used in AJAX, and what purpose does each one serve", and maybe some questions like "What is the difference between MySQL and Microsoft SQL Server?  Which would be more appropriate for a large site like Amazon.com?"  Or even "List some major standards organizations common in computer technology"



  • If he's a manager, I would expect his area of expertise to be management.  He doesn't need to know what a race condition is.  He needs to know what the impact will be of adding another programmer to the project a week before the deadline.

    Questions:

    1.  What are the considerations (from a management point of view) of using .NET, J2EE, or open source software?  (Expect discussion of:  licensing fees, vendor support of platform, license restrictions, existing expertise within the company, ability to hire developers familiar with the platform.)

    2.  How does a web-based application for internal use differ from a customer-facing web-based application?

    3.  Consider a typical development project (use one you are familiar with, or make one up).  Looking at the budget, staffing and time estimate:  suppose the requirement changed so that you only have 2/3 of the time required.  Specifically what would you do to fast-track the project?  (Fast-tracking is a legitimate way to speed up projects, but it is very costly.  It often involves building lots of temporary things and tearing them down.  Anyone who thinks he can fast-track a project at no additional cost is not a manager.)

     



  • @newfweiler said:

    If he's a manager, I would expect his area of expertise to be management.  He doesn't need to know what a race condition is.

    If I understood the OP right, it's actually the problem that this particular manager thinks he is a programming genius too and frequently barges into discussions that aren't his field. (Like the "Java" example) And he sounds like one of the guys that would make "must use XML" a spec requirement - without knowing what XML is.

    In that context, asking him programming questions WOULD make sense, to show him that he doesn't know as much as he thinks.

     



  • So I suggested that if I put together a quiz that tested basic knowledge of some high level skills that anyone managing a software project should know, he would not be able to pass

    You, my friend, are embarking on what is known as a CAREER-LIMITING MOVE.  Your intentions are, no doubt, good.  Your execution however is not entirely thought out.  The managers that are knowledgable enough to identify it already know your boss does not know what he's talking about.  The ones that don't know are only going to be convinced that you're a pain in the ass (or a danger be extinguished, depending on how deep your company politics run).  Your test will prove nothing (provided your manager even agrees to take it) other than the fact that you are a disruption.

    How about plan B instead: find a new job?  Or move to a different department.  If your ship is sinking, grab a life jacket.  Telling the captain that he's an idiot will not accomplish anything.  Trust me, I feel your desire to affect change.  The reality is that it doesn't work that way, at least not in most companies.



  • Ask yourself this - what will this actually prove? Asking people to judge this guy based on questions you come up with that they don't know the answers to - or even if they are real and important questions? If I were one of the other managers that would just make it seem that you were trying to make him look a fool.



  • Go spend some time on slashdot. You would be really suprised (and disapointed) at the amount of self confessed nerds that still don't know the difference between java and javascript.



  • @flukus said:

    Go spend some time on slashdot. You would be really suprised (and disapointed) at the amount of self confessed nerds that still don't know the difference between java and javascript.

    There's no difference.  They both suck.



  • I aggree with the previous posters that the whole quiz idea seems a bit odd, but anyway, some more questions you might ask:

    - difference between framework and library

    - advantages and disadvantages of Oracle, SQLServer, Sybase, DB2, MySQL, Postgresql 

    - Java vs. .net vs. script languages - advantages, disadvantages

    - design patterns (definition, examples)

    - refactoring (definition, examples)

    - agile software development methodologies (definition, examples)

     


     



  • @Rodyland said:

    - Give an example of a project where you would choose to develop in C++ rather than .NET. 

    Not quite as tricky.  An obvious answer would be "if I'm developing for a unix/linux target platform".

    Using mono and GTK#, developing Linux software in .net is a feasible option, though .net is not as platform independend as Java. 



  • I agree with joe_bruin. Forget this rather utopian plan, and adopt one or more of the following:

    • learn how to ignore the idiot without upsetting him unduly
    • drop him in the brown+smelly from a great height at the earliest opportunity and hope that his replacement isn't worse
    • find a better hole 

    Although the 2nd would be most satisfying, the others are likely to work better. Alas, very few people succeed in making a better world, even in a limited scope. I also would like to make it a better world for me to live in, but the odds are stacked against us - the idiots have out-bred us!

     



  • First, I'd concur with the previous posts about the wiseness of this idea. If you present your boss this quiz in the hope he'll lose his job, you are much more likely losing YOUR job than he does his.

     Secondly' some of these questions are not really fair. Like "- advantages and disadvantages of Oracle, SQLServer, Sybase, DB2, MySQL, Postgresql ". If your boss is not a specialized expert in database development, he may have no idea. That doesn't mean he's a bad manager or project leader. Hell, I was doing some basic database dev in the past and I still had no idea what's Sybase before googling it right now.

    You don't need specific narrow knowledge to be a project manager. If anything, you need to know the basic concepts of IT, and where to find specific knowledge if you do end up needing it. 



  • As
    for the manager, especially a higher-level manager, he wouldn't need to
    know anything about particular implementations of DBMS at all. If he
    realizes the particular task at hand requires a DBMS in general (as
    opposed to storing all everything via XML wrapping), then he is a good
    manager. If he understands the task requires a relational, shared,
    distributed DBMS (as opposed to Access), then he is a very good
    manager. At that point, it's up to the database developer to choose the
    right implementation, not the manager.

    And if he looks at what
    the DBMS designer came up with, and thinks "hey, are you sure using
    columns to store records (such as column1: ABB01, column2: ABB02,
    column304: DBB33, etc is a good idea?), then he is an excellent manager.

    Because frankly, DB design is not a project leader's job. 

     ---

     PS:  The real WTF is the ridiculously short edit timer. Make it at least 20 mins, geez.
     



  • Multiple choice test for managers.  Correct answers are in bold:

    1) The customer has reported a bug.  The developer tells you that it's not a bug.  It wasn't in the original design, and is therefore a change request that the customer must pay extra for.  Do you...

        a) Tell the developer to "fix" it anyhow?

        b) Tell the customer to pay up!

    2) The customer wants something that sounds like it will require a lot of work.  And they want it done soon.  A fellow manager suggests that it'll be easier to do a "partial solution" now, then finish it off on the next release.  Do you....

        a) Agree with the other manager, then give specs only for the first part to the developer, without mentioning any sort of future plans?

        b) Agree with the other manager, then tell the developer what's needed now, and the future roadmap?

        c) Go ask the developer how difficult it would actually be?

    3) Let's say you're not a complete idiot, and you went with option b on the previous question.  When you give the spec to the developer, he tells you that doing the full thing now would actually take a fraction of the time as your crippled half-solution.  Do you...

        a) Tell the developer that we don't have time to keep changing our plans (even though doing the full solution AND changing plans would still take less time).

        b) Tell the developer you'll look into it, then stop replying to his emails.

        c) Tell the customer you have good news.

    4) Customer sends you a bug report that contains all sorts of technical data that you don't understand.  Do you...

        a) Forward the customer's email to the developer

        b) Try your best to paraphrase the problem

    5) Developer comes to you saying he needs more information to fix a bug (especially likely if you answered b above!).  Do you...

        a) Ask the developer to send you an email detailing what he needs, then forward it to the customer

        b) Ask the developer to send you an email detailing what he needs, then try your best to paraphrase it

        c) Tell the developer that we don't want the customer to think that we're idiots

    6) A new feature came out, and the first page of the documentation has a note in bold red capital letters on it talking about hardware dependencies for that feature.  For a particular customer installation, this hardware will cost about $70,000.  The sales guys want to lower the price tag obviously, so one of them says "gee, we don't need all this crazy expensive hardware".  Do you...

        a) RTFM

        b) Sell the customer a multi-million dollar brick that doesn't work because you didn't RTFM

        c) Ask the developer, who will promptly tell you to RTFM. (This one gets half credit.  Don't bug me asking if something is necessary, when I told you in all caps that it was...)



  • Of course he would never take the quiz nor would I ever ask him to do so.  Its just cool to hear what other people think are important skills for managers to have.



  • vt_mruhlin: Great quiz!

    Have you thought of starting up a management training school? It could make the IT world a much better place!!



  • @SamP said:

    Secondly' some of these questions are not really fair. Like "- advantages and disadvantages of Oracle, SQLServer, Sybase, DB2, MySQL, Postgresql ". If your boss is not a specialized expert in database development, he may have no idea. That doesn't mean he's a bad manager or project leader. Hell, I was doing some basic database dev in the past and I still had no idea what's Sybase before googling it right now.

    You don't need specific narrow knowledge to be a project manager. If anything, you need to know the basic concepts of IT, and where to find specific knowledge if you do end up needing it. 

    Someone in the team should have this knowledge, preferably the manager.
     

    When all you have is a hammer, every problem looks like a nail. 



  • @ammoQ said:

     

    When all you have is a hammer, every problem looks like a nail. 

    I know that's a classic quote, but these days I'm leaning more in favour of "When all you have is a nail, the best solution looks like a forehead". It's far more in the spirit of what we see around here. 



  • @PSWorx said:

    If I understood the OP right, it's actually the problem that this particular manager thinks he is a programming genius too and frequently barges into discussions that aren't his field. (Like the "Java" example) And he sounds like one of the guys that would make "must use XML" a spec requirement - without knowing what XML is.

     

    You must have worked for this guy before! 



  • @joe_bruin said:

    You, my friend, are embarking on what is known as a CAREER-LIMITING MOVE.

    QUOTED FOR TRUTH!

    First off, how are you going to administer this quiz to him anyway? What makes him think that he'll bother taking it? You've fallen into the classic trap of "Boy, this is how I really wished things worked, so if I plan it this way it's how it will actually work!" school of thinking. You may insert your favorite bullheaded blunder here as an example, from literature or life.

    If I made a quiz and gave it to my boss, his reaction would range from:

    • Checking things randomly, and trying to get as many questions wrong as possible, just to be a douchebag back to me
    • Ignoring me, jotting this down as a thing to note for my next performance review
    • Asking me if I have so few things to do that I have enough time to make up stupid quizzes to give to my boss
    • Calling me a rude pissant and generally making things unpleasant for me, up to and including termination

    In all fairness, my boss would probably do a combination of 1 and 3, because he's pretty awesome. Your boss (and other managerial people I know) on the other hand, sounds like he might go for 2 or 4. If this guy is seriously hurting business and you can prove it, take it up a level and make sure like hell that you have a sizable part of the department willing to back you up when you do this; otherwise just put up with occasional bits of dumb while looking for a new job



  • Oh yeah...
    Customer gave you the following requirement....
    "The system must be able to map a configurable action to the receipt of a particular status code"
    (google translator for management weasel->english reveals: "The system must do pretty much whatever we want, to be decided at a future date.")
    a) sign the document without reading it
    b) tell them that's crap and we're not doing it


    I have half a mind to just give them the source code and a compiler.  That's what I call "configurable".
     



  • @Rodyland said:

    - Briefly explain the difference between Java and Javascript.   

    Had an interview question like that once. I started my answer with "ummm.... Where do you want me to start?  They're completely different. Java is..."  and then the interviewer cut me off and said that he just wanted to make sure I knew they're totally different.  Apparently, they had a recent bunch of candidates that thought they were pretty much the same.  


Log in to reply