Advice to Beginners
So, a piece of advice for all new programmers that want to find the best way to progress.
When I first started, I had this set list of things that I believed to be critical to being an elite-grade programmer, some of which was actually detrimental to my ability to perform. Here is some advice you should heed, because I have learned it the hard way.
1. Cater your tools to you, but don't overdo it.
I used to believe that using terminal editors, and more "hardcore" (difficult to use) editors would in the long run make me a stronger developer, and in turn, be capable of more. I learned this the hard way with Vim, an editor which I have significant appreciation for. Every time I opened up Vim in the last little bit, I just get an extreme sense of exhaustion, and I realized that I was overdoing the tool catering. VSCode, though it is missing a lot of really nice shortcuts that Vim has, doesn't make me feel exhausted. So I tweak it to have all the extensions I actually use, a great theme, and a font that I love (Fira Code, Dracula Theme, Git Lens, etc)
2. Your language of choice does *NOT* make you a lesser or better programmer.
3. Shit takes time
Programming is a long, arduous path. It is not easy, it is not simple, and it is a constant learning experience. You will never stop learning. The day you stop learning, you are no longer a "developer".
4. The basics are important.
The basic datatypes, algorithms, and design patterns are boring as fuck to learn. They're the most difficult things to get through, but once equipped with these, they come in play as some of the most critical pieces of knowledge you should know.
5. Code is meant to be read.
Write your code so most people can understand what is going on. I can elaborate on this further, but generally, follow a consistent style, add comments, and be vigilant with formatting the code to be as expressive as possible with as little code as possible. So, don't instantiate an object, then assign to each individual field after it without some formatting. Add some spaces so the start of the word lines up.
6. You are not Linus Torvalds.
This was a serious confidence killer for me. I was always comparing myself to the greatest programmers there are out there, and if I wasn't at least "close", I was never good enough. I can firmly confirm that this line of reasoning is *bullshit*. I mean it. If you know the basics, and textbooks don't really offer too much anymore, you're good.
7. Proof of your work is more powerful than your certifications.
Your GitHub/GitLab/Project Repos are more critical than any piece of paper you could ever have. If you have just something on your GitHub, solving actual problems, you will get further than just a cert/degree. So, think of a project and work on it. If you give up on the project, /state why you gave up/ in the description.
8. Put yourself out there.
If you don't have a job yet in development, put yourself out there. The world will not give you what you do not ask and work for, so work for what you want, and ask for work. Ask for what you're worth, and check yourself that you're being reasonable. If you do not have the balls to apply and go to interviews, why would the world give you a job?
9. Don't be an elitist.
Elitism will cost you more jobs, more time, more head ache, and more suffering than you could imagine. I have not experienced this myself, but I've been witness to the side effects. The elitist programmers who talk about "perfect code" are the ones that never get anything done, aren't fulfilled in their careers, and learn the slowest. Dogma and elitism will kill your future harder and faster than mistakes.
10. Always remember what you love about your craft.
There will be periods of time that stretch for weeks where every day you go "God damn I hate this", and you forget why you do this. But seriously, take some time and remember what you love, why you love, and how you love your craft. If you're not doing this because you love it, get out of the way so someone who wants it has a chance. Do something that actually speaks to you.
That summarizes a list of things that I have learned in my time programming that I believe will be critical to the success of every and any programmer that is just getting started. Never stop dreaming, noobs ;)
To add to that try not to get married to a language or a set way of doing things. I started out learning C++ in visual studio and never thought I'd leave Microsoft's ecosystem. After a year I learned that native development apps were becoming a dying breed and a few months with QT5 taught me that I didn't have the patience to be a C++ application dev.
I ended up doing some games programming because I enjoyed that but I got burn out again when I found out how much time has to be dumped into making a basic product plus my fading interest in games in general.
Eventually I found Java as my 2nd programming language, started learning about how to develop web apps and deploying them on a server. I've just this week finished transitioning from windows to a Linux server and desktop. I've only been at it for a couple of months but I'm much happier now because I can still do what I originally set out to do (make applications) but I'm doing it an environment that got me interested in computers again.
Regarding 7th point, should you put the best projects you've made on Github? Some of the best projects I've made were made in a team and my team generally wants to keep the code private so others can't copy it (in university). But i dont get it, you know, the best of my work is hidden because of that stupidity.
Sorry for the delay. Work has been insane.
Ensure you have your public and private contributions available so your activity is visible. But your code style and logical reasoning should be displayed in your projects. Your cleanest work should be on display for the world to see.