Programming is a difficult subject to understand because it is so unlike the others. Every person that has learned it likely has a different experience, especially with today’s adults. The subject has changed, and still is changing, at an incredibly rapid pace. Just 30 years ago people programmed by poking holes in paper (see punched card programming). Compare that to arithmetic education which has changed very little over our lifetimes.
This quote by Jeff Atwood sums it up well:
For programmers, everything we know is pretty much guaranteed to be obsolete in 10 years if we’re lucky, and 5 years if we aren’t. It’s changing all the time. The field of programming is almost by definition one of constant learning. Programming is supposed to be fun – and it is, if you’re doing it right.
The constantly changing nature of programming shapes the approach we take at Breakout Mentors. The first principle is to make it fun – if the student doesn’t enjoy the experience, he or she will not stick with it long enough to enjoy the incredible benefits. Willpower alone is not enough for a subject that is viewed as optional by the school system.
We also stress learning programming principles rather than specific languages. A loop is a loop regardless of the language, so mastering the concept is the important part. This is reflected in how long we recommend our students stick with Scratch programming – there is a great deal of complexity that can be added in Scratch programs. Mastering the concepts in the drag-and-drop environment with its tight feedback loop (meaning students are able to create real games much faster than they would in other languages) is better than prematurely pushing on to Java or Python because it is “real programming”.
This approach does not stop once students are ready for a traditional programming language. Understanding the concepts and why things are done a certain way are more important than the idiosyncrasies of a specific language. How would the student find out the answer if the mentor wasn’t there? One of my favorite testimonials from a mother of a Breakout Mentors student gives these thoughts:
The mentor focuses on teaching my son to think, not just follow. Software conventions, and reasons behind them, are developed with an understanding of their purpose, not just ‘do it this way because I said so’ mentality. In addition, the mentor encourages my son to check documentation for answers and find solutions that make sense for the project. My son feels proud of the work he completes and is motivated to work on his projects independently between sessions!
This learning outside of the classroom is extremely valuable. We give students the power to bring their creative ideas to life on the computer, but perhaps more importantly, we are also empowering them to learn outside of school. In such a fast paced world, if your education ends when you leave school, you’ll be in trouble. This is just one of the reasons why learning how to program while young is so valuable.