Product Based Learning – A Learning Collaboratory

We are working on a collaboratory for Product based Learning. The participants in this collaboratory, actually build software products at every stage of learning. We decided to do this since many of the schools do not teach programming in the context of building something useful. A developer needs to learn more than just coding. By making them build products that others can use, we increase their visibility to real life issues as developers.

Almost every writng onĀ  How People Learn talks about Learning by doing as the most effective learning strategy.

  • Having a specific problem to solve provides a context for learning.
  • Alternative (and more elegant ways) to solve the problems show the power of different styles of programming.
  • Product based learning also involves people. This allows them to remember what they learn since they are actually applying.
  • Having something you built being used by others provides a greater incentive to make it better. It teaches something that they can never learn in simulated situations.

Our collaboratory is not aboutĀ  content. There is enough content on the web for people to use. What we plan to provide are some ideas for building products, identify skills required to build them, provide mentoring. A learner of the academy will start with a simple individual project and progress to team centric efforts. Here are some ideas on how they can progress from simple projects to more complex ones.

Bookmarklets
These are some of the simplest Javascript utilities you can write. They are reusable. You can get a lot of useful feedback from users.

Browser Extensions
Writing a browser extension provides another reusable component that people can use across several websites. When written for open source products like Firefox, you learn a lot more than writing simple form applications with JavaScript.

Web Components
There are several good web component frameworks. Google’s Gadgets, Microsoft’s Live components, Yahoo’s widgets are just a few. When you write components for any of these platforms, you also learn a lot about developing web applications. You can learn from some of the cool components that already exist.

Mashups
Mashups are the easiest way to glue together something cool. But building mashups also teach developers how to reuse webservice and build on top of services already built by others. The instant gratification of producing workable, usable applications by simply layering on top of services will be one of the most rewarding aspects of learning.

Building some real-world web services (lightweight services)
In this stage, developers move from being consumers of services to providers of service. They will learn how to design services, how to test them and build a few sample mashups that others can learn and use.

There is one common thread across all these products – reusability. At each stage of learning, when the developer will learn how to leverage other components and how to build their own reusable components. This is the skill we need as applications becoming composition of services.