When I was studying Computer Science in France, I had a Professor lecturing Databases 101: “I’m programming a shopping cart software. I want to store a phone number with the order, and we will use the Integer data type because, basically, a phone number is a number.” I asked, “But shouldn’t we use a String data type so we can accept dashes, spaces, punctuation or whatever is used as a separator in a phone number, or pre-process the user input so we’re sure we store a number?”
“What user? We don’t care about the user, we’re just coding.”
She never saw me in her classroom again. I failed her exam on purpose, mostly because I disagreed with that same question being repeated 5 times. I swore to myself to write a post relating to this event. I’m doing it right now.
When politics, including Barack Obama — who became the first sitting US President to write a line of code — are inviting everyone to learn code, they are missing the point: people need to learn how to use a computer to create things. And that does not necessarily mean learning code.
It’s about creating something
Being a developer is so rewarding — and it’s nothing to do with the money.
Most of the time, you wake up knowing that by the end of the day, you will have something concrete to look back on. However small or big that is. This killer feature every user was waiting for? Shipped. That hideous bug you dreamt of last night? Smashed.
Software Development is all about creating something. You can be proud of it, eventually admit it needs some more work but still, you create something, every single day. Something that will be used by you, a few users or maybe millions of them.
Shipping your first product
That’s what my Dad, a writer that has nothing to do with computer science, showed me when he introduced me to Software Development when I was 10. At that time, he was using FileMaker Pro, a database-creation software, to manage almost every aspect of his daily life. Work, finance, organizing his thoughts or just getting an up-to-date inventory of his thousands-book library. With some clicks, he could create an interface, add some actions and interactions. In the end, he shared some of his solutions with our family. I was just blown away—anyone, with a computer, could create a piece of software that would help people.
That’s where it all started for me, and I couldn’t stop it. I wanted to create meaningful products — and that led me to publish my first software when I was 12. Two thousand downloads in just sixty hours. Two thousand people were using something I wrote on a summer vacation. This was huge, and I was overexcited.
Teaching code and losing focus
Every 12-year-old kid (and younger ones too, like Anvitha Vijay, an awesome 9-year-old girl who was the youngest Apple WWDC attendee earlier this year) with a computer and an Internet connection can experience the same feeling. Develop something. Share it. See it grow. Be proud of it. People all around the world are learning how to code — “because coding is what matters now.”
But… is it really?
If you teach code to anyone and think they’re actually in to learn code, you are very wrong. With Root, a “Little Robot on a Mission to Teach Kids to Code”, kids are in for the robot drawing, moving and flashing like crazy, knowing they are in control of the robot. It becomes their creation, and they feel proud about it.
Ask these kids to tell anyone about what they just accomplished. They’ll say “I created a program that moves the robot and make it draw something”. Definitely not “I wrote 16 lines of code including a superb
for loop so the robot can execute a set of instructions repeatedly”.
And that is what is wrong with some code-teaching programs. You don’t need to teach code, you need to tell people they can create something meaningful and useful, and teach them how to find the tools they need. Maybe it’s code, maybe it’s not.
If you’re teaching people about code and just code, you’re giving them tools they don’t need. Show them the big picture. Teach them why anyone would want the robot to move in the first place. That implies culture, curiosity and patience — not just technical skills.
Finding the right teacher
Don’t mistake me: teaching code is not the problem. It’s just not where we should stop. It’s not even where we should start if we want kids to continue grow their love of software development.
In France, code is getting a central part in school programs, targeting kids at all ages. And the way it’s done is bad: code is being taught by math teachers. I have an immense respect for math teachers; they’re most of the time teaching a subject they admire or love to many kids who find it boring or overcomplicated. But the thing is: by teaching code and everything about computer programming and linking it with math, some kids get lost in the way.
I wasn’t really good at math. I hated it but always managed to get the minimum acceptable grade to go through my studies. I can’t remember how many math teachers would tell me things like “Why would you want to study Computer Science? You’re not good at math, you’ll fail.”
Now kids, if you read this and have any interest in Computer Science, even if you’re not good at math: dive in. Even with just a basic understanding of what math is, there is still a lot to do.
It’s about the music in it
Alongside with my software-developing romance, I learned to play the Cello and studied Music Theory as a teenager for more years than it is reasonable when you don’t end up doing it professionally. I can tell you everything there is to know — or at least what I remember — about tonal harmony, Gregorian monody or Antonin Dvořák’s thrilling life.
Learning music is essentially the same as learning code. You don’t sign up for the Music Theory; you sign up for the Cello and have to study Music Theory. The same way you don’t sign up for the code; you sign up for the achievement, the software, the result. Kids sharing their experience with Root the little robot will tell people about the Cello Concerto rather than the Music Theory.
The same way you don’t ask a math teacher to teach code, you don’t ask a composer of a brilliant concerto to play it. Most of the time, he won’t even know how to decently play the instrument he wrote the concerto for. You ask someone else; who might not be able to compose great music but still is an excellent musician.
Just as you might accomplish great things with a computer without ever writing a single line of code.