Angie Byron, has wonderful post on approaches to contributing to an open source project. She makes her point in parallel stories of an outgoing developer who puts a lot of intermediate versions of her code for public review and a perfectionist who holds back code that is not finished. Through the narratives, Angie shows how submitting lots of code helps leverage the collective knowledge of the community to learn better programming skills. Submitting code and interacting with the community also helps a developer build relationships with other developers who will be more likely to help her out.
With all of the focus on cost savings and intellectual property, the educational aspect of open source software is frequently overlooked - at least by business decision makers who have no idea how poorly written their in-house developed code is. Open source software has advantages over in-house software that extend beyond simply having more programmers eyes on the code; the ability to interact with similarly inspired developers across corporate boundaries can be a huge benefit that translates into professional development and job satisfaction. Of course, this value does not come for free. Like any other activity that builds skills, working on open source takes time. A manager should consider the educational aspects of open source software when developing a professional development program for his/her technology team. If you think of the time and expense of going to a traditional conference where a developer will, at best sit passively through conference sessions, working collaboratively on a real project either remotely or with developers at a sprint. This does not have to be limited to open source software but the open source licensing model certainly helps. There are some commercial products with active developer communities modeled after open source communities that share code and interact. If you have a large in-house development team, consider practices like pair programming, commit mailing lists, and code reviews that help turn programming into more of an open, collaborative effort.
A tale of two developers belongs on my "all time" open source reading list. Thanks Angie!