Some years ago, I had a fellow developer ask me where I learned to type on the keyboard. I said, huh? What do you mean. It’s a keyboard. You just tap on it, and eventually you get rally tappy on it. I’ve been doing it since I was three feet tall. He said oh. “I took one of those Mavis Beacon typing classes.”
Both of us, at that point, were equally proficient in typing on a keyboard and understood the super complex mechanics of hand placement and proper finger etiquette. I learnt it absentmindedly, and he learned it brute force. The result is the same. One method is just less exhilarating.
As I’ve stretched through my expanse of time, I’ve found it somewhat increasingly difficult to teach myself new tricks. As a kid, learning is a thing you’re always doing. As an adult, learning is something you need to make time for. Today, programming is as gushing a prospect as gold in the old west. And right before you are all the tools you can possibly need. Tragically, the burden lies on you: will you put in the time?
But as I’ve heard from others, and read on blogs about people’s journey to learn programming, two things are mentioned very often: it’s very hard knowing where to start, and it’s very hard even after you know where to start.
So lots of people give up.
I’ve given up on many, many things in my life. Programming was not one of them, and I’m grateful to my past, clueless self. But that’s exactly it: I learned programming not because of some grand insight and keen forethought. I learned it because I wanted to change the damn color of some rectangle to red.
That’s it. That’s all that's needed to learn programming. You can read hundreds of blog posts and watch a dozen videos on how to program, and at the end of it still be completely incapacitated. Or, you can feel your way through it. From an end result, work backwards, rather than forwards. That is, rather than starting from the absolute beginning (which is completely maddening by the way; blank slates are the most uncomfortable point of any project, even till this day), you start with the end result already in front of you, and you tweak some tiny variable, and you see how it behaves.
That’s sort of how machine learning algorithms work, isn’t it? You try this statistical possibility, observe the result, and give it a thumbs up or thumbs down. Eventually, it finds a way. You, a machine learner, do the same: find the source code of a complete project, set up the environment (here be dragons), and get the app running. Then, find one thing you want to change about the app, like a color, font, width, height, and figure out what file you’d need to change to do that.
Changing a green rectangle to red might take you hours on the first attempt. Maybe even days. You’ll have to google yourself to exhaustion, in ways you’ve never googled yourself before. Eventually, of course, it becomes common to you. So you give yourself harder and harder tasks. “Ok, I can change the rectangle to any color I want. Can I make two rectangles appear side by side?”
Follow that path, continually make new challenges for yourself, and eventually, you’ll know how to program. Programming isn’t a bunch of rules you need to learn in some strict order, and even if it were, it might take the rest of your life to learn them all. Programming is just this language you learn to speak in varying degrees. You never quite master it. You entertain yourself with how expressive you can be with this newfound language.
But you learn to speak it, just by speaking it.
My wife gets notified of new blog posts, read this one, and said that it inspired her. She said, however, that it might be helpful if you included some resources in the post. I said, well that's the whole point: you don't need any resources. You just need to find an opensource project, and run it. She said, run it where? I laughed. Ok, so obviously, there are different levels of expertise here. But, the point is, you should struggle a little bit. It's ok not knowing. As long as you have an end goal, and are determined, you will find a solution. You can start with running the encrypted notes project I work on called Standard Notes. It's in JavaScript, and setting it up locally is not too bad:
standardnotes / app
Think fearlessly with end-to-end encrypted notes and files. For issues, visit https://standardnotes.com/forum or https://standardnotes.com/help.
Standard Notes
Standard Notes is an end-to-end encrypted note-taking app for digitalists and professionals. Capture your notes, files, and life’s work all in one secure place.
Why Standard Notes?
- End-to-end encrypted sync. Only you can read your notes.
- Fast, free, and encrypted cross-platform sync on unlimited devices.
- Public source code with ability to self-host your own server in a few easy steps.
- A strong focus on longevity and sustainability. Learn more.
Creating your private notes account
- Launch the web app at app.standardnotes.com.
- Click Register to create your private notes account.
- Download Standard Notes on your devices.
- You're all set. Standard Notes comes out of the box with end-to-end encrypted sync on all your devices.
Publish a Blog
Standard Notes is a dependable environment to do your most important work, including publishing your ideas to the world. Listed allows you to create an…
Top comments (1)
Motivation is key. Learning to make a rectangle red maybe a motivation for you but for other people like me not really so though I found programming just as easy as math for me I just didn't look at it further when somebody taught me how to program some additions in basic almost 35 years ago :) Later in engineering school I didn't even bother attending courses either as it wasn't my major, it's only when we got this huge project about automating a factory simulator that I told myself: huh so it can do usefull stuffs then I got interested. At that time, coding was in assembly language but It didn't bother me.
That's why you should find the learning path and language that suits you first it will motivate you. So if you're like me looking for purpose, I have written tutorials to get started with programming when knowing not much (see my profile if interested).