A classmate came to me in elementary school. He told me that there’s a way to make computers do anything you want. “What?” Way to blow someone’s mind during recess.

There wasn’t internet back then, but I’d already seen computers do amazing things in the form of games. I loved games.

We went to his place after school. He showed me a game called Nibbles. It’s a variant of the snake game concept. He told me that the game is written in QBasic. It’s a programming language that the computer understands. “It’s a what?”. I eventually got the concept. Kind of.

Nibbles (Video Game). Image Credit: Wikipedia

Nibbles was a cool game. But I was more of an adventure man myself. I loved games like The Secret of Monkey Island (released in 1990 by Lucasfilm Games) and Hero’s Quest (released in 1989 by Sierra Entertainment). We must have been on the verge of discovering the lean startup methodology, because already back then, we realized that we needed to start with something simple. We landed on a text-based adventure game.

During the next few days, we wrote the game’s objective, script, characters, and pieces of the dialogue. It was amazing that we got anything done. How could kids decide anything on a world where anything is possible.

It came time to start learning QBasic. My friend would print out example code from other games. He brought a pile of it to school. We stared at the symbols and syntax. Sat down, really looking at it. Our math education was in its elementary stages, but we could identify familiar operations like multiplication. There were also strings of text. And there was language that repeated when a piece of program needed to be executed.

Our game was never released. The allure of climbing on trees and playing tag was too strong.

But it did spark something inside me. I became curious about programming. Outside writing keybinds and macros for games, and building a couple of HTML-only websites at school, my programming breakthrough finally came in 2013. I learned the basics of HTML, CSS, and JavaScript.

Why did I do it? Why do I still do it?

1. Learn to think

I’m a huge fan of learning how to think. And more importantly, of different ways to do it.

That’s why I’ve bombed my brain with different subjects like philosophy, psychology, history, communication, languages, economics, mathematics, and statistics. I also like to write, play sports, compose music and even sketch from time to time.

Learning different ways to think makes you a better, more versatile thinker. You are able to see the world from different angles, take it to pieces, and put it back together again.

Programming is a great addition to your toolkit. It shows how computers think. And how to communicate with them.

2. Become more creative

When you become a more versatile thinker, you learn new things and make new connections in the process.

Think of your mind as a network of things. You can expand it in one direction, or multiple directions. If you choose the latter, the odds are, some interesting connections are made along the way.

You end up connecting things from different kind of subjects like languages and economics. Or psychology and sports. You find an endless pool of questions by connecting things from two subjects. Think about what happens if you combine three? Or four?

These questions turn into ideas. When you add programming into the mix, you unlock a whole new branch of them.

There are ways to come up with new ideas and innovate. This is one of them.

3. Understand technology

Computers are everywhere. They have and will change whole industries. We don’t need to do everything manually anymore. We have all the world’s information available to us online. We can work from anywhere we want.

Computers haven’t affected just how we work. We’ve found new ways to interact with our friends and family.

Understanding technology allows me to understand the world better. What kind of challenges do people have? What kind of help do they need? Powerful stuff for an entrepreneur.

Same applies to life in general. Knowing what we have now, and what we will have in the future, allows me to plan my life accordingly. Which skills should I develop? Where can I build a life?

4. Learn to speak software

Learning how computers think and communicate is like learning how a new colleague thinks and communicates. But it’s important to remember that we work with people too. You need a common language with them. What are they trying to say? How will they understand you?

I’ve had the pleasure of working with brilliant service designers and software developers professionally since 2011. Before that, I contributed to testing and improving upcoming PC games as a hobby.

When you talk about software, you are going to speak software. Even if you do not develop it yourself, software isn’t just a black box that takes inputs and produces outputs. You will hear about variables, loops, arrays, and functions. You will hear about back-end, front-end, libraries, and frameworks.

Programming teaches you to talk about software both with technical and non-technical people. They can be either your teammates or customers.

First, you understand what technical people are saying. Imagine you are at a strategy meeting. It takes effort to keep any meeting on track. It helps if you are able to assess what is relevant to the scope of the meeting, and when the discussion gets bogged down in the details.

Second, you help technical people understand you. Let’s say you need to report a bug. The better you do it, the easier it will be to fix it. If your report is missing key information, developers will need to ask you for more. It quickly becomes slow and frustrating for everyone involved. I actually stopped reporting bugs for a while, because I couldn’t find a common language with developers. Way to miss an opportunity to make the product better!

Third, you relay technical information accurately. Your customer has a question about the product. You need to be able to understand it. If the question is a bit too technical for the customer themselves, you need to help the customer to formulate the question. When you have understood each other, you need to bring the question to your team accurately. Otherwise, you are wasting resources on answering the wrong question. Finally, when you do have an answer, you need to bring it to the customer in a way that they understand.

5. Become a better project manager

Trying to do too many things equals to a missed project deadline. There needs to be clarity on the goal of the project, and the best way to reach it.

When you work on a project, there are two words that service designers and software developers repeat often. “Why” and “no”. Answering to “why” comes naturally to me. I’ve spent years developing my ability to explain to people “why”. Designers and developers want to know why people do different things. Why is something important.

But “no”. That’s a different animal. That’s a word developers use. There are so many ideas that they need to maintain a short todo list. If something is going to be added to the product, it needs to have a significant impact, not just bloat the software.

I’ve lead dozens of software projects at the intersection of customers, designers, and developers. Programming has taught me about software development. When you understand software development, you become better at understanding everyone’s needs, and how to best meet them.

For example, if a customer has a request, I know to focus on the “why”. Then to look at different options and go with the best one. If there are only bad options, I know to say “no”. I still think people should say “no” more often, but saying it once is a start.

When you understand programming and software development, you understand why something is or isn’t worth it. You know the amount of work it takes. You know what is relevant to the goal, and what should be left out of the project roadmap.

6. Become a better leader

When you become better at understanding needs, challenges and solutions, you become a better project manager. When you develop empathy toward other people, you become a better leader.

The best way to develop empathy toward someone is to walk a mile in their shoes. What kind of hopes and frustrations do they have? What kind of things do they juggle with every day? What do they need to do to do what you ask of them?

Learning programming doesn’t make you a people expert. But it allows you to gauge a group of people, software developers, based on the people skills you have.

Someone has once said that leaders create more leaders. I think that’s a great way to look at leadership.

On that note, I’m interested in helping people around me: a) take ownership of what they do, and b) grow in what they do.

When you understand programming, you understand what you ask someone to own. What it takes to own it.

You are able to improve on something because you know what you already have. You can build on something when you know its foundation.

7. Develop your own software

We never released the adventure game back in elementary school. But the hunger stayed. I love still love designing and creating things. Programming allows me to do it in a vast digital universe. If you keep learning and work hard enough, you can create anything you want.

First, there is convenience. Programming allows you to analyze and automate everyday things. Bring your spreadsheet game to the next level. Organize and edit files in bulk.

Second, you can integrate technologies with each other. There’s an ocean of API’s (Application Programming Interface) out there. Want to track the effectiveness of marketing campaigns from the first ad impression to conversion? Do it. Want to allow your customers to make payments on your website? Do it.

Third, there’s the holy grail, using software to create your own products and services. We all how tons of cool ideas. Start by fixing a simple problem that people have. Make a simple version of the product first. See if it actually helps people. If it does, continue developing it by yourself, or with other developers.

8. Develop someone else's software

Eventually, you can help other people create their products.

Contributing to an open-source project allows you to support software that you like. Help yourself and others enjoy it more, and in the future. Co-develop the software together with other people around the world. Start with a simple issue.

There are tons of businesses and other organizations that need skilled developers. When you are skilled enough, the sky’s the limit.

Conclusion

I challenged you to learn programming, because it is about so much more than becoming a software developer.

It’s an opportunity to see the world differently and come up with new ideas. To learn a new language that both computers and people use. To become a better professional, a better leader.

Finally, if you want, it does give you the superpower of creating anything you want.

Are you ready to give it a go? I recommend you to start with freeCodeCamp. It’s a free online resource for learning web development.

They, like all the other resources out there, teach you programming languages. But they don’t stop there. They also give you projects to complete. Projects are just difficult enough to push you forward without demotivating you. They are the key to learning how to apply the language.

I also encourage you to take a look at Harvard’s CS50. It’s a free online computer science course. I haven’t tried it myself yet, but people are raving about it online. They teach you about the theory behind computers and programming.