Before I get into this article, I would like to sum it up and not waste your time:
Find your own way, and find it slowly
I realize this goes against the barrage of marketing for paid courses, books, and boot camps that want you to believe that you can learn a new trade in a week (or even less!).
This is of course my own experience. I began my journey in 2004 when Doom 3 was the benchmark for all new graphics cards.
I have noticed that as well as the number of resources being a lot more abundant as years went on: so has the commodification of these resources.
There are a lot of free resources out there. Starting with the library (as we didn’t have broadband initially) and then onto many free tutorial websites.
There are some great paid resources as well as bad free resources, and vice versa. However, I think its wise to bear in mind the author’s intent for creating these resources. A free resource might be an authentic effort to impart knowledge, shameless self-promotion or even both!
A savvy seller of courses is intent on selling courses, for example. His interest is going to be on after selling you part one, selling you part two. If you not confident without his resources, but believe he can help you if you spend enough money - then he has successfully locked you into his brand.
To summarise:
Avoid spending money when you don’t know what to spend money on yet.
You will use a myriad of different resources on your path. I would be very suspicious of any single resource or person claiming to hold all the answers - as you are not talking to a teacher, but a salesman at that point.
My own path was not a straight road. It was an overgrown hedge maze.
I used a myriad of different resources over my journey to wrap my head around the most basic of programming fundamentals including:
I learned a surprising amount from chatting to (self proclaimed) IT professionals over various games and chatrooms. Some of these connections even landed me a free FTP Server account to learn my trade without any ads.
Some of the games even had internal scripting languages and map editors. It was these tools that I really started investing a lot of time in, and without even knowing it at the time was where I cut my teeth on the fundamentals of programming.
Making simple teleports and eventually even more complicated scripts was where I gained a lot of experience using loops, conditional branches and of course gained lots of experience debugging the many bugs I myself added.
So to summarise:
Learn your fundamental programming principles via whatever engages you in an enjoyable way
To elaborate further on this point; I believe it is essential that you initially enjoy working with the code and projects you using to learn basic principles.
You need to write a lot of bad code. You need to make lots of mistakes. A boot camp or crash course will let you know what to do, but you won’t understand why you are doing it. You’ll be a monkey copying another monkey.
When things go wrong. I mean really wrong (people start shouting and crying) you’ll find that you only have yourself to solve the problem.
Google is indifferent to your particular issue. Your colleagues are too busy preserving their own livelihoods to get burnt by your garbage fire.
Some people fall apart during these times. I’ve seen developers with university educations behind them, thousands of pounds of courses and resources throw their hands up saying “I don’t know”.
However when it comes to sticking your hands inside the hot mess of a codebase someone else has written, and then promptly fled to another company, you need to to have had the chops developed to work it out and get it done.
These skillsets of:
These are just some of the essential assets you need to embody to really be of any use in the industry.
The point I am trying to make is that it does not matter what language you start in, or what methods you use to get started. A developer is not defined by their syntax, IDE, or even their internal ideologies and philosophy.
Its all the above and more combined. The sum is greater than its parts.
“You are what you repeatedly do” - Aristotle
To get started you need to get started. It doesn’t matter where you start, just start somewhere that is at least enjoyable or interesting to yourself.
Get used to this feeling of not knowing and having to go out and teach yourself from scratch.
Finally
Get used to this feeling of not knowing what you are doing. The more you know the more you know you don’t know.
If you want a quick and dirty roadmap of what specific languages you should start with then I have another article here.