loading...

How to learn programming the natural way

bitario profile image Mo Bitar Updated on ・3 min read

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:

GitHub logo standardnotes / web

A free, open-source, and completely encrypted notes app. | https://standardnotes.org

Standard Notes

A safe and private place for your life's work.

Standard Notes is a simple and private notes app available on most platforms, including Web, Mac, Windows, Linux, iOS, and Android. It focuses on simplicity, and encrypts data locally before it ever touches a cloud. This means no one can read your notes but you (not even us).

latest release version License Slack Twitter Follow

Why Standard Notes?

  • Simple and easy to use
  • Fast and encrypted cross-platform sync
  • Free sync on unlimited devices
  • Extensible with editors (such as Markdown and Code), themes, and components (like Folders and Autocomplete Tags). Learn more about Extended.
  • Open-source and the option to self-host your notes server. You can host your own Standard Server in a few easy steps.
  • A strong focus on longevity and sustainability. Learn more.

Creating your private notes account

  1. Launch the web app at app.standardnotes.org.
  2. Click Register to create your private notes account.
  3. Download…

Posted on by:

bitario profile

Mo Bitar

@bitario

Passionate about product and software. Working on Standard Notes, a simple and private notes app.

Discussion

markdown guide
 

I've been thinking about this myself lately. This last year I've been learning JS and React by using it. I put off learning JavaScript for so long, I found structured online courses didn't do much for me, there was no connection to the why of doing something. I've learned so much more by doing, struggling, searching, reading documentation, asking questions. Seeing things used over and over, getting an impression of what they do, why they would be used. When I need to know more about something I go and find out. It feels a lot like how I learned language as a small child.

 

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).