It’s maple syrup time in New Hampshire where I live. My wife and I with some help from the neighbor kid decided it was time we got in on the fun. So we bought some supplies and tapped a couple of trees. The picture on the right is one of those trees which happens to be in my back yard.
Now sugaring on this scale is not a great way to save money. In fact the supplies we bought to get started would probably buy us several gallons of the stuff and we hope to get a couple of pints this year. While the supplies will last us for years it would take quite a while for it to pay off. And that is not including our time and efforts. It can be a labor intensive process. So why do it?
There are actually a couple of good reasons to do it. One is that it is fun. We pay for fun right? Another is that it is educational. We’re learning a lot about how sap flows, its relationship to weather, the process of boiling sap down to syrup (5 gallons of sap gave us about a pint of syrup), and more. There is also the intangible but very real satisfaction of creating syrup from our very own trees and effort. We’re not saving money if all you take into account is the syrup but that doesn’t mean we are not getting real value for the money (and time and effort.)
By now, assuming you haven’t left after thinking you were reading the wrong blog, you are wondering what this has to do with computer science education. Valid question.
Lots of people get hung up on the idea of computer science and learning programming being all about the money. How often do you hear someone talk about creating the next Bill Gates? Computer science is a lot more than that for me. I write code for fun.
Oh sure I am usually trying to solve some “problem” for myself but in terms of cost benefit there are often more cost effective ways to do things. I wrote a phone app to help we track my rotating class schedule at school for example. The information is all available on a webpage and I could get it that way. It’s a little easier with the app but it took some real effort on my part to write (and keep updated) the app. It would probably not be workable if I had to pay for my time. Not when you compare what I charge for writing code with what I get paid for teaching.
I also have a number of students writing code for projects of their own. Mostly they are writing games. Now the games they are writing can not compare with the games they cold buy by just about any measure. If you figure the pay rate they get for their part-time jobs they could buy much more sophisticated games for a few hours of paid work. Far fewer hours then they are spending on their personal coding projects. So why do they do it?
For many of them the creation itself is fun. The journey being as important, if not more so, than arrival at a destination. And they are learning things. Students actually like learning. They may not enjoy the process and that sometimes colors their view but really they do want to learn. There is also a level of personal satisfaction in creating something even if only for personal use. As a teacher I really enjoy helping students with these projects BTW. So much of life’s learning takes place outside of a formal classroom.
Most of my students will not go on to be professional software developers, university researchers, or other computer science professionals. And that is ok. What they will all have, if they work at learning and retaining, is a skill they can use in other ways. They will be able to have intelligent conversations with developers. They will have a deeper understanding of what software can and cannot do. They will have the knowledge to make better use of the software others write. Understanding programming can really make a difference in using search engines, spreadsheets, database applications and much more.
And some of them will code for fun. I sure plan on doing so for the rest of my life.