Programming as a Mindset

Cameron Bernhardt
6 min readDec 26, 2014

--

Just try it; it’s not as hard as you think.

Well, maybe. At least that’s what I’ve been told.

In fact, that’s what we’ve all been told. With sites like Code.org and celebrities like Ashton Kutcher telling us that “anybody can learn” to the tune of peppy music, whom are we to argue? Even the President of the United States cranked out a few lines of JavaScript earlier this month for the annual Hour of Code.

What is it? What do I mean by programming? I’ll get to that in a second. But first, let’s consider the circumstances.

It’s easy to get caught up in all of the hype and forget about what the whole purpose of it all is: to learn to program. It’s especially easy when we’re bombarded with average salaries of programmers by the same page that insists that you don’t have to choose programming as a career to learn to code. So what is this movement all about, and why is it suddenly so pervasive that nearly a hundred thousand people around the world have pledged to take part in it?

Courtesy: Code.org

The first thing to recognize is that there is a distinction between software engineering, programming, and computer science. I won’t get into the specifics here (there’s plenty of debate over that), but a few general definitions are pretty helpful in understanding the difference between them (from Wikipedia):

Software engineering is the study and application of engineering to the design, development, and maintenance of software.

Computer programming (often shortened to programming) is a process that leads from an original formulation of a computing problem to executable computer programs.

Computer science is the scientific and practical approach to computation and its applications.

In other words, the terms move from the most application-based (software engineering) to the most theoretical (computer science). However, as most learn-to-code initiatives treat these three as one and the same, I will use them as such.

In the United States and around the world, a startup culture has begun to take root, transforming economies and making billionaires — in some cases, that is. This has created an odd visualization of “technology”; the word itself now brings to mind the image of a group of twenty-somethings clustered around monitors writing thousands of lines of meaningless jargon at an unimaginable speed that will somehow transform the world.

The concept of starting your own company is nothing new. In the US, companies have been in existence as long as the country itself has, and they have become the backbone of a dynamic free market economy. However, the concept of anyone being able to start their own company and to turn an idea into a product or service that people around the world use is entirely novel.

Startups that fill particular economic or lifestyle niches are part of the new definition of a corporation; what do electric cars, ridesharing, crowdfunding, 3D printing, wearable technology, various mobile apps, and self-driving cars have in common? Seemingly nothing. And yet the tech press reports on all of them. “What about computers?” you might ask. If we’re living in a new age where everything is defined by computers, then wouldn’t it make sense that the corporations of tomorrow are all computer-based, too?

Those waiting for the new technology bubble to pop are going to have to explain how companies like Tesla, Uber, Kickstarter, Makerbot, Pebble, and others are connected by something other than their astronomical valuations and the vague idea of “technology.”

So how do these new companies relate to programming? Well, if they’re defined by computers, and computers are controlled by programming, then programming is inherently integrated into the foundation of the companies. And if we will all someday work at these new corporations, we’ll all have to have some familiarity with programming, right?

Maybe not. With the rise of machine learning and higher-level languages, the art of programming is becoming more and more vague and learning it, as Code.org and many others are happy to tell us, is becoming easier and easier. But that brings us back to the essential question: what does it mean to learn how to program?

If you’re just dragging blocks around and clicking run, are you really programming in a traditional sense? I’d say that depends on your definition.

What the learn-to-code initiatives lack, in my opinion, is a sense of perspective. They throw out this vague concept of “computer science,” telling you how it will both be essential in the new age for all workers at all companies and how the field itself can lead to some of the highest-paying jobs in the world.

What they don’t tell you (and what many software engineers will tell you) is how the idea is connected to the work of the future and why it is connected so intimately . The “how” is almost unambiguously in the thought processes and algorithmic thinking that comes out of learning to code, and if that’s your definition of programming, then dragging blocks around most certainly is an (albeit somewhat limited) example of it. The “why” is really up to you. Why do you want to learn how to program? Is it for a higher-paying job? Is it to gain an edge in the new age of technology? Is it simply to change the way you think?

All are valid reasons, but some will get you farther than others, because programming is most certainly harder than it looks. You have to rethink the way you do everything, and once you get even the slightest grasp on it, you will look at the world in an entirely new way. If your motivation is an intrinsic sense of discovery, you will probably make it farther than anyone with differing motives, as that reason lends itself best to the nature of the craft.

The truth is that programming in and of itself can be truly magical at times, and once you experience that, you’ve already understood what makes it so powerful. So maybe it’s not about the “why?” so much as it is about the “why not?”

This is something that I wish learn-to-code initiatives would emphasize more — it’s not about programming itself, it’s about the programming mindset. It’s about a way of thinking, of doing, of feeling. And if you’re learning to code, don’t get caught up in the endless syntactical rules and odd language behaviors: just program. Learn the mindset.

But perhaps I’m getting ahead of myself. You may come away from what I’ve said with the idea that I’m against these initiatives; I’m not. While I believe in learning for the sake of learning and for the right reasons, I also think that these organizations are doing a great job spreading the magic of programming and that they should be proud of the steps they’ve taken to connect people around the world.

The sad reality is that many states in the US and many more places around the world don’t offer substantial computer science education, and many of the places that do use outdated methods and practices. I’m lucky enough to attend a high school where the College Board’s AP Computer Science course is offered (although many may argue that its pen-and-paper methods and language choice are archaic), and I was lucky enough to be able to take advantage of my state’s and school’s changing education system to help introduce a more modern project-based course for those already experienced.

Courtesy: Code.org

With what I’ve said above, it may shock you that I’ve started an afterschool club to teach programming to those willing to learn and to grant more opportunities for those who have experience to build new and amazing things.

I don’t bring these things about myself to your attention to brag or give myself credibility, but rather to assert that we live in a new age where we have to learn to think in a new way, and sometimes this new way doesn’t fit traditional models. Because the programming mindset, while not necessarily new as an idea, is most certainly new as a common way of thinking for everyone, everywhere.

It’s something that spans cultures and languages (not just of the programming variety) and, contrary to the conventional view of computers, it’s an incredible way to connect with other people. You don’t have to be a software engineer, programmer, or computer scientist to experience this, and some people just don’t like it. That’s fine.

However, the opportunity should be available to everyone, and, most certainly, everyone should at least give it a try.

So, why not?

--

--