Archive for June, 2009

Learning Software the Fast Way

June 8, 2009

Basic Concept:

The fastest way to learn a software technology (programming language, tool, or architecture) is to work on real life problems with reference material and expert advice available quickly when needed. Peer review of open source code and documentation can give a team of new developers exactly the setting they need for rapid learning. Source review is a safe way to multiply the number of developers actively participating in an open source project without demanding the level of competence that must be required for source commit authority.


Form collaborative teams of developers who want to learn a specific technology. Choose an open source project that uses the technology. With a little guidance from people already in the open source project and a lot of mutual aid within the learning team, the learners can review source changes and create bug fixes. The open source project will gain by dramatically increasing the number of developer who are familiar with the inner workings of the project. The learners will gain a gut feel for how the technology really works in a live context.

Of course, this approach may not expose the learners to all features of the technology as effectively as tutorial material that is designed to be complete. A student who needs deeper knowledge should bolster participation in the learning team with independant study or an academic course. However, participation in the learning team alone can give an experienced developer enough knowledge and confidence to use the technology in projects without the learning team. The team may choose to combine open source participation with tutorial studies.


There isn’t a reference implementation for the collaborative learning teams, so you’re free to invent your own process. The key components, as I see it, are:

  • Learning Goals: Identify the technologies to learn and specific skills to gain using the technologies. Establish criteria for determining when a learner has met the goals.
  • Guidance by the Open Source Project: Identify an open source project that uses the technology. Establish agreement for the project people to guide the learning team in identifying source code or documentation to review that will advance the learning goals.
  • Source Review Process: The key learning activity is review of source code and documentation for bugs, errors, lack of clarity, and potential enhancements. Establish a clear process for tracking issues found by reviewers and giving feedback to the reviewers about the findings. Perhaps the learning team should evaluate their findings among themselves before reporting the issues to the open source project.

What’s Next?

Let’s discuss the concept.

  • Do you agree that guided source review could greatly accelerate learning software technologies?
  • Do you agree that learning teams focused on open source projects could dramatically multiply the number of developers capable of contributing?
  • Are there open source projects willing to sponsor learning teams?
  • Have you used a collaborative development environment that would fit well?
  • What’s missing, or what could make this work much better?
  • What do you suggest for the next steps?

If anybody wants to take this idea and run with it, or wants to discuss it elsewhere, let me know. If you do, I’d appreciate a link back to this blog and/or a comment posted here with a link to your discussion.