I have seen people who are excellent with technical knowledge and usually ace through interviews due to that but they lack the commitment. Problem here is there is no way of identifying this flaw until its too late. What are the things that can be done to identify the problem before its too late?
Look at their past expereince. Are they job hoppers? How long did the work on their last project. what was the reason for leaving it. Why are the leaving/ left their last job?
Talking about all this can give you hints..
Intention of a person can be very hard to find out. So, I think commitment cannot be measured/computed.
It is never 'to late' to let someone go who is working out before it spreads.
I can think of a few things:
- Find out what they've previously achieved more than what they know (or think they know). Starting things is easy. Finishing things is hard. Perseverance is what you're judging here;
- Find out what tools they know. Often companies will have a mandated environment so if a person has worked at several companies they should know a variety of tools. If someone says to me "I always use Emacs" then that to me is a warning sign (unless they've only ever worked at "pick your environment" employers like Google, some investment banks and the like). What you're judging here is what the person does to fit in with the team, the department and the company, which is frankly more important than any perceived productivity benefits of obstinacy and inflexibility in tool usage;
- Ask them what they've done in the last year outside of work to improve their knowledge and skills. This is a big one for me. Good programmers are constantly learning and are motivated to do so. If someone answers "my employer never paid for training (thus I never learnt anything new)" then that's a big red flag;
- Ask them how they handle working on things they don't find interesting. If they say they're interested in everything, that's nonsense. Everyone has to do things they don't enjoy. Again, you're judging perserverence and flexibility here;
- Ask them to rate key technical abilities. This is a trick question. If anyone says they're a 10 at C# unless they're one of a half dozen people on the planet, they're either lying or have an overinflated idea of their abilities. What you want to weed out is people who are smart but lazy and this is often related to an inflated sense of worth;
- Ask them why they left previous jobs (if applicable). Just because someone has had a lot of jobs is not necessarily a bad thing. Companies can go to hell in mergers and the like, particularly in industry downturns (like the telco bubble bursting in 2001-2002) but what you want to find out is if they jump at the first sign of problems;
- Ask them what they'd most like to work on. This is a bit of a trick question too. If it happens to be exactly what you do well it's probably a lie. I can believe that (maybe0 if you (as the employer) is, say, Google, Pixar or Facebook but otherwise they may have some interest in the industry you're in. This question is used to help judge the truthfulness of other answers (by establishing some kind of baseline). It also gives candidates an opportunity to express how they see themselves, their future and what their interests are; and
- See how much enthusiasm they have when talking about each of the above. Committed people are self-motivated and if they're not enthusiastic then noone will give them that motivation.
This question is not simply answered, there are many factors you can look into to know if a person is commited to is work/project before he starts.
You need to know why they want to work on a project. Is it the money? the glamour of working for a big company? The social advantages? Good work conditions? Once you figure this out, it's easy to keep someone commited. For example, if someone is simply working for money, offer bonuses or rewards (don't have to be particularly big) if the job is well done. If he's working for glamour, keep the employee's names visible. If he like the work conditions, offer a long weekend!
You also have to be very clear on what you want the employee to do. Maybe he is commited, but he doesn't always know what your goals are. Be very explicit, and don't be araid to ask questions.
Finally, and perhaps the most obvious, you have to determine if a person has a passion for what he does, and determine if that person has good work ethics. Simple questions during the interview can reveil a persons interests in a project or field. Past jobs histories and references can help you determine if a person has good work ethics.
In my experience, it's incredibly rare that someone has enough motivation and dedication to truly become an excellent programmer and yet lacks commitment to their projects. The few times I've seen this, it's been a temporary situation where the programmer needed to work out personal issues (and in that situation I always figure out ways to work around it since I know I'm getting a good programmer back when the issues are resolved).
I think you really need to seriously ask yourself what you mean by "commitment", and whether you are being both reasonable in your requests and honest with new employees. Commitment can mean different things:
Are your good programmers leaving mid-project? Then you're either treating them poorly or not paying enough, probably the first. Find out why people are leaving and fix the problem.
Are they not putting in the hours you think they should? What kind of hours are you asking for? Even dedicated employees have the right to have a life. It's one thing to expect people to put in extra time during a crunch period of a project, but I see a lot of shops where everyone is just expected to work 60-hour weeks every week whether there's actual work to do or not; no decent programmer is going to stick around for that.
Are they not getting the work done in reasonable time? Then either you are poor at estimating reasonable time, or you really haven't hired good programmers. Are the technical skills of the interviewers really up to snuff?
Sometimes the answer to management issues is to do better hiring, but just as often the answer is to do better management.