Paying Knowledge Forward

The Food Network is the default channel on our TV. I think I enjoy food and cooking for the same reasons I love developing software. In both cases, you’re creating something where before there was nothing. You may be following a recipe, you may be trying something new, but in cooking as in software you’re creating something for other people to enjoy. I think that’s why cooking also appeals to many of my programmer friends.

Tonight I watched part of Jamie Oliver’s Ministry of Food. In it, the Naked Chef has a fantastic idea to improve the way people eat. Jamie travels to an economically depressed town and teaches ten recipes to ten people who have rarely (or in some cases never) cooked for their families. In exchange for Jamie’s knowledge these ten people each promise to teach the recipes and skills to two more people, who must promise to teach two more people, and so on. Jamie’s lofty goal is to create exponential growth in culinary skills for people that can really benefit from those skills.

Jamie’s plan is not a terribly new idea. It was even brought into pop culture in the 2000 film Pay It Forward. Jamie’s name for his project, “Ministry of Food” also isn’t new: it references a government organization created in the UK at the start of World War II to help people make the most of their rationed food.

I find Jamie Oliver inspiring for many reasons, but this particular show was especially inspirational because Jamie is teaching valuable skills to people who would otherwise not had the opportunity to learn them. This is a very close parallel to the part of my own work that I find most rewarding: teaching software development practices and skills to people who wouldn’t have the opportunity or tools available to learn them otherwise1.

Turning to chefs for inspirational ways to improve our craft is hardly a trail I’m blazing. In Thoughts on the Future of the Boutique Software Shop, Michael Feathers uses Gordon Ramsay (another of my favourite chefs) as his inspiration for talking about the paralllels between software development and the culinary world.

I feel that the software industry is a pretty broken down in many places, much like an economically depressed small town, but I don’t think it’s impossible to fix. There are very few, if any, people out there who deliberately write poor quality software. Many developers just haven’t had the opportunity to learn how to write software well. The problems in our industry are due to a lack of education2.

So, in an attempt to improve the software development industry as a whole I’m going to follow Jamie’s culinary lead, and employ the same method. From now on I’m going to make sure that in addition to posting my thoughts here for the world to see, I’m going to specifically reach out to at least two people who can benefit from the things I have learned. I will ask those people to reach out to two people and help them. I want everyone that learns something new to reach out to two people and share what they’ve learned, and ask those people to do the same.

Reaching out to two people personally does not mean blogging or tweeting. We already have that; it’s passive engagement. I want you to actively reach out to two people individually, and personally. Send a personal email, an Instant Message, or make a phone call. Better yet meet for a real chat! That way, we’re all helping each other. We’re improving the craft exponentially. And we’re having important and valuable conversations along the way. I think sharing knowledge can reasonably be considered part of Doing Your Damned Job.

To encourage this process of knowledge sharing, I’m going to start asking: “With how many people have you personally shared this thing you’ve learned?” I would like to encourage everyone else to do the same. I really hope this is something that some people will get behind, because I think it can work.

To get started, go and share an important piece of knowledge with two people. Tell them to share that knowledge with two people. Let’s make life better for everyone that chooses to be a part of this terrific craft.


1. An idea that I struggle with sometimes is that it’s not about opportunity, it’s about aptitude. I used to completely disagree, but I just finished working with someone who has convinced me that there are some people that are entirely beyond help. These people are in the minority, though. Most problems with software quality are due to ignorance, not stupidity.

2. Okay, and ego. But ego problems are just education problems for unwilling students. But let’s pretend everyone is as awesome as I am, and has the same lack of ego.

Share