I think my journey toward programming came out of a love of language. In school I was always trying to learn as many languages as I could because I thought that would be the key to communicating with more people, reading more ideas, and give me options in the future. At age 10 I switched to a 'French Immersion' school which teaches French by offering class instruction in french. Nobody in my family speaks french, I just thought it would be more fun.
Then in high school I wanted to take spanish in grade 10 really badly, but there wasn't any room in my schedule for it. So I got creative and proposed an idea: “What if I took my english class early (in summer school) to free up a space for spanish - if I did that would they make sure spanish was offered in the slot I had freed up?” And they did, so right after grade 9 ended and it was summer time and most people were off doing summer activities, I was volunteering to take summer school so I had enough room to learn spanish.
During this whole time I held the view that computers were tools, and that hardware + software could emulate many appliances and offer a limitless creative canvas, but I never pictured myself being the person building the software. I would hack, edit, modify, and extend code I found, but I had no interest in learning how to be the person writing the software.
But then I got inspired. I saw some things that told me I needed to learn how to use a computer, not just use software. The computer revolution is ongoing, and it happens every time a human being sees a computer and realizes it's a tool they can use for their own benefit. Hearing Steve Job's 'bicycle for the mind' analogy for a computer changed the way I viewed them: brainpickings.org/2011/12/21/steve-jobs-bicycle-f…
Then I saw some research about US Millennials compared to other groups around the world - they were measuring three things: literacy, numeracy, and tech-related problem solving. By the time you get to the end of the study, the outcome is that for much of my generation and the generation younger than me - many people lack basic skills they need to contribute to society. The outlook is very grim for about half of the population, so it will be on us (the people who can make sense of literact, numeracy, and tech-related problem solving) to figure out how we can carry 50% of our generation from now until they die: ets.org/s/research/30079/implications.html
The way I see it now, programming is like a third form of literacy. If literacy is understanding letters and words, and numeracy is understanding numbers and math operations, programming is like a dynamic form of literacy using parts of natural language (literacy) and parts of math (numeracy) and combining them into something new and nearly infinite in the way you can combine the two. It's the next step in reading and thinking, and even if you don't intend to write software I do think it would be very useful and personally enriching to be able to read code and understand it in the same way that learning to read letters and words can be personally enriching and help make you smarter even if you don't intend to ever become a book author. There's a lot of valuable thinking expressed as code and the simplest way to read and learn these ideas are by learning to read the code itself, rather than focus on natural language annotations or prose somebody has written to try to capture it.
Now the problem I have is that the more I learn about programming, the more use I get out of my (old) computers! When I was a software-user I always wanted more, faster, better computers all the time because that seemed like it could run better software, but now that I'm writing many of the tools I use I look at anything with a keyboard and view it kind of like an empty sketchbook - it's a beautiful canvas I can do some thinking with, and it's still going to think thousands of times faster than I can so I'm much more content with what I have :D It's also totally changed my outlook on life and my career too - I feel like a whole new potential has unlocked, I'm not worried about the future, and I have already expanded myself to do things I never thought I could do before - how do I know what I'll be able to do (or not do) in the future? I have no more idea anymore, thanks to programming. It's very exciting!
Everybody should learn to read code after learning reading natural language and math, it's the next natural step in literacy!
Sandeep Panda
co-founder, Hashnode
I wrote my first code in 2009 (just before joining engineering college). It was C/C++, but I didn't enjoy programming back then. In 2010, I learned a bit of PHP/JavaScript and used them to build something real. Almost immediately, I started enjoying programming and created a few simple websites which in turn gave me satisfaction. The process continued. I learned and used new languages/technologies in the subsequent years and everything fell into place. I graduated from college in 2013 and started my career as a software engineer in the same year. In 2014 I left the job to build things on my own and to work on interesting projects. But the important thing is that I never stopped learning.
I think some people learn programming and then get disappointed just because they aren't sure what they can achieve by learning to code. In most universities (at least in my country) students learn specific languages (C, C++ and Java) without knowing what they can build with them. The result is that most of the students know how to reverse a string, how to print "*" in various patterns, can tell you complexity of an algorithm by looking at the code, but they fail to build a simple real world app. That was the reason I initially didn't like to code and started developing an aversion towards it. I changed my perspective soon after I realized that anyone can build interesting things on the web if they learn to code.
Everyone starting their journey in programming should know how to utilize the knowledge they gain in the real world.