Measuring LAMP Competency?
An anonymous reader writes "Our company is getting ready to hire a number of programmers. While the majority of the prospective candidates do have good-looking resumes, we are looking to see if we can get some clear metrics in the assessment process. After a little research we have learned that there is a well-established PHP + MySQL training and certification process, and some of the candidates are already certified. There is also a candidate with a good portfolio, a lot of experience, and no certification. Most of the applicants also have some college/university science-related education. So our goal is to be able to somehow measure LAMP overall competency as well as basic computer science concepts such as BNF, data normalization, OOP, MVC, etc. How do Slashdot readers go about this kind of characterization?"
Why BNF?
As someone who has run a dedicated server for seven years, I would never grant any unknown third party access to my server. Even as a guest with almost no permissions. That's just inviting trouble into your house. Give them code samples, answer questions, provide references, but keep the digital doors locked unless you don't value the data on the machine.
Unfortunately IT certification has nowhere near the requirements and rigor that doctor and engineer certification requires.
If IT certification were more than "pay $amount -> get cert" then I'd be all for giving them credence. But they aren't. Currently they just highlight the programmer or IT professional who wants to hide their incompetence with paper.
A good work ethic and honesty ...
is not hiring two persons to drop them few months later.
I've hired a couple programmers in the past and there is always one question I ask that I have found sorts out some of the better candidates. The question - "I've just requested you to do some task and you find you really haven't worked out that type of task in the past and aren't fully sure the best approach. What do you do?" The answer I'm looking for is basically they'll let me know that's a new area for them, but that they'll go out and find examples of that type of task and research it and find out how to make it happen. If they say anything along the lines of having me help them, or ask to go to a class, or anything along that line it will automatically set up red flags. And of course, just answering the question "correctly" doesn't automatically mean they are good at doing that, but you can dig deeper into how they'd research it, etc. I've been a programmer for over 25 years now and while there are certain core things that a computer can do and some it can't, the actual processing of it is what matters and it's nearly impossible for you to remember every little detail of every language and system, the real power is in knowing where to look to quickly get your answer. And as a final important talent, a person needs to be good at understanding and conversing specifications from someone that is not technical. Just my thoughts on what I've looked for....
as well as basic computer science concepts such as BNF, data normalization, OOP, MVC, etc.
Put 10 seasoned programmers in a room and, without access to references or preparation, ask them to write the BNF for some subset of a well-known language, normalise a database in stages up to 5th normal form, give a detailed description of OOP implementation in any language (not just "how is inheritance formed?" but "demonstrate polymorphic behaviour - suggest how it might have been implemented - describe its disadvantages" etc.) and ask them to fit some app description into MVC pattern.
You know what? Zero of them will succeed in all of your tasks. And, dear reader, if you claim that you will then you are lying.
You know why? Because testing like this doesn't reveal anything. I passed University with top grades throughout because I knew how to bone up for an exam and cough up the syllabus as requested, as well as having a moderately mathematical head. I can demonstrate prior performance and I can grasp new concepts. I can remind myself quickly of old concepts when given access to a reference.
But I don't have some magical savant-level ability to memorise everything I've ever done (and, experiments on savants suggest, if I did then I'd lack the skills to apply my elephantine knowledge to solving general commercial development problems). It's never hindered me. This sort of ability might be necessary if I were, say, a field intelligence agent(?), and not being able to concoct the right deception within a subsecond time interval might result in my death. Otherwise, it's just a dog and pony show.
I was with you until the yelling part, an interview is a two way street. If I'm getting yelled at in an interview I can only imagine how bad it will be in the workplace.
On second thought, if that's actually how your office functions, then I guess it is honest and appropriate. I just wouldn't want to work there.
Agreed. Meeting a table thumping, yelling person in the interview would just cause me to stand up and say "I'm sorry, I'm looking for a position at a professional organisation". If this sort of situation is routine enough to require somebody to do well in it during an interview then I'd say there are some problems there.
In real situations this doesn't happen. At least in the places I've worked. There was an incident of massive negligence by the support team involving one of our biggest customers databases last year. Instead of someone in management hitting the table and yelling, everyone in the development team already knew it needed to be fixed and so we fixed it. A good team doesn't need yelling at.
It seems to me that the type of managers who yell and ask why are usually the ones in the positions who don't need to know. A good manager will be right there with the team putting forward ideas, not simply asking questions. If they're not going to be putting in ideas then they should get away from the problem and let people get on with it.
Go home and shave your giant head of smell with your bad self
Actually, I never had anyone walk out. Since it was presented as roleplay of a real world situation, and I'd explain the details of the situation calmly and clearly, it was evident that it was an extreme example.
What a competent interviewer would do is set up a VM with the problem they want diagnosed. That way, there wouldn't be any need to set up a fake "situation" where the "real fault" can be any number of things, including ones that don't match what you have established in your head.
Of course, if you can't handle an environment with occasional actual preparation for your job (e.g., interviewing), I wouldn't want you to work with me.
That's the last thing I'd ever want is a stressful situation to come up, and an employee walking out because it was "too hard".
Being "yelled at" by a superior is not a "stressful situation". It's unprofessional behavior. Being told politely and calmly that there is a problem that needs to be fixed quickly because the company is losing $X million per hour is a "stressful situation".