Alright! You better grab some coffee, this post will take some time.
This article won't be technical. Rather, it will be a friendly talk where I share my thoughts on certain aspects of the journey.
I believe we can all agree that being a self-learner can be a pain, finding the right resources, choosing the correct tools, or keeping going on without giving up. It's even worse when it comes to learning software development since the options are just vast.
In this article, I'll try to explain my way of doing things as a self-learner and beginner.
These things can be relatively subjective. Everyone's journey is unique and what is correct for me might not be valid for you. Still, I want you to stick around because these are from my experience, and might give you some insight into the journey you are about to start. Or if you're already on the journey (Hourraay!), at the very least you have an excuse to drink one more cup of coffee.
I am a former teacher that loves tech stuff. I've already started learning software development twice before and failed both. The reason? I didn't have solid motivation back then. Yes, I loved learning and coding but these alone are not enough to keep you on the road.
You need a reasonable motivation to keep on going. Why do you want to step up and do the hard work? For what purpose? Money? Love? (Kidding. You're gonna be a developer. No love for you). Hack NASA? Create malware for your noisy neighbor's computer? Asking these questions will help you find whether it is worth trying or not.
Learning coding is 100% rewarding. But, it is difficult. Having solid motivation will push you even in your darkest moments. (aka trough of sorrow)
Learn how to learn
Imagine trying to solve a problem without knowing the most efficient methods. Yeah, you can always find your own way but sometimes there is no need to reinvent the wheel. This would cost you time. And time is the most valuable asset of our lives.
Before committing to learning, you should first get a hold of the most effective methods about how we learn. Everyone’s learning style differs but there are a couple of core concepts that you better check.
- Active recall
- Spaced repetition
- Practice/project-based learning
I’m not going to dive deep into these concepts but I will leave here some links to awesome people that explain better than I could ever do.
- Ali Abdaal has a fantastic video about the active recall
- And check this awesome video for spaced repetition
When you are learning to code, the best thing you can do for your development is to get your hands dirty. You have to build, break and rebuild.
Set your goal
Now, let’s get serious. What is your goal? It seems like finding your motivation but they’re different. Motivation will push you but your goal will lead you.
Your goal will be your destination. And you will create your road map according to your target. If you’re not sure about where you are going, the chances are that either you’ll get lost on the road or it’ll take you longer than it’s supposed to be.
This goal should be clear and realistic. Shooting for stars might be good but it must be also achievable otherwise you might get demotivated.
As a wise man once said: “Do not start your days like an accident”. Plan and do the things that will get you closer to your goal.
Choose the right tool
You wouldn’t use a screwdriver to hammer in a nail, right? (Unless you're chaotic neutral) When it comes to software development, there are always too many great tools you can choose. And basically, you can’t go wrong with any of them.
But you must choose your tools wisely. They exist for a purpose. When you choose any of them, you must first consider your goal. We have to choose the ones that will help us reach our goal. It will be difficult to decide as you start. What programming language should you choose? What library, what framework... Here are a couple of things to help you out:
- Check the industry demand. How popular is it?
- Check the community. Eventually, you will need help at some point. A supporting community will be helpful.
- Is it beginner-friendly? Easy to learn compared to counterparts? Nothing is easy. But there are certainly some easier options to start with.
Find good resources
As a beginner, what frustrated me the most was outdated content and lessons. You start and follow step-by-step instructions but it doesn’t work or throws you some nasty errors that you can't figure out because something had changed over the years.
I love reading. But especially I love reading documentation. You have to turn reading documentation into a habit. Most of the time, what you are looking for is right there in the doc. You don't need to watch 1-hour long tutorial first.
I usually read the docs first and then watch a tutorial to see how other people or professionals approach it. This gives me a good understanding.
You can also find many great content creators and teachers on the internet. There are lots of free courses. When it's time to watch some tutorials or find a good course about something I wonder, these are the things I check:
- Is the content or subject up to date? (Some concepts or fundamentals don’t change that often so keep that in mind)
- Are the instructions and explanations clear and systematic? I don't want to get confused even more.
- Is it exactly what I am looking for? Time is important. Do not waste it.
Another piece of advice is that do not run from one tutorial or course to another without completing it. You don't need to watch dozens of videos. You need just one or two good ones and start practicing.
In my honest opinion and talking from my experience, discipline is the most important aspect of our learning journey. Discipline creates habits, habits make routines, and routines become who we are daily.
Ever heard "consistency is the key"? That's 100% correct. It's our everyday effort that brings us success. The smallest daily effort has a big impact on our life.
So you have to create your own discipline. Some days you will feel like not coding or working on your project. Your discipline will push you in those times.
Sometimes it will feel like you are not smart enough to learn to code or you don't understand why this, why that, but I can tell you this with 100% confidence: you got this! Just keep going, things will always click.
It's a wrap
Thank you for reading. I hope this can help you in your (future) career as a developer. And what are your tips for being a successful developer?
If you have any suggestions or tips feel free to leave a comment or contact me on Twitter. See you next time!
If you'd like to go even further and support my work, I'm telling you: I won't stop you.