I thought Braden made some good points in his post yesterday about free software in Europe, but I thought this argument was a bit wide of the mark:
OTJ training has always been a great way to learn programming skills. But is working on FLOSS projects the only way to learn how to code? Buried in a footnote (#48), the report says that “perhaps” OTJ training works for proprietary software too. However, it is a different kind of experience, according to the authors. They say FLOSSers can start in their teens and can learn at home, whereas developers of proprietary software have to learn on the job or start their own firms.
Does FLOSS actually promise new and better ways to learn how to write software? Not really. Aspiring developers have always been able to learn programming skills pre-employment and on their own time. And there’s always been a network of online resources and training material for developers of proprietary software (think: Novell and Microsoft developer certifications).
It’s obviously possible to pick up some programming skills using online resources and proprietary developer certifications, but there are some important differences that make free software decisively better when it comes to developing job skills. In general, practice is more useful the closer it is to the real thing. When you contribute to an open source project, you’re making real changes to real code that are being used by real people. You learn about software development in its full complexity and nuance. There’s just no way that an MSDN training manual can compete with that, no matter how well-written it might be.
Secondly, your contributions to a free software project can often lead directly to paid opportunities helping clients to integrate the software you’re working on into their environment and customize it for their needs. I rather doubt anyone is able to get consulting work based on the example programs they write on their MSDN certification test.
Finally, your contributions to a free software project can allow you to stand out in a way that an MSDN certification cannot. By necessity, a certification program focuses on whether you’ve learned a fairly fixed set of skills. You can demonstrate basic competence through an MSDN certification, but it’s difficult to stand out from the pack. In contrast, when you contribute to free software, it provides a much more nuanced basis on which to evaluate your performance. The MSDN certification shows you studied for a test. The free software contribution shows you can actually produce working code. I have trouble imagining a competent IT manager being more impressed by an MSDN certification than a significant contribution to a free software project.