In the 90s during the foundational days of open source, an influential document was The Cathedral & the Bazaar.
That wikipedia article distills the book down to a list of 19 lessons. I’ll distill that further to these 9 lessons from the hacker ethos that are kindred with project-based learning.
- Every good work of software starts by scratching a developer’s personal itch.
- Plan to throw one version away; you will, anyhow.
- If you have the right attitude, interesting problems will find you.
- Treating your users as co-developers is your least-hassle route to rapid code improvement and effective debugging.
- Release early. Release often. And listen to your customers.
- If you treat your beta-testers as if they’re your most valuable resource, they will respond by becoming your most valuable resource.
- The next best thing to having good ideas is recognizing good ideas from your users. Sometimes the latter is better.
- Often, the most striking and innovative solutions come from realizing that your concept of the problem was wrong.
- To solve an interesting problem, start by finding a problem that is interesting to you.
“Scratching an itch” is widely used lingo in hacker cultures for pursuing and solving your own problems. A culture of scratching your own itches is a culture of continuous improvement and innovation. Hackers are itchy tool makers. We’re constantly making tools to make our own lives easier, to scratch our itches. We automate repetitive tasks because we’re lazy enough to spend lots of time making time-saving tools. An old saw in hacker cultures is The Three Virtues:
- Laziness: The quality that makes you go to great effort to reduce overall energy expenditure. It makes you write labor-saving programs that other people will find useful and document what you wrote so you don’t have to answer so many questions about it.
- Impatience: The anger you feel when the computer is being lazy. This makes you write programs that don’t just react to your needs, but actually anticipate them. Or at least pretend to.
- Hubris: The quality that makes you write (and maintain) programs that other people won’t want to say bad things about.
Students have itches. Project-based learning informed by the hacker ethos is an outlet for scratching. A culture of flexible improvisation, rapid iteration, and sharing encourages and enables us to scratch itches for ourselves and others.
A great way to build software is to start out by solving your own problems.
People in the free software community often code to scratch an itch and release that code into the digital commons so that other people can modify and manipulate it. While more often than not this process goes nowhere, over time some projects capture the imagination of others and become part of the infrastructure of the world.