So you want to learn to code? My personal advice would be to attend a bootcamp, because they offer a structured curriculum, mentors, dedicated learning time, collaboration and networking between students.
Unfortunately, not everybody who wants to learn to code can afford the money and time commitment that a bootcamp requires.
Luckily, there's an alternative that many prominent software developers have chosen: the self taught route. When teaching yourself to code, you learn on your own schedule using free or paid online / offline resources.
But in order to be successful on this self learning route and jump from beginner developer to junior developer quickly, you will need to incorporate some of the magic of bootcamps into your self taught journey. In this article, I’ll be sharing how you can do that.
Before we get started, you should know that this article was originally a talk I gave at the Developers In Vogue MTB session. I decided to turn it into an article for more accessibility after receiving some good feedback.
So grab a cup of coffee or your favorite soda, get a pen and notepad, and jot some notes down. I’ll also be dropping some random quotes here and there, so brace yourselves ?.
So how do you get started?
There are five phases you should go through when teaching yourself to code:
- Pick a niche.
- Find structured learning resources for your niche.
- Build something, anything!
Let's go through each phase in more detail.
Pick a Niche
“If you want to succeed, limit yourself.”
When starting out on your self taught developer journey, it's important that you pick a niche. This makes sure that you don't overwhelm yourself. It limits your learning and gives you the opportunity to devote your attention to a small subset, so you can create an entry point.
Software development is very versatile and comes in different forms. Start by getting an overview of what programming and software development in general involves.
Here are 2 good resources to give you an overview of what programming and software development careers are all about.
- How to Become a Full-Stack Web Developer in 2020, by Colby Fayock
- Introduction to Programming and Computer Science on the freeCodeCamp YouTube channel
After you’ve gotten a general overview, you should do some inner questioning to settle on a field that really excites you. Answering the questions below should help pick your niche.
- What do you hope to achieve by learning to code? Do you want to make money freelancing, get a good job, or build your startup idea?
- What kind of systems do you want to build? Web (front end or back end), mobile (Android or iOS), desktop, embedded, data analytics, and so on.
This doesn’t mean that you can’t try out new fields or experiment later on in your career, but get started with one.
Find structured learning resources for your niche
Congratulations on picking a niche amidst all the choices out there.
The next thing to do is to come up with a progressive list of topics/technologies you need to learn for your niche and find structured learning resources on those topics.
When deciding which learning resource to go for, choose those that have structural progression and code along exercises for practice. Be sure to take note of these points below:
- What languages and technologies are used in this field? Make a list of the minimum you need to learn to achieve your goal from the previous step. The emphasis is on minimum here, simply because you shouldn’t wait to learn everything in your chosen field before taking the first step towards your goal. You’ll be waiting a really long time.
- What tools do you need? Find out the tools you need to learn. A code editor? Some software? Go ahead and install them.
- What’s the learning order? Most fields require that you learn one tool/language first before another. Remember to always start with the fundamentals and move on from there.
If you have any further questions regarding a particular niche, you can use Twitter or Facebook to find people who are active in the niche you’ve chosen. Drop them a message and get straight to the point on what they can help you with. You’ll be amazed how much people in the tech community are willing to help.
For Twitter, here is a thread listing active people in different tech fields on twitter that you can follow and are open to answering questions related to their field by Hacksultan.
And you'll find a list of great free learning resources at the end of this article.
“If you chase two rabbits, you will not catch any”.
Great, you’ve done it. You’ve figured out what you need to learn to smash your goals and you’ve also found a learning resource to use. Now it's time to learn those things sequentially, not simultaneously.
The first thing to do is to set aside time for your learning. Set a specific time every day during your daily schedule within which you’ll learn and be selfish about it.
Two hours of learning every day is a lot better than 15 hours of learning in one day, per month. Here, consistency is key. You want to learn to get a job? Then you’ve got to learn like it's your job until you get one.
Also, for effective learning, you have to set weekly goals so you can hold yourself accountable.
Studies have shown that people who consciously set goals are more likely to achieve things. And people who go the extra mile of writing down those goals are most likely to get things done.
What do you want to know or be able to do at the end of the month? How will you structure your learning per week to be able to achieve that? Write it down.
It's also important that you remember to focus on your outlined learning plan and your chosen learning resource.
In the tech-sphere, there’s always a shiny new object - something new to learn. Don’t get carried away or overwhelmed, that’s why you’ll be needing a lot of focus. One completed tutorial is better than 10 sampled tutorials.
Build Something! Anything.
"The difference between you and those with talent is practice; a lot of it."
As a beginner developer, it's easy to get stuck in the tutorial zone, or "tutorial hell". A lot of people get stuck there, and stay beginners for way too long. This is where you watch tutorial after tutorial without ever getting your hands dirty.
Building projects is not mutually exclusive to the learning phase. You have to constantly iterate between learning and building because learning never actually ends.
This is why I emphasized choosing learning resources that feature a lot of code-along projects to get you started practicing. Make sure to code along and not just watch. This helps you get started making something.
One way to get some practice is, at the end of every module, think of features that you can add to the project that you’ve coded. Just try to build something with the new knowledge that you have gained.
It doesn't have to be too fancy. The most important thing is that you write code, run into errors, google how to debug it, and gain more understanding. Practice solidifies knowledge, so practice. 1 completed project is better than 10 watched tutorials.
You can use google to find project ideas, or check out these fun ones.
For project ideas, check out these fun ones or sign up on DevProjects. DevProjects is a free community where people can learn programming by working on curated projects from different stacks. Each project is designed by senior mentors and developers to help bridge the learning gap between theory and real-world code.
To network simply means to learn in public and put yourself out there. You don’t stand to gain much if you’re a silo. So, how do you put yourself out there?
Join a community & Attend Meetups
A community challenges you and inspires you at the same time. You become aware of people who are in the same field as you are, with the same struggles you have. You’ll also get the opportunity to collaborate and form lifelong friendships.
Here is a list of some global remote tech communities you can join by Bolaji Ayodeji. Also look for local communities in your city too.
Opportunity no longer comes to the most qualified – it goes to the most visibly qualified.
Selling yourself means talking about yourself and what you’re currently doing. This gives you more exposure and could open up a lot of opportunities for you.
Set up a GitHub account and push code there. Start a twitter account and talk about what you’re learning or building.
Asking engaging questions is another way to network and introduce yourself to other people. There is really no shame in asking questions.
If you get stuck on a particular problem, use social media and your physical connections to your advantage. Learn to slide into people's DMs and emails. The only reason you may not get a reply is if you don't know how to word your request well.
Tip: When reaching out, it’s best to send a few prepared questions as opposed to just sending a ‘Hi’ and asking for their time.
You should put together a list of questions that will answer the challenges you’re currently facing. You’re more likely to get a response if someone knows upfront what kind of time commitment they’re making.
A sample message could be:
“Hello, my name is <insert name here>, I hope you’re doing fine. I have been seeing your content for a while and I see you’re knowledgeable in <insert field here>. I’ve been trying to understand <insert challenge here>. I have tried <insert approaches you've taken to try to solve your challenge> Could you help <insert what you need>. Thanks.”
I hope this article has brought some clarity to your journey on learning to code as a beginner.
One last thing: coding is difficult, and learning on your own can be even tougher. You’ll definitely come across some bad days.
Just remember to go easy on yourself on days when things don’t make any sense. In the long run, your consistency and perseverance towards learning will definitely pay off.
Now go on and be great!
Here is that list of free learning guides/resources for different fields that should help you get started.
Front end Web Development:
- Frontend Developer Learning Guide by Ire Aderinokun
- freeCodeCamp's Responsive Web Design Certification and Front End Libraries Certification
Back end Web Development:
- How to learn android development from Mindorks
- Android Basics By Google
- Developing Android Apps by Udacity
Cloud & DevOps
Also, if you have a few bucks to spare and want to invest it in your learning, the below resources will give you structured materials and access to a large community of learners. I recommend these paid resources because I’ve used them myself:
- The Complete Web Developer in 2021: Zero to Mastery
- Master the Coding Interview: Data Structures and Algorithms