I started writing computer code when I was in high school in a special program at the Illinois Institute of Technology. This was in the early 1960s, long before there was such a thing as a personal computer. I continued coding through my college years, and in the early 90s I designed and developed computer games for multiple platforms. So, yes, I'm a geek -- and no one believes more than I do that computer literacy is an absolutely essential skill for students in this country if they want to have even a fighting chance of succeeding in the digital economy.
Enrolling your kid in a coding class is as good a way as any to spend some time and money on their future -- and if they're in high school, it's a great addition to college applications. But if you're going to make the investment, you should also give some thought to where you're headed and why.
It's important for parents today to remember to not go crazy with coding. Learning to code is a desirable skill to be sure, but it's just that. It won't make your kid a better person. It's not a shortcut to building an earthshaking app or a certain path to a dream job. It's a great beginning and a solid foundation to build on.
Given the rate of change in the tools and platforms that we use every day, it's also important to understand that the specific technical skills you learn -- even in the best programs at the best schools -- will go rapidly out of date or out of fashion. But that's OK (and to be expected) because the real value of learning to code isn't in the mastery of the tools; it's in the internalization of the methods, the analysis, and the critical thought processes that are the foundational skills of all great programmers. I'm almost certain that the world doesn't need another scheduling service or sharing site. But we need all the critical thinkers and change agents we can create.
It's never too late for an adult to learn to code, whether you're looking to change jobs or boost your skill set. And as far as kids go, smart parents want to equip their children with these skills as early as possible. They are life-changing -- not mainly because of the implications for heightened college admission or employment prospects, but because, just like debate class or chess club, they provide your offspring with a methodology to approach whatever challenges they'll face in the future. Your children won't be put off or paralyzed by these prospects -- they'll have learned to take them on and vigorously attack them. I call this "approach behavior." It's about leaning into the wind and moving forward rather than standing still or turning away from difficult situations. And it's a powerful life skill for anyone.
Here are a few other invaluable skills and ideas -- I call them the ABCs--that coding teaches. These are the outputs that matter most in the long run.
Successive approximation is better than postponed perfection. 'Done' right now is always better than 'perfect' sometime down the line -- because the world isn't waiting for you.
You learn early on in creating code that it's a constant series of small steps, with a ton of failed attempts included, that slowly get you to the end result. Each accomplishment is itself only the next level in the process. There are no shortcuts. Doing things right takes time and patience. All of the great ideas are cumulative -- they incorporate disparate components and elements that eventually combine to deliver a solution that is broader and more effective than anything that came before. But nothing ever happens if you don't get started.
(B) Better and Better
Code can almost always be faster, cleaner, and more efficient. You want to copy everything that came before (except your mistakes, of course) and make it even better. Raising the bar, constantly iterating, and building upon your successes are the reasons there's never a finish line in these businesses. It's also because every business today is engaged in an arms race with tons of other people running right behind you, looking to build quicker and cheaper versions of what you already made. If you don't constantly improve on your own products and services, you can be sure that someone else immediately will.
(C) Curiosity and Confidence
The best competitors today are those who are constantly learning everything about their business. This requires an openness to change and an immense curiosity: why things are still being done in certain ways; how things can be improved. Entrepreneurs see the same things that everyone else has already seen, but they think about them in new ways and are willing to explore new alternatives. Coders share this same type of unrestricted perspective. They rarely ask why; they always ask why not. One of the most satisfying parts of the entire development process is when you get the rush of excitement as you come to understand something you've known all along, but in a new and different way. Daily epiphanies, bursts of adrenaline, and the alchemy of creating something from scratch are some of the greatest joys of the job.