An Average IQ Person's Guide To Become a Skilled Software Developer
Includes the names of YouTube channels and GitHub repositories
To become a developer, you don’t need to take any expensive Bootcamp or get an expensive computer science degree from any university.
If you want to learn to code. You can use the free resources and become a great developer.
YouTube will be your free university.
Reddit and Twitter will be the community you need to make friends and support. Stack Overflow will be the website to clear all your queries and doubts.
That’s enough. Here I have made a month-by-month plan for you to learn to program.
Month 1
Choose any programming language. Don’t waste your time overthinking which programming language you should use. The fundamentals of all programming languages remain the same.
It will be better if you start Python, Java or C++.
Resource for learning Java — Java 8 Full tutorial for beginners
Resource for learning Python — Python Full Course for Beginners
Your goal for this month is to focus on the basics of any programming language. You shouldn’t focus on more than one programming language at a time. As in your mind, you will mix up the syntax.
Don’t just watch the tutorial and think you’ve completed the course. You have code together with the tutor. You have to make an effort on your part. You need to make some code changes and see the result.
Month 2 and Month 3
Learn data structure and algorithms.
You can do it through online courses. You can even do it with the help of books.
You are learning this as you will be tested on data structures and algorithm skills in various company interviews.
An excellent resource is the MIT lectures. It is a good resource and will help you clear your basics. The professors who have taught these courses have a great command of the subject.
You can find the course here — Algorithms and Computation
You should not see the entire course at one time. You just have to watch a lecture and then go and solve related questions on Hackerrank. You can also choose easy questions on Leetcode.
Remember that you will not be able to solve all the questions at once. It will take some time to get used to those questions.
There will be situations where you won’t even be able to understand the question correctly. In those situations, you should not lose patience. Some questions are mixed and matched with various topics.
These two months will ensure that you have acquired problem-solving skills.
Make sure you don’t lose hope. This phase will be a bit difficult for you if you are a beginner.
Month 4
Once you have completed all the algorithms and data structures videos from the MIT lectures.
You have a solid understanding of the basics of computer algorithms. This month, if required to review all lectures at a fast speed. You must do that.
Now the remaining time should be devoted to practising questions about all the concepts you have learned in the course.
There are thousands of websites for you to practice questions. You just have to choose one or two and keep practising the questions.
Two major websites that are used globally include — Codeforces and Leetcode
Just focus on solving more problems to solve more questions using all the concepts you’ve learned.
Month-5
Even this month, you should spend half of your time practising more problems on data structures and algorithms.
You might be wondering why I am so focused on data structures and algorithms. As it is the only thing that will be tested in several companies.
It’s the hardest and most important part of becoming a software developer at any big tech company. Here are two more websites to practice questions — Hackerrank, Codechef
In this month, you need to find out what kind of developer you want to become. Many paths are available to become a software developer.
You can choose frontend development, backend developer, iOS development, or if you want to go with the cloud. This month is dedicated to discovering your interest and choosing what interests you.
Even if you can’t make up your mind this month. Don’t worry, we’ll discuss the path to becoming a frontend, backend, and iOS developer in the seventh month.
Month 6
You should spend this month learning about the basics of how to make a website.
A software developer needs to know how the web works. You should start with basic HTML, CSS, and JavaScript. Don’t skip this step, even if you don’t want to become a full-time front-end engineer.
As a software developer, other developers will expect you to know at least the basics of HTML, CSS, and JavaScript.
On Youtube, there are thousands of tutorials from which you can learn these things. You can choose any of the resources. When I was first learning there weren’t many youtube videos, I referred to the standard.
Create basic websites this month. If English is not a language you are comfortable with, you can choose videos in your native language. As tutors from all over the world are available on youtube.
To learn HTML— HTML Full Course Build a Website Tutorial
To learn HTML5 and CSS3 — Learn HTML5 and CSS3 From Scratch
Programming with Mosh Youtube Channel — HTML Tutorial for Beginners
To learn JavaScript — JavaScript Programming Full Course
Here is an excellent GitHub repository that contains a professional frontend template to create a professional website. — HTML5 Boilerplate
Key features of the GitHub repository
This is designed with progressive improvement in mind.
Includes Apache Server Config, which will help improve website security. It will also help improve the performance of the website.
CSS helper classes are also available. You can easily remove all the parts you don’t need. Easy-to-read documentation is available.
This repository provides you with tips and tricks to make you a CSS pro. — CSS Protips
Key features of the GitHub repository
As a developer, styling can get difficult at times. This repository will help you in your difficult moments while you style.
The contents of this repository have been translated into several languages.
Month 7
The first thing to learn this month is about version control. You should learn how version control works.
Git and GitHub are ways forward. Start with the basics of version control first, and then learn about GitHub in detail. It is very important to understand Github.
For more information on GitHub, see — Introduction to Git and GitHub for Poets. This is a little old video related to Git and Github. But the instructor has done a good job of helping you learn the concepts.
Here is one more video from Freecodecamp to learn GitHub— Git and GitHub for Beginners — Crash Course
Once you’ve learned how to work with version control, you’ll feel confident. Learning about Git and Github will take you no more than 10 days.
We have a lot of time on our hands this month. Remember that we’ve talked about deciding what kind of developer you want to become.
Frontend Developer
As you have already covered the basics of HTML, CSS and JavaScript in detail above. You are way ahead in your journey.
This time you need to review all the JavaScript concepts you have learned earlier. Now you need to cover it in detail.
You need to learn about — Promises, Closures, Generators and the scope of “this” for any function.
When you are done learning JavaScript, you should learn the frontend framework between React, Angular or Vue.js
You can choose any of the three, but there seems to be more demand for React developers these days. Also, it’s one of my favourites, yes you can call me partial towards React.
Here are some of the important courses available on Youtube:
You should learn any framework and try to build projects that you can show recruiters from various companies.
Good projects work like magic.
Here is an excellent GitHub repository that contains a list of all the items you need to have or test before launching your website— Front-End-Checklist
Key features of the GitHub repository
Almost all the items provided in the checklist are required for most projects. You can also skip some of the items if they are not essential for your project.
In this repository, there are three levels of flexibility. If the item is recommended, your project may or may not require it. You can even skip the recommended items.
If the item is highly recommended, you have to choose not to omit those elements in any project. If you omit any of the highly recommended items, it can affect performance and SEO.
Certain items can never be skipped. This repository also covers those items.
Backend Developer
In the sixth month, you have already learned the basics of HTML, CSS and JavaScript. This will help you on this journey to becoming a back-end developer.
You should start this month by reviewing all the concepts you have learned previously. Once you are done with the review. You can choose between Django and NodeJs.
Why am I saying pick between these two? As they are a bit easy to learn as a beginner. If you choose Django, you must first learn Python and then only you can advance.
If you choose Node.js, you need to learn JavaScript in detail. These days, the demand for Node.js developers has increased frequently. As many companies want to hire a JavaScript developer.
Here are some great courses to learn as a backend developer:
Here is an excellent GitHub repository that gives you NodeJs best practices — Node Best Practices
Key features of the GitHub repository
This repository is a collection of all the top-ranked content on Node.js best practices. You can learn about Node's best practices in this repository. This will help you when you create your next Node project.
It is currently a growing list. A series of new best practices are added each week. This keeps you updated.
Has 80 best practices, a style guide, and architectural patterns.
You can also contribute to this list by correcting code errors and doing a translation.
iOS Development
To learn iOS development, you need to learn swift first. Swift is a programming language made for writing iOS apps.
I am not an expert in iOS development. I haven’t written a single line of code using a swift programming language.
If you want to develop apps for iOS devices, you first need to find the right person to guide you through this entire journey.
I can share some videos I found on Youtube about iOS development.
The most important thing to becoming any kind of developer is to create projects and not get stuck in tutorial hell.
If you become too dependent on tutorials, you won’t learn to explore yourself. You will remain in tutorial hell for years.
I will say follow the tutorial but experiment a lot with the code. You will break some things, but as a programmer, you can only learn from your mistakes.
Month 8
This month is dedicated to building projects.
You need to build projects with what you’ve learned so far and put every line of code on Github.
Once all of your code is available on GitHub, you can share it with anyone.
You can also use other tools to host some of your live projects. You will learn many new things while making the project live on the web.
You could also contribute to open-source projects. Several projects have been open-sourced by companies and they want to improve the software.
You could start contributing to open source and build a good network of people who are there to help you.
Whatever you’re building keep sharing it publicly. Use Twitter, and LinkedIn or write blog posts on various platforms.
Sharing things in public will draw recruiters to you. Recruiters from various companies are active on these platforms and are looking for quality people.
Blogging and writing about what you are constantly learning will work in your favour.
Here is an excellent GitHub repository to help you with a real example of an application. — Realworld
Key features of the GitHub repository
If you are someone who is learning to code, this repository can help you learn different frontend and backend frameworks. You can learn to solve real-life problems using various frameworks.
If you are a developer who wants to switch from a frontend or backend framework, you can use this repository to help you learn through real-world applications.
This repository allows you to choose any frontend framework and any backend framework. After deciding which framework to use, you can use that framework to see how they feed the real world through a fully designed full-stack app called “Conduit.”
Month 9 and Month 10
If you’ve started contributing to open source, continue your journey and share your work publicly. The learning will quickly compound and people will start looking to you for help.
In addition, you must learn about the fundamentals of computer science. It is important in your journey to becoming a developer.
Here I have mentioned all the important topics that you should learn. Feel free if you want to explore any topic in detail.
Object-oriented programming concepts: OOP concepts.
Important topics to be covered in Object Oriented Programming(C++)
Concepts of OOPS.
Types of Polymorphism.
Virtual functions — Runtime Polymorphism.
Inheritance — Types, Virtual class, Dreaded Diamond problem(Imp).
Constructor and Destructors- Virtual Destructor, Private Constructor, and Destructor.
Smart Pointer.
Singleton class.
Friend function and friend class.
Here are video lectures on object-oriented programming by freeCodeCamp— Object-Oriented Programming with Python
Database management system: SQL queries.
SQL queries.
Normalization — Meaning, Reason for normalizing tables, Different Normal Forms.
Lossless and Lossy Decomposition.
Different types of keys in a table — Primary, Composite, Candidate, Super Key.
ER model -Meaning and Components.
File Structure — B-trees, Indexing.
Concurrency issues.
Here are the video lectures on SQL by Freecodecamp — SQL Tutorial Full Database Course for Beginners
Operating system: operating system and its types.
Operating Systems and its types.
Process Management — Attributes, States of Process.
CPU Scheduling Algorithms — FCFS, SJF, SRTF, Round Robin, Priority Scheduling.
Process Synchronisation — Necessary Conditions, Bakery Algorithm, Producer-Consumer Problem, Dining Philosopher Problem, Read-Write Problem.
Mutex and Semaphores — Important.
Threads — Important.
Deadlocks — Necessary Conditions, Banker’s Algorithm, Deadlock Prevention, Avoidance, Recovery, Correction.
Memory Management -Multi-partition, External and Internal Fragmentation, Paging, Segmentation.
Virtual Memory -Demand Paging, Page replacement algorithms, Thrashing.
File allocation — Continuous, Linked, and Index File allocation.
Disk Scheduling Algorithms — FIFO, SCAN, C-SCAN, LOOK, C-LOOK.
Month 11 and Month 12
Apply for jobs.
If you have been sharing your journey in public. Many recruiters would have approached you. If they haven’t contacted you, you need to go look for them on your own.
Start applying for jobs on various portals. This is the time you need to apply and approach people on various social platforms.
Many people won’t respond to your messages, so don’t lose hope. But few people will be willing to help.
Be on the lookout for people willing to help. Ask them for a referral and start preparing for your interview.
Since you’ve spent a lot of time learning about data structures and algorithms, you need to go back and brush up on those skills again.
Keep giving the interview and reviewing your projects. In a few months, you would get your first job as a software developer.
Here’s a great GitHub repository to help you prepare for interviews— Awesome Interview Questions. In this repository, you will find interview questions related to various languages and frameworks.
Key features of the GitHub repository
Whenever a developer prepares for interviews, it is difficult to find new questions that are not repetitive. This repository will help you find some new questions in a particular language or framework.
It does not only consist of questions related to frameworks and languages. It also consists of interview questions related to database technology. Questions about Cassandra, Microsoft Access, and various other databases.
Questions about operating systems, algorithms, blockchain, design patterns, and data structures are also present.