How to get started: Planning
Jakhongir RakhmonovLast time, I talked about the fact that software development is more than just writing code. Now you have a general idea of what the whole thing is about. Next, you need a plan. Yes, a plan. A real, actual, no-bullshit plan about how to go from knowing almost nothing to a real software developer.

Why do you need a plan?
Imagine you want to become a sportsperson. How do you train for that? Do you lift weights and run? Do you practice swimming? Maybe you should practice hitting a ball with a tennis racket? Or even better, maybe do all of those things so that you are prepared for any sport depending on opportunities you get in the future?
Do you see how crazy and complicated that sounds?
It is too broad. You need to choose your sport. Once you do that, you will know how to train for that sport and your life will be much easier and happier.
The same is true with software development. Rather than "learning to program" or "becoming a software developer", you should come up with a specific goal.
Examples: "Python Backend Developer", "Node.JS developer", "Data Scientist". The more specific you are, the easier everything is going to be.
How do you plan?
First of all, you need to honestly analyze where you are right now and what things you need to learn.
Do you have any programming experience?
Have you ever built an application, or are you starting completely from the beginning?
Do you know anything about databases, source control, unit-testing, debugging, software development methodologies?
Next, ask yourself what kind of software development you want to do.
Game development? Backend? Frontend? Mobile Development? Design? Data Science? Machine Learning? Do some research on your own to find what best fits you. As discussed above, be as specific as possible.
Now you have a goal. It is time to work backwards from that.
What do you need to learn? How do you want to craft your resume and portfolio? What schools or programs should you enroll in? What internships or even jobs do you want to apply for?
A little overwhelming, I know, but don't worry. In the future posts, I will be covering as much as possible to make it easier for you.
For now, think about your plan. Think carefully and research.
Concrete Example
Goal: become a Python Web Developer.
Plan:
Learning:
- Learn the basics of Python.
- Learn about web development technologies like HTML, CSS and JavaScript.
- Learn how to write a simple Python web application.
- Learn about different frameworks developers use to build web applications in Python such Flask and Django.
- Learn some kind of database technology to use with Python such as PostgreSQL.
- Learn computer science basics such as Algorithms and Data Structures.
- Learn best practices for writing good code.
Preparing to get a job:
- Read descriptions of Python web developer jobs and find out what skills employers currently want.
- Write a list of local companies that you are likely to get a job or an internship.
- If possible, start attending meetups and conferences in your area.
- Start networking with other developers, preferably with Python developers.
- Build a portfolio of a few apps to demo your skills.
- Practice coding interviews and if possible, do mock interviews.
Getting a job:
- Let all the people in your network what you are looking for and tell them what value you can provide.
- Start applying for junior-level jobs or internships.
- After each interview, think about what happened and draw conclusions. Decide skills you need to work on.
Your plan doesn't have to be perfect at once. You can always change and adapt. However, if you don't have one, you will be running aimlessly in random directions, get frustrated and be more likely to give up. Also, if you have a rough plan, you ask much better questions while you are networking with more experienced developers.
In the next posts, I will try to help refine your plan even further and discuss what technical skills you are going to need.