Unfortunately, sink-or-swim is the predominant method of training in most IT organizations. This applies to software developers, support people, and managers. Most organizations provide little formal training, education, or support for career development. ITers are just supposed to develop their own skills and invent whatever new things they need without training or support from above.

ITers are just supposed to develop their own skills and invent whatever new things they need without training or support from above.

Yes, they are supposed to be professionals, aren't they? They earn good money. They can buy themselves books and read. Of course, the low quality of software and the poor performance of teams has everything to do with it. More exactly, it has to do with lack of education; once one masters the fundamentals, one can master the latest hype in a matter of days. Companies that pay a lot for software developers assume that they are educated and know the fundamentals, otherwise they wouldn't have come that far. That is a mistake, but I don't think a company can afford to send a large part of its IT personnel back to the university, nor is it reasonable for anybody to complain about that.

The solution is ridiculously simple: you're in this job, you'd better learn how to do it, you'd better know the basic computer science and mathematics. You'd better know which authors to buy and what to put on your bookshelf, and what not to bother reading. This is everyone's individual responsibility, and no company can substitute for that.

Can a company buy training? Sure it can. Let's say, for example, it will buy training in Oracle, or in J2EE, or in Microsoft DNA/COM+ and soon .NET, or even, for top "architects", it can buy training from Rational in UML, RUP, and stuff like that, or even it can buy training in XP. It's a big ****ing waste of money and time, it's generally counter-productive, and no manager is in a position to make an informed choice about what to buy. Individuals can make this choice and should make this choice. And should better commit themselves for education instead of training.

I can't accept that IT training is necessarily a waste of time, though doubtless much available off-the-shelf is so. Would you welcome a self-trained surgeon? -- VickiKerr

Yes, I would trust a self-trained surgeon. Actually, surgeons that improve the procedures used in their field are all self-trained. All other are just copycats. The thing is not self-trained vs university trained. The thing is an undertrained self-trained guy will be a bad programmer just like an undertrained programmer that does not self-learn after graduating. The thing you are referring to is another beast: people that claim to know something and do not (or only know it superficially, and probably a graduate will sin of this more often, thinking they can catch everything in a week). But yes, there's a huge chance those will be non-graduate self-trainers, though there will also exist a considerable share of self-trainees that are as good or better than the "educated" ones. There are thousands of examples. -- FedeRico?

Training cannot substitute for education. Training an uneducated professional is a waste of money no matter the quality of the training. The lack of education is what's all about in the current software industry, lack of training is an insignificant problem.
The comparison with surgeons is flawed. You have to study at least ten years in a formal academic institution dedicated to medicine and not arts or who knows what else, pass a lot of very tough exams both theoretical and practical, and only after that you can be a surgeon. It's hard to see an un-educated surgeon, but it's very easy to see an uneducated software developer, DBA, project manager, chief architect, and whatever else.

Becoming a software developer is a lot easier. And I would personally have/see no problem with a self-trained IT professional. It is almost a given nowadays that you have to be self-trained in many aspects related to SoftwareDevelopment. You can call me biased on this one, because much of the little education I got in computer science was not from the university or any other form of formal education, but on my own. Not to mention that many universities nowadays tend to be more training institutions in order to respond to market demand, rather than educational institution.

Once one has the solid education, training is only a matter of superficial convenience. You want to be trained in Oracle, for example? You need absolutely nothing else than http://technet.oracle.com/docs, assuming you have the proper education in database management. I'm sure that you and/or your company can spend some nice grands for Oracle training if you want to. -- CostinCozianu

Yes, they are supposed to be professionals, aren't they?

Yes, they are. So why should they be considered differently from any other professionals? Professionals in other fields get paid to acquire training and education (tuition reimbursement, seminars, etc.). Professionals train each other all the time; a less experienced surgeon will "scrub in" with a more experienced one, to observe and/or assist with a procedure, or a more experienced lawyer will bring a less experienced one into the courtroom on a particular case to assist and learn. So why should software professionals, OTOH, be shut up in little boxes and forced to work alone? -- MikeSmith

Well, AFAIK when a professional trains another one (as in the above examples) the trainee is paid a lot less, and they are paid for doing stuff (like assisting the surgeon, assisting the master lawyer, teaching as an assistant, etc) and in general they are not paid for being trained. Of course there are exceptions. I'd love to work for a company that pays me for being trained, but I think it is unreasonable for me to ask for that, not to mention that in the current market conditions it would be absolutely futile. I like reimbursements for books and stuff like that, if at all possible.

And if I am unqualified for a job, it's nobody's fault but mine (citing a rock classic). There's plenty of stuff out there that allows one to study computer science on one's own, and we don't need anything more than a bloody computer to practice (unlike surgeons, advocates and other professionals). -- CostinCozianu

There are a lot of skills you can't practice alone, or learn from a book. How does one learn how to manage a team of developers? How does one learn how get customers to buy the company's products? How does one know whether a budget contains all the necessary tasks, and whether the estimates are sound? How does one design a large complex system that interfaces to lots of other large complex systems? These are the skills of a professional. These things are not taught in school, and you're not going to learn them by browsing Oracle's web site or the ... for Dummies shelf at the bookstore. These are things one learns from experience (or from other people who have gone through similar experiences), and people often need help while they are learning how to do them. -- KrisJohnson

So if such skills can't be learnt from a book, you can learn them for training? I rather doubt it. I have no expertise in some of the areas enumerated above, but you gathered too many unrelated areas, and it is pointless to debate each of them. As far as a developer is concerned, an interface between large and complex software systems is an interface nevertheless. Been there, done that. The next one will probably be totally different. Suffered no training in the process, probably no training will help me tackle the next one. There are books that deal exactly with this stuff; I doubt there's any training available.

However, no matter what is the problem, be it a management problem/ technical problem/ marketing problem, good judgement and understanding of fundamentals have in my opinion a much greater impact than any kind of training. Otherwise, there are books on project management, marketing techniques, interfacing large systems. The big problem is how to choose the good ones. Also no training is available for this latest problem. -- CostinCozianu

I think we disagree on the meaning of "training". I'm not talking about useless two-day seminars - I mean the process of learning something new. Programmers need to learn about programming, managers need to learn about managing. One must be trained in the fundamentals and must learn enough about particular problems to be able to apply good judgment to them. If you prefer the word "education" over "training", then pretend that's what I wrote (actually, I did write that, but everyone latched onto the word training).

There are two ways to learn something new: figure it out yourself, or have someone who knows show you and advise you. (Books are a middle ground.) I think that more of the latter type of training would be valuable. This is especially true when people are thrown into totally new situations when they might be "in over their heads" - programmers being assigned management or marketing tasks, for example (see DeveloperTurnedManager).

I'm not suggesting that companies owe this to their employees, or that employees are not responsible for their own skills development. But I do think companies would be more effective if they paid more attention to their employees' training/education/development needs. -- KrisJohnson

I think both a formal education and learning "learning skills" are both important. I don't have a formal education (in programming or computer science) and I would value it a lot. But looking back, I know some colleagues that studied CS and they tend to focus on what they have learned there, as if that was everything. They also tend in general to always require formal training. On the other hand, the SelfTaught can and will always assume they need to learn. How they learn and what their goals are will determine what they can do. But that doesn't mean easier; you are not only learning yourself here, but are also selecting the material, the time devoted to each skill and putting everything in perspective (the big picture). Some people are born with those abilities, and some are not. Some of them can be learned and some cannot. So you have to know who you are when choosing a career. Also, non-CS graduates need to prove their skills beforehand. -- Federico