I can give you some sure-fire ways to improve yourself as a developer. The goal should be to improve not with extraordinary effort, but with ease. Learning by smartly allocating time is the way to become a skilled developer, without so much trauma.
Table of Contents
Stay With One Language for the First Year
I recommend choosing a language with Object Oriented Programming (OOP) as that is a fairly difficult concept to grasp. My three favorites are Java, C# & C++.
The goal will be to learn language agnostic concepts. This is like running multiple threads, classes, casting, loops, generics, structs, pointers, oop, asynchronous programming, package management etc etc.
The reason to stick with one language is to learn as many of these concepts as possible without worrying about the syntax. In reality, something like Python is not a bad option either. Mostly, because of how easy every concept you can touch on can be.
The only problem with Python is, it is too easy. If you were to stick to Python for a year then switch to something like, C++, you would struggle, thinking the ease of python is normal, when it is not. Java is a good middle ground for this.
Another issue with choosing C++ first, is it’s too hard. You will think programming is only for high IQ individuals, when that is not really the case and you should just not give up.
The good thing about C++ though, it covers every concept in programming. So, if you stick to C++, learn how to use CMake, install dependencies and get into C++ super deep, you can quickly understand any programming language thereafter.
C++ is therefore a great language to become a master coder with projects out there.
Use Udemy Courses, Textbooks & Open Source Development to Improve
I recommend always spending a little money on your learning. The textbooks, not so much. Just get the pdf and use an app like Memex to annotate it like the Kindle app.
But yes, buy Udemy courses. They are worth it. The creators put their heart and soul into these tutorials to make it as easy as possible to learn the material. Pick a language and go through an entire Udemy course on the ins and outs of your chosen language.
The best ones to pick are the “zero to hero” type courses or masterclass courses. They should cost you $12-$20 and keep you learning at blazing speeds for a few months.
Its a good idea to keep notes as well during these courses & textbooks. For textbooks it is a good idea to pick ones that teach you the language. After seemingly mastering the language, then you can pick a text book on another topic.
The choice between Udemy courses and textbooks is personal. But learning from both gives a unique solidity to understanding a language so that is what I recommend. The best textbook brand I ever read was the HeadFirst series.
This brand always makes these really easy to grasp books that super amplify my understanding of the topic. They go really deep, highly recommend.
Find an Open-Source Community in Your Language
On GitHub there are free code sources which often come attached with an entire community surrounding the code source. You can learn the language by committing to these projects and talking with other people in their Discord, Telegram or other social networks.
I will list a few open source communities for you:
Java/Kotlin/Javascript: https://rune-server.org/index.php
C++: https://github.com/PanosK92/SpartanEngine
C++: https://github.com/drogonframework/drogon
Typescript: https://github.com/microsoft/vscode
Java: https://github.com/JetBrains/intellij-community
Python: https://github.com/kitao/pyxel
There are so many more out there but these are some I used. Your goal should be to find a community first. Interact with people and contribute to the source. Often inside these communities there are people waiting to teach you how to code and contribute to their source.
Notice a lot of them have to do with game development. In its raw form game development is a great way to learn coding. I do not mean using game engines, but rather, programming the games by some code itself.
Hang Around Other Developers Using Meetups, Open-Source Communities and School Events
So, a life changing meet with people can be any event from an open-source call, school event or Meetup. These are cheap and easy ways to improve without doing more than listening and interacting with people.
The main thing you want is to be influenced and not always taught. These other developers have perspectives, skills and understanding which they can share with you and normalize the advancement of your skills.
What I mean by this is they make being really good at tech seem common. This spurs your motivation, keeps you humble and induces a proper mindset. In addition, they may teach you some skill at depth and for your unique needs.
Anywho, I hope you learned something…
Happy coding!
Resources
Udemy: https://www.udemy.com/
Headfirst series: https://www.amazon.com/dp/B099NJ9DN2