I have no doubt in my mind that all of my children (so far I just have one daughter) will learn how to program.
“But what if she doesn’t show an interest in programming?”
More and more that question to me sounds like someone asking “But what if she doesn’t show an interest in reading and writing?”
There are two parts to why I think this way:
- Programming is quickly becoming an integral part of our society. It is how we interact with the tools we use in our every day lives and how we leverage those tools to build our world, communicate with each other, etc. Humans need tools. We’re useless without them. More and more programming represents the way in which to communicate with our tools so that they can do what we want them to do. I don’t think we’re far from a world where that ability is just as essential as reading and writing.
- I think people think about programming as an isolated skill or a profession. It’s not. It’s much more fundamental than that. Much the same way a writer uses the general skill of writing to engage with his or her profession, a programmer uses programming to engage with his or her profession, but programmers are not the only people that benefit from knowing how to program, much like writers are not the only people who benefit from knowing how to write.
Mastery of programming is not what I am trying to describe. Much in the same way that mastery of writing is not for everyone, but everyone benefits from knowing how to write. Everyone would benefit from having a decent understanding of how to program. Everyone would benefit from having a better understanding of what programming is and the fact that it’s no more intimidating than learning how to write. In fact I think it’s easier to learn how to program than it is to learn how to write. Almost every language we communicate with is far more complicated than the languages you program with, usually by an order of magnitude.
So my daughter will learn how to program. At the very least she’ll gain a level of comfort that enables her to tackle any programming problem with the knowledge that she can figure it out if she takes the time. At the very least she will not be intimidated by the idea of programming.
She will learn because we will do it together. Much like every parent understands it’s important that they read to and with their children, I think it’s important to program with my child. This doesn’t mean I’m going to sit down with her and look at something I’m working on professionally. That would be like sitting down with a child and having them read Moby Dick with you. It may not be the end of the world, but generally you try to start with something a little more basic.
I would probably start with something more tactile, like legos that can become alive through a simple computer program. One where she can just as easily manipulate the tactile blocks as she can tweak the program to get it to do something different. I would focus on projects that provide quick feedback so she can easily see the results of her efforts. The idea would simply be to make her more and more comfortable with what is just a different way of thinking, almost a foreign language, not foreign in it’s words, but foreign in it’s structure and what it enables you to do.
I truly think it is almost on par with learning to read and write in what it enables you to do in this world. Once you understand how to program it’s no longer intimidating. It becomes such a joy, much like solving a puzzle, but where the puzzle becomes something much more interesting once you’ve solved it. I think all of my children will enjoy it, much like I think they will develop a joy of reading and writing even if they never become a professional writer.
Emeka
December 2, 2011
Wow, my this week blog shares almost the same idea like yours. I agree with all that you stated here. http://emekamicro.blogspot.com/2011/11/nigeriansthis-is-your-time-to-code.html
Tait
December 2, 2011
My daughter will learn to program too.
At 2 years old, she is learning about addition – she wants to know what 5 + 2 is.
I was thinking of showing her how to use a calculator, but perhaps a REPL loop would be a better place to start.
Thoughts?
irrationaljared
December 2, 2011
I’d probably focus on making it more fun if possible. Although if you genuinely get excited about REPL loops or calculators then you may be able to transfer that excitement. Personally I’d focus on trying to give her something she can do independently, where she can experiment and get immediate and obvious feedback.
Tait
December 2, 2011
She can already type her name, short sentances, and knows which key lights up to make the letters capital (caps lock). So, we’ll see if she can do 3+5 by herself and go from there.
Napoleon
December 2, 2011
I agree with your thought and reasoning. I have 2 girls 5 and 31/2 and also aim to help them learn the how to programme. Apart from being a profession on its own, I see programming as a glue skill. By that I mean, I see Accountants, Doctors, Plumbers etc all needing to programme to a degree so as to be self sufficient in the future.
I had this experience where an Auditor who was auditing a previous employer needed some information to help him do his job. Unfortunately the in house developer was ill, we had the data, its just that it wasn’t processed. He took the data and using foxpro was able to write an application that generated the information he needed in a few hours.
I was then not a developer just a general IT guy and I remember being blown away. I think that experience kind of stuck with me.
Good luck and hope you will blog about your experiences.
Matt N.
December 2, 2011
My daughter is arriving in 2 months. And she has to learn to program. She’ll be named after Ada Lovelace after all.
Kon Soulianidis (@neversleepz)
December 3, 2011
Can you please make sure all your daughters learn some kind of TDD/BDD? That would be a great help.
irrationaljared
December 3, 2011
Haha, I’m generally a big believer in TDD (although sometimes I think it’s the wrong approach), but if she does pursue programming with any professional aspirations I’ll certainly encourage TDD.
Franklin Chen (@franklinchen)
December 11, 2011
I wrote a preliminary blog post “everyone should learn computer science” in honor of CS Ed Week (last week) that I wonder what you think of my basic thesis. I would like to expand it with concrete ideas from people like you (and your readers who have left comments here) who are actively already helping the next generation get involved. http://franklinchen.com/blog/2011/12/09/why-everyone-should-learn-computer-science/
irrationaljared
December 11, 2011
I agree with much of what you’ve written, but I would probably not lean to heavily on the term computer science. I’m more concerned about people achieving a comfort with programming than I am with computer science. Programming for me means the language we use to interact with the tools we use. Computer science to me implies a more complicated study of the tools we use.
I’m not doing a very good job of explaining my thoughts on the differences, but it’s late. Basically I would just prefer to break down the intimidation factor. I think programming is more effective than computer science in that regard.
Franklin Chen (@franklinchen)
December 12, 2011
I completely agree that there are many problems with the term “computer science”. I actually hate the term myself, as I briefly discussed in my first CS Ed Week post at http://franklinchen.com/blog/2011/12/04/why-i-am-writing-this-week-for-csedweek/ but I want to make a distinction (that I have not been able yet to articulate unambiguously and concisely) between “mere hacking” and a true understanding of what underlies programming. And I happen to believe that a lot of what happens in “computer science education” (in the formal sense) is not very relevant to the kind of everyday computational facility I would like everyone to have. Here’s an analogy: I don’t believe everyone needs to know calculus, but I do believe everyone needs to know arithmetic and basic algebra and geometry. Similarly, it would be good to identify what everyone should really know about programming and distill it and spread it. What worries me is that a lot of people today who stumble into computer programming don’t quite understand it. They are like people who might have memorized the multiplication table but are not able to multiply arbitrary numbers. Or worse, they might only know something about how to use particular tools or languages, which would be like only knowing how to multiply numbers that end in 0 or 3 or have the name brand “Microsoft” or “Apple” stamped on them.
irrationaljared
December 12, 2011
I’m not sure if you are disagreeing with this, but I’m actually a big proponent of focusing on the “hacking” part of programming. I think hacking captures the essence of creativity and problem solving and taking things apart and learning about how they work and making them better, etc, etc.
I really should have titles this post “My Daughter Will Learn How To Hack”. I think hacking more effectively describes the skills and confidences I want her to develop.
It sounds like you might agree with this, but I’m not entirely sure.
irrationaljared
December 12, 2011
And I would agree that most people think “comfort with technology and computers” means taking a class in PowerPoint or something, when in reality it has little to do with computers at all. We need to give kids environments where they can take things apart and build things and not worry about breaking things so they can develop a sense that the tools around us, including the Internet, are there for them to leverage and improve in a way that requires technical skills that are within their reach to develop.