- How to find your first job?
- Step 0: Learn Programming with C++
- Computer Science Basics
- Learning Resources
- Build Projects with C++
- Step 1: Learn Python OR JavaScript
- Step 2: Learn Backend
- Step 3: Learn System Design & Architectural Patterns
- Step 4: Build REAL Projects
- Tips
How to find your first job?
How to get first job in IT? ROADMAP
Step 0: Learn Programming with C++
The fundamental principle of all programming can be divided into a three-stage sequence: INPUT → PROCESS → OUTPUT. At its core, every program is designed to handle data: it accepts data (Input), executes defined operations to transform it (Process), and then produces a result (Output).
Spend 3 months here.
Start with C++. Why? To build a strong foundation. Unlike simpler languages, it forces you to engage directly with core programming concepts, which will make you a stronger developer.
Don't try to master all of C++; focus on these universal basics first:
- Variables & Data Types: Storing different kinds of information (e.g., numbers, text).
- Conditionals (
if/else): Allowing your code to make decisions. - Loops (
for/while): Repeating a block of code multiple times. - Functions: Creating reusable blocks of code to perform specific tasks.
- Data Structures: Organizing data. Start with the basic array (a list of items).
- Classes: The "blueprints" for creating objects, which bundle data and functions together. This is the core idea of Object-Oriented Programming (OOP).
Computer Science Basics
- Harvard CS50 - Scratch, C, Arrays, Algorithms, Memory, Data structures, Python, SQL, HTML, CSS, JavaScript, Flask
- Crash Course Computer Science
- Computer Science for Everyone
- Book “Everything You Need to Ace Computer Science”
Learning Resources
- *RU C++ by Denis Markov
- C++ for beginners — CodeBeauty
- C++ Programming Tutorial — thenewboston
- C++ by The Cherno
- C++ by freeCodeCamp.org
- RU C++ Уроки - Гоша Дударь
- To read:
Build Projects with C++
Check my repository:
Once you understand these, apply them. Build simple projects with C++ to make these concepts stick.
Focus on understanding the 'why' and 'how' of your code. This means clearly identifying your program's inputs and predicting its exact outputs.
Master the skill of debugging by tracing your code line by line to follow its execution.
Ask AI to explain concepts and logic of the 'why' and 'how' code works. Avoid using it to simply write the code for you, as this skips the learning process.
Step 1: Learn Python OR JavaScript
The same way as you learned C++, you must learn Python or JS.
Here is the roadmap for Python:
- https://roadmap.sh/python for Python — learn everything that is listed here!! 📌
python-programming— my repository with the resources.
- https://roadmap.sh/javascript for JavaScript.
Step 2: Learn Backend
Check https://roadmap.sh/backend and
python-programming.
Why start with backend? To build strong fundamentals, to understand how data and logic works.
Learning plan:
- After learning programming with any language, then start in backend (this is what I did; you may need to change programming language to Python/JS.
- Backend basics: Learn any MVC framework (Django, FastAPI if Python). Understand how to build databases the right way and understand how they work.
- https://docs.djangoproject.com/en/5.2/intro/
- Watch some YouTube tutorials
- Read "Django for beginners" by Vincent W.
- Read "Django 3 by Examples"
- Backend REST APIs: Understand how to build REST APIs, learn designing CRUD apps. Understand the differences between HTTP methods.
- Read "Django for APIs" by Vincent W.
- Backend related concepts: understand authentication techniques, JWT based auth, learn about permissions and user roles, learn building multi-language backend.
- Backend caching and tasks scheduling: learn caching with Redis, and tasks scheduling with Celery.
- Deep-Dive Backend Foundations
- Database Deep Dive: Go beyond basic ORM models — learn SQL indexing strategies, transaction isolation levels, N+1 query problems, and database migrations.
- Asynchronous Programming & Concurrency: Async/Await event loops, threads vs. processes, and handling background tasks cleanly.
- Load Testing & Performance: Locust or k6 to benchmark API performance under stress.
- Learn Git, and learn using GitHub, and making well documented READMEs (how to run a project, with tech stack did you use, and a 1 minute YouTube DEMO — so that the person who sees your GitHub project can understand what you build).
- Learn frontend. Why? To have basic knowledge in frontend is nice, because in the end you are a software engineer in the end — problem solver/builder/contributor).
- Web design in 4 minutes
- CS50: Web Programming Course
- Learn DevOps tech stack (basically, understand how to deploy your app in cloud — Digital Ocean, AWS, how to set up CI/CD with GitHub Actions, GitLab, Jenkins, containerization).
- Learn testing (unit, integration, end-to-end UI testing with tools like Selenium/PlayWrite, learn mocking/patching).
- Deep dive into Python and Backend Deep dive into programming — Python & Backend
Understand how the Internet works, OSI & TCP/IP models, DNS, HTTP, REST API.
Resources:
Resources:
Resources (HTML, CSS, Bootstrap, JavaScript)
Step 3: Learn System Design & Architectural Patterns
Moving from Junior to Middle engineer requires going beyond CRUD APIs and syntax.
To read:
Architecture:
- SOLID Principles
- Architectural Patterns: Clean Architecture, Hexagonal (Ports & Adapters), and Domain-Driven Design (DDD), learn how to decouple business logic from databases and frameworks
- Design Patterns: Cover essential patterns (Repository, Factory, Strategy, Adapter)
Step 4: Build REAL Projects
Here are the some project ideas:
Coding project ideas for learning & leveling up programming skills
Build projects that people want and can use instantly — in-build AI projects 🔥, automation systems, or CLI tools & frameworks.
Integrate AI. The future is for software engineers who have strong AI knowledge.
Think in terms of smart features, not generic platforms. For example:
- NOT e-commerce website, BUT app with a feature that can search a product with picture in specific region. Like GOOGLE-LENZ.
- NOT a platform where users manually post events, build a service that crawls the web to automatically aggregate all events in a given region."
Tips
- Focus on 1 thing! Start and finish it.
- Surround yourself with other people who are learning. Teach each other.
- Learn and code every day, consistency is important.
- Take notes. Like I do.
- Learn to ask GOOD questions to others.
- G: Give context on what you are trying to do, clearly describing the problem.
- O: Outline the things you have already tried to fix the issue.
- O: Offer your best guess as to what the problem might be. It helps the person who is helping you not only know what you're thinking but also know that you've thought of something yourself.
- D: Demonstrate what's going on. Include the code, the tracing error message, and an explanation of the steps you followed that resulted in the error. That way, the person helping doesn't have to try to recreate the problem.