From 5138d2391e8a22c9672845fb9c1209deec18d7b5 Mon Sep 17 00:00:00 2001 From: Evgeny <14817858+salmer@users.noreply.github.com> Date: Sat, 4 Dec 2021 16:54:11 +0300 Subject: [PATCH] Shifted "code analyzers" sticker to the right place in graphml (#52) --- English/Graph/roadmap.graphml | 449 +-- English/Graph/roadmap.svg | 4990 ++++++++++++++++----------------- Russian/Graph/roadmap.graphml | 386 ++- Russian/Graph/roadmap.svg | 4748 +++++++++++++++---------------- 4 files changed, 5286 insertions(+), 5287 deletions(-) diff --git a/English/Graph/roadmap.graphml b/English/Graph/roadmap.graphml index d0d6750..7ac1e74 100644 --- a/English/Graph/roadmap.graphml +++ b/English/Graph/roadmap.graphml @@ -68,7 +68,7 @@ it's up to you to decide. :) - + Ability to learn @@ -90,7 +90,7 @@ it's up to you to decide. :) - + Thinking @@ -101,7 +101,7 @@ it's up to you to decide. :) - + Responsibility @@ -123,7 +123,7 @@ it's up to you to decide. :) - + Communication @@ -134,7 +134,7 @@ it's up to you to decide. :) - + Team work @@ -189,7 +189,7 @@ it's up to you to decide. :) - + Trends @@ -200,7 +200,7 @@ it's up to you to decide. :) - + Empathy @@ -211,7 +211,7 @@ it's up to you to decide. :) - + Concentration @@ -233,7 +233,7 @@ it's up to you to decide. :) - + Adaptability @@ -244,7 +244,7 @@ it's up to you to decide. :) - + Stress resistance @@ -266,7 +266,7 @@ it's up to you to decide. :) - + Understanding the distribution of roles in a team @@ -288,7 +288,7 @@ it's up to you to decide. :) - + Work in a distributed team @@ -299,7 +299,7 @@ it's up to you to decide. :) - + Providing feedback @@ -310,7 +310,7 @@ it's up to you to decide. :) - + Leadership @@ -321,7 +321,7 @@ it's up to you to decide. :) - + Mentoring @@ -332,7 +332,7 @@ it's up to you to decide. :) - + Delegation @@ -343,7 +343,7 @@ it's up to you to decide. :) - + Assigning and clarifying tasks to employees @@ -365,7 +365,7 @@ it's up to you to decide. :) - + Negotiation @@ -376,7 +376,7 @@ it's up to you to decide. :) - + English @@ -387,7 +387,7 @@ it's up to you to decide. :) - + Presentation @@ -398,7 +398,7 @@ it's up to you to decide. :) - + Written communication skill @@ -409,7 +409,7 @@ it's up to you to decide. :) - + Networking @@ -420,7 +420,7 @@ it's up to you to decide. :) - + Ability to listen @@ -442,7 +442,7 @@ it's up to you to decide. :) - + Ability to communicate ideas and thoughts within the team @@ -453,7 +453,7 @@ it's up to you to decide. :) - + Finding compromises @@ -464,7 +464,7 @@ it's up to you to decide. :) - + Dispute resolution @@ -497,7 +497,7 @@ it's up to you to decide. :) - + Prioritization @@ -508,7 +508,7 @@ it's up to you to decide. :) - + Taking decisions @@ -519,7 +519,7 @@ it's up to you to decide. :) - + Blind typing @@ -530,7 +530,7 @@ it's up to you to decide. :) - + Multitasking @@ -541,7 +541,7 @@ it's up to you to decide. :) - + Discipline @@ -563,7 +563,7 @@ it's up to you to decide. :) - + Initiative @@ -574,7 +574,7 @@ it's up to you to decide. :) - + Independence @@ -585,7 +585,7 @@ it's up to you to decide. :) - + Problem solving @@ -596,7 +596,7 @@ it's up to you to decide. :) - + Logical @@ -607,7 +607,7 @@ it's up to you to decide. :) - + Critical @@ -618,7 +618,7 @@ it's up to you to decide. :) - + Creative @@ -629,7 +629,7 @@ it's up to you to decide. :) - + Strategic @@ -651,7 +651,7 @@ it's up to you to decide. :) - + Accept criticism @@ -662,7 +662,7 @@ it's up to you to decide. :) - + Notify about mistakes in time @@ -673,7 +673,7 @@ it's up to you to decide. :) - + Admitting your mistakes @@ -684,7 +684,7 @@ it's up to you to decide. :) - + Analyze mistakes @@ -695,7 +695,7 @@ it's up to you to decide. :) - + Ask the right questions @@ -706,7 +706,7 @@ it's up to you to decide. :) - + Experimenting @@ -717,7 +717,7 @@ it's up to you to decide. :) - + Manage knowledge @@ -728,7 +728,7 @@ it's up to you to decide. :) - + Process information @@ -951,7 +951,7 @@ also useful to better interact with colleagues. - + Loops: for/while @@ -962,7 +962,7 @@ also useful to better interact with colleagues. - + Logical operations @@ -973,7 +973,7 @@ also useful to better interact with colleagues. - + Bitwise operations @@ -1083,7 +1083,7 @@ also useful to better interact with colleagues. - + References @@ -1094,7 +1094,7 @@ also useful to better interact with colleagues. - + Memory model @@ -1116,7 +1116,7 @@ also useful to better interact with colleagues. - + Raw pointers @@ -1215,7 +1215,7 @@ also useful to better interact with colleagues. - + weak_ptr @@ -1226,7 +1226,7 @@ also useful to better interact with colleagues. - + Namespaces @@ -1237,7 +1237,7 @@ also useful to better interact with colleagues. - + The overloading of regular set of operators for @@ -1258,18 +1258,6 @@ to use smart pointers rather than raw pointers. - - - - - - - Do not ignore warnings from compiler and static analyzer. -They are your friends, not enemies - - - - @@ -1348,7 +1336,7 @@ They are your friends, not enemies - + Object Oriented programming (OOP) @@ -1381,7 +1369,7 @@ They are your friends, not enemies - + Dynamic polymorphism @@ -1403,7 +1391,7 @@ They are your friends, not enemies - + The rule of zero/three/five @@ -1425,7 +1413,7 @@ They are your friends, not enemies - + Multiple inheritance @@ -1447,7 +1435,7 @@ They are your friends, not enemies - + Error codes @@ -1502,7 +1490,7 @@ runtime issues - + auto (automatic type deduction) @@ -1524,7 +1512,7 @@ runtime issues - + type casting @@ -1535,7 +1523,7 @@ runtime issues - + static_cast @@ -1557,7 +1545,7 @@ runtime issues - + dynamic_cast @@ -1568,7 +1556,7 @@ runtime issues - + reinterpret_cast @@ -1579,7 +1567,7 @@ runtime issues - + Undefined Behavior (UB) @@ -1590,7 +1578,7 @@ runtime issues - + Argument-dependent lookup (ADL) @@ -1612,7 +1600,7 @@ runtime issues - + Name mangling @@ -1634,7 +1622,7 @@ runtime issues - + iostream @@ -1645,7 +1633,7 @@ runtime issues - + Algorithms @@ -1656,7 +1644,7 @@ runtime issues - + Iterators @@ -1667,7 +1655,7 @@ runtime issues - + Containers @@ -1678,7 +1666,7 @@ runtime issues - + Date/time @@ -1718,10 +1706,10 @@ behavior. It depends on a platform environment, runtime context, etc. - + - 4 step + 4 step @@ -1777,7 +1765,7 @@ behavior. It depends on a platform environment, runtime context, etc. - + type traits @@ -1788,7 +1776,7 @@ behavior. It depends on a platform environment, runtime context, etc. - + SFINAE @@ -1810,7 +1798,7 @@ behavior. It depends on a platform environment, runtime context, etc. - + The partial template specialization @@ -1821,7 +1809,7 @@ behavior. It depends on a platform environment, runtime context, etc. - + RAII @@ -1832,7 +1820,7 @@ behavior. It depends on a platform environment, runtime context, etc. - + pimpl @@ -1843,7 +1831,7 @@ behavior. It depends on a platform environment, runtime context, etc. - + Erase-Remove @@ -1854,7 +1842,7 @@ behavior. It depends on a platform environment, runtime context, etc. - + Non-Copyable/Non-Moveable @@ -1865,7 +1853,7 @@ behavior. It depends on a platform environment, runtime context, etc. - + Copy and swap @@ -1887,7 +1875,7 @@ behavior. It depends on a platform environment, runtime context, etc. - + CRTP @@ -1909,7 +1897,7 @@ behavior. It depends on a platform environment, runtime context, etc. - + C++11/14 @@ -1920,7 +1908,7 @@ behavior. It depends on a platform environment, runtime context, etc. - + C++17 @@ -1931,7 +1919,7 @@ behavior. It depends on a platform environment, runtime context, etc. - + C++20 @@ -1953,7 +1941,7 @@ behavior. It depends on a platform environment, runtime context, etc. - + C++0x @@ -2113,7 +2101,7 @@ behavior. It depends on a platform environment, runtime context, etc. - + WinDbg @@ -2124,7 +2112,7 @@ behavior. It depends on a platform environment, runtime context, etc. - + GDB @@ -2283,7 +2271,7 @@ example: Visual Code, Atom, Sublime Text, etc. - + Working stages of compilers @@ -2294,7 +2282,7 @@ example: Visual Code, Atom, Sublime Text, etc. - + Features of a particular compiler @@ -2337,10 +2325,10 @@ creators only. - + - 5 step + 5 step @@ -2374,7 +2362,7 @@ creators only. - + CMake @@ -2396,7 +2384,7 @@ creators only. - + ninja @@ -2418,7 +2406,7 @@ creators only. - + vcpkg @@ -2440,7 +2428,7 @@ creators only. - + Conan @@ -2451,7 +2439,7 @@ creators only. - + nuget @@ -2473,7 +2461,7 @@ creators only. - + boost @@ -2484,7 +2472,7 @@ creators only. - + opencv @@ -2495,7 +2483,7 @@ creators only. - + poco @@ -2506,7 +2494,7 @@ creators only. - + Libraries inclusion @@ -2517,7 +2505,7 @@ creators only. - + protobuf @@ -2528,7 +2516,7 @@ creators only. - + gRPC @@ -2539,7 +2527,7 @@ creators only. - + fmt @@ -2550,7 +2538,7 @@ creators only. - + pybindll @@ -2572,7 +2560,7 @@ creators only. - + ranges_v3 @@ -2594,7 +2582,7 @@ creators only. - + opencl @@ -2616,7 +2604,7 @@ creators only. - + gtest/gmock @@ -2781,7 +2769,7 @@ and memory consumption. - + @@ -2822,7 +2810,7 @@ and memory consumption. - + Centralized @@ -2833,7 +2821,7 @@ and memory consumption. - + SVN @@ -2844,7 +2832,7 @@ and memory consumption. - + git @@ -2888,7 +2876,7 @@ and memory consumption. - + Code guidelines @@ -2910,7 +2898,7 @@ and memory consumption. - + KISS (Keep It Simple, Stupid) @@ -2921,7 +2909,7 @@ and memory consumption. - + DRY (Don't Repeat Yourself) @@ -2932,7 +2920,7 @@ and memory consumption. - + YAGNI (You Aren't Gonna Need It) @@ -2943,7 +2931,7 @@ and memory consumption. - + APO (Avoid Premature Optimization) @@ -2954,7 +2942,7 @@ and memory consumption. - + BDUF (Big Design Up Front) @@ -2987,7 +2975,7 @@ and memory consumption. - + Divide and Conquer @@ -2998,7 +2986,7 @@ and memory consumption. - + Logging and telemetry @@ -3031,7 +3019,7 @@ and memory consumption. - + Skill to review code @@ -3053,7 +3041,7 @@ and memory consumption. - + Implementation @@ -3075,7 +3063,7 @@ and memory consumption. - + Maintanance @@ -3086,7 +3074,7 @@ and memory consumption. - + Versioning @@ -3097,7 +3085,7 @@ and memory consumption. - + Unit tests @@ -3119,7 +3107,7 @@ and memory consumption. - + Functional tests @@ -3141,7 +3129,7 @@ and memory consumption. - + Software architecture and components design @@ -3163,7 +3151,7 @@ and memory consumption. - + Deployment @@ -3196,7 +3184,7 @@ and memory consumption. - + Code analyzers @@ -3218,7 +3206,7 @@ and memory consumption. - + Dynamic analyzers @@ -3240,7 +3228,7 @@ and memory consumption. - + C++ core guidelines @@ -3295,7 +3283,7 @@ and memory consumption. - + batch @@ -3328,7 +3316,7 @@ and memory consumption. - + CI/CD @@ -3339,7 +3327,7 @@ and memory consumption. - + Trunk Based Development @@ -3350,7 +3338,7 @@ and memory consumption. - + Zero downtime deployment @@ -3394,7 +3382,7 @@ and memory consumption. - + Usage of other programming languages @@ -3405,7 +3393,7 @@ and memory consumption. - + Language interoperability @@ -3475,6 +3463,18 @@ libraries in C#. + + + + + + + Do not ignore warnings from compiler and static analyzer. +They are your friends, not enemies + + + + @@ -3502,7 +3502,7 @@ libraries in C#. - + Component-based @@ -3524,7 +3524,7 @@ libraries in C#. - + Layered @@ -3535,7 +3535,7 @@ libraries in C#. - + Client-server @@ -3546,7 +3546,7 @@ libraries in C#. - + Microservices architecture @@ -3557,7 +3557,7 @@ libraries in C#. - + Event-driven @@ -3568,7 +3568,7 @@ libraries in C#. - + Plug-ins @@ -3579,7 +3579,7 @@ libraries in C#. - + REST @@ -3590,7 +3590,7 @@ libraries in C#. - + Service-oriented architecture @@ -3611,7 +3611,7 @@ libraries in C#. - + @@ -3652,7 +3652,7 @@ libraries in C#. - + Structural @@ -3663,7 +3663,7 @@ libraries in C#. - + Creational @@ -3674,7 +3674,7 @@ libraries in C#. - + OOP @@ -3696,7 +3696,7 @@ libraries in C#. - + UML @@ -3720,7 +3720,7 @@ libraries in C#. - + MVC @@ -3753,7 +3753,7 @@ libraries in C#. - + Onion @@ -3764,7 +3764,7 @@ libraries in C#. - + Hexagon @@ -3797,7 +3797,7 @@ libraries in C#. - + Behavior Driven Development @@ -3808,7 +3808,7 @@ libraries in C#. - + Domain Driven Design @@ -3841,7 +3841,7 @@ libraries in C#. - + Memory alignment @@ -3852,7 +3852,7 @@ libraries in C#. - + Memory management @@ -3885,7 +3885,7 @@ libraries in C#. - + Static library @@ -3896,7 +3896,7 @@ libraries in C#. - + Dynamic library @@ -3907,7 +3907,7 @@ libraries in C#. - + Stack @@ -3918,7 +3918,7 @@ libraries in C#. - + Global memory @@ -3940,7 +3940,7 @@ libraries in C#. - + Application memory @@ -3951,7 +3951,7 @@ libraries in C#. - + Virtual memory @@ -3984,7 +3984,7 @@ libraries in C#. - + Errors @@ -3995,7 +3995,7 @@ libraries in C#. - + Dead lock @@ -4017,7 +4017,7 @@ libraries in C#. - + Live lock @@ -4028,7 +4028,7 @@ libraries in C#. - + Starvation @@ -4061,7 +4061,7 @@ libraries in C#. - + Mutexes @@ -4072,7 +4072,7 @@ libraries in C#. - + Semaphores @@ -4083,7 +4083,7 @@ libraries in C#. - + lock-free @@ -4094,7 +4094,7 @@ libraries in C#. - + Event handling @@ -4116,7 +4116,7 @@ libraries in C#. - + Async @@ -4127,7 +4127,7 @@ libraries in C#. - + Process @@ -4149,7 +4149,7 @@ libraries in C#. - + Shared memory @@ -4171,7 +4171,7 @@ libraries in C#. - + Serialization @@ -4193,7 +4193,7 @@ libraries in C#. - + XML @@ -4204,7 +4204,7 @@ libraries in C#. - + Network @@ -4226,7 +4226,7 @@ libraries in C#. - + OSI @@ -4237,7 +4237,7 @@ libraries in C#. - + Sockets @@ -4270,7 +4270,7 @@ libraries in C#. - + UDP @@ -4281,7 +4281,7 @@ libraries in C#. - + File system @@ -4292,7 +4292,7 @@ libraries in C#. - + Task scheduler @@ -4303,7 +4303,7 @@ libraries in C#. - + Virtualization @@ -4325,7 +4325,7 @@ libraries in C#. - + VMware Workstation @@ -4336,7 +4336,7 @@ libraries in C#. - + Containers @@ -4347,7 +4347,7 @@ libraries in C#. - + Hyper-V @@ -4358,7 +4358,7 @@ libraries in C#. - + Docker @@ -4369,7 +4369,7 @@ libraries in C#. - + Cloud Services @@ -4391,7 +4391,7 @@ libraries in C#. - + Security @@ -4424,7 +4424,7 @@ libraries in C#. - + Multicore CPU @@ -4446,7 +4446,7 @@ libraries in C#. - + Input/output @@ -4457,7 +4457,7 @@ libraries in C#. - + Drivers @@ -4479,7 +4479,7 @@ libraries in C#. - + Graphics @@ -4490,7 +4490,7 @@ libraries in C#. - + Printers (printing) @@ -4512,7 +4512,7 @@ libraries in C#. - + OpenAL @@ -4523,7 +4523,7 @@ libraries in C#. - + DirectX @@ -4556,7 +4556,7 @@ libraries in C#. - + CUDA @@ -9162,7 +9162,7 @@ at the beginning. - + @@ -9188,7 +9188,7 @@ at the beginning. - + @@ -9201,7 +9201,7 @@ at the beginning. - + @@ -9345,9 +9345,9 @@ at the beginning. - + - + @@ -9360,7 +9360,7 @@ at the beginning. - + @@ -9373,7 +9373,7 @@ at the beginning. - + @@ -9386,7 +9386,7 @@ at the beginning. - + @@ -9399,7 +9399,7 @@ at the beginning. - + @@ -9484,7 +9484,7 @@ at the beginning. - + @@ -9625,15 +9625,16 @@ at the beginning. - + + - + - + diff --git a/English/Graph/roadmap.svg b/English/Graph/roadmap.svg index de9eef3..cd499d5 100644 --- a/English/Graph/roadmap.svg +++ b/English/Graph/roadmap.svg @@ -1,25 +1,25 @@ - + - + - + - - + + - + - + C++ developer @@ -27,11 +27,11 @@ - + - + Soft skills @@ -39,25 +39,25 @@ - + - + Hard skills - + - + - + At first, some of the skills may seem impossible to develop. However, we think differently. It is possible to work on each of the skills. Everything depends on your @@ -67,807 +67,807 @@ - - + + - - + + - - Ability to learn + + Ability to learn - + - + - + Manage mistakes - - + + - - + + - - Thinking + + Thinking - - + + - - + + - - Responsibility + + Responsibility - + - + - + Manage resources - - + + - - + + - - Communication + + Communication - - + + - - + + - - Team work + + Team work - + - + - + Emotional intelligence - + - + - + Understanding the development context - + - + - + Customer focus - + - + - + Technology - - + + - - + + - - Trends + + Trends - - + + - - + + - - Empathy + + Empathy - - + + - - + + - - Concentration + + Concentration - + - + - + Open-mindedness - - + + - - + + - - Adaptability + + Adaptability - - + + - - + + - - Stress resistance + + Stress resistance - + - + - + Working in uncertainty - - + + - - + + - - Understanding the distribution of roles in a team + + Understanding the distribution of roles in a team - + - + - + Support team members - - + + - - + + - - Work in a distributed team + + Work in a distributed team - - + + - - + + - - Providing feedback + + Providing feedback - - + + - - + + - - Leadership + + Leadership - - + + - - + + - - Mentoring + + Mentoring - - + + - - + + - - Delegation + + Delegation - - + + - - + + - - Assigning and clarifying tasks to employees + + Assigning and clarifying tasks to employees - + - + - + Planning and goal setting - - + + - - + + - - Negotiation + + Negotiation - - + + - - + + - - English + + English - - + + - - + + - - Presentation + + Presentation - - + + - - + + - - Written communication skill + + Written communication skill - - + + - - + + - - Networking + + Networking - - + + - - + + - - Ability to listen + + Ability to listen - + - + - + Persuasion - - + + - - + + - - Ability to communicate ideas and thoughts within the team + + Ability to communicate ideas and thoughts within the team - - + + - - + + - - Finding compromises + + Finding compromises - - + + - - + + - - Dispute resolution + + Dispute resolution - + - + - + Providing information to people outside the team - + - + - + Time management - - + + - - + + - - Prioritization + + Prioritization - - + + - - + + - - Taking decisions + + Taking decisions - - + + - - + + - - Blind typing + + Blind typing - - + + - - + + - - Multitasking + + Multitasking - - + + - - + + - - Discipline + + Discipline - + - + - + Persistence - - + + - - + + - - Initiative + + Initiative - - + + - - + + - - Independence + + Independence - - + + - - + + - - Problem solving + + Problem solving - - + + - - + + - - Logical + + Logical - - + + - - + + - - Critical + + Critical - - + + - - + + - - Creative + + Creative - - + + - - + + - - Strategic + + Strategic - + - + - + Systems - - + + - - + + - - Accept criticism + + Accept criticism - - + + - - + + - - Notify about mistakes in time + + Notify about mistakes in time - - + + - - + + - - Admitting your mistakes + + Admitting your mistakes - - + + - - + + - - Analyze mistakes + + Analyze mistakes - - + + - - + + - - Ask the right questions + + Ask the right questions - - + + - - + + - - Experimenting + + Experimenting - - + + - - + + - - Manage knowledge + + Manage knowledge - - + + - - + + - - Process information + + Process information - + - + - + Ability to gather, analyze, evaluate information and make decisions based on it. @@ -875,27 +875,27 @@ - + - + - + Reflection - + - + - + Calmly react to what people say. Most likely that they only consider their own context when they try to prove something. This is fine. Evaluate the usefulness of their @@ -904,14 +904,14 @@ - + - + - + Take challenging tasks in order to develop your skills and competencies, even when there is not enough knowledge/experience (skills will develop much faster @@ -922,14 +922,14 @@ - + - + - + You should be responsible for your professional development. Don't wait for the team lead to decide for you what to study. Do not forget that blind adherence to someone else's plan will sharpen your skills according to @@ -942,27 +942,27 @@ - + - + - + Self-organization - + - + - + The ability to provide the amount of information that is necessary to communicate to people with different backgrounds. @@ -970,27 +970,27 @@ - + - + - + Conflict solving - + - + - + If you read this it means you already understand why it is so important :) @@ -1001,42 +1001,42 @@ - + - + - + Look for like-minded people and join/create a community for experience exchange. - + - + - + You should study and observe contemporary trends to be competitive, as well as being able to adapt to them. - + - + - + Experienced developers should develop management skills and business communication skills to complete tasks efficiently. It is easier to do if you have developed emotional intelligence. For a junior developer, the skill is @@ -1045,1185 +1045,1165 @@ - + - + - + - - + + - + - - + + - - + + - + - - + + - - + + - + - + - + - + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - + - + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - + - + - + 1 step - + - + - + - + Basic operations - + - + - + Arithmetic operations - - + + - - + + - - Loops: for/while + + Loops: for/while - - + + - - + + - - Logical operations + + Logical operations - - + + - - + + - - Bitwise operations + + Bitwise operations - + - + - + Functions - + - + - + lambda - + - + - + Operators - + - + - + Data types - + - + - + Dynamic typing - + - + - + Static typing - + - + - + RTTI - + - + - + Pointers & References - + - + - + Codebase structuring - - + + - - + + - - References + + References - - + + - - + + - - Memory model + + Memory model - + - + - + Smart pointer - - + + - - + + - - Raw pointers + + Raw pointers - + - + - + Code splitting into headers/cpp files - + - + - + Scope - + - + - + Memory leakage - + - + - + Forward declaration - + - + - + unique_ptr - + - + - + shared_ptr - + - + - + Lifetime of objects - + - + - + new/delete operators - - + + - - + + - - weak_ptr + + weak_ptr - - + + - - + + - - Namespaces + + Namespaces - - + + - - + + - - The overloading of regular set of operators for - regular or custom types (structures/classes). + + The overloading of regular set of operators for + regular or custom types (structures/classes). - + - + - + To prevent memory leakage problems it is better to use smart pointers rather than raw pointers. - - - - - - - - - - Do not ignore warnings from compiler and static analyzer. - They are your friends, not enemies - - - - + - - + + - - + + - - + + - + - + - + - + - + - - + + - - + + - + - - + + - + - + - - + + - + - + - + - - + + - - + + - - + + - - + + - - - + + + - - - + + + - + - + - - - - - - - + - + - + 2 step - + - + - + - + Structures and classes - + - + - + Exception handling - + - + - + Overloading of functions - + - + - + Virtual table (vtbl) - - + + - - + + - - Object Oriented programming (OOP) + + Object Oriented programming (OOP) - + - + - + Exceptions - + - + - + Access violation - - + + - - + + - - Dynamic polymorphism + + Dynamic polymorphism - + - + - + Virtual methods - - + + - - + + - - The rule of zero/three/five + + The rule of zero/three/five - + - + - + Static polymorphism - - + + - - + + - - Multiple inheritance + + Multiple inheritance - + - + - + Diamond inheritance - - + + - - + + - - Error codes + + Error codes - + - + - + It's preferred to avoid multiple inheritance (excepting abstract classes) to prevent runtime issues @@ -2231,330 +2211,330 @@ - - + + - + - + - - + + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - + - + - + - + 3 step - + - - + + - - + + - - auto (automatic type deduction) + + auto (automatic type deduction) - + - + - + Language concepts - - + + - - + + - - type casting + + type casting - - + + - - + + - - static_cast + + static_cast - + - + - + const_cast - - + + - - + + - - dynamic_cast + + dynamic_cast - - + + - - + + - - reinterpret_cast + + reinterpret_cast - - + + - - + + - - Undefined Behavior (UB) + + Undefined Behavior (UB) - - + + - - + + - - Argument-dependent lookup (ADL) + + Argument-dependent lookup (ADL) - + - + - + Macros - - + + - - + + - - Name mangling + + Name mangling - + - + - + Standard library - - + + - - + + - - iostream + + iostream - - + + - - + + - - Algorithms + + Algorithms - - + + - - + + - - Iterators + + Iterators - - + + - - + + - - Containers + + Containers - - + + - - + + - - Date/time + + Date/time - + - + - + Multithreading - + - + - + Some of language constructions have non-declared behavior according to the ISO standard. In case of any error, it's not possible to predict further behavior. It depends on a platform environment, runtime context, etc. @@ -2562,642 +2542,642 @@ - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - + - - - + + + - - + + - - + + - - 4 step + + 4 step - - + + - + - + - + Templates - + - + - + Variadic templates - + - + - + The template specialization - - + + - - + + - - type traits + + type traits - - + + - - + + - - SFINAE + + SFINAE - + - + - + The full template specialization - - + + - - + + - - The partial template specialization + + The partial template specialization - - + + - - + + - - RAII + + RAII - - + + - - + + - - pimpl + + pimpl - - + + - - + + - - Erase-Remove + + Erase-Remove - - + + - - + + - - Non-Copyable/Non-Moveable + + Non-Copyable/Non-Moveable - - + + - - + + - - Copy and swap + + Copy and swap - + - + - + Copy on write - - + + - - + + - - CRTP + + CRTP - + - + - + Standards - - + + - - + + - - C++11/14 + + C++11/14 - - + + - - + + - - C++17 + + C++17 - - + + - - + + - - C++20 + + C++20 - + - + - + newest - - + + - - + + - - C++0x + + C++0x - + - + - + Idioms - + - + - - + + - - + + - + - - + + - - + + - - + + - - + + - + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - + - + - + 1 step - + - + - + - + Working with source code - + - + - + Text editors - + - + - + IDE - + - + - + Code editors - + - + - + Debugger - + - + - + Linters - + - + - + Knowledge of features and abilities (shortcuts, tools, plugins) - + - + - + Understanding of debugger messages - + - + - + Debugging symbols - - + + - - + + - - WinDbg + + WinDbg - - + + - - + + - - GDB + + GDB - + - + - + Choose one of the popular IDEs and study it well: Eclipse, MS Visual Studio, Qt Creator, JetBrains Clion, XCode, etc. @@ -3205,41 +3185,41 @@ - + - + - + Study how to use a debugger and all its features - + - + - + Choose one of the popular editors and study it well. For example: Notepad++, Atom, etc. - + - + - + The ability to work with a debugger via command line is a not common skill. It's sufficient to work with it via IDE. For example: set conditional breakpoints, etc. @@ -3247,228 +3227,228 @@ - + - + - + Learn about common errors (segfault, out of memory, access violation) and undefined behavior concept. - + - + - + Choose one of the popular editors and study it well. For example: Visual Code, Atom, Sublime Text, etc. - + - + - + - + - + - + - + - + - - + + - - + + - + - + - + - - - + + + - - - + + + - + - + - + - + - + 3 step - + - + - + - + Compilers - + - + - + Basic understanding of compilers stages - + - + - + Compilation of sources to object files (compilation) - + - + - + The object files linkage (linking) - - + + - - + + - - Working stages of compilers + + Working stages of compilers - - + + - - + + - - Features of a particular compiler + + Features of a particular compiler - + - + - + Each compiler has its nuances. It's good to know about them to prevent getting any trap:  Clang++/LLVM, Intel C++, MSVS C++, GCC, MinGW @@ -3476,14 +3456,14 @@ - + - + - + The compiler performs several stages of code compilation. It's good to know about all of them to better understand compilation issues. Deep knowledge is needed for compiler @@ -3492,1430 +3472,1430 @@ - + - + - + - - + + - - + + - - - + + + - - - + + + - - + + - - + + - - 5 step + + 5 step - - + + - + - + - + Build systems - - + + - - + + - - CMake + + CMake - + - + - + Makefile - - + + - - + + - - ninja + + ninja - + - + - + Package managers - - + + - - + + - - vcpkg + + vcpkg - + - + - + spack - - + + - - + + - - Conan + + Conan - - + + - - + + - - nuget + + nuget - + - + - + Libraries - - + + - - + + - - boost + + boost - - + + - - + + - - opencv + + opencv - - + + - - + + - - poco + + poco - - + + - - + + - - Libraries inclusion + + Libraries inclusion - - + + - - + + - - protobuf + + protobuf - - + + - - + + - - gRPC + + gRPC - - + + - - + + - - fmt + + fmt - - + + - - + + - - pybindll + + pybindll - + - + - + spdlog - + - + - + ranges_v3 - + - + - + tensorflow - - + + - - + + - - opencl + + opencl - + - + - + Frameworks - - + + - - + + - - gtest/gmock + + gtest/gmock - + - + - + Qt - + - + - + catch2 - + - + - + google profiler - + - + - + pytorch c++ - - + + - + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - + - - + + - - + + - + - + - + - + - + - + - + 1 step - + - + - + - + Computers Science - + - + - + Data structures - + - + - + Algorithms - + - + - + Boolean algebra - + - + - + Finite-state machines - + - + - + It's also good to know how to calculate algorithm complexity and memory consumption. - + - + - + - + - + - + - + - + 4 step - + - + - + - + Version control software - + - + - + Distributed - - + + - - + + - - Centralized + + Centralized - - + + - - + + - - SVN + + SVN - - + + - - + + - - git + + git - + - + - + Mercurial - + - + - + Best practices - + - + - + Code quality - - + + - - + + - - Code guidelines + + Code guidelines - + - + - + Principles of development - - + + - - + + - - KISS (Keep It Simple, Stupid) + + KISS (Keep It Simple, Stupid) - - + + - - + + - - DRY (Don't Repeat Yourself) + + DRY (Don't Repeat Yourself) - - + + - - + + - - YAGNI (You Aren't Gonna Need It) + + YAGNI (You Aren't Gonna Need It) - - + + - - + + - - APO (Avoid Premature Optimization) + + APO (Avoid Premature Optimization) - - + + - - + + - - BDUF (Big Design Up Front) + + BDUF (Big Design Up Front) - + - + - + Composition is preferably than the inheritance - + - + - + Occam's razor - - + + - - + + - - Divide and Conquer + + Divide and Conquer - - + + - - + + - - Logging and telemetry + + Logging and telemetry - + - + - + Code review - + - + - + Skill to read existing code sources - - + + - - + + - - Skill to review code + + Skill to review code - + - + - + Lifecycle stages of a software - - + + - - + + - - Implementation + + Implementation - + - + - + Testing - - + + - - + + - - Maintanance + + Maintanance - - + + - - + + - - Versioning + + Versioning - - + + - - + + - - Unit tests + + Unit tests - + - + - + Integration tests - - + + - - + + - - Functional tests + + Functional tests - + - + - + Performance tests - - + + - - + + - - Software architecture and components design + + Software architecture and components design - + - + - + Components integration - - + + - - + + - - Deployment + + Deployment - + - + - + Collecting requirements - + - + - + End of a software lifecycle - - + + - - + + - - Code analyzers + + Code analyzers - + - + - + Static analyzers - - + + - - + + - - Dynamic analyzers + + Dynamic analyzers - + - + - + Profilers - - + + - - + + - - C++ core guidelines + + C++ core guidelines - + - + - + Industrial standards - + - + - + MISRA - + - + - + Autosar - + - + - + Command line - - + + - - + + - - batch + + batch - + - + - + Powershell - + - + - + bash - - + + - - + + - - CI/CD + + CI/CD - - + + - - + + - - Trunk Based Development + + Trunk Based Development - - + + - - + + - - Zero downtime deployment + + Zero downtime deployment - + - + - + Creation of a software deployment package - + - + - + Documentation - + - + - + Installer package - - + + - - + + - - Usage of other programming languages + + Usage of other programming languages - - + + - - + + - - Language interoperability + + Language interoperability - + - + - + Naming conventions, tabs vs spaces, etc. - + - + - + To configure automated code formatting verification with one of the suitable utilities: clang-format, Resharper - code style, MSVS - code style. @@ -4923,14 +4903,14 @@ - + - + - + - Scripting - Functional - SQL like @@ -4939,14 +4919,14 @@ - + - + - + Sometimes it's needed to provide an ability to reuse a library written in a different language from another one. For example: to call C++ libraries in C#. @@ -4954,1705 +4934,1725 @@ - + - + - + Backward compatibility + + + + + + + + + + Do not ignore warnings from compiler and static analyzer. + They are your friends, not enemies + + + - + - + - + Software design - + - + - + Architecture styles - - + + - - + + - - Component-based + + Component-based - + - + - + Monolithic application - - + + - - + + - - Layered + + Layered - - + + - - + + - - Client-server + + Client-server - - + + - - + + - - Microservices architecture + + Microservices architecture - - + + - - + + - - Event-driven + + Event-driven - - + + - - + + - - Plug-ins + + Plug-ins - - + + - - + + - - REST + + REST - - + + - - + + - - Service-oriented architecture + + Service-oriented architecture - + - - + + - - + + - - + + - + - + - - + + - + - - + + - - + + - - + + - - + + - - + + - + - + - - + + - - + + - + - + - - + + - + - - + + - + - - + + - - + + - - + + - + - - + + - + - - + + - + - - + + - + - + - - + + - - + + - - + + - - + + - - + + - + - + - + - + - - + + - + - + - - + + - - + + - - + + - - + + - + - + - - + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + + + + + + + - + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - + 2 step - + - + - + - + Design Patters (GoF) - + - + - + Behavioral - - + + - - + + - - Structural + + Structural - - + + - - + + - - Creational + + Creational - - + + - - + + - - OOP + + OOP - + - + - + SOLID - - + + - - + + - - UML + + UML - + - + - + Architecture patterns - - + + - - + + - - MVC + + MVC - + - + - + MVVM - + - + - + Three-tier - - + + - - + + - - Onion + + Onion - - + + - - + + - - Hexagon + + Hexagon - + - + - + Methodologies of development - + - + - + Test Driven Development - - + + - - + + - - Behavior Driven Development + + Behavior Driven Development - - + + - - + + - - Domain Driven Design + + Domain Driven Design - + - + - + Memory - + - + - + Memory abstractions - - + + - - + + - - Memory alignment + + Memory alignment - - + + - - + + - - Memory management + + Memory management - + - + - + Binary units - + - + - + Executable file - - + + - - + + - - Static library + + Static library - - + + - - + + - - Dynamic library + + Dynamic library - - + + - - + + - - Stack + + Stack - - + + - - + + - - Global memory + + Global memory - + - + - + Heap - - + + - - + + - - Application memory + + Application memory - - + + - - + + - - Virtual memory + + Virtual memory - + - + - + Operating systems - + - + - + Multithreading - - + + - - + + - - Errors + + Errors - - + + - - + + - - Dead lock + + Dead lock - + - + - + Race condition - - + + - - + + - - Live lock + + Live lock - - + + - - + + - - Starvation + + Starvation - + - + - + Threads - + - + - + Concurrency - - + + - - + + - - Mutexes + + Mutexes - - + + - - + + - - Semaphores + + Semaphores - - + + - - + + - - lock-free + + lock-free - - + + - - + + - - Event handling + + Event handling - + - + - + Sync - - + + - - + + - - Async + + Async - - + + - - + + - - Process + + Process - + - + - + Interprocess communication - - + + - - + + - - Shared memory + + Shared memory - + - + - + Pipes - - + + - - + + - - Serialization + + Serialization - + - + - + json - - + + - - + + - - XML + + XML - - + + - - + + - - Network + + Network - + - + - + TCP/IP - - + + - - + + - - OSI + + OSI - - + + - - + + - - Sockets + + Sockets - + - + - + HTTP - + - + - + TCP - - + + - - + + - - UDP + + UDP - - + + - - + + - - File system + + File system - - + + - - + + - - Task scheduler + + Task scheduler - - + + - - + + - - Virtualization + + Virtualization - + - + - + VirtualBox - - + + - - + + - - VMware Workstation + + VMware Workstation - - + + - - + + - - Containers + + Containers - - + + - - + + - - Hyper-V + + Hyper-V - - + + - - + + - - Docker + + Docker - - + + - - + + - - Cloud Services + + Cloud Services - + - + - + Kubernetes - - + + - - + + - - Security + + Security - + - + - + Encryption - + - + - + MultiCPU systems - - + + - - + + - - Multicore CPU + + Multicore CPU - + - + - + NUMA - - + + - - + + - - Input/output + + Input/output - - + + - - + + - - Drivers + + Drivers - + - + - + Audio - - + + - - + + - - Graphics + + Graphics - - + + - - + + - - Printers (printing) + + Printers (printing) - + - + - + DirectSound - - + + - - + + - - OpenAL + + OpenAL - - + + - - + + - - DirectX + + DirectX - + - + - + Vulkan - + - + - + OpenGL - - + + - - + + - - CUDA + + CUDA - + - + - + Common skills - + - + - + Language tools - + - + - + Language syntax - + - + - + C++ Developer Roadmap - + - + - + About: - + - + - + C ++ is still one of the most popular development languages. There is quite a number of people that want to start learning it and become a C++ developer. They face questions like: "Where should I start? What and in what order should I study? What books should I read?" @@ -6665,27 +6665,27 @@ - + - + - + How to use: - + - + - + If you have any feedback or remarks don't hesitate to contact us. We really appreciate it. :) @@ -6696,79 +6696,79 @@ - + - + - + Feedback: - + - + - + Optional - + - + - + Junior - + - + - + Middle - + - + - + Senior - + - + - + The middle developer has the skills to create a design for new functionality as a part of @@ -6780,14 +6780,14 @@ - + - + - + The senior developer has the skills to create a design and make decisions for a @@ -6798,14 +6798,14 @@ - + - + - + The junior must acquire the following skill as soon as possible: to write @@ -6815,14 +6815,14 @@ - + - + - + The juniors should be aware of middle/senior skills. It's enough to have a basic @@ -6831,14 +6831,14 @@ - + - + - + The "steps" are presented on this map. They're intended to show an easy for newbies to @@ -6849,580 +6849,580 @@ - + - + - + Repository: - + - + - + https://github.com/salmer/CppDeveloperRoadmap - + - + - - + + - - + + - - + + - - + + - - + + - + - - + + - + - + - - + + - - + + - + - + - - + + - - + + - + - - + + - - + + - + - - + + - - + + - - + + - - + + - + - - + + - - + + - + - + - + - - + + - - + + - - + + - - + + - - + + - + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - + - - + + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/Russian/Graph/roadmap.graphml b/Russian/Graph/roadmap.graphml index aac302f..4fb79b3 100644 --- a/Russian/Graph/roadmap.graphml +++ b/Russian/Graph/roadmap.graphml @@ -112,7 +112,7 @@ - + Управление ресурсами @@ -178,7 +178,7 @@ - + Технологии @@ -189,7 +189,7 @@ - + Тренды @@ -200,7 +200,7 @@ - + Эмпатия @@ -211,7 +211,7 @@ - + Концентрация @@ -266,7 +266,7 @@ - + Понимание распределения ролей в команде @@ -277,7 +277,7 @@ - + Помощь @@ -288,7 +288,7 @@ - + Работа в распределённой команде @@ -299,7 +299,7 @@ - + Предоставление обратной связи @@ -310,7 +310,7 @@ - + Лидерство @@ -321,7 +321,7 @@ - + Наставничество @@ -332,7 +332,7 @@ - + Делегирование @@ -365,7 +365,7 @@ - + Переговорческие навыки @@ -376,7 +376,7 @@ - + Английский язык @@ -387,7 +387,7 @@ - + Презентация @@ -398,7 +398,7 @@ - + Навык переписки @@ -409,7 +409,7 @@ - + Нетворкинг @@ -486,7 +486,7 @@ - + Тайм-менеджмент @@ -497,7 +497,7 @@ - + Приоритезация @@ -508,7 +508,7 @@ - + Принятие решений @@ -519,7 +519,7 @@ - + Слепая печать @@ -530,7 +530,7 @@ - + Многозадачность @@ -541,7 +541,7 @@ - + Дисциплина @@ -552,7 +552,7 @@ - + Упорство @@ -563,7 +563,7 @@ - + Инициативность @@ -574,7 +574,7 @@ - + Самостоятельность @@ -585,7 +585,7 @@ - + Решение проблем @@ -596,7 +596,7 @@ - + Логическое @@ -607,7 +607,7 @@ - + Критическое @@ -618,7 +618,7 @@ - + Креативное @@ -640,7 +640,7 @@ - + Системное @@ -651,7 +651,7 @@ - + Восприятие критики @@ -684,7 +684,7 @@ - + Анализ ошибок @@ -695,7 +695,7 @@ - + Умение задавать правильные вопросы @@ -717,7 +717,7 @@ - + Управление знаниями @@ -728,7 +728,7 @@ - + Работа с информацией @@ -927,7 +927,7 @@ - + Базовые операции @@ -949,7 +949,7 @@ - + Циклы for/while @@ -960,7 +960,7 @@ - + Логические операции @@ -971,7 +971,7 @@ - + Битовые операции @@ -982,7 +982,7 @@ - + Функции @@ -993,7 +993,7 @@ - + lambda @@ -1015,7 +1015,7 @@ - + Типы данных @@ -1202,7 +1202,7 @@ - + Операторы new/delete @@ -1213,7 +1213,7 @@ - + weak_ptr @@ -1257,19 +1257,6 @@ - - - - - - - Не игнорируйте предупреждения компилятора -и статического анализатора. Они вам друзья, -а не враги - - - - @@ -1381,7 +1368,7 @@ - + Динамический полиморфизм @@ -1392,7 +1379,7 @@ - + Виртуальные методы @@ -1726,7 +1713,7 @@ - + @@ -1756,7 +1743,7 @@ - + Variadic templates @@ -1767,7 +1754,7 @@ - + Специализация шаблона @@ -1778,7 +1765,7 @@ - + type traits @@ -1789,7 +1776,7 @@ - + SFINAE @@ -1833,7 +1820,7 @@ - + pimpl @@ -1877,7 +1864,7 @@ - + Copy on write @@ -1888,7 +1875,7 @@ - + CRTP @@ -2037,7 +2024,7 @@ - + IDE @@ -2048,7 +2035,7 @@ - + Редакторы исходного кода @@ -2059,7 +2046,7 @@ - + Отладчик @@ -2092,7 +2079,7 @@ - + Умение читать сообщения отладчика @@ -2103,7 +2090,7 @@ - + Отладочные символы @@ -2264,7 +2251,7 @@ Qt Creator, JetBrains Clion, XCode и т.д. - + Компиляция кода в объектные файлы @@ -2297,7 +2284,7 @@ Qt Creator, JetBrains Clion, XCode и т.д. - + Особенности работы конкретного компилятора @@ -2348,7 +2335,7 @@ GCC, MinGW - + @@ -2378,7 +2365,7 @@ GCC, MinGW - + CMake @@ -2400,7 +2387,7 @@ GCC, MinGW - + ninja @@ -2422,7 +2409,7 @@ GCC, MinGW - + vcpkg @@ -2433,7 +2420,7 @@ GCC, MinGW - + spack @@ -2455,7 +2442,7 @@ GCC, MinGW - + nuget @@ -2477,7 +2464,7 @@ GCC, MinGW - + boost @@ -2488,7 +2475,7 @@ GCC, MinGW - + opencv @@ -2499,7 +2486,7 @@ GCC, MinGW - + poco @@ -2510,7 +2497,7 @@ GCC, MinGW - + Подключение библиотек @@ -2521,7 +2508,7 @@ GCC, MinGW - + protobuf @@ -2532,7 +2519,7 @@ GCC, MinGW - + gRPC @@ -2543,7 +2530,7 @@ GCC, MinGW - + fmt @@ -2554,7 +2541,7 @@ GCC, MinGW - + pybindll @@ -2576,7 +2563,7 @@ GCC, MinGW - + ranges_v3 @@ -2587,7 +2574,7 @@ GCC, MinGW - + tensorflow @@ -2598,7 +2585,7 @@ GCC, MinGW - + opencl @@ -2620,7 +2607,7 @@ GCC, MinGW - + gtest/gmock @@ -2631,7 +2618,7 @@ GCC, MinGW - + Qt @@ -2642,7 +2629,7 @@ GCC, MinGW - + catch2 @@ -2687,7 +2674,7 @@ GCC, MinGW - + @@ -2717,7 +2704,7 @@ GCC, MinGW - + Структуры данных @@ -2728,7 +2715,7 @@ GCC, MinGW - + Алгоритмы @@ -2750,7 +2737,7 @@ GCC, MinGW - + Конечные автоматы @@ -2761,7 +2748,7 @@ GCC, MinGW - + Также необходимо понимать, как вычислить сложность @@ -2925,7 +2912,7 @@ GCC, MinGW - + DRY (Don't Repeat Yourself) @@ -2936,7 +2923,7 @@ GCC, MinGW - + YAGNI (You Aren't Gonna Need It) @@ -2947,7 +2934,7 @@ GCC, MinGW - + APO (Avoid Premature Optimization) @@ -2958,7 +2945,7 @@ GCC, MinGW - + BDUF (Big Design Up Front) @@ -2969,7 +2956,7 @@ GCC, MinGW - + Композиция предпочтительнее наследования @@ -2980,7 +2967,7 @@ GCC, MinGW - + Бритва Оккама @@ -2991,7 +2978,7 @@ GCC, MinGW - + Разделяй и властвуй @@ -3013,7 +3000,7 @@ GCC, MinGW - + Ревью кода @@ -3057,7 +3044,7 @@ GCC, MinGW - + Реализация @@ -3068,7 +3055,7 @@ GCC, MinGW - + Тестирование @@ -3101,7 +3088,7 @@ GCC, MinGW - + Юнит тесты @@ -3134,7 +3121,7 @@ GCC, MinGW - + Производительность @@ -3156,7 +3143,7 @@ GCC, MinGW - + Интеграция компонентов @@ -3222,7 +3209,7 @@ GCC, MinGW - + Динамические @@ -3244,7 +3231,7 @@ GCC, MinGW - + C++ core guidelines @@ -3255,7 +3242,7 @@ GCC, MinGW - + Промышленные стандарты @@ -3299,7 +3286,7 @@ GCC, MinGW - + batch @@ -3321,7 +3308,7 @@ GCC, MinGW - + bash @@ -3332,7 +3319,7 @@ GCC, MinGW - + CI/CD @@ -3365,7 +3352,7 @@ GCC, MinGW - + Создание пакета поставки ПО @@ -3387,7 +3374,7 @@ GCC, MinGW - + Инсталлятор @@ -3398,7 +3385,7 @@ GCC, MinGW - + Использование других языков программирования @@ -3481,6 +3468,19 @@ MSVS - стиль кода. + + + + + + + Не игнорируйте предупреждения компилятора +и статического анализатора. Они вам друзья, +а не враги + + + + @@ -3497,7 +3497,7 @@ MSVS - стиль кода. - + Архитектурные стили @@ -3519,7 +3519,7 @@ MSVS - стиль кода. - + Monolithic application @@ -3530,7 +3530,7 @@ MSVS - стиль кода. - + Layered @@ -3541,7 +3541,7 @@ MSVS - стиль кода. - + Client-server @@ -3552,7 +3552,7 @@ MSVS - стиль кода. - + Microservices architecture @@ -3563,7 +3563,7 @@ MSVS - стиль кода. - + Event-driven @@ -3574,7 +3574,7 @@ MSVS - стиль кода. - + Plug-ins @@ -3585,7 +3585,7 @@ MSVS - стиль кода. - + REST @@ -3596,7 +3596,7 @@ MSVS - стиль кода. - + Service-oriented architecture @@ -3610,10 +3610,10 @@ MSVS - стиль кода. - + - 2 этап + 2 этап @@ -3647,7 +3647,7 @@ MSVS - стиль кода. - + Поведенческие @@ -3669,7 +3669,7 @@ MSVS - стиль кода. - + Порождающие @@ -3702,7 +3702,7 @@ MSVS - стиль кода. - + UML @@ -3737,7 +3737,7 @@ MSVS - стиль кода. - + MVVM @@ -3748,7 +3748,7 @@ MSVS - стиль кода. - + Three-tier @@ -3759,7 +3759,7 @@ MSVS - стиль кода. - + Onion @@ -3770,7 +3770,7 @@ MSVS - стиль кода. - + Hexagon @@ -3781,7 +3781,7 @@ MSVS - стиль кода. - + Методологии @@ -3803,7 +3803,7 @@ MSVS - стиль кода. - + Behavior Driven Development @@ -3814,7 +3814,7 @@ MSVS - стиль кода. - + Domain Driven Design @@ -3825,7 +3825,7 @@ MSVS - стиль кода. - + Память @@ -3836,7 +3836,7 @@ MSVS - стиль кода. - + Абстракции памяти @@ -3858,7 +3858,7 @@ MSVS - стиль кода. - + Управление памятью @@ -3869,7 +3869,7 @@ MSVS - стиль кода. - + Бинарные единицы @@ -3880,7 +3880,7 @@ MSVS - стиль кода. - + Исполняемый файл @@ -3902,7 +3902,7 @@ MSVS - стиль кода. - + Динамическая библиотека @@ -3924,7 +3924,7 @@ MSVS - стиль кода. - + Глобальная память @@ -3946,7 +3946,7 @@ MSVS - стиль кода. - + Память приложения @@ -3957,7 +3957,7 @@ MSVS - стиль кода. - + Виртуальная память @@ -4012,7 +4012,7 @@ MSVS - стиль кода. - + Race condition @@ -4023,7 +4023,7 @@ MSVS - стиль кода. - + Live lock @@ -4034,7 +4034,7 @@ MSVS - стиль кода. - + Starvation @@ -4045,7 +4045,7 @@ MSVS - стиль кода. - + Потоки @@ -4067,7 +4067,7 @@ MSVS - стиль кода. - + Мьютексы @@ -4089,7 +4089,7 @@ MSVS - стиль кода. - + Алгоритмы без блокировок (lock-free) @@ -4111,7 +4111,7 @@ MSVS - стиль кода. - + Синхронные @@ -4133,7 +4133,7 @@ MSVS - стиль кода. - + Процессы @@ -4166,7 +4166,7 @@ MSVS - стиль кода. - + Pipes @@ -4177,7 +4177,7 @@ MSVS - стиль кода. - + Сериализация @@ -4199,7 +4199,7 @@ MSVS - стиль кода. - + XML @@ -4210,7 +4210,7 @@ MSVS - стиль кода. - + Сетевой стек @@ -4232,7 +4232,7 @@ MSVS - стиль кода. - + OSI @@ -4254,7 +4254,7 @@ MSVS - стиль кода. - + HTTP @@ -4287,7 +4287,7 @@ MSVS - стиль кода. - + Файловая система @@ -4298,7 +4298,7 @@ MSVS - стиль кода. - + Планировщик @@ -4309,7 +4309,7 @@ MSVS - стиль кода. - + Виртуализация @@ -4331,7 +4331,7 @@ MSVS - стиль кода. - + VMware Workstation @@ -4342,7 +4342,7 @@ MSVS - стиль кода. - + Контейнеризация @@ -4353,7 +4353,7 @@ MSVS - стиль кода. - + Hyper-V @@ -4375,7 +4375,7 @@ MSVS - стиль кода. - + Облачные сервисы @@ -4397,7 +4397,7 @@ MSVS - стиль кода. - + Безопасность @@ -4441,7 +4441,7 @@ MSVS - стиль кода. - + NUMA @@ -4463,7 +4463,7 @@ MSVS - стиль кода. - + Драйверы @@ -4474,7 +4474,7 @@ MSVS - стиль кода. - + Аудио @@ -4496,7 +4496,7 @@ MSVS - стиль кода. - + Печать @@ -4507,7 +4507,7 @@ MSVS - стиль кода. - + DirectSound @@ -4540,7 +4540,7 @@ MSVS - стиль кода. - + Vulkan @@ -4551,7 +4551,7 @@ MSVS - стиль кода. - + OpenGL @@ -4562,7 +4562,7 @@ MSVS - стиль кода. - + CUDA @@ -6303,10 +6303,7 @@ MSVS - стиль кода. - - - - + @@ -6433,9 +6430,9 @@ MSVS - стиль кода. - + - + @@ -9338,7 +9335,7 @@ MSVS - стиль кода. - + @@ -9351,7 +9348,7 @@ MSVS - стиль кода. - + @@ -9566,7 +9563,7 @@ MSVS - стиль кода. - + @@ -9642,15 +9639,16 @@ MSVS - стиль кода. - + + - + - + diff --git a/Russian/Graph/roadmap.svg b/Russian/Graph/roadmap.svg index 97c5fc7..a539dd5 100644 --- a/Russian/Graph/roadmap.svg +++ b/Russian/Graph/roadmap.svg @@ -1,25 +1,25 @@ - + - + - + - - + + - + - + C++ developer @@ -27,11 +27,11 @@ - + - + Soft skills @@ -39,25 +39,25 @@ - + - + Hard skills - + - + - + Сначала может показаться, что некоторые из навыков развивать невозможно. Однако мы считаем иначе. Над каждым из пунктов возможно работать. Всё @@ -67,807 +67,807 @@ - + - + - + Умение учиться - + - + - + Работа с ошибками - + - + - + Мышление - + - + - + Ответственность - - + + - - + + - - Управление ресурсами + + Управление ресурсами - + - + - + Коммуникация - + - + - + Командная работа - + - + - + Эмоциональный интелект - + - + - + Понимание контекста разработки - + - + - + Клиентоориентированность - - + + - - + + - - Технологии + + Технологии - - + + - - + + - - Тренды + + Тренды - - + + - - + + - - Эмпатия + + Эмпатия - - + + - - + + - - Концентрация + + Концентрация - + - + - + Открытость новому - + - + - + Адаптируемость - + - + - + Стрессоустойчивость - + - + - + Работа в неопределённости - - + + - - + + - - Понимание распределения ролей в команде + + Понимание распределения ролей в команде - - + + - - + + - - Помощь + + Помощь - - + + - - + + - - Работа в распределённой команде + + Работа в распределённой команде - - + + - - + + - - Предоставление обратной связи + + Предоставление обратной связи - - + + - - + + - - Лидерство + + Лидерство - - + + - - + + - - Наставничество + + Наставничество - - + + - - + + - - Делегирование + + Делегирование - + - + - + Постановка задач сотрудникам - + - + - + Планирование и целеполагание - - + + - - + + - - Переговорческие навыки + + Переговорческие навыки - - + + - - + + - - Английский язык + + Английский язык - - + + - - + + - - Презентация + + Презентация - - + + - - + + - - Навык переписки + + Навык переписки - - + + - - + + - - Нетворкинг + + Нетворкинг - + - + - + Умение слушать - + - + - + Убеждение - + - + - + Умение доносить мысль/идеи внутри команды - + - + - + Поиск компромиссов - + - + - + Регулирование споров - + - + - + Подача информации людям вне команды - - + + - - + + - - Тайм-менеджмент + + Тайм-менеджмент - - + + - - + + - - Приоритезация + + Приоритезация - - + + - - + + - - Принятие решений + + Принятие решений - - + + - - + + - - Слепая печать + + Слепая печать - - + + - - + + - - Многозадачность + + Многозадачность - - + + - - + + - - Дисциплина + + Дисциплина - - + + - - + + - - Упорство + + Упорство - - + + - - + + - - Инициативность + + Инициативность - - + + - - + + - - Самостоятельность + + Самостоятельность - - + + - - + + - - Решение проблем + + Решение проблем - - + + - - + + - - Логическое + + Логическое - - + + - - + + - - Критическое + + Критическое - - + + - - + + - - Креативное + + Креативное - + - + - + Стратегическое - - + + - - + + - - Системное + + Системное - - + + - - + + - - Восприятие критики + + Восприятие критики - + - + - + Своевременное сигнализирование об ошибках - + - + - + Признание своих ошибок - - + + - - + + - - Анализ ошибок + + Анализ ошибок - - + + - - + + - - Умение задавать правильные вопросы + + Умение задавать правильные вопросы - + - + - + Экспериментирование - - + + - - + + - - Управление знаниями + + Управление знаниями - - + + - - + + - - Работа с информацией + + Работа с информацией - + - + - + Умение собирать информацию, анализировать её и выдавать взвешенное  решение. @@ -875,27 +875,27 @@ - + - + - + Рефлексия - + - + - + Cпокойно реагировать на то, что люди говорят. Скорее всего, они учитывают только собственный контекст, когда что-то пытаются доказать. Это @@ -904,14 +904,14 @@ - + - + - + Брать сложные задачи, чтобы развивать свои навыки и компетенции, даже когда недостаточно знаний/опыта (через такие задачи гораздо быстрее @@ -922,14 +922,14 @@ - + - + - + Быть ответственным за профессиональное развитие. Не ждать пока тимлид решит, что изучать. Не стоит забывать, что слепое следование чужому плану заточит под задачи конкретной компании. @@ -942,27 +942,27 @@ - + - + - + Самоорганизация - + - + - + Способность предоставлять тот объем информации, который необходим для общения с людьми разного бекграунда. @@ -970,27 +970,27 @@ - + - + - + Решение конфликтов - + - + - + Достаточно уверенного чтения документации и статей, но для более перспективных вакансий разговорный/письменный навык становится обязательным. @@ -998,42 +998,42 @@ - + - + - + Искать единомышленников и присоединяться/создавать комьюнити для общения и передачи опыта. - + - + - + Чтобы быть конкурентоспособным, стоит изучать и наблюдать за новыми веяниями, а также уметь адаптироваться под них. - + - + - + Опытному разработчику стоит развивать навыки управления и общения с бизнесом для эффективного выполнения задач. Это легче делать, если развит эмоциональный интеллект. @@ -1043,1517 +1043,1496 @@ - + - + - + - + - + - + - + - - + + - + - + - + - + - + - - + + - - + + - - + + - - + + - + - + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - - + + - + - + - - + + - - + + - + - - + + - - + + - - - + + + - - - + + + - + - - - + + + - - - + + + - - - + + + - - - + + + - + - + - + - - - + + + - - - + + + - + - - - + + + - + - + - + 1 этап - + - - + + - - + + - - Базовые операции + + Базовые операции - + - + - + Арфиметические операции - - + + - - + + - - Циклы for/while + + Циклы for/while - - + + - - + + - - Логические операции + + Логические операции - - + + - - + + - - Битовые операции + + Битовые операции - - + + - - + + - - Функции + + Функции - - + + - - + + - - lambda + + lambda - + - + - + Операторы - - + + - - + + - - Типы данных + + Типы данных - + - + - + Динамическая типизация - + - + - + Статическая типизация - + - + - + RTTI - + - + - + Указатели и ссылки - + - + - + Организация кодовой базы - + - + - + Ссылки - + - + - + Модель памяти - + - + - + Умные указатели - + - + - + Сырые Указатели - + - + - + Разделение кода на headers/cpp юниты - + - + - + Область видимости - + - + - + Утечки памяти - + - + - + Forward declaration - + - + - + unique_ptr - + - + - + shared_ptr - + - + - + Время жизни - - + + - - + + - - Операторы new/delete + + Операторы new/delete - - + + - - + + - - weak_ptr + + weak_ptr - + - + - + Пространство имён - + - + - + Перегрузка стандартных операторов для различных типов/структур/классов. - + - + - + Чтобы избежать проблем с управлением памятью, старайтесь писать код используя ссылки и умные указатели. - - - - - - - - - - Не игнорируйте предупреждения компилятора - и статического анализатора. Они вам друзья, - а не враги - - - - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - + - + - + - + - + - - - - - - - + - + - + 2 этап - + - + - + - + Структуры и классы - + - + - + Обработка ошибок - + - + - + Перегрузка методов - + - + - + Таблица вирутальных методов - + - + - + ООП - + - + - + Исключения - + - + - + Access violation - - + + - - + + - - Динамический полиморфизм + + Динамический полиморфизм - - + + - - + + - - Виртуальные методы + + Виртуальные методы - + - + - + Правило нуля/трех/пяти - + - + - + Статический полиморфизм - + - + - + Множественное наследование - + - + - + Ромбовидное наследование - + - + - + Коды возврата - + - + - + Не используйте множественное наследование - + - + - + - - + + - - + + - - + + - + - + - + - + - + - + - + - + - + - + 3 этап - + - + - + - + auto (автоматическое выведение типов) - + - + - + Концепции языка - + - + - + type casting - + - + - + static_cast - + - + - + const_cast - + - + - + dynamic_cast - + - + - + reinterpret_cast - + - + - + Неопределённое поведение (Undefined Behavior) - + - + - + Поиск, зависящий от аргумента (ADL) - + - + - + Макросы - + - + - + Name mangling - + - + - + Стандартная библиотека - + - + - + Поток ввода/вывода - + - + - + Алгоритмы стандартной библиотеки - + - + - + Итераторы - + - + - + Контейнеры - + - + - + Дата/время - + - + - + Многопоточность - + - + - + Языковые конструкции для которых отсутствуют прописанные требования в стандартах. В случае ошибки дальнейшее поведение будет предсказать невозможно, и всецело будет @@ -2563,642 +2542,642 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + 4 этап - + - + - + - + Шаблоны - - + + - - + + - - Variadic templates + + Variadic templates - - + + - - + + - - Специализация шаблона + + Специализация шаблона - - + + - - + + - - type traits + + type traits - - + + - - + + - - SFINAE + + SFINAE - + - + - + Полная специализация - + - + - + Частичная специализация - + - + - + RAII - - + + - - + + - - pimpl + + pimpl - + - + - + Erase-Remove - + - + - + Non-Copyable/Non-Moveable - + - + - + Copy and swap - - + + - - + + - - Copy on write + + Copy on write - - + + - - + + - - CRTP + + CRTP - + - + - + Стандарты - + - + - + C++11/14 - + - + - + C++17 - + - + - + C++20 - + - + - + newest - + - + - + C++0x - + - + - + Идиомы - - + + - - + + - - + + - - + + - - + + - - + + - + - + - + - + - + - - + + - - + + - + - + - - + + - + - + - + - + - + 1 этап - + - + - + - + Работа с исходным кодом - + - + - + Текстовый редактор - - + + - - + + - - IDE + + IDE - - + + - - + + - - Редакторы исходного кода + + Редакторы исходного кода - - + + - - + + - - Отладчик + + Отладчик - + - + - + Линтеры - + - + - + Знание о базовых возможностях (shortcuts, tools, plugins) - - + + - - + + - - Умение читать сообщения отладчика + + Умение читать сообщения отладчика - - + + - - + + - - Отладочные символы + + Отладочные символы - + - + - + WinDbg - + - + - + GDB - + - + - + Выберите один из понравившихся популярных IDE и хорошо освойте его: Eclipse, MS Visual Studio, Qt Creator, JetBrains Clion, XCode и т.д. @@ -3206,42 +3185,42 @@ - + - + - + Научитесь пользоваться отладчиком. Изучите его возможности. - + - + - + Выберите один из популярных редакторов и хорошо освойте его. К примеру: Notepad++, Atom, и т.д. - + - + - + Навык работы с отладчиком в через командную строку - узконаправленный навык. В регулярной работе достаточно уметь работать с отладчиком в рамках IDE. @@ -3249,14 +3228,14 @@ - + - + - + Ознакомьтесь с самыми распространёнными ошибками (segfault, out of memory, access violation) и концепцией  неопределённого поведения (undefined behavior) @@ -3264,214 +3243,214 @@ - + - + - + Выберите один из популярных редакторов и и хорошо освойте его: Visual Code, Atom, Sublime Text и т.д. - + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - - - + + + - - - + + + - + - + - + - - - + + + - + - + - + - + 3 этап - + - + - + - + Компиляторы - + - + - + Базовые знания работы компиляторов - - + + - - + + - - Компиляция кода в объектные файлы + + Компиляция кода в объектные файлы - + - + - + Компоновка объектных файлов в приложение (линковка) - + - + - + Этапы работы компилятора - - + + - - + + - - Особенности работы конкретного компилятора + + Особенности работы конкретного компилятора - + - + - + У компиляторов есть свои особенности, о которых хорошо бы знать: Clang++/LLVM, Intel C++, MSVS C++, GCC, MinGW @@ -3479,14 +3458,14 @@ - + - + - + Есть несколько этапов работы компилятора, которые хорошо бы знать. Это помогает ошибки решать проблемы сборки на разных этапах. Достаточно базово @@ -3496,1431 +3475,1431 @@ - + - - + + - + - + - - + + - - - + + + - + - + - + - + 5 этап - + - + - + - + Системы сборки - - + + - - + + - - CMake + + CMake - + - + - + Makefile - - + + - - + + - - ninja + + ninja - + - + - + Пакетные менеджеры - - + + - - + + - - vcpkg + + vcpkg - - + + - - + + - - spack + + spack - + - + - + Conan - - + + - - + + - - nuget + + nuget - + - + - + Библиотеки - - + + - - + + - - boost + + boost - - + + - - + + - - opencv + + opencv - - + + - - + + - - poco + + poco - - + + - - + + - - Подключение библиотек + + Подключение библиотек - - + + - - + + - - protobuf + + protobuf - - + + - - + + - - gRPC + + gRPC - - + + - - + + - - fmt + + fmt - - + + - - + + - - pybindll + + pybindll - + - + - + spdlog - - + + - - + + - - ranges_v3 + + ranges_v3 - - + + - - + + - - tensorflow + + tensorflow - - + + - - + + - - opencl + + opencl - + - + - + Фреймворки - - + + - - + + - - gtest/gmock + + gtest/gmock - - + + - - + + - - Qt + + Qt - - + + - - + + - - catch2 + + catch2 - + - + - + google profiler - + - + - + pytorch c++ - - + + - + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - + - + - + 1 этап - + - + - + - + Информатика - - + + - - + + - - Структуры данных + + Структуры данных - - + + - - + + - - Алгоритмы + + Алгоритмы - + - + - + Булева алгебра - - + + - - + + - - Конечные автоматы + + Конечные автоматы - - + + - - + + - - Также необходимо понимать, как вычислить сложность - и потребление памяти у алгоритмов. + + Также необходимо понимать, как вычислить сложность + и потребление памяти у алгоритмов. - - + + - - + + - + - - + + - - - + + + - + - + - + 4 этап - + - + - + - + Системы контроля версий - + - + - + Распределенные - + - + - + Централизованные - + - + - + SVN - + - + - + git - + - + - + Mercurial - + - + - + Практики разработки - + - + - + Качество кода - + - + - + Правила оформления кода - + - + - + Принципы разработки - + - + - + KISS (Keep It Simple, Stupid) - - + + - - + + - - DRY (Don't Repeat Yourself) + + DRY (Don't Repeat Yourself) - - + + - - + + - - YAGNI (You Aren't Gonna Need It) + + YAGNI (You Aren't Gonna Need It) - - + + - - + + - - APO (Avoid Premature Optimization) + + APO (Avoid Premature Optimization) - - + + - - + + - - BDUF (Big Design Up Front) + + BDUF (Big Design Up Front) - - + + - - + + - - Композиция предпочтительнее наследования + + Композиция предпочтительнее наследования - - + + - - + + - - Бритва Оккама + + Бритва Оккама - - + + - - + + - - Разделяй и властвуй + + Разделяй и властвуй - + - + - + Логирование и телеметрия - - + + - - + + - - Ревью кода + + Ревью кода - + - + - + Умение читать чужой код - + - + - + Ревью чужого кода - + - + - + Понимание жизненного цикла производства ПО - - + + - - + + - - Реализация + + Реализация - - + + - - + + - - Тестирование + + Тестирование - + - + - + Поддержка - + - + - + Версионирование ПО - - + + - - + + - - Юнит тесты + + Юнит тесты - + - + - + Интеграционное - + - + - + Функциональное - - + + - - + + - - Производительность + + Производительность - + - + - + Формирование архитектуры и дизайн компонентов - - + + - - + + - - Интеграция компонентов + + Интеграция компонентов - + - + - + Выпуск - + - + - + Сбор требований - + - + - + Окончание жизненного цикла - + - + - + Анализаторы кода - + - + - + Статические - - + + - - + + - - Динамические + + Динамические - + - + - + Профайлеры - - + + - - + + - - C++ core guidelines + + C++ core guidelines - - + + - - + + - - Промышленные стандарты + + Промышленные стандарты - + - + - + MISRA - + - + - + Autosar - + - + - + Работа с командной строкой - - + + - - + + - - batch + + batch - + - + - + Powershell - - + + - - + + - - bash + + bash - - + + - - + + - - CI/CD + + CI/CD - + - + - + Trunk Based Development - + - + - + Zero downtime deployment - - + + - - + + - - Создание пакета поставки ПО + + Создание пакета поставки ПО - + - + - + Документация - - + + - - + + - - Инсталлятор + + Инсталлятор - - + + - - + + - - Использование других языков программирования + + Использование других языков программирования - + - + - + Межязыковое взаимодействие - + - + - + Правила именования переменных, пробелы vs табы, положение фигурных скобок и т.д. - + - + - + Настроить форматирование и автоматически проверять в одной из утилит: clang-format, Resharper - стиль кода, MSVS - стиль кода. @@ -4928,14 +4907,14 @@ - + - + - + - Скриптовые - Функциональные - SQL like @@ -4945,14 +4924,14 @@ - + - + - + Иногда требуется предоставить обертку к библиотеке, написанной на C++ для другого ЯП, например Python или C#. Для этого применяют специальные библиотеки/фреймворки. @@ -4960,1705 +4939,1726 @@ - + - + - + Обратная совместимость + + + + + + + + + + Не игнорируйте предупреждения компилятора + и статического анализатора. Они вам друзья, + а не враги + + + - + - + - + Проектирование ПО - - + + - - + + - - Архитектурные стили + + Архитектурные стили - + - + - + Component-based - - + + - - + + - - Monolithic application + + Monolithic application - - + + - - + + - - Layered + + Layered - - + + - - + + - - Client-server + + Client-server - - + + - - + + - - Microservices architecture + + Microservices architecture - - + + - - + + - - Event-driven + + Event-driven - - + + - - + + - - Plug-ins + + Plug-ins - - + + - - + + - - REST + + REST - - + + - - + + - - Service-oriented architecture + + Service-oriented architecture - + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - + - - + + - - + + - + - + - - + + - - + + - - + + - - + + - + - - + + - + - + - + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - + - - - + + + - + - + + + + + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - 2 этап + + 2 этап - - + + - + - + - + Паттерны проектирования (GoF) - - + + - - + + - - Поведенческие + + Поведенческие - + - + - + Структурные - - + + - - + + - - Порождающие + + Порождающие - + - + - + ООП - + - + - + SOLID - - + + - - + + - - UML + + UML - + - + - + Архитектурные паттерны - + - + - + MVC - - + + - - + + - - MVVM + + MVVM - - + + - - + + - - Three-tier + + Three-tier - - + + - - + + - - Onion + + Onion - - + + - - + + - - Hexagon + + Hexagon - - + + - - + + - - Методологии + + Методологии - + - + - + Test Driven Development - - + + - - + + - - Behavior Driven Development + + Behavior Driven Development - - + + - - + + - - Domain Driven Design + + Domain Driven Design - - + + - - + + - - Память + + Память - - + + - - + + - - Абстракции памяти + + Абстракции памяти - + - + - + Выравнивание памяти - - + + - - + + - - Управление памятью + + Управление памятью - - + + - - + + - - Бинарные единицы + + Бинарные единицы - - + + - - + + - - Исполняемый файл + + Исполняемый файл - + - + - + Статическая библиотека - - + + - - + + - - Динамическая библиотека + + Динамическая библиотека - + - + - + Стек - - + + - - + + - - Глобальная память + + Глобальная память - + - + - + Куча - - + + - - + + - - Память приложения + + Память приложения - - + + - - + + - - Виртуальная память + + Виртуальная память - + - + - + Операционные системы - + - + - + Многопоточность - + - + - + Ошибки - + - + - + Dead lock - - + + - - + + - - Race condition + + Race condition - - + + - - + + - - Live lock + + Live lock - - + + - - + + - - Starvation + + Starvation - - + + - - + + - - Потоки + + Потоки - + - + - + Конкуренция - - + + - - + + - - Мьютексы + + Мьютексы - + - + - + Семафоры - - + + - - + + - - Алгоритмы без блокировок (lock-free) + + Алгоритмы без блокировок (lock-free) - + - + - + Обработка событий - - + + - - + + - - Синхронные + + Синхронные - + - + - + Асинхронные - - + + - - + + - - Процессы + + Процессы - + - + - + Межпроцессное взаимодействие - + - + - + Shared memory - - + + - - + + - - Pipes + + Pipes - - + + - - + + - - Сериализация + + Сериализация - + - + - + json - - + + - - + + - - XML + + XML - - + + - - + + - - Сетевой стек + + Сетевой стек - + - + - + TCP/IP - - + + - - + + - - OSI + + OSI - + - + - + Сокеты - - + + - - + + - - HTTP + + HTTP - + - + - + TCP - + - + - + UDP - - + + - - + + - - Файловая система + + Файловая система - - + + - - + + - - Планировщик + + Планировщик - - + + - - + + - - Виртуализация + + Виртуализация - + - + - + VirtualBox - - + + - - + + - - VMware Workstation + + VMware Workstation - - + + - - + + - - Контейнеризация + + Контейнеризация - - + + - - + + - - Hyper-V + + Hyper-V - + - + - + Docker - - + + - - + + - - Облачные сервисы + + Облачные сервисы - + - + - + Kubernetes - - + + - - + + - - Безопасность + + Безопасность - + - + - + Шифрование - + - + - + Многопроцессорные системы - + - + - + Multicore CPU - - + + - - + + - - NUMA + + NUMA - + - + - + Ввод и вывод информации - - + + - - + + - - Драйверы + + Драйверы - - + + - - + + - - Аудио + + Аудио - + - + - + Графическое вычисление/отображение - - + + - - + + - - Печать + + Печать - - + + - - + + - - DirectSound + + DirectSound - + - + - + OpenAL - + - + - + DirectX - - + + - - + + - - Vulkan + + Vulkan - - + + - - + + - - OpenGL + + OpenGL - - + + - - + + - - CUDA + + CUDA - + - + - + Общие навыки - + - + - + Языковые инструменты - + - + - + Синтаксис языка - + - + - + C++ Developer Roadmap - + - + - + О карте: - + - + - + С++ всё ещё является одним из самых популярных языков разработки. Есть немало желающих начать его изучать и стать C++ разработчиками. Перед такими людьми встают вопросы: "С чего мне начать? Что и в каком порядке мне изучать? Какие книги стоить почитать?" Мы попытались ответить на эти вопросы в представленной дорожной @@ -6670,27 +6670,27 @@ - + - + - + Как ориентироваться: - + - + - + Если у вас есть замечания, вопросы или предложения, будем рады получить любую помощь и поддержку. Мы открыты для общения :) @@ -6702,79 +6702,79 @@ - + - + - + Предложения и замечания: - + - + - + Optional - + - + - + Junior - + - + - + Middle - + - + - + Senior - + - + - + Мидл способен создать дизайн и решения для функционала внутри @@ -6785,14 +6785,14 @@ - + - + - + Синиор способен создать дизайн и решение для компонента/приложения с @@ -6801,14 +6801,14 @@ - + - + - + Джуниору важно научиться писать структурированный код и не усложнять его без @@ -6819,14 +6819,14 @@ - + - + - + От джуниора ожидается осведомленность про категории, которые @@ -6838,14 +6838,14 @@ - + - + - + На карте представлены компетенции, которые выделены в "этапы". Мы @@ -6858,580 +6858,580 @@ - + - + - + Репозиторий: - + - + - + https://github.com/salmer/CppDeveloperRoadmap - + - - + + - + - - + + - + - + - - + + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - + - - + + - - + + - - + + - - + + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - - + + - + - - + + - - + + - + - - + + - - + + - - + + - + - - + + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - + - + - + - + - + - - + + - +