However, I always felt that something was missing, and I still do - so here goes. I'm joining all tech evangelists on a common mission to change the world (or at least guide a few aspiring programmers in the right direction).
There are typically a few things that someone completely new to programming will consider. I'm going to blast through them as if I was going back to point 0, wondering about the fastest way to become a paid programmer in 2017 and beyond.
If you want to learn something, you google it and pick a guide (from tens of different guides in the form of articles, videos, comics and downloadable PDFs). But let's not get ahead of ourselves - traditional universities and educational institutions still exist, right?
Is it worth your time to spend countless hours at a university, where the goal is impractical (to get good enough grades to pass and get a title at the end)? Where most of the time is typically spent on gossip and partying? Where programming isn't the only thing that you're going to be learning?
Academic institutions were the main birthplaces of grounbreaking scientific innovation in the 20th century. The models and theories that our current world is based on originated in public educational institutions. For instance the predecessor of the internet, ARPANET, was invented at Cambridge (the one in the state of Massachussets, not in the UK) in cooperation with the US Army.
But the 1970's are long gone, at the time of writing it's 2017. A time when the internet itself has helped us to realise 2 big problems with traditional universities (ironic, isn't it?):
- Courses are inherently based on outdated teaching programs
Online education is progressing at an ever faster pace, and apparently market analysts think it will continue to grow (I definitely read it somewhere, but at the moment I can't find a reliable source to back me up on it... was it a secret that I was supposed to keep? Can anybody supply a good source, or am I mistaken?).
You can already go through a full curriculum of programming courses on Coursera, do it in months instead of years, AND learn from the most up-to-date materials presented by people active in the industry. Actually, it's even easier now that you have much more educational materials than Coursera available online. But you'll have to read on to learn about those, for now let's move on to the second problem with universities.
- Teachers rarely have practical knowledge
Aspiring programmers are looking to learn how to code as fast as possible, often in order to change their life around and find a properly paying job. They're not going to be excited about a "Introduction to Information Technology" course taught by an old fat guy who can't even use PowerPoint properly (what, you've never been to a course like that?). Actually, I think nobody ever is excited about a course like that (but unnecessary college courses are a whole other topic...).
Aspiring programmers are not typically looking to explore the complexities of the world of software, or learn all the maths behind the engineering problems that have led to the discovery of the internet.
Aspiring programmers just want a better job that will pay a liveable wage for a change.
As public institutions with traditions, universities are not going to help you get a job quickly (unless it's Stanford or MIT but let's not mess about, if you're reading this then you're neither from Stanford, nor MIT).
Despite these 2 big problems, I'm not saying that Universities aren't necessary anymore. We need institutions that accumulate the brightest people who aren't necessarily motivated by money in their research. And they're great places for young people who aren't in a hurry to get a better job.
But they're not a place for you, if you're looking to start earning as a coder in a few months instead of a few years.
Private Coding Schools
There are good and bad ones, and all of them exist for a reason. As long as the demand for programmers keeps growing, entrepreneurs will try to fill the gap and make some money in the process.
That's why coding schools typically entice you with courses covering the most commonly used technologies, and try to out-do each other in special learning methods, or systems, or whatever. But that's all marketing.
The reality often is that entrepreneurs don't care much about filling the employment gap in the programming industry. As it often happens in business, coding schools can also suffer from the "money first, value never" syndrome. If you're going to pay for a school where you're uncertain of both the curriculum and the teachers, just do yourself a favor and at least read until the "online courses" section, because you really don't have to pay.
Books, Hackathons and Conferences
Read books. Insightful advice, right? But there's a twist - don't just read programming books (here's a list of my recommendations if you need some programming gems). Read something like Developer Hegemony every now and then, or a bit of philosophy. It will remind you about the human aspects of programming.
Hackathons are great, go to them. Even if you're unable to participate yet, try to get in anyways. You'll meet plenty of like-minded people, see how cool the community is and how awesome programming can get. You'll have to look for hackathons in your area if you want to attend, but I'm pretty sure you should find something.
Conferences are a bit more boring, because they've always been the business guys' eldorado, not a coders' place to hang out. But if it's tech-focused, then there might cool sessions (sometimes there's live programming). You meet people from the industry that might be interested in hiring you, or working with you in the future.
If you really don't want to attend, then maybe watch a few videos? Great conferences that most people will never be able to attend often publish videos of notable talks or sessions (kind of like TED) for the internet to enjoy. You can find really smart and inspirational talks, like this talk from one of the most important people in the computer business, given at the UX Week. Or more specific ones, like these videos from various .NET events.
Let's get into the most interesting, juicy, fabulous part - online resources to learn programming. Before I proceed, let me warn you about one source of paid online courses: StackSkills. They often get you excited with large packages of courses that are supposedly worth thousands of $$$, but cost no more than a 100$ for a limited amount of time. If you fall for the trick, you're not going to learn much, just get annoyed at a bunch of Indian guys that thought (or were convinced) they had the capability to teach other people programming over the internet (and they don't).
Now to the juicy juicy, the cream of the crop, the absolute BEST EVER resource to learn programming right now.
If you leave this article, sign-up for it, start coding and don't stop for a few months - then after those few months you will be a programmer that's able to make a living off of it. Seriously.
And then there are other resources. The great ones are a diamond dozen, so allow me to list a few great ones in no particular order, as I highly encourage you to check out all of them and choose those that satisfy your needs the best:
On most of the above sites, the courses could be called "traditional". Codecademy is probably the most innovative of all these, seeing that it was probably the first to allow you to just start coding and learn as you do it (FreeCodeCamp took this idea and made it 100% free, whereas Codecademy became freemium over time).
But sometimes magical people, who exist on the internet only to give value, create awesome things that have great educational value. And I encourage you to look for these things, cherish them for yourself and always share them with others. Things like:
That last one fits kind of weirdly. But Physics are the very FUNDAMENT of the internet, of our reality. If you can learn Physics for free from one of the leading scientific minds of the 20th century, then I think it's worth sharing a link like that in any article. :)
There are also very specific communities, and more and more of them are set-up on Slack. Like the devspl community for Polish programmers. Look for these and join the good ones. Don't forget about Facebook groups - just maintain quality control and join groups where there is no sh*tposting, just discussion and exchange of valuable insights. Some of you may know that I'm the admin of .NET Developers Poland FB group, which I also invite you to join. :)
How To Teach Your Kids Programming
If you want your kids to learn programming, there are several places you can go to online. Scratch is probably the most popular one, and it may surprise you to learn that it's already 10 years old.
It also has 15 mln registered users, which makes it easy to recommend it as a good starting point. Microsoft recently came up with the MakeCode initiative. MakeCode contains three online IDEs: Adafruit, Minecraft and Micro:bit. It's all quite unusual and pretty exciting, and I encourage you to check it out. The interesting part is that hardware is also involved here. You can easily create a program and upload it to dedicated electronics for a more complete experience.
Where Is The Best Knowledge?
With that you probably now know better how you can become a (better) programmer. Depending on which programming level you are at the moment. What's most important is that you simply start doing it - start coding, and do it regularly. It's like any other skill, it has to become a part of you and what you do everyday if you really want to achieve something.
At some point in your journey you will probably have to find a great software company. Look for places where unorthodox ideas are always welcome and supported. Surround yourself with great people and learn the value of your time.