Let's talk about coding for you non-coders today.
Learning to code is one of the most valuable, fun, and rewarding things that you can spend your time on, and it's not because you can go get a job in tech (although that's a nice bonus option if you really get into it).
This might seem like a silly thing to point out given that "everyone" is aware of this at least on the periphery, but if you think that you are severely bubbled. Estimates suggest that only 2-6% of Americans know how to code (and definitely only around 2% as a career).
But I don't want to talk about the career possibilities, because that's boring. Let's get at something much more interesting:
How is coding useful for you even if you have no intention of using it in your career?
For one thing, you use computers. You're using a computer to read this (whether it's a phone or laptop or weird floating nanobot-screen sometime in the future). Whatever you do on a computer, understanding how to code can make it an easier and richer experience.
Not only that, but learning to code teaches you to THINK differently and opens up your mind to possibilities that never would have occurred to you otherwise. You see more opportunities. You intuitively understand patterns more easily. You build confidence in your problem-solving abilities and it sharpens your ability to approach a problem in a structured way.
I'll unpack all of this in a moment, but let me explain where I'm coming from on this first.
My bio-dad worked as a software engineer for a chunk of his career in the 90s and 00s, and he taught me enough about hardware that I was able to land jobs working tech support when I was in college. In spite of this, I never bothered to learn to code.
Occasionally my coworkers would automate something with a "script," and I had friends in computer science courses and things, but it all felt like really complicated black magic to me. I was aware of it, but it was on the periphery and seemed impenetrable.
I tried a few times to learn a little about it, bought books and experimented, but I was suffering from a very common beginner problem: the landscape is vast, and without a focus or a problem to solve, I was getting lost in the form without touching the substance.
To make a comparison, imagine that you think sewing seems like a useful skill. You want to learn how to do it. So you go to the store and there are endless patterns, fabric, tools, and accessories for you to examine. How do you start?
The way that most people approach coding without guidance (or even with guidance) is like the sewing aspirant who tries to learn to sew by learning about random parts of the process. You research machine options and thread thickness. You ask if silk or cotton is better.
You practice threading a needle and study the plans for an evening dress, a flag, and a pair of designer pants. All of this is very overwhelming, because every stone you turn over reveals a whole host of opinions and situations and additional nuance and complexity.
But of course, this is completely the wrong way to approach sewing. The right way is to ask a question: What do you want to make and what are you trying to do? This helps inform all the other questions, because most of that won't matter when you're making your first shirt.
Making something simple with basic materials helps you establish some good instincts and start building a skill set that will eventually open doors to more complexity in technique and knowledge so that the designer pants pattern clicks into place. You expand organically.
What sent me down the path of being a self-taught coder was having real and concrete problems that I was motivated to solve, which in turn gave me motivation to keep learning more because it triggered a reward cycle in my head.
My first experience demystifying coding was learning to make SQL queries at my job, which a friend taught me in an hour one afternoon. This showed me that coding wasn't some arcane art that you had to be super smart to do. Some tasks were simple.
Next was realizing that I could make Excel macros and edit them just by Googling for examples of what I needed to do. This also seemed very easy. But it wasn't until I got into scripting with Python and building simple apps that my eyes really opened up.
All kinds of things that were annoying and manual could suddenly be automated VERY simply once I understood how. If you want to start playing with Python, forget coding 101 tutorials.
I highly recommend this book:
What's special about this book is that you don't have to spend a bunch of time learning things that might not be relevant to you. It shows you, in practical terms, what KINDS of useful things you can build with Python.
Rather than sifting through endless technical docs to try to "learn the basics," it encourages you to start with an end goal in mind and suggests some easy, achievable, and useful end goals... the equivalent of starting sewing with an easy shirt.
If you do this, it has the same impact of learning the basics in a way that actually benefits you, rather than spending 10 hours on coding tutorials to wind up with a calculator and no idea what to do next.
"What do you want to build?" is such a common question it's a joke.
But most newbies can't answer this question, because they have no idea what's possible or how to get there. They're not ready to magic up an app idea or even to build a simple website. They have other tools to host a blog if they want. It's not fun or useful.
What makes it fun and useful is getting into a headspace where you're able to use your skills to solve problems that are relevant to you. Your breadth and skill grows from there, organically, in whatever direction excites you.
But the interesting part isn't how I got my coding skills. It's how they changed my relationship with thinking and seeing the possibilities.
My mom often tells me she wants to make an app but doesn't know how to start or what the possibilities are. By starting small and solving byte-size problems, each of which will force you to problem solve and learn new skills, your sense for what patterns are available to you and what the boundaries of possibility for coding are become sharper.
You start to see how coding can be more like Legos than you ever imagined, as you learn to borrow this package and that package, and things that seemed unachievable before suddenly look trivial. You soon realize that your imagination is your biggest barrier to creation.
The more you play, and the more you borrow, the more you learn just by seeing how other people solve the problems you have. The more you bump into common issues, the better your instincts get and the less you need to Google for Stack Overflow answers.
But beyond the mechanics of construction, thinking through coding sharpens your capacity for abstract thinking. As you construct interactions of subsystems and pass data around, you learn to conceive of problems as parts to be modeled and solved within the whole.
You get more comfortable with entertaining "mental black boxes," where you may not know exactly how a thing works but you know that it solves a problem and are content to leave it in the mental map of the machinery you've constructed.
And having all of these skills gives you an appreciation for how information interacts with interface and what's happening behind the scenes of the tools and websites you use every day. This, in turn, helps you think about how those experiences could be made better.
It also helps you learn how to work through problems logically, one challenge at a time, without being overwhelmed by the complexity of the whole. Project Management 101 learned by osmosis as you act, and it builds confidence in your ability to work in unfamiliar spaces.
Just like learning how an engine works can help you intuitively understand issues you're having with your car, this also helps you solve problems or see business opportunities that would be opaque to you if you didn't appreciate the mechanics of the possible.
Finally, it lets you grok new emerging technologies more easily than you would otherwise because you can see how those tools are an extension of existing patterns that you recognize and understand.
It's more than a tool for building--it's a tool and a system for thinking.
Furthermore, it stimulates your creativity. As you learn more about how the patterns work, you find yourself asking new questions, like, "How hard would it be to automatically put moustaches on every cat in this cat pic twitter account I enjoy?" Art opportunities are endless.
More practically, you start seeing new opportunities to use it in your life as your skill improves. I've automated my own book and cover formatting, programmatically applied artistic filters to designs, and gotten market data for advertising just by seeing more possibilities.
On the artistic side, it's only been in the last two years that I've become skilled enough to work on my longtime dream of coding an indie videogame, and I built those skills by doing smaller, more focused projects that helped me see how to fit it all together.
It helps me write and plan better fiction, drawing on tools and opportunities I wouldn't be able to understand without those skills (either because I use tools to help or knowing the tech makes my plot more realistic), and it makes me appreciate other people's designs more.
So in short, I can't recommend it enough for anyone and everyone. At a minimum, you'll develop an appreciation for new ways of thinking, increase your confidence, and be able to solve simple problems you might run into.
If you discover you love it, or even get excited about it, it can open a host of not only career options, but opportunities to build useful things for other people which can turn into new income sources or simply make the world a better place when you give it out freely.
It's not just for people who want to do it for a living.
Pick up the book I recommended, try automating some boring stuff you don't like doing on your computer, and open your mind to the possible.
Your life will be richer for it even if you don't do it regularly.