Most people assume that I studied computer science in university and that Iâve been coding since I was young. Theyâre usually surprised when I tell them that in fact I studied Marketing and Spanish and that although my brother taught me how to build a very basic web page in the early 2000s, I didnât really start to learn to program until I was an adult with a job.
The truth of the matter is that my story isnât unique. Itâs simply not true that you have to be a whiz kid whoâs been coding since they were 6 years old in order if you want to be able to program as an adult. There are tons of examples of people who also donât have a technical background who either became full time programmers or just learned a new skill they enjoy using.
In this post, Iâll give you some advice that has served me well on my journey. My path is by no means the only path and depending on the situation youâre in might not be practical or right for you, but it is certainly a path, and I hope it helps you on your path to learning to computer.
Photo by Miguel Ă. Padriñån
The Privilege of Time
Itâs helpful to first talk a bit about the real barrier to learning to program: time. Given the sheer massive amount of things that one can and needs to learn to be an effective programmer, it does require a large amount of learning time.
This might not be possible for everyone to commit to. If you have responsibilities that require you to dedicate a large amount of your time (i.e., more than 40 hours a week) to make ends meet or if you simply have other large time commitments (like family, friends, social organizations, etc.) that are more important to you, you might not have the spare time to dedicate to learning. Thatâs ok! Coding can be a real joy and is a great career, but sometimes other things are just more important.
Itâs important to understand that learning to program to a level of employability is a pretty large time investment and itâs best to know up front if you can or want to invest such a large amount of time to it. The good news is, as weâll see, there are a ton of resources for learning to program that give you the ability to do your learning on a flexible schedule.
Photo by #WOCinTech Chat
Where to Begin?
When people talk about starting to learn to program, they often talk about which programming language to start with. This is a natural starting point as coding is always done through a language. Itâs the most tangible aspect of learning to program computers.
There are many criteria for choosing a language to get started with including:
- Languages with lots of beginner friendly resources: . Programming resources can often be full of technical jargon and can implicitly expect knowledge that you as a beginner are not likely to have. If you donât understand a resource, donât blame yourself; find a resource that tries harder to target your needs as a beginner. JavaScript does great in this regard.
- Languages that are not overly-complex: Some languages require a lot more background knowledge to be used. Go is an example of a simple language. C++ on the other is a very complex language, and therefore probably not the best choice for a first language.
Some often cited criteria that hold much less weight:
- Languages that are dominate in industry: One of the first languages I learned after Ruby was Standard ML which is not really used by any companies, but it influenced my career perhaps more than any other language. Donât focus on a particular language just because you think it might one day get you a job.
- Languages that are meant for a particular use case: In the real world some languages are typically used for certain use cases over others. For instance, audio software is often created using C++, but if youâre interested in learning JavaScript and doing audio programming donât assume you need to drop everything and learn C++. Ask if there is any support in the language of your choice for what you want to build and donât mind if itâs not the language that normally gets used.
Donât be afraid that you might pick the wrong language. You can always switch to another language if you find your current choice isnât serving your needs. In fact, I would encourage you to learn lots of languages. The more languages your learn the more youâll exposed to different ideas, different use cases and different challenges.
I, for example, learned to program in around 10 or so languages to some level of proficiency within the first couple of years of first learning to program. Each language exposed me to something new which made concepts in other languages clearer. Ruby for instance exposed me to something called functional programming but it wasnât until I learned Clojure and then Haskell that the concept really clicked.
But perhaps the most important aspect of which language to chose is the community of people associated with that language which will take a look at next.
Photo from rubyonrails.org
Community and Support
Most people outside of programming (and a depressing amount inside of it) donât realize that programming (and especially learning to program) is often a very social activity. Whether youâre a part of a team at a company or your working on a project in your free time, more often than not youâre interacting with others. The best coders are ones that not only enjoy the nitty-gritty details of what theyâre working on, but can also bring out the best in others.
Itâs important to find a support network to help you with your learning. Some programming communities are more beginner friendly than others. For example, I started out in the Ruby on Rails (RoR) community because I happened to be doing support work at a startup that was using RoR. When I first started I didnât really understand why RoR was - people would say Ruby is a programming language and Rails is a framework, but these terms confused me. All I knew was that the people who I met through Twitter and through local meetups were very encouraging. I was of course nervous to ask what I assumed were very silly questions, but they were there to help.
Find yourself a community or set of communities that will help you on your journey. If youâre unsure where to start, ask others what programming communities are the friendliest to new-comers. If you donât know any programmers, start here.
The Right Mindset
Learning to program can be a big challenge, and it might be tempting to give up at certain times. When you feel overwhelmed or not smart enough, itâs important to remember: computers are not magic, you can learn how they work.
If something is not clicking, itâs not because youâre not smart enough. It might be because youâre missing a key piece of background knowledge. It might be that the resource youâre using isnât meant for someone with your particular background. It might be you just need to take a break and learn something new. Donât give up!
What now?
The best way to get start learning is to just dive in. Simply search for âlearn to programâ and see what comes up. Think about what you would like to try to learn to build and search for âHow to X as absolute beginnerâ. Some activities you might think about are: building a website, building a 2D game, and creating computer generated art. There are plenty of resources out there to help your decide where and how to begin learning.
If you have any questions or want any personal advice, let me know.