Over the course of many years, I’ve heard many variations of the same question “How do I learn programming?” Normally, I’m caught off-guard. I don’t know the answer. Things are constantly changing, and what was around “back then” may not be around now. Plus, I don’t exactly remember all of the steps I took to learn programming. Finally, the way I learned programming doesn’t make sense these days. Technology is much different - you wouldn’t consider dialing into a BBS or reading the manual that came from your computer, would you?
Recently, I was asked this question, but for an even nobler reason. Someone wanted to help their child to learn programming. As a mentor, an older brother, an “elder programmer” as some kids might say, I was struck with a new and unique desire to put together a better answer to this question. I am very excited to see this next generation get involved.
So without too much more rambling, let’s talk about some resources.
One quick note. Not everyone learns the same way. I’m going to do my best to point out resources and things that I know about that can help with learning programming. Some of these might be a great fit for you, others might want to make you pull your hair out. Pick what works best. Also, since I tend to work in internet technologies, my suggestions will be slanted this way.
Visual learners may benefit from video content and walkthroughs. Some video content is self-guided and others are interactive.
Udacity and Udemy are similar sites where you can pay to watch and participate in video-based learning.
If you’re looking for computer security related classes, check out Kali Linux Training or StationX Cyber Security
Don’t forget, you can find many conference videos on YouTube as well. For example, check out Goto 2017 Web Assembly.
Finally, if you find someone that you like to learn from, they might actually have their own video content. Wes Bos is a good example of this.
Books and Reading
If text is more your thing, don’t forget about the online resource guide, technical blog, or books!
If you’re into college-based curriculum, you can check out sites like Harvard Extension School and Tufts University.
Google provides the Web Fundamentals online resource guides.
When it comes to books, there are a number of them. It depends on if you’re looking for more hands-on guides like You don’t know JS: ES 6 & Beyond or more theory-based books like the Gang of Four’s Design Patterns (or if you’re looking for PHP Design patterns, you know about this right?)
Don’t forget about your locally library!
When it comes to technical blogs, you can find people that you might want to learn from and subscribe to their entries. Or, you can start exploring on a site like DZone. I recommend using something like Feedly to manage your RSS subscriptions.
If you’re working in the open source world, you should check out Github. This holds tons of projects, all of them looking for help! You can go to the issues section, grab one labeled
great first issue or something like that, and try to participate. You can learn so much from watching others and participating yourself.
Check out meetup.com for meetups and programming groups near your area. Just search the topic or area of programming you’re interested in. For example, if you’re looking for PHP programming groups, you might find PHP Meetups. If you’re looking for general programming, you’ll find a lot of options as well. Meetups tend to be gatherings of like-minded people who all enjoy working on a particular type of programming. Don’t be discouraged if you don’t know tons - meetups are for you. Everyone has to start somewhere - and people who attend meetups are welcoming. They’re spending their free time gathering and talking about programming, so they’ll be welcoming.
As with all pursuits, having a good mentor is great, too. I recommend finding a mentor who can help direct you along the path. Mentors aren’t there to solve your problems, just to send you in the right direction. With people I mentor, I basically tell them that I want to help them not make the same mistakes I did. That doesn’t mean they won’t make new and unique mistakes, but we won’t be repeating the past between ourselves.
Official schooling is not on my list of suggested ways to get started. Don’t get me wrong, there are a lot of people who are trying and doing a good job teaching at universities. But, there are a lot of out of date and subpar options as well.
A few things, in my opinion, to remember about schooling and programming:
You don’t need a computer science degree. It can help, but experience or portfolio is generally more important.
Tech schools offer more hands-on get-a-job right away teaching. Universities tend to focus more on theory. If you’re doing to go this route, get a degree, not a certificate.
Bootcamps can’t guarantee you results. There is nothing wrong with the theory as far as I’m concerned, but it’s only one narrow experience. Usually these aren’t worth the money, but your mileage may vary.
How To Get Started?
The answer to that is really simple. Just stop reading this and start now. Pick an open source project and go through the issues and participate. Or, even better, think of a project you’d like to use, and build it. For example, if you use a website but you wish something was better, just build a better version of it! (You don’t even have to rebuild the same site. Sometimes you can alter the content or functionality using things like Tamper Monkey). Sure, you could purchase a Google Home, but why not get an Adurino or a Raspberry Pi and make your own IoT device to control your home.
Just get started. Programming is pretty cool, too, because we’re making something from nothing. That also makes it less scary to get going. So what if you spend a whole weekend and you throw it all away? You’ve learned a lot and it didn’t really cost you anything! Just get started!