Understand how things work in Python. Check out as many things as possible.
Day 1: 4 main concepts (4 hours): input, output, variable, conditions
Day 2: 4 main concepts (5 hours): list, for loop, while loop, function, module import
Day 3: Simple programming problems (5 hours): swap two variables, convert Celsius to Fahrenheit, calculate the sum of all digits in a number, check if a number is prime, generate a random number, remove a duplicate from a list
Day 4: Intermediate programming problems (6 hours): reverse a string (check for a palindrome), calculate the greatest common divisor, merge two sorted arrays, write a number guessing game, calculate age, etc.
Day 5: Data structures (6 hours): stack, queue, dictionary, tuples, linked list
Day 6: OOP - Object Oriented Programming (6 hours): object, class, method and constructor, OOP inheritance
Day 7: Algorithm (6 hours): search (linear and binary), sorting (bubble, selection), recursive function (factorial, Fibonacci series), time complexity of algorithms (linear, quadratic, constant)
Don't install Python:
I understand it sounds contradictory. But trust me. I know a lot of people who have lost all desire to learn anything after they were unable to install a development environment or software. I advise you to immediately get into the android application like Programming Hero or on the site Rep and start exploring the language. Don't set yourself the task of installing Python first unless you're very tech-savvy.
Second week: start software development (build project)
Gain software development experience. Try to use everything you have learned to create a real project.
Day 1: Familiarize yourself with the development environment (5 hours): The development environment is an interactive environment where you will write code for the largest projects. You must be familiar with at least one development environment. I recommend starting with VS code install Python extension or Jupyter notebook
Day 2: Github (6 hours): Explore Github, create a repository. Try to commit, push the code, calculate the difference between any two Git trees. Also deal with branching, merging and pull requests.
Day 4, 5, 6: Personal project (5 hours each day): Select one of the projects and start working on it. If you're out of ideas for a project, check out this list: some good python projects
Day 7: Hosting (5 hours): Understand the server and hosting to host your project. Set up Heroku and deploy your app build.
Why the project:
Just blindly following the steps in a lesson or video will not develop your ability to think. You must apply your knowledge to the project. Once you put all your energy into finding the answer, you will remember it.
Week three: get comfortable as a programmer
Your goal in week 3 is to gain a general understanding of the software development process. You won't need to hone your skills. But you need to know some basics as they will affect your day to day work.
Day 1: Database Basics (6 hours): Basic SQL Query (Create Table, Select, Where, Update), SQL Function (Avg, Max, Count), Relational Database (Normalization), Inner Join, Outer Join, etc.
Day 2: Use databases in Python (5 hours): Use a database framework (SQLite or Pandas), connect to a database, create and add data to multiple tables, read data from tables
Day 3: API (5 hours): Learn to call API, learn JSON, microservices, REST API
Day 7: Unit tests, logs, debugging (4 hours): Understand unit tests (PyTest), learn how to work with logs and check them, and use breakpoints
Real Time (Secret):
If you are sick of this topic and devote yourself to it, you can do everything in a month.
Learn Python all the time. Start at 8am and work until 5pm. Take a break for lunch and snacks (an hour in total)
At 8 am, make a list of the things you will study today. Then take an hour to remember and put into practice everything that you learned yesterday.
From 9 am to 12 noon, study and practice less. After lunch, pick up the pace. If you are stuck on a problem, search the web for a solution.
Every day, spend 4-5 hours learning and 2-3 hours practicing. (Maximum you can take one day off per week)
Your friends will think you are crazy. Do not disappoint them - match the image.
If you work full time or study at university, then you will need more time. As a student, it took me 8 months to do everything on the list. Now I work as a senior developer (senior). It took my wife, who works at the US central bank, six months to complete all the tasks on the list. It doesn't matter how long it takes. Finish the list.
Week Four: Get serious about getting a job (intern)
Your goal for the fourth week is to seriously think about getting a job. Even if you don't want to get a job right now, you'll learn a lot from the interview process.
Day 1: Recap (5 hours): Create a one-page resume. At the top of your resume, put a summary of your skills. Be sure to add a list of your projects with Github links.
Day 2: Website Portfolio (6 hours): Write some blogs. Add them to the previous site portfolio you made.
Day 3: LinkedIn profile (4 hours): Create a profile on LinkedIn. Bring everything on your resume to LinkedIn.
Day 4: Interview preparation (7 hours): Google the most frequently asked interview questions. Practice solving 10 programming problems that are asked in job interviews. Do it on paper. Interview questions can be found on sites like Glassdoor, Careercup
Day 5: Networking (~ hours): Get out of the closet. Start going to meetups, job fairs. Meet recruiters and other developers.
Day 6: Just apply for jobs (~ hours): Google βPython Jobsβ, look for jobs on LinkedIn and local job sites. Please select 3 jobs you would like to apply for. Customize your resume for each of them. Find 2-3 things on the requirement lists that you don't know. Spend the next 3-4 days sorting them out.
Day 7: Learn from rejection (~ hours): Every time you get rejected, identify 2 things you need to know to get a job. Then spend 4-5 days to hone your skills in these matters. Thus, after each rejection, you will become a better developer.
Ready for work:
The truth is that you will never be 100% ready to work. All you need is to learn 1-2 things very well. And familiarize yourself with other questions to overcome the barrier of interviews. Once you get a job, you will learn a lot from it.
Enjoy the process:
Learning is a process. There are bound to be challenges along the way. The more of them, the better you are as a developer.
If you can complete the list in 28 days, you're doing a great job. But even if you complete 60-70% of the list, you will develop the necessary qualities and skills. They will help you become a programmer.