How to train good 'IT' people

Mike Charlton said it better than I could have:

I also agree with the trade description for programming. I firmly believe that apprenticeship is the best way to teach programmers. In fact, I believe that University is a *bad* way to teach programmers. What little pure theory a programmer needs can be taught on the job IMHO. But research in programming is very much required. And there is a huge amount of theory that is required to advance the state of the art (which we've touched on). If it were *actually* studied, I suppose I wouldn't begrudge an engineering title. But as it stands, I also highly disapprove of the engineering moniker. I believe that Universities should exist, not to train future employees -- that's what a community college is for, but to train future researchers. And current curricula do a piss poor job of that. As a poigniant example of this, we get a semi-recurring plea for help from an Indian PhD student on the ottawa-agile mailing list (must be spamming *all* the agile lists, poor guy). He wants to do research in the area, but lacks even the basics for which to do so. I want to reply, but I can't think of a helpful response (other than, "Get a new supervisor"). Unfotunately, having talked to several other researchers in the field, his problem isn't unique. So in the end we get badly trained programmers from Universities and likewise badly trained researchers who don't even know the first thing about what's important in the field. Finally, in the past we have also gotten completely untrained "engineers" who figure they can do programming because they are "smart". Sigh... And as Don says, nobody is able to do the job of a Professional Engineer in programming (ensuring that nobody comes to harm do to mistakes made) because our field is simply not mature enough.... But what can you do ;-) MikeC