This article is intentionally short for those with short attention spans who desperately need this information.
Many people in information technology and computer science want to do things to impress other people. To some people, a huge problem blocking them from achieving their goals is not being able to innovate for themselves. These kind of people watch tutorials, read books but see no progress in their skill level. It feels as though they have a mental block that prevents them from learning and remembering what they want to have learned. They keep watching tutorials and keep feeling the same thing disappointment. This situation is called "tutorial hell" and I was one of those people.
My penance in tutorial hell was mainly due to my lack of focus, my lack of a defined goal and developing imposter syndrome. Impostor Syndrome, in short, is the fear of being exposed as a fraud and is surprisingly common in the software development community. You might be able to hold your own in a conversation about software development but when it comes time to actually write something new, you may be at a loss or will have convinced yourself that anything that comes out of your keystrokes will be shit.
Allowing yourself this act way will introduce some of the mortal sins of software development into your projects such as: over-engineering, early-optimizing, and overthinking. Since you feel the need to prove how good you are to balance out how you feel about yourself, you will find yourself making your code more tricky, complicated and prone to bugs and vulnerabilities. This in turn will make you feel worse about yourself because now you are justifying your own self-accusations.
People like me often restarted projects I hadn't worked on for a few weeks, months or even days and never finished anything. There is a constant internalized struggle to prove yourself, to yourself, that you are indeed everything that you believe people perceive you as. Writing something from scratch or reinstalling a Linux distro over and over again compulsively was a huge problem for me as a programmer. I had persistent urges to start again from scratch and do it flawlessly—I needed to prove that I could do it. This mindset will wear away at your sanity like it did to me.
A lot of the hate I had for other developers was misdirected at the technologies they used, which I also learned to hate. I hated people getting stuff done in 20 line Python scripts and writing better web servers in Node.js. The hate originated from jealousy. I hated that I couldn't do what some people even younger than me could do. You'll count the words of an essay or article; count the lines of code in your project; count the hours spent staring at your screen getting next to nothing done while seemingly putting in more effort than they are.
One day, I broke down when I realized that how severe my condition had gotten and how deep of a hole I'd dug myself into. I realized that I hadn't accomplished anything significant despite my hours and hours of trying to learn new things and had no end-goal; no reason to be doing it at all. I hadn't been building my resume nor portfolio. I was just wasting time.
After finally overcoming my problems, I can now identify what actions need to be taken for other people who are currently in the same situation as I was.
You need to learn to follow a plan:
You never plan your projects well. During my schooling, I would often leave things to the last moment. To cut corners to have things done by a certain deadline, I would often write essays as I thought about what I wanted to say. There was no planning and most of the time, there was no problem. So, I continued to work this way all the way up to the 12th grade. If I was ever required to write an outline, the information I added to it was superficial and I never planned on using it seriously. This is also how I wrote my code.
Working this way will not scale up to bigger projects, which is why you've probably never created something more than a couple thousand lines of code. You need to really discipline yourself to develop a plan of action and stick to that plan. Be consistent and persistent. Have you ever considered that your work pales in comparison to the people you're so jealous of because you haven't thought out your projects thoroughly yet? This is most likely one of your biggest problems. Discipline yourself by denying the urge to deviate from the plan and get done what you have defined as the core functionalities.
Have a definite goal of where you want to be and focus all of your efforts to achieving it. That huge goal should be divided into smaller goals so you can have the satisfaction of progressing. Once you start to see some progress in the goals you want to accomplish, you will start to defeat imposter syndrome.
You Need to Learn to Focus on One Thing at a Time:
I've tutored hundreds of people online in subjects such as computers and math. One of the complaints that I hear the most is: "I hate reading on the screen. I can't focus for long." This is misdirecting your frustration on the medium that will help you. You can watch YouTube videos, read their comments, read Donald Trump's latest tweets and read their replies all day; but you can't read a book on your 144 Hz eye-care gaming monitor for more than 10 minutes or less at a time?
You need to strengthen your ability to focus—and I mean laser focus. Attention deficit disorders are over-diagnosed in our modern times and are treated as a beast that can only be tackled through the use of medication. Most of the time your "ADHD" or "ADD" is just your brain being fucking lazy because of how you've trained it over the years. The years of social media and the dopamine-saturated activities served to you 24/7 are affecting your ability to get things done and you must overcome this.
Not everything in life will bring you satisfaction right away and the things that do often lead to guilt issues. Be it the next YouTube video, another hour of video games, or compulsive masturbation; these things will often bring you a lot of guilt that is hard to live with while yielding nothing for your productivity.
Learning new skills does not supply a hit of dopamine for most people and is thus not interesting enough to focus on for long. You often lose interest in favour of mediums that can supply you with instant gratification. I have watched YouTube videos for over 18 hours straight and could never read a book for that long because it isn't as exciting. Doing any sort of hard work was harder than it should've been.
When you're reading a book or watching an educational video, your brain wanders as the time passes and you may not even notice this. Your eyes are still going through the motion of scanning pages but you aren't actually reading. Stop doing this, have some discipline!
Don't try to read three books at a time or take five courses at once. It doesn't work! You'll hate yourself when you give up and you will ultimately achieve none of your goals. You have time to learn what you need, you have your entire life ahead of you. You don't need to thrive for child-prodigy status amongst your high school friends—they won't care.
Anything can be learned with time, effort and the prerequisites. A genius is not born, a genius is made. You can teach yourself absolutely whatever you want—even the stuff you have been programmed to think is hard to understand. Calculus, Quantum Physics, Artificial Intelligence; none of these are actually brain-shatteringly hard, they just require the understanding of things beforehand. A wise man knows what he does not understand and can thus search for the answers he does not yet have. A fool does not know how much he does not know and therefore thinks himself intelligent.
After you've learned to focus, hold the information, and implement it from goal to goal...finish your fucking project! Every project you manage to finish, the process from conception to conclusion becomes so much easier. Don't start a project that you can't finish with your current abilities. Everyone wants to write a 3D game or personal AI or other large project but not everyone can. I don't care how smart you claim to be, complete smaller projects first—they are not beneath you.
I find that we as humans have a much easier time coming up with huge, visionary ideas rather than small, practical ones because everyone wants to be Steve Jobs. You need to look around you and create solutions to the little problems around you. Automate the boring stuff!
The more things you can put on your list of completed projects, the better you'll feel about your work and eventually you will beat your imposter syndrome. In my experience, prospective employeers are more likely to hire someone who has successfully completed multiple smaller projects than one huge project. You'll know how better to manage future projects with experience with managing a lot of projects to completion. This is painfully obvious and almost cliché but this is the absolute truth!
That's it for now!
Understanding how important it is that this psychological behaviour does not occur in anyone else is not just critical to do a good job at work but also to ensure the continuation of our species as a whole. I cannot allow other people to go through this anymore, it's killing developers. Save the developers! Save them from themselves!
To conclude with some sappy bullshit, you cannot just watch an Internet course on how to be successful where an instructor yells some cliché garbage like: "You need to be more assertive!", "Be forceful!", "You need to grab life by the balls!". No one person can help you turn around your life except you. You have to live with yourself for the rest of your life and you can't spend your years wishing you were better, hating yourself because of your own problems. Getting over self-inflicted behavioural habits is much like going through rehab; you must make a resolve to turn your life around to finally achieve the things you feel are important.
I wish you safe travels and happy hacking!