From dc5f69843fe031a37afab4f5c9f106f0a7d04837 Mon Sep 17 00:00:00 2001 From: Dmitrii Dmitriev Date: Sat, 11 Jul 2026 10:20:17 +0200 Subject: [PATCH 1/2] draw.io? --- .github/ISSUE_TEMPLATE/content_suggestion.md | 2 +- CONTRIBUTING.md | 6 +- Chinese/Graph/README.md | 20 +- Chinese/Graph/roadmap.drawio.svg | 4 + Chinese/Graph/roadmap.graphml | 9782 ------------------ Chinese/Graph/roadmap.svg | 7532 -------------- Chinese/README.md | 8 +- English/Graph/README.md | 20 +- English/Graph/roadmap.drawio.svg | 4 + English/Graph/roadmap.graphml | 9762 ----------------- English/Graph/roadmap.svg | 7509 -------------- README.md | 8 +- Russian/Graph/README.md | 20 +- Russian/Graph/roadmap.drawio.svg | 4 + Russian/Graph/roadmap.graphml | 9755 ----------------- Russian/Graph/roadmap.svg | 7520 -------------- Russian/README.md | 10 +- TODO.md | 8 + _layouts/svg_viewer.html | 2 +- assets/example.png | Bin 454224 -> 0 bytes goto/drawio.html | 9 + goto/graphml.html | 10 +- 22 files changed, 100 insertions(+), 51895 deletions(-) create mode 100644 Chinese/Graph/roadmap.drawio.svg delete mode 100644 Chinese/Graph/roadmap.graphml delete mode 100644 Chinese/Graph/roadmap.svg create mode 100644 English/Graph/roadmap.drawio.svg delete mode 100644 English/Graph/roadmap.graphml delete mode 100644 English/Graph/roadmap.svg create mode 100644 Russian/Graph/roadmap.drawio.svg delete mode 100644 Russian/Graph/roadmap.graphml delete mode 100644 Russian/Graph/roadmap.svg create mode 100644 TODO.md delete mode 100644 assets/example.png create mode 100644 goto/drawio.html diff --git a/.github/ISSUE_TEMPLATE/content_suggestion.md b/.github/ISSUE_TEMPLATE/content_suggestion.md index fa9eb66..cbe268c 100644 --- a/.github/ISSUE_TEMPLATE/content_suggestion.md +++ b/.github/ISSUE_TEMPLATE/content_suggestion.md @@ -8,7 +8,7 @@ assignees: '' --- **Which part of the roadmap?** -File/section (e.g. `English/Tooling.md`) or the roadmap graph/Miro board. +File/section (e.g. `English/Tooling.md`) or the roadmap diagram (`Graph/roadmap.drawio.svg`). **What should be changed and why?** Describe the correction or improvement. If something is factually outdated diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e6e4441..94f4587 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -8,6 +8,10 @@ This project maintains parity across three languages: English (`English/`), Russ **Any content change (e.g., adding a book, updating a tool, fixing a description) MUST be mirrored across all three languages.** If you are unable to translate the content into all languages, please create an issue or note it in your Pull Request so someone can help translate it. +## Editing the Roadmap + +The roadmap is one `roadmap.drawio.svg` file per language (`English/Graph/`, `Russian/Graph/`, `Chinese/Graph/`) — an SVG image with the editable draw.io diagram embedded inside it. Edit it only with a draw.io editor (sketch.diagrams.net — the whiteboard-style UI with GitHub integration, the draw.io desktop app, or the VS Code extension) and submit the change as a normal pull request; see the per-language `Graph/README.md` for step-by-step instructions. **Never edit the SVG text by hand** — that can strip the embedded source and make the file uneditable. The language sync rule applies to the roadmap too: structural changes should be mirrored in all three language files. + ## Local Jekyll Preview To preview the site locally using GitHub Pages: @@ -29,6 +33,6 @@ We use `lychee` to ensure all links are valid. Before opening a PR, please run `lychee` locally to verify links. Run the following command (requires `lychee` to be installed): ```bash -lychee --no-progress --accept "200..=204,429" --max-retries 2 --timeout 45 --exclude-path IMPROVEMENTS.md --exclude-path TODO.md "**/*.md" +lychee --no-progress --accept "200..=204,429" --max-retries 2 --timeout 45 "**/*.md" ``` This command must exit with code 0. Run this after ANY link change. diff --git a/Chinese/Graph/README.md b/Chinese/Graph/README.md index f9cea5a..da8db74 100644 --- a/Chinese/Graph/README.md +++ b/Chinese/Graph/README.md @@ -1,9 +1,19 @@ -# 如何查看和修改 GraphML 格式的路线图 +# 如何查看和编辑路线图 -GraphML 是一种基于 XML 的图形文件格式。许多应用程序都支持它进行查看。 +路线图存储在 [roadmap.drawio.svg](roadmap.drawio.svg) 文件中——这是一个普通的 SVG 图像,其中嵌入了可编辑的 [draw.io](https://www.drawio.com) 图表。同一个文件既是您看到的图片,也是您编辑的源文件,因此无需导出或保持同步:每个被接受的 pull request 都会立即更新发布的路线图。 -例如,您可以使用[yEd](https://www.yworks.com/products/yed)来查看 graphML 文件并根据需要进行修改。 +## 查看 -*最后与 Miro 同步:2023-09-19* +- 在网站上:[salmer.github.io/CppDeveloperRoadmap/goto/svg/?l=zh](https://salmer.github.io/CppDeveloperRoadmap/goto/svg/?l=zh) +- 在 GitHub 上:打开 [roadmap.drawio.svg](roadmap.drawio.svg)——它会以图像形式呈现。 -![示例](../../assets/example.png) +## 编辑 + +1. Fork 本仓库。 +2. 在 draw.io 编辑器中打开图表: + - **网页版:** 访问 [sketch.diagrams.net](https://sketch.diagrams.net)(draw.io 的白板风格界面),从 *GitHub* 打开文件,授权后在您的 fork 中选择 `Chinese/Graph/roadmap.drawio.svg`。保存时会直接提交到您的 fork。 + - **VS Code:** 安装 [Draw.io Integration 扩展](https://marketplace.visualstudio.com/items?itemName=hediet.vscode-drawio)后打开该文件(也可以通过 github.dev 在浏览器中使用——在您的 fork 页面按 `.` 键)。 + - **桌面版:** [draw.io 桌面应用](https://www.drawio.com)。 +3. 创建包含您更改的 pull request。 + +> :warning: 请勿在 draw.io 之外手动编辑 SVG 文本——这可能会删除嵌入的图表源,使文件无法再编辑。文件开头的注释也有同样的警告。 diff --git a/Chinese/Graph/roadmap.drawio.svg b/Chinese/Graph/roadmap.drawio.svg new file mode 100644 index 0000000..567e78d --- /dev/null +++ b/Chinese/Graph/roadmap.drawio.svg @@ -0,0 +1,4 @@ + + + +步骤 1步骤 2步骤 3步骤 4步骤 1步骤 3步骤 5步骤 1步骤 4步骤 2C++ 开发者软性技能硬性技能一开始,有些技能看似没有办法习得或提升。然而,在我们看来,这里所列的每一项技能,都是可以通过练习得以提升的。每个人的学习目的不同,最终成效取决于您个人的愿望和努力 :)学习能力管理错误思考责任资源管理交流沟通团队协作情绪智力(情商)理解开发背景以客户为中心技术发展趋势共情专注思想开明适应性抗压能力在不确定性中工作理解团队内的角色分工支持帮助团队成员在分布式团队中工作提供意见反馈领导力启导、指导他人委派工作向员工分配和明确任务计划并制订目标协商英文能力演讲演示书面沟通技巧社交倾听说服团队内部交流创意和想法的能力寻求妥协解决争议向团队以外的人员提供信息的能力时间管理管理优先级作决定盲打多重任务同时进行纪律坚持主动性独立解决问题逻辑性批判性创意性策略系统性接受批评出现错误及时通知承认您的错误分析错误提出正确的问题实验实操知识管理信息处理收集、分析、评估信息,并据此做出决策的能力。反思冷静地回应他人的评论。很有可能他人所说的话、试图证明的事情,仅仅基于他们自己的角度,这是可以理解的。请客观地评估他人观点的有用性。主动承担具有挑战性的任务,以发展您的技能和能力,即便此刻您还不具备完全足够的知识或经验(您的技能将会通过此类任务得到快速发展)。关键是要能够区分出:哪些是真正有助于您提升技能的复杂任务,而哪些又是仅仅需要替罪羊的愚蠢的任务。您应该对自己的职业发展负责。 不要等待团队领导来决定您要学习什么。请不要忘记,盲目遵循他人安排的计划,只会让您提高某些适用于某特定公司的技能。最好商讨如何将您的个人利益和兴趣也纳入计划之中, 否则的话,就很有可能将时间花在不相关的技能上,从而影响职业机会。不过切记不要太极端:别不加选择地什么都学,也不要什么都拒绝直到有一个完美的量身定制的学习计划出现。自组织(Self-organization)有能力根据各方人员不同的背景,而提供适量、适当的信息,以促进有效的沟通交流。解决冲突如果您阅读本路线图,您大概率已经注意到英文能力有多重要:)通常,您至少需要具备英文阅读能力,因为您要能够读懂技术文档。不过,随着您在职业阶梯上的步步晋升,您将同时需要更加自信地用英文说和写。寻找志同道合的人,并加入或创建相关社区,以进行经验交流。您应当研究和观察当代发展趋势,以保持自己的竞争力, 并适应变化。经验丰富的开发人员应该培养管理技能和业务沟通技能,以高效地完成任务。 如果您有较好的情商,那这就相对更容易做到。 对于初级开发人员来说,共情能力在与同事互动中也是非常有用的。基本运算算术运算循环: for/while逻辑运算位运算函数Lambda表达式运算符数据类型动态类型静态类型RTTI(运行时类型识别)指针&引用代码库结构化引用内存模型智能指针(smart pointer)原始指针代码拆分为 headers/cpp 文件作用域(Scope)内存泄漏前向声明unique_ptrshared_ptr对象生命周期new/delete 运算符weak_ptr命名空间(Namespace)常规或自定义类型(结构/类)的常规运算符的重载。为防止内存泄漏问题,最好使用智能指针而不是原始指针。结构体(Struct)和类(class)异常处理函数重载虚函数表(Virtual table, vtbl)面向对象编程 (OOP)异常(Exceptions)非法访问(Access violation)动态多态(Dynamic polymorphism)虚函数(Virtual methods)三/五/零法则静态多态(Static polymorphism)多重继承(Multiple inheritance)钻石继承(Diamond inheritance)错误码(Error codes)代码中最好避免出现多重继承(抽象类除外),以防止运行时出现问题自动类型推导 auto (automatic type deduction)语言概念(Language concepts)类型转换(type casting)静态类型转换(static_cast)const_cast动态类型转换(dynamic_cast)reinterpret_cast未定义行为 (Undefined Behavior,UB)参数依赖查找(Argument-dependent lookup,ADL)宏(Macros)名字改写(Name mangling)标准程序库+标准模板库(Standard library + STL)输入输出流(iostream)算法(Algorithms)迭代器(Iterators)容器(Containers)Date/time多线程(Multithreading)根据 ISO 标准,某些语言结构具有未定义行为。如果出现任何错误,则无法预测程序进一步的行为,因为程序此后的行为取决于平台环境、运行时的上下文具体内容等。模板(Template)可变参数模板 (Variadic templates)模板特化(Template specialization)类型特征(type traits)SFINAE模板全特化(Full template specialization)模板偏特化(Partial template specialization)RAII(资源获取即初始化)pimpl(指向实现的指针)Erase-Remove(删除)Non-Copyable (不可复制)/Non-Moveable(不可移动)Copy and swap(复制并交换)Copy on write(写时复制)CRTP(奇异递归模板)标准(Standards)C++11/14C++17C++20最新版本C++0x惯常用法/设计习语(Idioms)使用源代码文本编辑器集成开发环境(IDE)代码编辑器调试器(Debugger)Linters熟悉编辑器的特性和功能范畴(快捷键、工具、插件)理解调试器所反馈出的信息调试符号(Debugging symbols)WinDbgGDB选择一款广受欢迎的IDE, 并好好研究它、用好它。目前流行的IDE有:Eclipse, MS Visual Studio, Qt Creator, JetBrains Clion, XCode等等。学习如何使用调试器,并深入了解调试器所具有的所有功能。选择一款广受欢迎的编辑器,并好好研究它、用好它。例如:Notepad++, Atom等。通过命令行来使用调试器并非一项常规技能。掌握通过IDE来使用调试器的能力就足够了,例如通过IDE设置断点,等等。了解常见错误(段错误 segfault, 内存溢出 out of memory, 非法访问 access violation) 以及未定义行为(undefined behavior)的概念。选择一款广受欢迎的编辑器, 并好好研究它、用好它。例如:Visual Code, Atom, Sublime Text 等等。编译器(Compilers)对编译过程的基本了解将源代码编译为目标文件(compilation)目标文件链接过程 (linking)编译器的编译过程特定编译器的特性每个编译器之间有细微的差别。 最好对这些差别有所了解,以避免陷入一些陷阱: Clang++/LLVM,Intel C++,MSVS C++,GCC,MinGW编译器执行代码编译过程的数个阶段。 对所有这些阶段进行基本的了解将有助于更好地理解编译中可能出现的问题。 不过,只有编译器创建者才需要深入了解编译器知识。构建系统(Build systems)CMakeMakefileninja包管理器(Package managers)vcpkgspackConannuget库(Library)boostopencvpoco引用库(Libraries inclusion)protobufgRPCfmtpybindllspdlogranges_v3tensorflowopencl框架(Frameworks)gtest/gmockQtcatch2google profilerpytorch c++使用程序库软件授权许可(Licensing)计算机科学数据结构算法布尔代数(Boolean algebra)有限状态机(Finite-state machines)了解如何计算算法复杂度,和如何计算内存消耗也很有好处。版本控制软件(Version Control)分布式集中式SVNgitMercurial最佳实践代码质量代码指南开发原则KISS (Keep It Simple, Stupid) 保持简约、简单DRY (Don't Repeat Yourself) 不要重复你自己(不写重复代码)YAGNI (You Aren't Gonna Need It) 你不需要它APO (Avoid Premature Optimization) 避免过早优化BDUF (Big Design Up Front) 前期大型设计Composition is preferably than the inheritance 组合优于继承Occam's razor 奥卡姆剃刀原理(简约法则)Divide and Conquer 分治法记录和遥测(Logging and telemetry)代码评审(Code review)阅读理解现有代码的能力评审代码的能力软件生命周期实现(Implementation)测试维护版本管理(Versioning)单元测试(Unit tests)集成测试(Integration tests)功能测试(Functional tests)性能测试(Performance tests)软件架构和组件设计组件集成软件部署(Deployment)征集要求软件生命周期结束代码分析器(Code analyzers)静态分析器(Static analyzers)动态分析器(Dynamic analyzers)ProfilersC++ 核心指南行业标准MISRAAutosar命令行batchPowershellbashCI/CD(持续集成、持续部署)主干开发(Trunk Based Development)零停机时间部署(Zero downtime deployment)创建软件部署包文档安装包其他编程语言的使用语言互操作性(Language interoperability)命名规则(naming conventin), tab键 vs 空格键 space,等等。用于结合以下任意一种工具来配置自动代码格式验证:clang-format 代码格式,Resharper - 代码风格,MSVS - 代码风格。- Scripting- Functional- SQL like- NoSQL有时需要具备能够重用由另一种语言编写成的库的能力例如:在C#中调用C++库。向后兼容(Backward compatibility)不要忽略来自编译器或任何代码分析器的警告。 他们是你的朋友,而不是敌人。Microsoft GSL软件设计软件架构风格基于组件 Component-based单体式应用程序 Monolithic application分层模式 Layered客户/服务器模式 Client-server微服务架构 Microservices architecture事件驱动架构 Event-driven插件Plug-insREST面向服务的架构 Service-oriented architecture设计模式 Design Patters (GoF)行为模式(Behavioral)结构模式(Structural)创建模式(Creational)面向对象编程 (OOP)SOLIDUML架构模式MVC 模型-视图-控制器模式MVVMThree-tier 三层架构OnionHexagon开发方法论测试驱动开发(Test Driven Development)行为驱动开发(Behavior Driven Development)领域驱动设计(Domain Driven Design)内存内存抽象(Memory abstractions)内存对齐(Memory alignment)内存管理(Memory management)二进制单位可执行文件(Executable file)静态库(Static library)动态库(Dynamic library)栈(Stack)全局内存(Global memory)堆(Heap)应用内存(Application memory)虚拟内存(Virtual memory)操作系统多线程错误死锁(Dead lock)竞态条件(Race condition)活锁(Live lock)饥饿(Starvation)线程(Threads)并发(Concurrency)互斥锁 (Mutexes)信号量(Semaphores)无锁(lock-free)事件处理(Event handling)同步(Sync)异步(Async)过程(Process)进程间通信(Interprocess communication)共享内存(Shared memory)管道(Pipes)序列化(Serialization)jsonXML网络(Network)TCP/IPOSISocketsHTTPTCPUDP文件系统(File system)任务调度(Task scheduler)虚拟化(Virtualization)VirtualBoxVMware Workstation容器(Containers)Hyper-VDocker云服务(Cloud Services)Kubernetes程序安全加密MultiCPU systemsMulticore CPUNUMA输入/输出(Input/output)驱动程序(Drivers)音频(Audio)显卡(Graphics)打印机/打印 Printers (printing)DirectSoundOpenALDirectXVulkanOpenGLCUDA通用技能C++语言工具C++语法С++ 开发者路线图简介C++至今仍旧是最受欢迎的开发语言之一,有很多人想要开始学习C++并成为开发者。初学者通常会面临这样的问题:“我应当从何开始?我需要学些什么?应当以什么样的顺序去学?我需要参考哪些书籍?我们希望通过这份路线图来回答这些问题。本图旨在帮助初学者或经验有限的人士,所涵盖的内容侧重于可用在大多数开发项目中的通用能力和技能。如果您参考本路线图所罗列的相关材料,您将可以为自己创建一个高效的学习计划,而不被次要信息分心。本路线图将帮助您达到一个许多商业项目普遍要求的C++水平。详细信息: https://github.com/salmer/CppDeveloperRoadmap如何使用如您有任何意见或建议,请随时与我们联系。我们将感激不尽 :)您可通过以下任一Github链接联系我们反馈与沟通选修初级中级高级中级开发者具备以下能力:可以为一款应用程序设计出新的功能,即便是缺乏对于该项新功能的完善的具体要求或相关信息。高级开发者具备以下能力:结合业务领域的相关背景,设计出解决方案/组件,并作出相关决策。初学者必须尽快掌握以下技能: 编写易读且结构良好的代码。初学者需注意,对于中级和高级的技能,只需掌握基本概念即可。本路线图标示出了学习“步骤”。这些“步骤”旨在规划出一套易于操作的学习计划,以帮助初学者在获取足够的C++基础知识的同时,逐步提升深入学习的信心。创作者https://github.com/salmer/CppDeveloperRoadmap仔细阅读许可协议的条款。 您的项目必须遵守这些条款,才能使用这些库。 \ No newline at end of file diff --git a/Chinese/Graph/roadmap.graphml b/Chinese/Graph/roadmap.graphml deleted file mode 100644 index 8a4075d..0000000 --- a/Chinese/Graph/roadmap.graphml +++ /dev/null @@ -1,9782 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - C++ 开发者 - - - - - - - - - - - - 软性技能 - - - - - - - - - - - - 硬性技能 - - - - - - - - - - - 一开始,有些技能看似没有 -办法习得或提升。然而,在 -我们看来,这里所列的每一 -项技能,都是可以通过练习 -得以提升的。每个人的学习 -目的不同,最终成效取决于 -您个人的愿望和努力 :) - - - - - - - - - - - 学习能力 - - - - - - - - - - - 管理错误 - - - - - - - - - - - 思考 - - - - - - - - - - - 责任 - - - - - - - - - - - 资源管理 - - - - - - - - - - - 交流沟通 - - - - - - - - - - - 团队协作 - - - - - - - - - - - 情绪智力(情商) - - - - - - - - - - - 理解开发背景 - - - - - - - - - - - 以客户为中心 - - - - - - - - - - - 技术 - - - - - - - - - - - 发展趋势 - - - - - - - - - - - 共情 - - - - - - - - - - - 专注 - - - - - - - - - - - 思想开明 - - - - - - - - - - - 适应性 - - - - - - - - - - - 抗压能力 - - - - - - - - - - - 在不确定性中工作 - - - - - - - - - - - 理解团队内的角色分工 - - - - - - - - - - - 支持帮助团队成员 - - - - - - - - - - - 在分布式团队中工作 - - - - - - - - - - - 提供意见反馈 - - - - - - - - - - - 领导力 - - - - - - - - - - - 启导、指导他人 - - - - - - - - - - - 委派工作 - - - - - - - - - - - 向员工分配和明确任务 - - - - - - - - - - - 计划并制订目标 - - - - - - - - - - - 协商 - - - - - - - - - - - 英文能力 - - - - - - - - - - - 演讲演示 - - - - - - - - - - - 书面沟通技巧 - - - - - - - - - - - 社交 - - - - - - - - - - - 倾听 - - - - - - - - - - - 说服 - - - - - - - - - - - 团队内部交流创意和想法的能力 - - - - - - - - - - - 寻求妥协 - - - - - - - - - - - 解决争议 - - - - - - - - - - - 向团队以外的人员提供信息的能力 - - - - - - - - - - - 时间管理 - - - - - - - - - - - 管理优先级 - - - - - - - - - - - 作决定 - - - - - - - - - - - 盲打 - - - - - - - - - - - 多重任务同时进行 - - - - - - - - - - - 纪律 - - - - - - - - - - - 坚持 - - - - - - - - - - - 主动性 - - - - - - - - - - - 独立 - - - - - - - - - - - 解决问题 - - - - - - - - - - - 逻辑性 - - - - - - - - - - - 批判性 - - - - - - - - - - - 创意性 - - - - - - - - - - - 策略 - - - - - - - - - - - 系统性 - - - - - - - - - - - 接受批评 - - - - - - - - - - - 出现错误及时通知 - - - - - - - - - - - 承认您的错误 - - - - - - - - - - - 分析错误 - - - - - - - - - - - 提出正确的问题 - - - - - - - - - - - 实验实操 - - - - - - - - - - - 知识管理 - - - - - - - - - - - 信息处理 - - - - - - - - - - - 收集、分析、评估信息,并据此做出决 -策的能力。 - - - - - - - - - - - 反思 - - - - - - - - - - - 冷静地回应他人的评论。很有 -可能他人所说的话、试图证明 -的事情,仅仅基于他们自己的 -角度,这是可以理解的。请客 -观地评估他人观点的有用性。 - - - - - - - - - - - 主动承担具有挑战性的任务,以发展您的技 -能和能力,即便此刻您还不具备完全足够的 -知识或经验(您的技能将会通过此类任务得 -到快速发展)。关键是要能够区分出:哪些 -是真正有助于您提升技能的复杂任务,而哪 -些又是仅仅需要替罪羊的愚蠢的任务。 - - - - - - - - - - - 您应该对自己的职业发展负责。 - 不要等待团队领导来决定您要学习什么。请不要忘记,盲 -目遵循他人安排的计划,只会让您提高某些适用于某特定 -公司的技能。 -最好商讨如何将您的个人利益和兴趣也纳入计划之中, - 否则的话,就很有可能将时间花在不相关的技能上,从而 -影响职业机会。不过切记不要太极端:别不加选择地什么 -都学,也不要什么都拒绝直到有一个完美的量身定制的学 -习计划出现。 - - - - - - - - - - - 自组织(Self- -organization) - - - - - - - - - - - 有能力根据各方人员不 -同的背景,而提供适量 -、适当的信息,以促进 -有效的沟通交流。 - - - - - - - - - - - 解决冲突 - - - - - - - - - - - 如果您阅读本路线图,您大概率已经注 -意到英文能力有多重要:) -通常,您至少需要具备英文阅读能力, -因为您要能够读懂技术文档。不过,随 -着您在职业阶梯上的步步晋升,您将同 -时需要更加自信地用英文说和写。 - - - - - - - - - - - 寻找志同道合的人,并 -加入或创建相关社区, -以进行经验交流。 - - - - - - - - - - - 您应当研究和观察当代发展趋势,以保 -持自己的竞争力, 并适应变化。 - - - - - - - - - - - 经验丰富的开发人员应该培养管理技能 -和业务沟通技能,以高效地完成任务。 -如果您有较好的情商,那这就相对更容 -易做到。 -对于初级开发人员来说,共情能力在与 -同事互动中也是非常有用的。 - - - - - - - - - - - - - - 步骤 1 - - - - - - - - - - Folder 1 - - - - - - - - - - - - - - - - 基本运算 - - - - - - - - - - - 算术运算 - - - - - - - - - - - 循环: for/while - - - - - - - - - - - 逻辑运算 - - - - - - - - - - - 位运算 - - - - - - - - - - - 函数 - - - - - - - - - - - Lambda表达式 - - - - - - - - - - - 运算符 - - - - - - - - - - - 数据类型 - - - - - - - - - - - 动态类型 - - - - - - - - - - - 静态类型 - - - - - - - - - - - RTTI(运行时类型识别) - - - - - - - - - - - 指针&引用 - - - - - - - - - - - 代码库结构化 - - - - - - - - - - - 引用 - - - - - - - - - - - 内存模型 - - - - - - - - - - - 智能指针(smart pointer) - - - - - - - - - - - 原始指针 - - - - - - - - - - - 代码拆分为 headers/cpp 文件 - - - - - - - - - - - 作用域(Scope) - - - - - - - - - - - 内存泄漏 - - - - - - - - - - - 前向声明 - - - - - - - - - - - unique_ptr - - - - - - - - - - - shared_ptr - - - - - - - - - - - 对象生命周期 - - - - - - - - - - - new/delete 运算符 - - - - - - - - - - - weak_ptr - - - - - - - - - - - 命名空间(Namespace) - - - - - - - - - - - 常规或自定义类型 -(结构/类)的常规运 -算符的重载。 - - - - - - - - - - - 为防止内存泄漏 -问题,最好使用 -智能指针而不是 -原始指针。 - - - - - - - - - - - - - - - - 步骤 2 - - - - - - - - - - Folder 2 - - - - - - - - - - - - - - - - 结构体(Struct)和类(class) - - - - - - - - - - - 异常处理 - - - - - - - - - - - 函数重载 - - - - - - - - - - - 虚函数表(Virtual table, vtbl) - - - - - - - - - - - 面向对象编程 (OOP) - - - - - - - - - - - 异常(Exceptions) - - - - - - - - - - - 非法访问(Access violation) - - - - - - - - - - - 动态多态(Dynamic polymorphism) - - - - - - - - - - - 虚函数(Virtual methods) - - - - - - - - - - - 三/五/零法则 - - - - - - - - - - - 静态多态(Static polymorphism) - - - - - - - - - - - 多重继承(Multiple inheritance) - - - - - - - - - - - 钻石继承(Diamond inheritance) - - - - - - - - - - - 错误码(Error codes) - - - - - - - - - - - 代码中最好避免 -出现多重继承 -(抽象类除外), -以防止运行时出 -现问题 - - - - - - - - - - - - - - - - 步骤 3 - - - - - - - - - - Folder 3 - - - - - - - - - - - - - - - - 自动类型推导 auto (automatic type deduction) - - - - - - - - - - - 语言概念(Language concepts) - - - - - - - - - - - 类型转换(type casting) - - - - - - - - - - - 静态类型转换(static_cast) - - - - - - - - - - - const_cast - - - - - - - - - - - 动态类型转换(dynamic_cast) - - - - - - - - - - - reinterpret_cast - - - - - - - - - - - 未定义行为 (Undefined Behavior,UB) - - - - - - - - - - - 参数依赖查找(Argument-dependent lookup,ADL) - - - - - - - - - - - 宏(Macros) - - - - - - - - - - - 名字改写(Name mangling) - - - - - - - - - - - 标准程序库+标准模板库(Standard library + STL) - - - - - - - - - - - 输入输出流(iostream) - - - - - - - - - - - 算法(Algorithms) - - - - - - - - - - - 迭代器(Iterators) - - - - - - - - - - - 容器(Containers) - - - - - - - - - - - Date/time - - - - - - - - - - - 多线程(Multithreading) - - - - - - - - - - - 根据 ISO - 标准,某些语言结构具有未定义行为。 -如果出现任何错误,则无法预测程序进 -一步的行为,因为程序此后的行为取决 -于平台环境、运行时的上下文具体内容等。 - - - - - - - - - - - - - - - - 步骤 4 - - - - - - - - - - Folder 4 - - - - - - - - - - - - - - - - 模板(Template) - - - - - - - - - - - 可变参数模板 (Variadic templates) - - - - - - - - - - - 模板特化(Template specialization) - - - - - - - - - - - 类型特征(type traits) - - - - - - - - - - - SFINAE - - - - - - - - - - - 模板全特化(Full template specialization) - - - - - - - - - - - 模板偏特化(Partial template specialization) - - - - - - - - - - - RAII(资源获取即初始化) - - - - - - - - - - - pimpl(指向实现的指针) - - - - - - - - - - - Erase-Remove(删除) - - - - - - - - - - - Non-Copyable (不可复制)/Non-Moveable(不可移动) - - - - - - - - - - - Copy and swap(复制并交换) - - - - - - - - - - - Copy on write(写时复制) - - - - - - - - - - - CRTP(奇异递归模板) - - - - - - - - - - - 标准(Standards) - - - - - - - - - - - C++11/14 - - - - - - - - - - - C++17 - - - - - - - - - - - C++20 - - - - - - - - - - - 最新版本 - - - - - - - - - - - C++0x - - - - - - - - - - - 惯常用法/设计习语(Idioms) - - - - - - - - - - - - - - - - 步骤 1 - - - - - - - - - - - - - - - - - - Folder 5 - - - - - - - - - - - - - - - - 使用源代码 - - - - - - - - - - - 文本编辑器 - - - - - - - - - - - 集成开发环境(IDE) - - - - - - - - - - - 代码编辑器 - - - - - - - - - - - 调试器(Debugger) - - - - - - - - - - - Linters - - - - - - - - - - - 熟悉编辑器的特性和功能范畴(快捷键、工具、插件) - - - - - - - - - - - 理解调试器所反馈出的信息 - - - - - - - - - - - 调试符号(Debugging symbols) - - - - - - - - - - - WinDbg - - - - - - - - - - - GDB - - - - - - - - - - - 选择一款广受欢迎的IDE, -并好好研究它、用好它。目前流行 -的IDE有:Eclipse, MS Visual -Studio, Qt Creator, JetBrains -Clion, XCode等等。 - - - - - - - - - - - 学习如何使用调试器,并深入了解 -调试器所具有的所有功能。 - - - - - - - - - - - 选择一款广受欢迎的编 -辑器,并好好研究它、 -用好它。例如:Notepad++, -Atom等。 - - - - - - - - - - - 通过命令行来使用调试器并非 -一项常规技能。掌握通过IDE来 -使用调试器的能力就足够了, -例如通过IDE设置断点,等等。 - - - - - - - - - - - 了解常见错误(段错误 segfault, -内存溢出 out of memory, -非法访问 access violation) -以及未定义行为(undefined -behavior)的概念。 - - - - - - - - - - - 选择一款广受欢迎的编辑器, -并好好研究它、用好它。例如: -Visual Code, Atom, Sublime Text -等等。 - - - - - - - - - - - - - - - - 步骤 3 - - - - - - - - - - Folder 6 - - - - - - - - - - - - - - - - - 编译器(Compilers) - - - - - - - - - - - 对编译过程的基本了解 - - - - - - - - - - - 将源代码编译为目标文件(compilation) - - - - - - - - - - - 目标文件链接过程 (linking) - - - - - - - - - - - 编译器的编译过程 - - - - - - - - - - - 特定编译器的特性 - - - - - - - - - - - 每个编译器之间有细微的差别。 -最好对这些差别有所了解,以避免 -陷入一些陷阱: -Clang++/LLVM,Intel C++, -MSVS C++,GCC,MinGW - - - - - - - - - - - 编译器执行代码编译过程的数个阶段。 -对所有这些阶段进行基本的了解将有助 -于更好地理解编译中可能出现的问题。 -不过,只有编译器创建者才需要深入了 -解编译器知识。 - - - - - - - - - - - - - - - - 步骤 5 - - - - - - - - - - Folder 7 - - - - - - - - - - - - - - - - 构建系统(Build systems) - - - - - - - - - - - CMake - - - - - - - - - - - Makefile - - - - - - - - - - - ninja - - - - - - - - - - - 包管理器(Package managers) - - - - - - - - - - - vcpkg - - - - - - - - - - - spack - - - - - - - - - - - Conan - - - - - - - - - - - nuget - - - - - - - - - - - 库(Library) - - - - - - - - - - - boost - - - - - - - - - - - opencv - - - - - - - - - - - poco - - - - - - - - - - - 引用库(Libraries inclusion) - - - - - - - - - - - protobuf - - - - - - - - - - - gRPC - - - - - - - - - - - fmt - - - - - - - - - - - pybindll - - - - - - - - - - - spdlog - - - - - - - - - - - ranges_v3 - - - - - - - - - - - tensorflow - - - - - - - - - - - opencl - - - - - - - - - - - 框架(Frameworks) - - - - - - - - - - - gtest/gmock - - - - - - - - - - - Qt - - - - - - - - - - - catch2 - - - - - - - - - - - google profiler - - - - - - - - - - - pytorch c++ - - - - - - - - - - - 使用程序库 - - - - - - - - - - - 软件授权许可(Licensing) - - - - - - - - - - - - - - - - 步骤 1 - - - - - - - - - - Folder 8 - - - - - - - - - - - - - - - - 计算机科学 - - - - - - - - - - - 数据结构 - - - - - - - - - - - 算法 - - - - - - - - - - - 布尔代数(Boolean algebra) - - - - - - - - - - - 有限状态机(Finite-state machines) - - - - - - - - - - - 了解如何计算算法复 -杂度,和如何计算内 -存消耗也很有好处。 - - - - - - - - - - - - - - - - 步骤 4 - - - - - - - - - - Folder 9 - - - - - - - - - - - - - - - - 版本控制软件(Version Control) - - - - - - - - - - - 分布式 - - - - - - - - - - - 集中式 - - - - - - - - - - - SVN - - - - - - - - - - - git - - - - - - - - - - - Mercurial - - - - - - - - - - - 最佳实践 - - - - - - - - - - - 代码质量 - - - - - - - - - - - 代码指南 - - - - - - - - - - - 开发原则 - - - - - - - - - - - KISS (Keep It Simple, Stupid) 保持简约、简单 - - - - - - - - - - - DRY (Don't Repeat Yourself) 不要重复你自己(不写重复代码) - - - - - - - - - - - YAGNI (You Aren't Gonna Need It) 你不需要它 - - - - - - - - - - - APO (Avoid Premature Optimization) 避免过早优化 - - - - - - - - - - - BDUF (Big Design Up Front) 前期大型设计 - - - - - - - - - - - Composition is preferably than the inheritance 组合优于继承 - - - - - - - - - - - Occam's razor 奥卡姆剃刀原理(简约法则) - - - - - - - - - - - Divide and Conquer 分治法 - - - - - - - - - - - 记录和遥测(Logging and telemetry) - - - - - - - - - - - 代码评审(Code review) - - - - - - - - - - - 阅读理解现有代码的能力 - - - - - - - - - - - 评审代码的能力 - - - - - - - - - - - 软件生命周期 - - - - - - - - - - - 实现(Implementation) - - - - - - - - - - - 测试 - - - - - - - - - - - 维护 - - - - - - - - - - - 版本管理(Versioning) - - - - - - - - - - - 单元测试(Unit tests) - - - - - - - - - - - 集成测试(Integration tests) - - - - - - - - - - - 功能测试(Functional tests) - - - - - - - - - - - 性能测试(Performance tests) - - - - - - - - - - - 软件架构和组件设计 - - - - - - - - - - - 组件集成 - - - - - - - - - - - 软件部署(Deployment) - - - - - - - - - - - 征集要求 - - - - - - - - - - - 软件生命周期结束 - - - - - - - - - - - 代码分析器(Code analyzers) - - - - - - - - - - - 静态分析器(Static analyzers) - - - - - - - - - - - 动态分析器(Dynamic analyzers) - - - - - - - - - - - Profilers - - - - - - - - - - - C++ 核心指南 - - - - - - - - - - - 行业标准 - - - - - - - - - - - MISRA - - - - - - - - - - - Autosar - - - - - - - - - - - 命令行 - - - - - - - - - - - batch - - - - - - - - - - - Powershell - - - - - - - - - - - bash - - - - - - - - - - - CI/CD(持续集成、持续部署) - - - - - - - - - - - 主干开发(Trunk Based Development) - - - - - - - - - - - 零停机时间部署(Zero downtime deployment) - - - - - - - - - - - 创建软件部署包 - - - - - - - - - - - 文档 - - - - - - - - - - - 安装包 - - - - - - - - - - - 其他编程语言的使用 - - - - - - - - - - - 语言互操作性(Language interoperability) - - - - - - - - - - - 命名规则(naming -conventin), tab键 vs -空格键 space,等等。 - - - - - - - - - - - 用于结合以下任意一种工具来配置自动代码格式验证:clang- -format 代码格式,Resharper - 代码风格,MSVS - 代码风格。 - - - - - - - - - - - - Scripting -- Functional -- SQL like -- NoSQL - - - - - - - - - - - 有时需要具备能够重用由另 -一种语言编写成的库的能力 -。 -例如:在C#中调用C++库。 - - - - - - - - - - - 向后兼容(Backward compatibility) - - - - - - - - - - - 不要忽略来自编译器或任何代码 -分析器的警告。 -他们是你的朋友,而不是敌人。 - - - - - - - - - - - Microsoft GSL - - - - - - - - - - - - - 软件设计 - - - - - - - - - - - 软件架构风格 - - - - - - - - - - - 基于组件 Component-based - - - - - - - - - - - 单体式应用程序 Monolithic application - - - - - - - - - - - 分层模式 Layered - - - - - - - - - - - 客户/服务器模式 Client-server - - - - - - - - - - - 微服务架构 Microservices architecture - - - - - - - - - - - 事件驱动架构 Event-driven - - - - - - - - - - - 插件Plug-ins - - - - - - - - - - - REST - - - - - - - - - - - 面向服务的架构 Service-oriented architecture - - - - - - - - - - - - - - 步骤 2 - - - - - - - - - - Folder 10 - - - - - - - - - - - - - - - - - 设计模式 Design Patters (GoF) - - - - - - - - - - - 行为模式(Behavioral) - - - - - - - - - - - 结构模式(Structural) - - - - - - - - - - - 创建模式(Creational) - - - - - - - - - - - 面向对象编程 (OOP) - - - - - - - - - - - - SOLID - - - - - - - - - - - UML - - - - - - - - - - - - - 架构模式 - - - - - - - - - - - MVC 模型-视图-控制器模式 - - - - - - - - - - - MVVM - - - - - - - - - - - Three-tier 三层架构 - - - - - - - - - - - Onion - - - - - - - - - - - Hexagon - - - - - - - - - - - 开发方法论 - - - - - - - - - - - 测试驱动开发(Test Driven Development) - - - - - - - - - - - 行为驱动开发(Behavior Driven Development) - - - - - - - - - - - 领域驱动设计(Domain Driven Design) - - - - - - - - - - - 内存 - - - - - - - - - - - 内存抽象(Memory abstractions) - - - - - - - - - - - 内存对齐(Memory alignment) - - - - - - - - - - - 内存管理(Memory management) - - - - - - - - - - - 二进制单位 - - - - - - - - - - - 可执行文件(Executable file) - - - - - - - - - - - 静态库(Static library) - - - - - - - - - - - 动态库(Dynamic library) - - - - - - - - - - - 栈(Stack) - - - - - - - - - - - 全局内存(Global memory) - - - - - - - - - - - 堆(Heap) - - - - - - - - - - - 应用内存(Application memory) - - - - - - - - - - - 虚拟内存(Virtual memory) - - - - - - - - - - - 操作系统 - - - - - - - - - - - 多线程 - - - - - - - - - - - 错误 - - - - - - - - - - - 死锁(Dead lock) - - - - - - - - - - - 竞态条件(Race condition) - - - - - - - - - - - 活锁(Live lock) - - - - - - - - - - - 饥饿(Starvation) - - - - - - - - - - - 线程(Threads) - - - - - - - - - - - 并发(Concurrency) - - - - - - - - - - - 互斥锁 (Mutexes) - - - - - - - - - - - 信号量(Semaphores) - - - - - - - - - - - 无锁(lock-free) - - - - - - - - - - - 事件处理(Event handling) - - - - - - - - - - - 同步(Sync) - - - - - - - - - - - 异步(Async) - - - - - - - - - - - 过程(Process) - - - - - - - - - - - 进程间通信(Interprocess communication) - - - - - - - - - - - 共享内存(Shared memory) - - - - - - - - - - - 管道(Pipes) - - - - - - - - - - - 序列化(Serialization) - - - - - - - - - - - json - - - - - - - - - - - XML - - - - - - - - - - - 网络(Network) - - - - - - - - - - - TCP/IP - - - - - - - - - - - OSI - - - - - - - - - - - Sockets - - - - - - - - - - - HTTP - - - - - - - - - - - TCP - - - - - - - - - - - UDP - - - - - - - - - - - 文件系统(File system) - - - - - - - - - - - 任务调度(Task scheduler) - - - - - - - - - - - 虚拟化(Virtualization) - - - - - - - - - - - VirtualBox - - - - - - - - - - - VMware Workstation - - - - - - - - - - - 容器(Containers) - - - - - - - - - - - Hyper-V - - - - - - - - - - - Docker - - - - - - - - - - - 云服务(Cloud Services) - - - - - - - - - - - Kubernetes - - - - - - - - - - - 程序安全 - - - - - - - - - - - 加密 - - - - - - - - - - - MultiCPU systems - - - - - - - - - - - Multicore CPU - - - - - - - - - - - NUMA - - - - - - - - - - - 输入/输出(Input/output) - - - - - - - - - - - 驱动程序(Drivers) - - - - - - - - - - - 音频(Audio) - - - - - - - - - - - 显卡(Graphics) - - - - - - - - - - - 打印机/打印 Printers (printing) - - - - - - - - - - - DirectSound - - - - - - - - - - - OpenAL - - - - - - - - - - - DirectX - - - - - - - - - - - Vulkan - - - - - - - - - - - OpenGL - - - - - - - - - - - CUDA - - - - - - - - - - - 通用技能 - - - - - - - - - - - C++语言工具 - - - - - - - - - - - C++语法 - - - - - - - - - - - С++ 开发者路线图 - - - - - - - - - - - 简介 - - - - - - - - - - - C++至今仍旧是最受欢迎的开发语言之一,有很多人想要开始学习C++并成为开发者。初学者通常会面临这样 -的问题:“我应当从何开始?我需要学些什么?应当以什么样的顺序去学?我需要参考哪些书籍? - -我们希望通过这份路线图来回答这些问题。本图旨在帮助初学者或经验有限的人士,所涵盖的内容侧重于可 -用在大多数开发项目中的通用能力和技能。如果您参考本路线图所罗列的相关材料,您将可以为自己创建一 -个高效的学习计划,而不被次要信息分心。本路线图将帮助您达到一个许多商业项目普遍要求的C++水平。 - -详细信息: https://github.com/salmer/CppDeveloperRoadmap - - - - - - - - - - - 如何使用 - - - - - - - - - - - 如您有任何意见或建议,请随时与我们联系。我们将感激不尽 :) - -您可通过以下任一Github链接联系我们 - - - - - - - - - - - 反馈与沟通 - - - - - - - - - - - 选修 - - - - - - - - - - - 初级 - - - - - - - - - - - 中级 - - - - - - - - - - - 高级 - - - - - - - - - - - 中级开发者具备以下能力: -可以为一款应用程序设计出 -新的功能,即便是缺乏对于 -该项新功能的完善的具体要 -求或相关信息。 - - - - - - - - - - - 高级开发者具备以下能力: -结合业务领域的相关背景, -设计出解决方案/组件,并作 -出相关决策。 - - - - - - - - - - - 初学者必须尽快掌握以下技能 -: -编写易读且结构良好的代码。 - - - - - - - - - - - 初学者需注意,对于中级和高 -级的技能,只需掌握基本概念 -即可。 - - - - - - - - - - - 本路线图标示出了学习“步骤”。 -这些“步骤”旨在规划出一套 -易于操作的学习计划,以帮助 -初学者在获取足够的C++基础 -知识的同时,逐步提升深入学 -习的信心。 - - - - - - - - - - - 创作者 - - - - - - - - - - - - https://github.com/salmer/CppDeveloperRoadmap - - - - - - - - - - - 仔细阅读许可协议的条款。 -您的项目必须遵守这些条款, -才能使用这些库。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Chinese/Graph/roadmap.svg b/Chinese/Graph/roadmap.svg deleted file mode 100644 index 0dbf798..0000000 --- a/Chinese/Graph/roadmap.svg +++ /dev/null @@ -1,7532 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - C++ 开发者 - - - - - - - - - - - - 软性技能 - - - - - - - - - - - - 硬性技能 - - - - - - - - - - - - - - 一开始,有些技能看似没有 - 办法习得或提升。然而,在 - 我们看来,这里所列的每一 - 项技能,都是可以通过练习 - 得以提升的。每个人的学习 - 目的不同,最终成效取决于 - 您个人的愿望和努力 :) - - - - - - - - - - - - - 学习能力 - - - - - - - - - - - - - 管理错误 - - - - - - - - - - - - - 思考 - - - - - - - - - - - - - 责任 - - - - - - - - - - - - - 资源管理 - - - - - - - - - - - - - 交流沟通 - - - - - - - - - - - - - 团队协作 - - - - - - - - - - - - - 情绪智力(情商) - - - - - - - - - - - - - 理解开发背景 - - - - - - - - - - - - - 以客户为中心 - - - - - - - - - - - - - 技术 - - - - - - - - - - - - - 发展趋势 - - - - - - - - - - - - - 共情 - - - - - - - - - - - - - 专注 - - - - - - - - - - - - - 思想开明 - - - - - - - - - - - - - 适应性 - - - - - - - - - - - - - 抗压能力 - - - - - - - - - - - - - 在不确定性中工作 - - - - - - - - - - - - - 理解团队内的角色分工 - - - - - - - - - - - - - 支持帮助团队成员 - - - - - - - - - - - - - 在分布式团队中工作 - - - - - - - - - - - - - 提供意见反馈 - - - - - - - - - - - - - 领导力 - - - - - - - - - - - - - 启导、指导他人 - - - - - - - - - - - - - 委派工作 - - - - - - - - - - - - - 向员工分配和明确任务 - - - - - - - - - - - - - 计划并制订目标 - - - - - - - - - - - - - 协商 - - - - - - - - - - - - - 英文能力 - - - - - - - - - - - - - 演讲演示 - - - - - - - - - - - - - 书面沟通技巧 - - - - - - - - - - - - - 社交 - - - - - - - - - - - - - 倾听 - - - - - - - - - - - - - 说服 - - - - - - - - - - - - - 团队内部交流创意和想法的能力 - - - - - - - - - - - - - 寻求妥协 - - - - - - - - - - - - - 解决争议 - - - - - - - - - - - - - 向团队以外的人员提供信息的能力 - - - - - - - - - - - - - 时间管理 - - - - - - - - - - - - - 管理优先级 - - - - - - - - - - - - - 作决定 - - - - - - - - - - - - - 盲打 - - - - - - - - - - - - - 多重任务同时进行 - - - - - - - - - - - - - 纪律 - - - - - - - - - - - - - 坚持 - - - - - - - - - - - - - 主动性 - - - - - - - - - - - - - 独立 - - - - - - - - - - - - - 解决问题 - - - - - - - - - - - - - 逻辑性 - - - - - - - - - - - - - 批判性 - - - - - - - - - - - - - 创意性 - - - - - - - - - - - - - 策略 - - - - - - - - - - - - - 系统性 - - - - - - - - - - - - - 接受批评 - - - - - - - - - - - - - 出现错误及时通知 - - - - - - - - - - - - - 承认您的错误 - - - - - - - - - - - - - 分析错误 - - - - - - - - - - - - - 提出正确的问题 - - - - - - - - - - - - - 实验实操 - - - - - - - - - - - - - 知识管理 - - - - - - - - - - - - - 信息处理 - - - - - - - - - - - - - 收集、分析、评估信息,并据此做出决 - 策的能力。 - - - - - - - - - - - - - 反思 - - - - - - - - - - - - - 冷静地回应他人的评论。很有 - 可能他人所说的话、试图证明 - 的事情,仅仅基于他们自己的 - 角度,这是可以理解的。请客 - 观地评估他人观点的有用性。 - - - - - - - - - - - - - 主动承担具有挑战性的任务,以发展您的技 - 能和能力,即便此刻您还不具备完全足够的 - 知识或经验(您的技能将会通过此类任务得 - 到快速发展)。关键是要能够区分出:哪些 - 是真正有助于您提升技能的复杂任务,而哪 - 些又是仅仅需要替罪羊的愚蠢的任务。 - - - - - - - - - - - - - 您应该对自己的职业发展负责。 - 不要等待团队领导来决定您要学习什么。请不要忘记,盲 - 目遵循他人安排的计划,只会让您提高某些适用于某特定 - 公司的技能。 - 最好商讨如何将您的个人利益和兴趣也纳入计划之中, - 否则的话,就很有可能将时间花在不相关的技能上,从而 - 影响职业机会。不过切记不要太极端:别不加选择地什么 - 都学,也不要什么都拒绝直到有一个完美的量身定制的学 - 习计划出现。 - - - - - - - - - - - - - 自组织(Self- - organization) - - - - - - - - - - - - - 有能力根据各方人员不 - 同的背景,而提供适量 - 、适当的信息,以促进 - 有效的沟通交流。 - - - - - - - - - - - - - 解决冲突 - - - - - - - - - - - - - 如果您阅读本路线图,您大概率已经注 - 意到英文能力有多重要:) - 通常,您至少需要具备英文阅读能力, - 因为您要能够读懂技术文档。不过,随 - 着您在职业阶梯上的步步晋升,您将同 - 时需要更加自信地用英文说和写。 - - - - - - - - - - - - - 寻找志同道合的人,并 - 加入或创建相关社区, - 以进行经验交流。 - - - - - - - - - - - - - 您应当研究和观察当代发展趋势,以保 - 持自己的竞争力, 并适应变化。 - - - - - - - - - - - - - 经验丰富的开发人员应该培养管理技能 - 和业务沟通技能,以高效地完成任务。 - 如果您有较好的情商,那这就相对更容 - 易做到。 - 对于初级开发人员来说,共情能力在与 - 同事互动中也是非常有用的。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 步骤 1 - - - - - - - - - - - - - - - - 基本运算 - - - - - - - - - - - - - 算术运算 - - - - - - - - - - - - - 循环: for/while - - - - - - - - - - - - - 逻辑运算 - - - - - - - - - - - - - 位运算 - - - - - - - - - - - - - 函数 - - - - - - - - - - - - - Lambda表达式 - - - - - - - - - - - - - 运算符 - - - - - - - - - - - - - 数据类型 - - - - - - - - - - - - - 动态类型 - - - - - - - - - - - - - 静态类型 - - - - - - - - - - - - - RTTI(运行时类型识别) - - - - - - - - - - - - - 指针&引用 - - - - - - - - - - - - - 代码库结构化 - - - - - - - - - - - - - 引用 - - - - - - - - - - - - - 内存模型 - - - - - - - - - - - - - 智能指针(smart pointer) - - - - - - - - - - - - - 原始指针 - - - - - - - - - - - - - 代码拆分为 headers/cpp 文件 - - - - - - - - - - - - - 作用域(Scope) - - - - - - - - - - - - - 内存泄漏 - - - - - - - - - - - - - 前向声明 - - - - - - - - - - - - - unique_ptr - - - - - - - - - - - - - shared_ptr - - - - - - - - - - - - - 对象生命周期 - - - - - - - - - - - - - new/delete 运算符 - - - - - - - - - - - - - weak_ptr - - - - - - - - - - - - - 命名空间(Namespace) - - - - - - - - - - - - - 常规或自定义类型 - (结构/类)的常规运 - 算符的重载。 - - - - - - - - - - - - - 为防止内存泄漏 - 问题,最好使用 - 智能指针而不是 - 原始指针。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 步骤 2 - - - - - - - - - - - - - - - - 结构体(Struct)和类(class) - - - - - - - - - - - - - 异常处理 - - - - - - - - - - - - - 函数重载 - - - - - - - - - - - - - 虚函数表(Virtual table, vtbl) - - - - - - - - - - - - - 面向对象编程 (OOP) - - - - - - - - - - - - - 异常(Exceptions) - - - - - - - - - - - - - 非法访问(Access violation) - - - - - - - - - - - - - 动态多态(Dynamic polymorphism) - - - - - - - - - - - - - 虚函数(Virtual methods) - - - - - - - - - - - - - 三/五/零法则 - - - - - - - - - - - - - 静态多态(Static polymorphism) - - - - - - - - - - - - - 多重继承(Multiple inheritance) - - - - - - - - - - - - - 钻石继承(Diamond inheritance) - - - - - - - - - - - - - 错误码(Error codes) - - - - - - - - - - - - - 代码中最好避免 - 出现多重继承 - (抽象类除外), - 以防止运行时出 - 现问题 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 步骤 3 - - - - - - - - - - - - - - - - 自动类型推导 auto (automatic type deduction) - - - - - - - - - - - - - 语言概念(Language concepts) - - - - - - - - - - - - - 类型转换(type casting) - - - - - - - - - - - - - 静态类型转换(static_cast) - - - - - - - - - - - - - const_cast - - - - - - - - - - - - - 动态类型转换(dynamic_cast) - - - - - - - - - - - - - reinterpret_cast - - - - - - - - - - - - - 未定义行为 (Undefined Behavior,UB) - - - - - - - - - - - - - 参数依赖查找(Argument-dependent lookup,ADL) - - - - - - - - - - - - - 宏(Macros) - - - - - - - - - - - - - 名字改写(Name mangling) - - - - - - - - - - - - - 标准程序库+标准模板库(Standard library + STL) - - - - - - - - - - - - - 输入输出流(iostream) - - - - - - - - - - - - - 算法(Algorithms) - - - - - - - - - - - - - 迭代器(Iterators) - - - - - - - - - - - - - 容器(Containers) - - - - - - - - - - - - - Date/time - - - - - - - - - - - - - 多线程(Multithreading) - - - - - - - - - - - - - 根据 ISO - 标准,某些语言结构具有未定义行为。 - 如果出现任何错误,则无法预测程序进 - 一步的行为,因为程序此后的行为取决 - 于平台环境、运行时的上下文具体内容等。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 步骤 4 - - - - - - - - - - - - - - - - 模板(Template) - - - - - - - - - - - - - 可变参数模板 (Variadic templates) - - - - - - - - - - - - - 模板特化(Template specialization) - - - - - - - - - - - - - 类型特征(type traits) - - - - - - - - - - - - - SFINAE - - - - - - - - - - - - - 模板全特化(Full template specialization) - - - - - - - - - - - - - 模板偏特化(Partial template specialization) - - - - - - - - - - - - - RAII(资源获取即初始化) - - - - - - - - - - - - - pimpl(指向实现的指针) - - - - - - - - - - - - - Erase-Remove(删除) - - - - - - - - - - - - - Non-Copyable (不可复制)/Non-Moveable(不可移动) - - - - - - - - - - - - - Copy and swap(复制并交换) - - - - - - - - - - - - - Copy on write(写时复制) - - - - - - - - - - - - - CRTP(奇异递归模板) - - - - - - - - - - - - - 标准(Standards) - - - - - - - - - - - - - C++11/14 - - - - - - - - - - - - - C++17 - - - - - - - - - - - - - C++20 - - - - - - - - - - - - - 最新版本 - - - - - - - - - - - - - C++0x - - - - - - - - - - - - - 惯常用法/设计习语(Idioms) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 步骤 1 - - - - - - - - - - - - - - - - - 使用源代码 - - - - - - - - - - - - - 文本编辑器 - - - - - - - - - - - - - 集成开发环境(IDE) - - - - - - - - - - - - - 代码编辑器 - - - - - - - - - - - - - 调试器(Debugger) - - - - - - - - - - - - - Linters - - - - - - - - - - - - - 熟悉编辑器的特性和功能范畴(快捷键、工具、插件) - - - - - - - - - - - - - 理解调试器所反馈出的信息 - - - - - - - - - - - - - 调试符号(Debugging symbols) - - - - - - - - - - - - - WinDbg - - - - - - - - - - - - - GDB - - - - - - - - - - - - - 选择一款广受欢迎的IDE, - 并好好研究它、用好它。目前流行 - 的IDE有:Eclipse, MS Visual - Studio, Qt Creator, JetBrains - Clion, XCode等等。 - - - - - - - - - - - - - 学习如何使用调试器,并深入了解 - 调试器所具有的所有功能。 - - - - - - - - - - - - - 选择一款广受欢迎的编 - 辑器,并好好研究它、 - 用好它。例如:Notepad++, - Atom等。 - - - - - - - - - - - - - 通过命令行来使用调试器并非 - 一项常规技能。掌握通过IDE来 - 使用调试器的能力就足够了, - 例如通过IDE设置断点,等等。 - - - - - - - - - - - - - 了解常见错误(段错误 segfault, - 内存溢出 out of memory, - 非法访问 access violation) - 以及未定义行为(undefined - behavior)的概念。 - - - - - - - - - - - - - 选择一款广受欢迎的编辑器, - 并好好研究它、用好它。例如: - Visual Code, Atom, Sublime Text - 等等。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 步骤 3 - - - - - - - - - - - - - - - - - 编译器(Compilers) - - - - - - - - - - - - - - 对编译过程的基本了解 - - - - - - - - - - - - - 将源代码编译为目标文件(compilation) - - - - - - - - - - - - - 目标文件链接过程 (linking) - - - - - - - - - - - - - 编译器的编译过程 - - - - - - - - - - - - - 特定编译器的特性 - - - - - - - - - - - - - 每个编译器之间有细微的差别。 - 最好对这些差别有所了解,以避免 - 陷入一些陷阱: - Clang++/LLVM,Intel C++, - MSVS C++,GCC,MinGW - - - - - - - - - - - - - 编译器执行代码编译过程的数个阶段。 - 对所有这些阶段进行基本的了解将有助 - 于更好地理解编译中可能出现的问题。 - 不过,只有编译器创建者才需要深入了 - 解编译器知识。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 步骤 5 - - - - - - - - - - - - - - - - 构建系统(Build systems) - - - - - - - - - - - - - CMake - - - - - - - - - - - - - Makefile - - - - - - - - - - - - - ninja - - - - - - - - - - - - - 包管理器(Package managers) - - - - - - - - - - - - - vcpkg - - - - - - - - - - - - - spack - - - - - - - - - - - - - Conan - - - - - - - - - - - - - nuget - - - - - - - - - - - - - 库(Library) - - - - - - - - - - - - - boost - - - - - - - - - - - - - opencv - - - - - - - - - - - - - poco - - - - - - - - - - - - - 引用库(Libraries inclusion) - - - - - - - - - - - - - protobuf - - - - - - - - - - - - - gRPC - - - - - - - - - - - - - fmt - - - - - - - - - - - - - pybindll - - - - - - - - - - - - - spdlog - - - - - - - - - - - - - ranges_v3 - - - - - - - - - - - - - tensorflow - - - - - - - - - - - - - opencl - - - - - - - - - - - - - 框架(Frameworks) - - - - - - - - - - - - - gtest/gmock - - - - - - - - - - - - - Qt - - - - - - - - - - - - - catch2 - - - - - - - - - - - - - google profiler - - - - - - - - - - - - - pytorch c++ - - - - - - - - - - - - - 使用程序库 - - - - - - - - - - - - - 软件授权许可(Licensing) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 步骤 1 - - - - - - - - - - - - - - - - 计算机科学 - - - - - - - - - - - - - 数据结构 - - - - - - - - - - - - - 算法 - - - - - - - - - - - - - 布尔代数(Boolean algebra) - - - - - - - - - - - - - 有限状态机(Finite-state machines) - - - - - - - - - - - - - 了解如何计算算法复 - 杂度,和如何计算内 - 存消耗也很有好处。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 步骤 4 - - - - - - - - - - - - - - - - 版本控制软件(Version Control) - - - - - - - - - - - - - 分布式 - - - - - - - - - - - - - 集中式 - - - - - - - - - - - - - SVN - - - - - - - - - - - - - git - - - - - - - - - - - - - Mercurial - - - - - - - - - - - - - 最佳实践 - - - - - - - - - - - - - 代码质量 - - - - - - - - - - - - - 代码指南 - - - - - - - - - - - - - 开发原则 - - - - - - - - - - - - - KISS (Keep It Simple, Stupid) 保持简约、简单 - - - - - - - - - - - - - DRY (Don't Repeat Yourself) 不要重复你自己(不写重复代码) - - - - - - - - - - - - - YAGNI (You Aren't Gonna Need It) 你不需要它 - - - - - - - - - - - - - APO (Avoid Premature Optimization) 避免过早优化 - - - - - - - - - - - - - BDUF (Big Design Up Front) 前期大型设计 - - - - - - - - - - - - - Composition is preferably than the inheritance 组合优于继承 - - - - - - - - - - - - - Occam's razor 奥卡姆剃刀原理(简约法则) - - - - - - - - - - - - - Divide and Conquer 分治法 - - - - - - - - - - - - - 记录和遥测(Logging and telemetry) - - - - - - - - - - - - - 代码评审(Code review) - - - - - - - - - - - - - 阅读理解现有代码的能力 - - - - - - - - - - - - - 评审代码的能力 - - - - - - - - - - - - - 软件生命周期 - - - - - - - - - - - - - 实现(Implementation) - - - - - - - - - - - - - 测试 - - - - - - - - - - - - - 维护 - - - - - - - - - - - - - 版本管理(Versioning) - - - - - - - - - - - - - 单元测试(Unit tests) - - - - - - - - - - - - - 集成测试(Integration tests) - - - - - - - - - - - - - 功能测试(Functional tests) - - - - - - - - - - - - - 性能测试(Performance tests) - - - - - - - - - - - - - 软件架构和组件设计 - - - - - - - - - - - - - 组件集成 - - - - - - - - - - - - - 软件部署(Deployment) - - - - - - - - - - - - - 征集要求 - - - - - - - - - - - - - 软件生命周期结束 - - - - - - - - - - - - - 代码分析器(Code analyzers) - - - - - - - - - - - - - 静态分析器(Static analyzers) - - - - - - - - - - - - - 动态分析器(Dynamic analyzers) - - - - - - - - - - - - - Profilers - - - - - - - - - - - - - C++ 核心指南 - - - - - - - - - - - - - 行业标准 - - - - - - - - - - - - - MISRA - - - - - - - - - - - - - Autosar - - - - - - - - - - - - - 命令行 - - - - - - - - - - - - - batch - - - - - - - - - - - - - Powershell - - - - - - - - - - - - - bash - - - - - - - - - - - - - CI/CD(持续集成、持续部署) - - - - - - - - - - - - - 主干开发(Trunk Based Development) - - - - - - - - - - - - - 零停机时间部署(Zero downtime deployment) - - - - - - - - - - - - - 创建软件部署包 - - - - - - - - - - - - - 文档 - - - - - - - - - - - - - 安装包 - - - - - - - - - - - - - 其他编程语言的使用 - - - - - - - - - - - - - 语言互操作性(Language interoperability) - - - - - - - - - - - - - 命名规则(naming - conventin), tab键 vs - 空格键 space,等等。 - - - - - - - - - - - - - 用于结合以下任意一种工具来配置自动代码格式验证:clang- - format 代码格式,Resharper - 代码风格,MSVS - 代码风格。 - - - - - - - - - - - - - - Scripting - - Functional - - SQL like - - NoSQL - - - - - - - - - - - - - 有时需要具备能够重用由另 - 一种语言编写成的库的能力 - - 例如:在C#中调用C++库。 - - - - - - - - - - - - - 向后兼容(Backward compatibility) - - - - - - - - - - - - - 不要忽略来自编译器或任何代码 - 分析器的警告。 - 他们是你的朋友,而不是敌人。 - - - - - - - - - - - - - Microsoft GSL - - - - - - - - - - - - - 软件设计 - - - - - - - - - - - - - 软件架构风格 - - - - - - - - - - - - - 基于组件 Component-based - - - - - - - - - - - - - 单体式应用程序 Monolithic application - - - - - - - - - - - - - 分层模式 Layered - - - - - - - - - - - - - 客户/服务器模式 Client-server - - - - - - - - - - - - - 微服务架构 Microservices architecture - - - - - - - - - - - - - 事件驱动架构 Event-driven - - - - - - - - - - - - - 插件Plug-ins - - - - - - - - - - - - - REST - - - - - - - - - - - - - 面向服务的架构 Service-oriented architecture - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 步骤 2 - - - - - - - - - - - - - - - - - 设计模式 Design Patters (GoF) - - - - - - - - - - - - - - 行为模式(Behavioral) - - - - - - - - - - - - - 结构模式(Structural) - - - - - - - - - - - - - 创建模式(Creational) - - - - - - - - - - - - - 面向对象编程 (OOP) - - - - - - - - - - - - - - SOLID - - - - - - - - - - - - - - UML - - - - - - - - - - - - - 架构模式 - - - - - - - - - - - - - MVC 模型-视图-控制器模式 - - - - - - - - - - - - - MVVM - - - - - - - - - - - - - Three-tier 三层架构 - - - - - - - - - - - - - Onion - - - - - - - - - - - - - Hexagon - - - - - - - - - - - - - 开发方法论 - - - - - - - - - - - - - 测试驱动开发(Test Driven Development) - - - - - - - - - - - - - 行为驱动开发(Behavior Driven Development) - - - - - - - - - - - - - 领域驱动设计(Domain Driven Design) - - - - - - - - - - - - - 内存 - - - - - - - - - - - - - 内存抽象(Memory abstractions) - - - - - - - - - - - - - 内存对齐(Memory alignment) - - - - - - - - - - - - - 内存管理(Memory management) - - - - - - - - - - - - - 二进制单位 - - - - - - - - - - - - - 可执行文件(Executable file) - - - - - - - - - - - - - 静态库(Static library) - - - - - - - - - - - - - 动态库(Dynamic library) - - - - - - - - - - - - - 栈(Stack) - - - - - - - - - - - - - 全局内存(Global memory) - - - - - - - - - - - - - 堆(Heap) - - - - - - - - - - - - - 应用内存(Application memory) - - - - - - - - - - - - - 虚拟内存(Virtual memory) - - - - - - - - - - - - - 操作系统 - - - - - - - - - - - - - 多线程 - - - - - - - - - - - - - 错误 - - - - - - - - - - - - - 死锁(Dead lock) - - - - - - - - - - - - - 竞态条件(Race condition) - - - - - - - - - - - - - 活锁(Live lock) - - - - - - - - - - - - - 饥饿(Starvation) - - - - - - - - - - - - - 线程(Threads) - - - - - - - - - - - - - 并发(Concurrency) - - - - - - - - - - - - - 互斥锁 (Mutexes) - - - - - - - - - - - - - 信号量(Semaphores) - - - - - - - - - - - - - 无锁(lock-free) - - - - - - - - - - - - - 事件处理(Event handling) - - - - - - - - - - - - - 同步(Sync) - - - - - - - - - - - - - 异步(Async) - - - - - - - - - - - - - 过程(Process) - - - - - - - - - - - - - 进程间通信(Interprocess communication) - - - - - - - - - - - - - 共享内存(Shared memory) - - - - - - - - - - - - - 管道(Pipes) - - - - - - - - - - - - - 序列化(Serialization) - - - - - - - - - - - - - json - - - - - - - - - - - - - XML - - - - - - - - - - - - - 网络(Network) - - - - - - - - - - - - - TCP/IP - - - - - - - - - - - - - OSI - - - - - - - - - - - - - Sockets - - - - - - - - - - - - - HTTP - - - - - - - - - - - - - TCP - - - - - - - - - - - - - UDP - - - - - - - - - - - - - 文件系统(File system) - - - - - - - - - - - - - 任务调度(Task scheduler) - - - - - - - - - - - - - 虚拟化(Virtualization) - - - - - - - - - - - - - VirtualBox - - - - - - - - - - - - - VMware Workstation - - - - - - - - - - - - - 容器(Containers) - - - - - - - - - - - - - Hyper-V - - - - - - - - - - - - - Docker - - - - - - - - - - - - - 云服务(Cloud Services) - - - - - - - - - - - - - Kubernetes - - - - - - - - - - - - - 程序安全 - - - - - - - - - - - - - 加密 - - - - - - - - - - - - - MultiCPU systems - - - - - - - - - - - - - Multicore CPU - - - - - - - - - - - - - NUMA - - - - - - - - - - - - - 输入/输出(Input/output) - - - - - - - - - - - - - 驱动程序(Drivers) - - - - - - - - - - - - - 音频(Audio) - - - - - - - - - - - - - 显卡(Graphics) - - - - - - - - - - - - - 打印机/打印 Printers (printing) - - - - - - - - - - - - - DirectSound - - - - - - - - - - - - - OpenAL - - - - - - - - - - - - - DirectX - - - - - - - - - - - - - Vulkan - - - - - - - - - - - - - OpenGL - - - - - - - - - - - - - CUDA - - - - - - - - - - - - - 通用技能 - - - - - - - - - - - - - C++语言工具 - - - - - - - - - - - - - C++语法 - - - - - - - - - - - - - С++ 开发者路线图 - - - - - - - - - - - - - 简介 - - - - - - - - - - - - - C++至今仍旧是最受欢迎的开发语言之一,有很多人想要开始学习C++并成为开发者。初学者通常会面临这样 - 的问题:“我应当从何开始?我需要学些什么?应当以什么样的顺序去学?我需要参考哪些书籍? - - 我们希望通过这份路线图来回答这些问题。本图旨在帮助初学者或经验有限的人士,所涵盖的内容侧重于可 - 用在大多数开发项目中的通用能力和技能。如果您参考本路线图所罗列的相关材料,您将可以为自己创建一 - 个高效的学习计划,而不被次要信息分心。本路线图将帮助您达到一个许多商业项目普遍要求的C++水平。 - - 详细信息: https://github.com/salmer/CppDeveloperRoadmap - - - - - - - - - - - - - 如何使用 - - - - - - - - - - - - - 如您有任何意见或建议,请随时与我们联系。我们将感激不尽 :) - - 您可通过以下任一Github链接联系我们 - - - - - - - - - - - - - 反馈与沟通 - - - - - - - - - - - - - 选修 - - - - - - - - - - - - - 初级 - - - - - - - - - - - - - 中级 - - - - - - - - - - - - - 高级 - - - - - - - - - - - - - 中级开发者具备以下能力: - 可以为一款应用程序设计出 - 新的功能,即便是缺乏对于 - 该项新功能的完善的具体要 - 求或相关信息。 - - - - - - - - - - - - - 高级开发者具备以下能力: - 结合业务领域的相关背景, - 设计出解决方案/组件,并作 - 出相关决策。 - - - - - - - - - - - - - 初学者必须尽快掌握以下技能 - : - 编写易读且结构良好的代码。 - - - - - - - - - - - - - 初学者需注意,对于中级和高 - 级的技能,只需掌握基本概念 - 即可。 - - - - - - - - - - - - - 本路线图标示出了学习“步骤”。 - 这些“步骤”旨在规划出一套 - 易于操作的学习计划,以帮助 - 初学者在获取足够的C++基础 - 知识的同时,逐步提升深入学 - 习的信心。 - - - - - - - - - - - - - 创作者 - - - - - - - - - - - - - - https://github.com/salmer/CppDeveloperRoadmap - - - - - - - - - - - - - - 仔细阅读许可协议的条款。 - 您的项目必须遵守这些条款, - 才能使用这些库。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Chinese/README.md b/Chinese/README.md index 3bb2f36..d950ecc 100644 --- a/Chinese/README.md +++ b/Chinese/README.md @@ -26,11 +26,11 @@ C++ 仍然是 [2025 年](https://survey.stackoverflow.co/2025/technology#most-po 路线图提供以下格式: +* :arrow_forward: [draw.io(源文件,可编辑)](https://salmer.github.io/CppDeveloperRoadmap/goto/drawio/?l=zh) * :arrow_forward: [Miro](https://salmer.github.io/CppDeveloperRoadmap/goto/miro/?l=zh) * :arrow_forward: [SVG](https://salmer.github.io/CppDeveloperRoadmap/goto/svg/?l=zh) -* :arrow_forward: [GraphML(源文件)](https://salmer.github.io/CppDeveloperRoadmap/goto/graphml/?l=zh) -有关如何查看和编辑 graphML 文件的说明,请参见[此处](Graph/README.md)。 +每种语言的路线图都是一个 `roadmap.drawio.svg` 文件——您看到的图像和可编辑的 [draw.io](https://www.drawio.com) 源文件合二为一。有关如何查看和编辑的说明,请参见[此处](Graph/README.md)。 ## :key: 许可证和条件 @@ -45,8 +45,8 @@ C++ 仍然是 [2025 年](https://survey.stackoverflow.co/2025/technology#most-po 您可以通过 Github 中的以下渠道之一联系我们: -* 如果对存储库内容进行任何建议或修改 - 在[Pull Requests](https://github.com/salmer/CppDeveloperRoadmap/pulls) 中创建新 PR -* 如果对 **Miro 路线图** 有任何建议或修改 - 在[Issues](https://github.com/salmer/CppDeveloperRoadmap/issues)中提交新问题。(不幸的是,Miro 框架没有历史跟踪器并且无法访问路线图。所有更改都是在审核和批准后手动添加。) +* 如果对**内容或路线图**有任何建议或修改 - 在[Pull Requests](https://github.com/salmer/CppDeveloperRoadmap/pulls) 中创建新 PR(路线图可以像普通文件一样编辑——参见[说明](Graph/README.md)) +* 如果有**不涉及具体修改**的问题或建议 - 在[Issues](https://github.com/salmer/CppDeveloperRoadmap/issues)中提交新问题 # :telephone: 联系方式 diff --git a/English/Graph/README.md b/English/Graph/README.md index e0a473d..b80dfb2 100644 --- a/English/Graph/README.md +++ b/English/Graph/README.md @@ -1,9 +1,19 @@ -# How to view and modify the roadmap in graphML format +# How to view and edit the roadmap -GraphML is an XML-based file format for graphs. It is supported by many applications for viewing it. +The roadmap is stored as [roadmap.drawio.svg](roadmap.drawio.svg) — a regular SVG image with the editable [draw.io](https://www.drawio.com) diagram embedded inside it. The same file is both the picture you see and the source you edit, so there is nothing to export or keep in sync: every accepted pull request updates the published roadmap immediately. -For example, you can use [yEd](https://www.yworks.com/products/yed) to view graphML file and modify it as you want. +## Viewing -*Last synced with Miro: 2023-02-17* +- On the site: [salmer.github.io/CppDeveloperRoadmap/goto/svg/?l=en](https://salmer.github.io/CppDeveloperRoadmap/goto/svg/?l=en) +- On GitHub: open [roadmap.drawio.svg](roadmap.drawio.svg) — it renders as an image. -![Roadmap example](../../assets/example.png) \ No newline at end of file +## Editing + +1. Fork the repository. +2. Open the diagram in one of the draw.io editors: + - **Web:** go to [sketch.diagrams.net](https://sketch.diagrams.net) (the whiteboard-style UI of draw.io), open the file from *GitHub*, authorize, and select `English/Graph/roadmap.drawio.svg` in your fork. Saving commits directly to your fork. + - **VS Code:** install the [Draw.io Integration extension](https://marketplace.visualstudio.com/items?itemName=hediet.vscode-drawio) and open the file (this also works in the browser via github.dev — press `.` on your fork). + - **Desktop:** the [draw.io desktop app](https://www.drawio.com). +3. Open a pull request with your change. + +> :warning: Do not edit the SVG text by hand outside draw.io — that can strip the embedded diagram source and make the file uneditable. The file starts with a comment saying the same. diff --git a/English/Graph/roadmap.drawio.svg b/English/Graph/roadmap.drawio.svg new file mode 100644 index 0000000..16cc47f --- /dev/null +++ b/English/Graph/roadmap.drawio.svg @@ -0,0 +1,4 @@ + + + +1 step2 step3 step4 step1 step3 step5 step1 step4 step2 stepC++ developerSoft skillsHard skillsAt 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 desire and internal blocks. Everything is individual, and it's up to you to decide. :)Ability to learnManage mistakesThinkingResponsibilityManage resourcesCommunicationTeam workEmotional intelligenceUnderstanding the development contextCustomer focusTechnologyTrendsEmpathyConcentrationOpen-mindednessAdaptabilityStress resistanceWorking in uncertaintyUnderstanding the distribution of roles in a teamSupport team membersWork in a distributed teamProviding feedbackLeadershipMentoringDelegationAssigning and clarifying tasks to employeesPlanning and goal settingNegotiationEnglishPresentationWritten communication skillNetworkingAbility to listenPersuasionAbility to communicate ideas and thoughts within the teamFinding compromisesDispute resolutionProviding information to people outside the teamTime managementPrioritizationTaking decisionsBlind typingMultitaskingDisciplinePersistenceInitiativeIndependenceProblem solvingLogicalCriticalCreativeStrategicSystemsAccept criticismNotify about mistakes in timeAdmitting your mistakesAnalyze mistakesAsk the right questionsExperimentingManage knowledgeProcess informationAbility to gather, analyze, evaluate information and make decisions based on it.ReflectionCalmly 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 point of view.Take challenging tasks in order to develop your skills and competencies, even when there is not enough knowledge/experience (skills will develop much faster through such tasks). The main thing is to distinguish a really useful complex task that will help you to boost your skills from a dumb task that requires a scapegoat.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 requirements of a particular company. It is better to discuss and build in your interests into the plan. If this is not done, there is a high risk of getting irrelevant skills, which will hit career opportunities. But don't overdo it: don't study absolutely everything or don't passively wait until a development plan will be created for you.Self-organizationThe ability to provide the amount of information that is necessary to communicate to people with different backgrounds.Conflict solvingIf you read this it means you already understand why it is so important :)Usually, it is required at least to read because you would need to understand technical documentation. But as you move up the career ladder, you will need to speak and write more confidently in English.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 also useful to better interact with colleagues.Basic operationsArithmetic operationsLoops: for/whileLogical operationsBitwise operationsFunctionslambdaOperatorsData typesDynamic typingStatic typingRTTIPointers & ReferencesCodebase structuringReferencesMemory modelSmart pointerRaw pointersCode splitting into headers/cpp filesScopeMemory leakageForward declarationunique_ptrshared_ptrLifetime of objectsnew/delete operatorsweak_ptrNamespacesThe 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.Structures and classesException handlingOverloading of functionsVirtual table (vtbl)Object Oriented programming (OOP)ExceptionsAccess violationDynamic polymorphismVirtual methodsThe rule of zero/three/fiveStatic polymorphismMultiple inheritanceDiamond inheritanceError codesIt's preferred to avoid multiple inheritance (excepting abstract classes) to prevent runtime issuesauto (automatic type deduction)Language conceptstype castingstatic_castconst_castdynamic_castreinterpret_castUndefined Behavior (UB)Argument-dependent lookup (ADL)MacrosName manglingStandard library + STLiostreamAlgorithmsIteratorsContainersDate/timeMultithreadingSome 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.TemplatesVariadic templatesThe template specializationtype traitsSFINAEThe full template specializationThe partial template specializationRAIIpimplErase-RemoveNon-Copyable/Non-MoveableCopy and swapCopy on writeCRTPStandardsC++11/14C++17C++20newestC++0xIdiomsWorking with source codeText editorsIDECode editorsDebuggerLintersKnowledge of features and abilities (shortcuts, tools, plugins)Understanding of debugger messagesDebugging symbolsWinDbgGDBChoose one of the popular IDEs and study it well: Eclipse, MS Visual Studio, Qt Creator, JetBrains Clion, XCode, etc.Study how to use a debugger and all its featuresChoose 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.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.CompilersBasic understanding of compilers stagesCompilation of sources to object files (compilation)The object files linkage (linking)Working stages of compilersFeatures of a particular compilerEach compiler has its nuances. It's good to know about them to prevent getting any trap: Clang++/LLVM, Intel C++, MSVS C++, GCC, MinGWThe 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 creators only.Build systemsCMakeMakefileninjaPackage managersvcpkgspackConannugetLibrariesboostopencvpocoLibraries inclusionprotobufgRPCfmtpybindllspdlogranges_v3tensorflowopenclFrameworksgtest/gmockQtcatch2google profilerpytorch c++Working with librariesLicensingComputers ScienceData structuresAlgorithmsBoolean algebraFinite-state machinesIt's also good to know how to calculate algorithm complexity and memory consumption.Version control softwareDistributedCentralizedSVNgitMercurialBest practicesCode qualityCode guidelinesPrinciples of developmentKISS (Keep It Simple, Stupid)DRY (Don't Repeat Yourself)YAGNI (You Aren't Gonna Need It)APO (Avoid Premature Optimization)BDUF (Big Design Up Front)Composition is preferably than the inheritanceOccam's razorDivide and ConquerLogging and telemetryCode reviewSkill to read existing code sourcesSkill to review codeLifecycle stages of a softwareImplementationTestingMaintananceVersioningUnit testsIntegration testsFunctional testsPerformance testsSoftware architecture and components designComponents integrationDeploymentCollecting requirementsEnd of a software lifecycleCode analyzersStatic analyzersDynamic analyzersProfilersC++ core guidelinesIndustrial standardsMISRAAutosarCommand linebatchPowershellbashCI/CDTrunk Based DevelopmentZero downtime deploymentCreation of a software deployment packageDocumentationInstaller packageUsage of other programming languagesLanguage interoperabilityNaming 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.- Scripting- Functional- SQL like- NoSQLSometimes 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#.Backward compatibilityDo not ignore warnings from compiler and static analyzer. They are your friends, not enemiesMicrosoft GSLSoftware designArchitecture stylesComponent-basedMonolithic applicationLayeredClient-serverMicroservices architectureEvent-drivenPlug-insRESTService-oriented architectureDesign Patters (GoF)BehavioralStructuralCreationalOOPSOLIDUMLArchitecture patternsMVCMVVMThree-tierOnionHexagonMethodologies of developmentTest Driven DevelopmentBehavior Driven DevelopmentDomain Driven DesignMemoryMemory abstractionsMemory alignmentMemory managementBinary unitsExecutable fileStatic libraryDynamic libraryStackGlobal memoryHeapApplication memoryVirtual memoryOperating systemsMultithreadingErrorsDead lockRace conditionLive lockStarvationThreadsConcurrencyMutexesSemaphoreslock-freeEvent handlingSyncAsyncProcessInterprocess communicationShared memoryPipesSerializationjsonXMLNetworkTCP/IPOSISocketsHTTPTCPUDPFile systemTask schedulerVirtualizationVirtualBoxVMware WorkstationContainersHyper-VDockerCloud ServicesKubernetesSecurityEncryptionMultiCPU systemsMulticore CPUNUMAInput/outputDriversAudioGraphicsPrinters (printing)DirectSoundOpenALDirectXVulkanOpenGLCUDACommon skillsLanguage toolsLanguage syntaxC++ Developer RoadmapAbout: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?"We tried to answer these questions in the presented roadmap. The map focuses on general competencies and skills that could be found in most projects. It is designed to help those who are just starting their education or have little experience. You can create a more productive learning plan without being distracted by side information if you study the set of listed materials. It will help you to master C++ at the level that is used in many commercial projects.How to use:If you have any feedback or remarks don't hesitate to contact us. We really appreciate it. :)To contact us choose one of the following Github approaches:- For any remarks related to repository content - go to Pull Requests and submit a new oneFeedback:OptionalJuniorMiddleSeniorThe middle developer has the skills to create a design for new functionality as a part of a component/application if even there're not enough requirements or information presented.The senior developer has the skills to create a design and make decisions for a solution/component taking into account business area context.The junior must acquire the following skill as soon as possible: to write easy-readable and well-structured code.The juniors should be aware of middle/senior skills. It's enough to have a basic understanding of them.The "steps" are presented on this map. They're intended to show an easy for newbies to be able to get confident base knowledge about the language at the beginning.Repository:https://github.com/salmer/CppDeveloperRoadmapCarefully read the terms of the license agreement.Your project must comply with them. \ No newline at end of file diff --git a/English/Graph/roadmap.graphml b/English/Graph/roadmap.graphml deleted file mode 100644 index f24e6a4..0000000 --- a/English/Graph/roadmap.graphml +++ /dev/null @@ -1,9762 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - C++ developer - - - - - - - - - - - - Soft skills - - - - - - - - - - - - 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 -desire and internal blocks. Everything is individual, and -it's up to you to decide. :) - - - - - - - - - - - Ability to learn - - - - - - - - - - - Manage mistakes - - - - - - - - - - - Thinking - - - - - - - - - - - Responsibility - - - - - - - - - - - Manage resources - - - - - - - - - - - Communication - - - - - - - - - - - Team work - - - - - - - - - - - Emotional intelligence - - - - - - - - - - - Understanding the development context - - - - - - - - - - - Customer focus - - - - - - - - - - - Technology - - - - - - - - - - - Trends - - - - - - - - - - - Empathy - - - - - - - - - - - Concentration - - - - - - - - - - - Open-mindedness - - - - - - - - - - - Adaptability - - - - - - - - - - - Stress resistance - - - - - - - - - - - Working in uncertainty - - - - - - - - - - - Understanding the distribution of roles in a team - - - - - - - - - - - Support team members - - - - - - - - - - - Work in a distributed team - - - - - - - - - - - Providing feedback - - - - - - - - - - - Leadership - - - - - - - - - - - Mentoring - - - - - - - - - - - Delegation - - - - - - - - - - - Assigning and clarifying tasks to employees - - - - - - - - - - - Planning and goal setting - - - - - - - - - - - Negotiation - - - - - - - - - - - English - - - - - - - - - - - Presentation - - - - - - - - - - - Written communication skill - - - - - - - - - - - Networking - - - - - - - - - - - Ability to listen - - - - - - - - - - - Persuasion - - - - - - - - - - - Ability to communicate ideas and thoughts within the team - - - - - - - - - - - Finding compromises - - - - - - - - - - - Dispute resolution - - - - - - - - - - - Providing information to people outside the team - - - - - - - - - - - Time management - - - - - - - - - - - Prioritization - - - - - - - - - - - Taking decisions - - - - - - - - - - - Blind typing - - - - - - - - - - - Multitasking - - - - - - - - - - - Discipline - - - - - - - - - - - Persistence - - - - - - - - - - - Initiative - - - - - - - - - - - Independence - - - - - - - - - - - Problem solving - - - - - - - - - - - Logical - - - - - - - - - - - Critical - - - - - - - - - - - Creative - - - - - - - - - - - Strategic - - - - - - - - - - - Systems - - - - - - - - - - - Accept criticism - - - - - - - - - - - Notify about mistakes in time - - - - - - - - - - - Admitting your mistakes - - - - - - - - - - - Analyze mistakes - - - - - - - - - - - Ask the right questions - - - - - - - - - - - Experimenting - - - - - - - - - - - Manage knowledge - - - - - - - - - - - Process information - - - - - - - - - - - Ability to gather, analyze, evaluate -information and make decisions -based on it. - - - - - - - - - - - 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 -point of view. - - - - - - - - - - - Take challenging tasks in order to develop your skills and -competencies, even when there is not enough -knowledge/experience (skills will develop much faster -through such tasks). The main thing is to distinguish a -really useful complex task that will help you to boost your -skills from a dumb task that requires a scapegoat. - - - - - - - - - - - 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 -requirements of a particular company. It is better to discuss and build in -your interests into the plan. If this is not done, there is a high risk of getting -irrelevant skills, which will hit career opportunities. But don't overdo it: don't -study absolutely everything or don't passively wait until a development plan -will be created for you. - - - - - - - - - - - Self-organization - - - - - - - - - - - The ability to provide the amount of information that is -necessary to communicate to people with different -backgrounds. - - - - - - - - - - - Conflict solving - - - - - - - - - - - If you read this it means you already understand why it is so -important :) - -Usually, it is required at least to read because you would need to -understand technical documentation. But as you move up the career -ladder, you will need to speak and write more confidently in English. - - - - - - - - - - - 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 -also useful to better interact with colleagues. - - - - - - - - - - - - - - 1 step - - - - - - - - - - Folder 1 - - - - - - - - - - - - - - - - Basic operations - - - - - - - - - - - Arithmetic operations - - - - - - - - - - - Loops: for/while - - - - - - - - - - - Logical operations - - - - - - - - - - - Bitwise operations - - - - - - - - - - - Functions - - - - - - - - - - - lambda - - - - - - - - - - - Operators - - - - - - - - - - - Data types - - - - - - - - - - - Dynamic typing - - - - - - - - - - - Static typing - - - - - - - - - - - RTTI - - - - - - - - - - - Pointers & References - - - - - - - - - - - Codebase structuring - - - - - - - - - - - References - - - - - - - - - - - Memory model - - - - - - - - - - - Smart pointer - - - - - - - - - - - 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 - - - - - - - - - - - Namespaces - - - - - - - - - - - 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. - - - - - - - - - - - - - - - - 2 step - - - - - - - - - - Folder 2 - - - - - - - - - - - - - - - - Structures and classes - - - - - - - - - - - Exception handling - - - - - - - - - - - Overloading of functions - - - - - - - - - - - Virtual table (vtbl) - - - - - - - - - - - Object Oriented programming (OOP) - - - - - - - - - - - Exceptions - - - - - - - - - - - Access violation - - - - - - - - - - - Dynamic polymorphism - - - - - - - - - - - Virtual methods - - - - - - - - - - - The rule of zero/three/five - - - - - - - - - - - Static polymorphism - - - - - - - - - - - Multiple inheritance - - - - - - - - - - - Diamond inheritance - - - - - - - - - - - Error codes - - - - - - - - - - - It's preferred to avoid multiple inheritance -(excepting abstract classes) to prevent -runtime issues - - - - - - - - - - - - - - - - 3 step - - - - - - - - - - Folder 3 - - - - - - - - - - - - - - - - auto (automatic type deduction) - - - - - - - - - - - Language concepts - - - - - - - - - - - type casting - - - - - - - - - - - static_cast - - - - - - - - - - - const_cast - - - - - - - - - - - dynamic_cast - - - - - - - - - - - reinterpret_cast - - - - - - - - - - - Undefined Behavior (UB) - - - - - - - - - - - Argument-dependent lookup (ADL) - - - - - - - - - - - Macros - - - - - - - - - - - Name mangling - - - - - - - - - - - Standard library + STL - - - - - - - - - - - iostream - - - - - - - - - - - Algorithms - - - - - - - - - - - Iterators - - - - - - - - - - - Containers - - - - - - - - - - - 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. - - - - - - - - - - - - - - - - 4 step - - - - - - - - - - Folder 4 - - - - - - - - - - - - - - - - Templates - - - - - - - - - - - Variadic templates - - - - - - - - - - - The template specialization - - - - - - - - - - - type traits - - - - - - - - - - - SFINAE - - - - - - - - - - - The full template specialization - - - - - - - - - - - The partial template specialization - - - - - - - - - - - RAII - - - - - - - - - - - pimpl - - - - - - - - - - - Erase-Remove - - - - - - - - - - - Non-Copyable/Non-Moveable - - - - - - - - - - - Copy and swap - - - - - - - - - - - Copy on write - - - - - - - - - - - CRTP - - - - - - - - - - - Standards - - - - - - - - - - - C++11/14 - - - - - - - - - - - C++17 - - - - - - - - - - - C++20 - - - - - - - - - - - newest - - - - - - - - - - - C++0x - - - - - - - - - - - Idioms - - - - - - - - - - - - - - - - 1 step - - - - - - - - - - - - - - - - - - Folder 5 - - - - - - - - - - - - - - - - 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 - - - - - - - - - - - GDB - - - - - - - - - - - Choose one of the popular IDEs and study it well: -Eclipse, MS Visual Studio, Qt Creator, JetBrains Clion, -XCode, etc. - - - - - - - - - - - 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. - - - - - - - - - - - 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 - - - - - - - - - - Folder 6 - - - - - - - - - - - - - - - - - Compilers - - - - - - - - - - - Basic understanding of compilers stages - - - - - - - - - - - Compilation of sources to object files (compilation) - - - - - - - - - - - The object files linkage (linking) - - - - - - - - - - - Working stages of compilers - - - - - - - - - - - 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 - - - - - - - - - - - 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 -creators only. - - - - - - - - - - - - - - - - 5 step - - - - - - - - - - Folder 7 - - - - - - - - - - - - - - - - Build systems - - - - - - - - - - - CMake - - - - - - - - - - - Makefile - - - - - - - - - - - ninja - - - - - - - - - - - Package managers - - - - - - - - - - - vcpkg - - - - - - - - - - - spack - - - - - - - - - - - Conan - - - - - - - - - - - nuget - - - - - - - - - - - Libraries - - - - - - - - - - - boost - - - - - - - - - - - opencv - - - - - - - - - - - poco - - - - - - - - - - - Libraries inclusion - - - - - - - - - - - protobuf - - - - - - - - - - - gRPC - - - - - - - - - - - fmt - - - - - - - - - - - pybindll - - - - - - - - - - - spdlog - - - - - - - - - - - ranges_v3 - - - - - - - - - - - tensorflow - - - - - - - - - - - opencl - - - - - - - - - - - Frameworks - - - - - - - - - - - gtest/gmock - - - - - - - - - - - Qt - - - - - - - - - - - catch2 - - - - - - - - - - - google profiler - - - - - - - - - - - pytorch c++ - - - - - - - - - - - Working - with libraries - - - - - - - - - - - Licensing - - - - - - - - - - - - - - - - 1 step - - - - - - - - - - Folder 8 - - - - - - - - - - - - - - - - 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 - - - - - - - - - - Folder 9 - - - - - - - - - - - - - - - - Version control software - - - - - - - - - - - Distributed - - - - - - - - - - - Centralized - - - - - - - - - - - SVN - - - - - - - - - - - git - - - - - - - - - - - Mercurial - - - - - - - - - - - Best practices - - - - - - - - - - - Code quality - - - - - - - - - - - Code guidelines - - - - - - - - - - - Principles of development - - - - - - - - - - - KISS (Keep It Simple, Stupid) - - - - - - - - - - - DRY (Don't Repeat Yourself) - - - - - - - - - - - YAGNI (You Aren't Gonna Need It) - - - - - - - - - - - APO (Avoid Premature Optimization) - - - - - - - - - - - BDUF (Big Design Up Front) - - - - - - - - - - - Composition is preferably than the inheritance - - - - - - - - - - - Occam's razor - - - - - - - - - - - Divide and Conquer - - - - - - - - - - - Logging and telemetry - - - - - - - - - - - Code review - - - - - - - - - - - Skill to read existing code sources - - - - - - - - - - - Skill to review code - - - - - - - - - - - Lifecycle stages of a software - - - - - - - - - - - Implementation - - - - - - - - - - - Testing - - - - - - - - - - - Maintanance - - - - - - - - - - - Versioning - - - - - - - - - - - Unit tests - - - - - - - - - - - Integration tests - - - - - - - - - - - Functional tests - - - - - - - - - - - Performance tests - - - - - - - - - - - Software architecture and components design - - - - - - - - - - - Components integration - - - - - - - - - - - Deployment - - - - - - - - - - - Collecting requirements - - - - - - - - - - - End of a software lifecycle - - - - - - - - - - - Code analyzers - - - - - - - - - - - Static analyzers - - - - - - - - - - - Dynamic analyzers - - - - - - - - - - - Profilers - - - - - - - - - - - C++ core guidelines - - - - - - - - - - - Industrial standards - - - - - - - - - - - MISRA - - - - - - - - - - - Autosar - - - - - - - - - - - Command line - - - - - - - - - - - batch - - - - - - - - - - - Powershell - - - - - - - - - - - bash - - - - - - - - - - - CI/CD - - - - - - - - - - - Trunk Based Development - - - - - - - - - - - Zero downtime deployment - - - - - - - - - - - Creation of a software deployment package - - - - - - - - - - - Documentation - - - - - - - - - - - Installer package - - - - - - - - - - - Usage of other programming languages - - - - - - - - - - - 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. - - - - - - - - - - - - Scripting -- Functional -- SQL like -- NoSQL - - - - - - - - - - - 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#. - - - - - - - - - - - Backward compatibility - - - - - - - - - - - Do not ignore warnings from compiler and static analyzer. -They are your friends, not enemies - - - - - - - - - - - Microsoft GSL - - - - - - - - - - - - - Software design - - - - - - - - - - - Architecture styles - - - - - - - - - - - Component-based - - - - - - - - - - - Monolithic application - - - - - - - - - - - Layered - - - - - - - - - - - Client-server - - - - - - - - - - - Microservices architecture - - - - - - - - - - - Event-driven - - - - - - - - - - - Plug-ins - - - - - - - - - - - REST - - - - - - - - - - - Service-oriented architecture - - - - - - - - - - - - - - 2 step - - - - - - - - - - Folder 10 - - - - - - - - - - - - - - - - - Design Patters (GoF) - - - - - - - - - - - Behavioral - - - - - - - - - - - Structural - - - - - - - - - - - Creational - - - - - - - - - - - OOP - - - - - - - - - - - - SOLID - - - - - - - - - - - UML - - - - - - - - - - - - - Architecture patterns - - - - - - - - - - - MVC - - - - - - - - - - - MVVM - - - - - - - - - - - Three-tier - - - - - - - - - - - Onion - - - - - - - - - - - Hexagon - - - - - - - - - - - Methodologies of development - - - - - - - - - - - Test Driven Development - - - - - - - - - - - Behavior Driven Development - - - - - - - - - - - Domain Driven Design - - - - - - - - - - - Memory - - - - - - - - - - - Memory abstractions - - - - - - - - - - - Memory alignment - - - - - - - - - - - Memory management - - - - - - - - - - - Binary units - - - - - - - - - - - Executable file - - - - - - - - - - - Static library - - - - - - - - - - - Dynamic library - - - - - - - - - - - Stack - - - - - - - - - - - Global memory - - - - - - - - - - - Heap - - - - - - - - - - - Application memory - - - - - - - - - - - Virtual memory - - - - - - - - - - - Operating systems - - - - - - - - - - - Multithreading - - - - - - - - - - - Errors - - - - - - - - - - - Dead lock - - - - - - - - - - - Race condition - - - - - - - - - - - Live lock - - - - - - - - - - - Starvation - - - - - - - - - - - Threads - - - - - - - - - - - Concurrency - - - - - - - - - - - Mutexes - - - - - - - - - - - Semaphores - - - - - - - - - - - lock-free - - - - - - - - - - - Event handling - - - - - - - - - - - Sync - - - - - - - - - - - Async - - - - - - - - - - - Process - - - - - - - - - - - Interprocess communication - - - - - - - - - - - Shared memory - - - - - - - - - - - Pipes - - - - - - - - - - - Serialization - - - - - - - - - - - json - - - - - - - - - - - XML - - - - - - - - - - - Network - - - - - - - - - - - TCP/IP - - - - - - - - - - - OSI - - - - - - - - - - - Sockets - - - - - - - - - - - HTTP - - - - - - - - - - - TCP - - - - - - - - - - - UDP - - - - - - - - - - - File system - - - - - - - - - - - Task scheduler - - - - - - - - - - - Virtualization - - - - - - - - - - - VirtualBox - - - - - - - - - - - VMware Workstation - - - - - - - - - - - Containers - - - - - - - - - - - Hyper-V - - - - - - - - - - - Docker - - - - - - - - - - - Cloud Services - - - - - - - - - - - Kubernetes - - - - - - - - - - - Security - - - - - - - - - - - Encryption - - - - - - - - - - - MultiCPU systems - - - - - - - - - - - Multicore CPU - - - - - - - - - - - NUMA - - - - - - - - - - - Input/output - - - - - - - - - - - Drivers - - - - - - - - - - - Audio - - - - - - - - - - - Graphics - - - - - - - - - - - Printers (printing) - - - - - - - - - - - DirectSound - - - - - - - - - - - OpenAL - - - - - - - - - - - DirectX - - - - - - - - - - - Vulkan - - - - - - - - - - - OpenGL - - - - - - - - - - - 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?" - -We tried to answer these questions in the presented roadmap. The map focuses on general competencies and skills that -could be found in most projects. It is designed to help those who are just starting their education or have little experience. -You can create a more productive learning plan without being distracted by side information if you study the set of listed -materials. It will help you to master C++ at the level that is used in many commercial projects. - - - - - - - - - - - How to use: - - - - - - - - - - - If you have any feedback or remarks don't hesitate to contact us. -We really appreciate it. :) - -To contact us choose one of the following Github approaches: -- For any remarks related to repository content - go to Pull -Requests and submit a new one - - - - - - - - - - - - Feedback: - - - - - - - - - - - Optional - - - - - - - - - - - Junior - - - - - - - - - - - Middle - - - - - - - - - - - Senior - - - - - - - - - - - The middle developer has the -skills to create a design for -new functionality as a part of -a component/application if -even there're not enough -requirements or information -presented. - - - - - - - - - - - The senior developer has the -skills to create a design and -make decisions for a -solution/component taking -into account business area -context. - - - - - - - - - - - The junior must acquire the -following skill as soon as -possible: to write -easy-readable and -well-structured code. - - - - - - - - - - - The juniors should be aware -of middle/senior skills. It's -enough to have a basic -understanding of them. - - - - - - - - - - - The "steps" are presented on -this map. They're intended to -show an easy for newbies to -be able to get confident base -knowledge about the language -at the beginning. - - - - - - - - - - - Repository: - - - - - - - - - - - - https://github.com/salmer/CppDeveloperRoadmap - - - - - - - - - - - Carefully read the terms of the license agreement. -Your project must comply with them. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/English/Graph/roadmap.svg b/English/Graph/roadmap.svg deleted file mode 100644 index 5970255..0000000 --- a/English/Graph/roadmap.svg +++ /dev/null @@ -1,7509 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - C++ developer - - - - - - - - - - - - Soft skills - - - - - - - - - - - - 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 - desire and internal blocks. Everything is individual, and - it's up to you to decide. :) - - - - - - - - - - - - - Ability to learn - - - - - - - - - - - - - Manage mistakes - - - - - - - - - - - - - Thinking - - - - - - - - - - - - - Responsibility - - - - - - - - - - - - - Manage resources - - - - - - - - - - - - - Communication - - - - - - - - - - - - - Team work - - - - - - - - - - - - - Emotional intelligence - - - - - - - - - - - - - Understanding the development context - - - - - - - - - - - - - Customer focus - - - - - - - - - - - - - Technology - - - - - - - - - - - - - Trends - - - - - - - - - - - - - Empathy - - - - - - - - - - - - - Concentration - - - - - - - - - - - - - Open-mindedness - - - - - - - - - - - - - Adaptability - - - - - - - - - - - - - Stress resistance - - - - - - - - - - - - - Working in uncertainty - - - - - - - - - - - - - Understanding the distribution of roles in a team - - - - - - - - - - - - - Support team members - - - - - - - - - - - - - Work in a distributed team - - - - - - - - - - - - - Providing feedback - - - - - - - - - - - - - Leadership - - - - - - - - - - - - - Mentoring - - - - - - - - - - - - - Delegation - - - - - - - - - - - - - Assigning and clarifying tasks to employees - - - - - - - - - - - - - Planning and goal setting - - - - - - - - - - - - - Negotiation - - - - - - - - - - - - - English - - - - - - - - - - - - - Presentation - - - - - - - - - - - - - Written communication skill - - - - - - - - - - - - - Networking - - - - - - - - - - - - - Ability to listen - - - - - - - - - - - - - Persuasion - - - - - - - - - - - - - Ability to communicate ideas and thoughts within the team - - - - - - - - - - - - - Finding compromises - - - - - - - - - - - - - Dispute resolution - - - - - - - - - - - - - Providing information to people outside the team - - - - - - - - - - - - - Time management - - - - - - - - - - - - - Prioritization - - - - - - - - - - - - - Taking decisions - - - - - - - - - - - - - Blind typing - - - - - - - - - - - - - Multitasking - - - - - - - - - - - - - Discipline - - - - - - - - - - - - - Persistence - - - - - - - - - - - - - Initiative - - - - - - - - - - - - - Independence - - - - - - - - - - - - - Problem solving - - - - - - - - - - - - - Logical - - - - - - - - - - - - - Critical - - - - - - - - - - - - - Creative - - - - - - - - - - - - - Strategic - - - - - - - - - - - - - Systems - - - - - - - - - - - - - Accept criticism - - - - - - - - - - - - - Notify about mistakes in time - - - - - - - - - - - - - Admitting your mistakes - - - - - - - - - - - - - Analyze mistakes - - - - - - - - - - - - - Ask the right questions - - - - - - - - - - - - - Experimenting - - - - - - - - - - - - - Manage knowledge - - - - - - - - - - - - - Process information - - - - - - - - - - - - - Ability to gather, analyze, evaluate - information and make decisions - based on it. - - - - - - - - - - - - - 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 - point of view. - - - - - - - - - - - - - Take challenging tasks in order to develop your skills and - competencies, even when there is not enough - knowledge/experience (skills will develop much faster - through such tasks). The main thing is to distinguish a - really useful complex task that will help you to boost your - skills from a dumb task that requires a scapegoat. - - - - - - - - - - - - - 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 - requirements of a particular company. It is better to discuss and build in - your interests into the plan. If this is not done, there is a high risk of getting - irrelevant skills, which will hit career opportunities. But don't overdo it: don't - study absolutely everything or don't passively wait until a development plan - will be created for you. - - - - - - - - - - - - - Self-organization - - - - - - - - - - - - - The ability to provide the amount of information that is - necessary to communicate to people with different - backgrounds. - - - - - - - - - - - - - Conflict solving - - - - - - - - - - - - - If you read this it means you already understand why it is so - important :) - - Usually, it is required at least to read because you would need to - understand technical documentation. But as you move up the career - ladder, you will need to speak and write more confidently in English. - - - - - - - - - - - - - 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 - also useful to better interact with colleagues. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 step - - - - - - - - - - - - - - - - Basic operations - - - - - - - - - - - - - Arithmetic operations - - - - - - - - - - - - - Loops: for/while - - - - - - - - - - - - - Logical operations - - - - - - - - - - - - - Bitwise operations - - - - - - - - - - - - - Functions - - - - - - - - - - - - - lambda - - - - - - - - - - - - - Operators - - - - - - - - - - - - - Data types - - - - - - - - - - - - - Dynamic typing - - - - - - - - - - - - - Static typing - - - - - - - - - - - - - RTTI - - - - - - - - - - - - - Pointers & References - - - - - - - - - - - - - Codebase structuring - - - - - - - - - - - - - References - - - - - - - - - - - - - Memory model - - - - - - - - - - - - - Smart pointer - - - - - - - - - - - - - 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 - - - - - - - - - - - - - Namespaces - - - - - - - - - - - - - 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. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2 step - - - - - - - - - - - - - - - - Structures and classes - - - - - - - - - - - - - Exception handling - - - - - - - - - - - - - Overloading of functions - - - - - - - - - - - - - Virtual table (vtbl) - - - - - - - - - - - - - Object Oriented programming (OOP) - - - - - - - - - - - - - Exceptions - - - - - - - - - - - - - Access violation - - - - - - - - - - - - - Dynamic polymorphism - - - - - - - - - - - - - Virtual methods - - - - - - - - - - - - - The rule of zero/three/five - - - - - - - - - - - - - Static polymorphism - - - - - - - - - - - - - Multiple inheritance - - - - - - - - - - - - - Diamond inheritance - - - - - - - - - - - - - Error codes - - - - - - - - - - - - - It's preferred to avoid multiple inheritance - (excepting abstract classes) to prevent - runtime issues - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 3 step - - - - - - - - - - - - - - - - auto (automatic type deduction) - - - - - - - - - - - - - Language concepts - - - - - - - - - - - - - type casting - - - - - - - - - - - - - static_cast - - - - - - - - - - - - - const_cast - - - - - - - - - - - - - dynamic_cast - - - - - - - - - - - - - reinterpret_cast - - - - - - - - - - - - - Undefined Behavior (UB) - - - - - - - - - - - - - Argument-dependent lookup (ADL) - - - - - - - - - - - - - Macros - - - - - - - - - - - - - Name mangling - - - - - - - - - - - - - Standard library + STL - - - - - - - - - - - - - iostream - - - - - - - - - - - - - Algorithms - - - - - - - - - - - - - Iterators - - - - - - - - - - - - - Containers - - - - - - - - - - - - - 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. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 4 step - - - - - - - - - - - - - - - - Templates - - - - - - - - - - - - - Variadic templates - - - - - - - - - - - - - The template specialization - - - - - - - - - - - - - type traits - - - - - - - - - - - - - SFINAE - - - - - - - - - - - - - The full template specialization - - - - - - - - - - - - - The partial template specialization - - - - - - - - - - - - - RAII - - - - - - - - - - - - - pimpl - - - - - - - - - - - - - Erase-Remove - - - - - - - - - - - - - Non-Copyable/Non-Moveable - - - - - - - - - - - - - Copy and swap - - - - - - - - - - - - - Copy on write - - - - - - - - - - - - - CRTP - - - - - - - - - - - - - Standards - - - - - - - - - - - - - C++11/14 - - - - - - - - - - - - - C++17 - - - - - - - - - - - - - C++20 - - - - - - - - - - - - - newest - - - - - - - - - - - - - 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 - - - - - - - - - - - - - GDB - - - - - - - - - - - - - Choose one of the popular IDEs and study it well: - Eclipse, MS Visual Studio, Qt Creator, JetBrains Clion, - XCode, etc. - - - - - - - - - - - - - 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. - - - - - - - - - - - - - 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 - - - - - - - - - - - - - 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 - - - - - - - - - - - - - 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 - creators only. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 step - - - - - - - - - - - - - - - - Build systems - - - - - - - - - - - - - CMake - - - - - - - - - - - - - Makefile - - - - - - - - - - - - - ninja - - - - - - - - - - - - - Package managers - - - - - - - - - - - - - vcpkg - - - - - - - - - - - - - spack - - - - - - - - - - - - - Conan - - - - - - - - - - - - - nuget - - - - - - - - - - - - - Libraries - - - - - - - - - - - - - boost - - - - - - - - - - - - - opencv - - - - - - - - - - - - - poco - - - - - - - - - - - - - Libraries inclusion - - - - - - - - - - - - - protobuf - - - - - - - - - - - - - gRPC - - - - - - - - - - - - - fmt - - - - - - - - - - - - - pybindll - - - - - - - - - - - - - spdlog - - - - - - - - - - - - - ranges_v3 - - - - - - - - - - - - - tensorflow - - - - - - - - - - - - - opencl - - - - - - - - - - - - - Frameworks - - - - - - - - - - - - - gtest/gmock - - - - - - - - - - - - - Qt - - - - - - - - - - - - - catch2 - - - - - - - - - - - - - google profiler - - - - - - - - - - - - - pytorch c++ - - - - - - - - - - - - - Working - with libraries - - - - - - - - - - - - - Licensing - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 - - - - - - - - - - - - - SVN - - - - - - - - - - - - - git - - - - - - - - - - - - - Mercurial - - - - - - - - - - - - - Best practices - - - - - - - - - - - - - Code quality - - - - - - - - - - - - - Code guidelines - - - - - - - - - - - - - Principles of development - - - - - - - - - - - - - KISS (Keep It Simple, Stupid) - - - - - - - - - - - - - DRY (Don't Repeat Yourself) - - - - - - - - - - - - - YAGNI (You Aren't Gonna Need It) - - - - - - - - - - - - - APO (Avoid Premature Optimization) - - - - - - - - - - - - - BDUF (Big Design Up Front) - - - - - - - - - - - - - Composition is preferably than the inheritance - - - - - - - - - - - - - Occam's razor - - - - - - - - - - - - - Divide and Conquer - - - - - - - - - - - - - Logging and telemetry - - - - - - - - - - - - - Code review - - - - - - - - - - - - - Skill to read existing code sources - - - - - - - - - - - - - Skill to review code - - - - - - - - - - - - - Lifecycle stages of a software - - - - - - - - - - - - - Implementation - - - - - - - - - - - - - Testing - - - - - - - - - - - - - Maintanance - - - - - - - - - - - - - Versioning - - - - - - - - - - - - - Unit tests - - - - - - - - - - - - - Integration tests - - - - - - - - - - - - - Functional tests - - - - - - - - - - - - - Performance tests - - - - - - - - - - - - - Software architecture and components design - - - - - - - - - - - - - Components integration - - - - - - - - - - - - - Deployment - - - - - - - - - - - - - Collecting requirements - - - - - - - - - - - - - End of a software lifecycle - - - - - - - - - - - - - Code analyzers - - - - - - - - - - - - - Static analyzers - - - - - - - - - - - - - Dynamic analyzers - - - - - - - - - - - - - Profilers - - - - - - - - - - - - - C++ core guidelines - - - - - - - - - - - - - Industrial standards - - - - - - - - - - - - - MISRA - - - - - - - - - - - - - Autosar - - - - - - - - - - - - - Command line - - - - - - - - - - - - - batch - - - - - - - - - - - - - Powershell - - - - - - - - - - - - - bash - - - - - - - - - - - - - CI/CD - - - - - - - - - - - - - Trunk Based Development - - - - - - - - - - - - - Zero downtime deployment - - - - - - - - - - - - - Creation of a software deployment package - - - - - - - - - - - - - Documentation - - - - - - - - - - - - - Installer package - - - - - - - - - - - - - Usage of other programming languages - - - - - - - - - - - - - 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. - - - - - - - - - - - - - - Scripting - - Functional - - SQL like - - NoSQL - - - - - - - - - - - - - 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#. - - - - - - - - - - - - - Backward compatibility - - - - - - - - - - - - - Do not ignore warnings from compiler and static analyzer. - They are your friends, not enemies - - - - - - - - - - - - - Microsoft GSL - - - - - - - - - - - - - Software design - - - - - - - - - - - - - Architecture styles - - - - - - - - - - - - - Component-based - - - - - - - - - - - - - Monolithic application - - - - - - - - - - - - - Layered - - - - - - - - - - - - - Client-server - - - - - - - - - - - - - Microservices architecture - - - - - - - - - - - - - Event-driven - - - - - - - - - - - - - Plug-ins - - - - - - - - - - - - - REST - - - - - - - - - - - - - Service-oriented architecture - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2 step - - - - - - - - - - - - - - - - - Design Patters (GoF) - - - - - - - - - - - - - - Behavioral - - - - - - - - - - - - - Structural - - - - - - - - - - - - - Creational - - - - - - - - - - - - - OOP - - - - - - - - - - - - - - SOLID - - - - - - - - - - - - - - UML - - - - - - - - - - - - - Architecture patterns - - - - - - - - - - - - - MVC - - - - - - - - - - - - - MVVM - - - - - - - - - - - - - Three-tier - - - - - - - - - - - - - Onion - - - - - - - - - - - - - Hexagon - - - - - - - - - - - - - Methodologies of development - - - - - - - - - - - - - Test Driven Development - - - - - - - - - - - - - Behavior Driven Development - - - - - - - - - - - - - Domain Driven Design - - - - - - - - - - - - - Memory - - - - - - - - - - - - - Memory abstractions - - - - - - - - - - - - - Memory alignment - - - - - - - - - - - - - Memory management - - - - - - - - - - - - - Binary units - - - - - - - - - - - - - Executable file - - - - - - - - - - - - - Static library - - - - - - - - - - - - - Dynamic library - - - - - - - - - - - - - Stack - - - - - - - - - - - - - Global memory - - - - - - - - - - - - - Heap - - - - - - - - - - - - - Application memory - - - - - - - - - - - - - Virtual memory - - - - - - - - - - - - - Operating systems - - - - - - - - - - - - - Multithreading - - - - - - - - - - - - - Errors - - - - - - - - - - - - - Dead lock - - - - - - - - - - - - - Race condition - - - - - - - - - - - - - Live lock - - - - - - - - - - - - - Starvation - - - - - - - - - - - - - Threads - - - - - - - - - - - - - Concurrency - - - - - - - - - - - - - Mutexes - - - - - - - - - - - - - Semaphores - - - - - - - - - - - - - lock-free - - - - - - - - - - - - - Event handling - - - - - - - - - - - - - Sync - - - - - - - - - - - - - Async - - - - - - - - - - - - - Process - - - - - - - - - - - - - Interprocess communication - - - - - - - - - - - - - Shared memory - - - - - - - - - - - - - Pipes - - - - - - - - - - - - - Serialization - - - - - - - - - - - - - json - - - - - - - - - - - - - XML - - - - - - - - - - - - - Network - - - - - - - - - - - - - TCP/IP - - - - - - - - - - - - - OSI - - - - - - - - - - - - - Sockets - - - - - - - - - - - - - HTTP - - - - - - - - - - - - - TCP - - - - - - - - - - - - - UDP - - - - - - - - - - - - - File system - - - - - - - - - - - - - Task scheduler - - - - - - - - - - - - - Virtualization - - - - - - - - - - - - - VirtualBox - - - - - - - - - - - - - VMware Workstation - - - - - - - - - - - - - Containers - - - - - - - - - - - - - Hyper-V - - - - - - - - - - - - - Docker - - - - - - - - - - - - - Cloud Services - - - - - - - - - - - - - Kubernetes - - - - - - - - - - - - - Security - - - - - - - - - - - - - Encryption - - - - - - - - - - - - - MultiCPU systems - - - - - - - - - - - - - Multicore CPU - - - - - - - - - - - - - NUMA - - - - - - - - - - - - - Input/output - - - - - - - - - - - - - Drivers - - - - - - - - - - - - - Audio - - - - - - - - - - - - - Graphics - - - - - - - - - - - - - Printers (printing) - - - - - - - - - - - - - DirectSound - - - - - - - - - - - - - OpenAL - - - - - - - - - - - - - DirectX - - - - - - - - - - - - - Vulkan - - - - - - - - - - - - - OpenGL - - - - - - - - - - - - - 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?" - - We tried to answer these questions in the presented roadmap. The map focuses on general competencies and skills that - could be found in most projects. It is designed to help those who are just starting their education or have little experience. - You can create a more productive learning plan without being distracted by side information if you study the set of listed - materials. It will help you to master C++ at the level that is used in many commercial projects. - - - - - - - - - - - - - How to use: - - - - - - - - - - - - - If you have any feedback or remarks don't hesitate to contact us. - We really appreciate it. :) - - To contact us choose one of the following Github approaches: - - For any remarks related to repository content - go to Pull - Requests and submit a new one - - - - - - - - - - - - - Feedback: - - - - - - - - - - - - - Optional - - - - - - - - - - - - - Junior - - - - - - - - - - - - - Middle - - - - - - - - - - - - - Senior - - - - - - - - - - - - - The middle developer has the - skills to create a design for - new functionality as a part of - a component/application if - even there're not enough - requirements or information - presented. - - - - - - - - - - - - - The senior developer has the - skills to create a design and - make decisions for a - solution/component taking - into account business area - context. - - - - - - - - - - - - - The junior must acquire the - following skill as soon as - possible: to write - easy-readable and - well-structured code. - - - - - - - - - - - - - The juniors should be aware - of middle/senior skills. It's - enough to have a basic - understanding of them. - - - - - - - - - - - - - The "steps" are presented on - this map. They're intended to - show an easy for newbies to - be able to get confident base - knowledge about the language - at the beginning. - - - - - - - - - - - - - Repository: - - - - - - - - - - - - - - https://github.com/salmer/CppDeveloperRoadmap - - - - - - - - - - - - - - Carefully read the terms of the license agreement. - Your project must comply with them. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/README.md b/README.md index c2a447e..60196b1 100644 --- a/README.md +++ b/README.md @@ -28,11 +28,11 @@ It is recommended that you read the articles listed below before starting to exp The roadmap is available in the following formats: +* :arrow_forward: [draw.io (source, editable)](https://salmer.github.io/CppDeveloperRoadmap/goto/drawio/?l=en) * :arrow_forward: [Miro](https://salmer.github.io/CppDeveloperRoadmap/goto/miro/?l=en) * :arrow_forward: [SVG](https://salmer.github.io/CppDeveloperRoadmap/goto/svg/?l=en) -* :arrow_forward: [GraphML (source)](https://salmer.github.io/CppDeveloperRoadmap/goto/graphml/?l=en) -Instructions on how to view and edit a graphML file can be found [here](English/Graph/README.md) +The roadmap is a single `roadmap.drawio.svg` file per language — the image you see and the editable [draw.io](https://www.drawio.com) source in one. Instructions on how to view and edit it can be found [here](English/Graph/README.md) # :key: License and conditions The roadmap is published under the license **CC BY-NC-SA 4.0**: [RUS](https://creativecommons.org/licenses/by-nc-sa/4.0/deed.ru) || [ENG](https://creativecommons.org/licenses/by-nc-sa/4.0/deed.en). In a nutshell: @@ -46,8 +46,8 @@ The roadmap is published under the license **CC BY-NC-SA 4.0**: [RUS](https://cr In the event of any comments, proposals, or ideas, please do not hesitate to contact us. We truly value your support. You can reach us through one of the following channels via Github: -- In case of any proposal or modification in the **repository** content - create a new PR in [Pull Requests](https://github.com/salmer/CppDeveloperRoadmap/pulls) -- In case of any proposal or modification in the **Miro roadmap** - submit a new Issue in [Issues](https://github.com/salmer/CppDeveloperRoadmap/issues) (Unfortunately, the Miro framework does not have a history tracker and access to the roadmap is restricted. All changes are added manually after they have been reviewed and approved) +- In case of any proposal or modification in the **content or the roadmap** - create a new PR in [Pull Requests](https://github.com/salmer/CppDeveloperRoadmap/pulls) (the roadmap is edited like any other file — see [the instructions](English/Graph/README.md)) +- For questions or suggestions **without a concrete change** - submit a new Issue in [Issues](https://github.com/salmer/CppDeveloperRoadmap/issues) # :telephone: Contacts diff --git a/Russian/Graph/README.md b/Russian/Graph/README.md index ccca56a..f36398c 100644 --- a/Russian/Graph/README.md +++ b/Russian/Graph/README.md @@ -1,9 +1,19 @@ -# Как просматривать и модифицировать карту в graphML формате +# Как просматривать и редактировать дорожную карту -GraphML — язык описания графов на основе XML, который поддерживают различные приложения для их просмотра. +Дорожная карта хранится в файле [roadmap.drawio.svg](roadmap.drawio.svg) — это обычное SVG-изображение со встроенной внутрь редактируемой диаграммой [draw.io](https://www.drawio.com). Один и тот же файл является и картинкой, которую вы видите, и исходником, который вы редактируете. Экспортировать и синхронизировать больше нечего: каждый принятый pull request сразу обновляет опубликованную карту. -Например, можете открыть graphML файл в [yEd](https://www.yworks.com/products/yed) и модифицировать карту, как вам захочется. +## Просмотр -*Последняя синхронизация с Miro: 2026-07-10* +- На сайте: [salmer.github.io/CppDeveloperRoadmap/goto/svg/?l=ru](https://salmer.github.io/CppDeveloperRoadmap/goto/svg/?l=ru) +- На GitHub: откройте [roadmap.drawio.svg](roadmap.drawio.svg) — файл отображается как изображение. -![Пример карты](../../assets/example.png) \ No newline at end of file +## Редактирование + +1. Сделайте форк репозитория. +2. Откройте диаграмму в одном из редакторов draw.io: + - **Веб:** зайдите на [sketch.diagrams.net](https://sketch.diagrams.net) (интерфейс draw.io в стиле whiteboard), откройте файл из *GitHub*, авторизуйтесь и выберите `Russian/Graph/roadmap.drawio.svg` в своём форке. Сохранение делает коммит прямо в ваш форк. + - **VS Code:** установите расширение [Draw.io Integration](https://marketplace.visualstudio.com/items?itemName=hediet.vscode-drawio) и откройте файл (работает и в браузере через github.dev — нажмите `.` в своём форке). + - **Десктоп:** [приложение draw.io](https://www.drawio.com). +3. Создайте pull request со своими изменениями. + +> :warning: Не редактируйте текст SVG вручную вне draw.io — это может удалить встроенный исходник диаграммы, и файл перестанет быть редактируемым. Файл начинается с комментария с таким же предупреждением. diff --git a/Russian/Graph/roadmap.drawio.svg b/Russian/Graph/roadmap.drawio.svg new file mode 100644 index 0000000..6ff9ccf --- /dev/null +++ b/Russian/Graph/roadmap.drawio.svg @@ -0,0 +1,4 @@ + + + +1 этап2 этап3 этап4 этап1 этап3 этап5 этап1 этап4 этап2 этапC++ developerSoft skillsHard skillsСначала может показаться, что некоторые из навыков развивать невозможно. Однако мы считаем иначе. Над каждым из пунктов возможно работать. Всё упирается в желание и внутренние блоки. Всё индивидуально, и зависит от вас. :)Умение учитьсяРабота с ошибкамиМышлениеОтветственностьУправление ресурсамиКоммуникацияКомандная работаЭмоциональный интелектПонимание контекста разработкиКлиентоориентированностьТехнологииТрендыЭмпатияКонцентрацияОткрытость новомуАдаптируемостьСтрессоустойчивостьРабота в неопределённостиПонимание распределения ролей в командеПомощьРабота в распределённой командеПредоставление обратной связиЛидерствоНаставничествоДелегированиеПостановка задач сотрудникамПланирование и целеполаганиеПереговорческие навыкиАнглийский языкПрезентацияНавык перепискиНетворкингУмение слушатьУбеждениеУмение доносить мысль/идеи внутри командыПоиск компромиссовРегулирование споровПодача информации людям вне командыТайм-менеджментПриоритизацияПринятие решенийСлепая печатьМногозадачностьДисциплинаУпорствоИнициативностьСамостоятельностьРешение проблемЛогическоеКритическоеКреативноеСтратегическоеСистемноеВосприятие критикиСвоевременное сигнализирование об ошибкахПризнание своих ошибокАнализ ошибокУмение задавать правильные вопросыЭкспериментированиеУправление знаниямиРабота с информациейУмение собирать информацию, анализировать её и выдавать взвешенное  решение.РефлексияCпокойно реагировать на то, что люди говорят. Скорее всего, они учитывают только собственный контекст, когда что-то пытаются доказать. Это нормально. Оценивайте полезность их точки зрения.Брать сложные задачи, чтобы развивать свои навыки и компетенции, даже когда недостаточно знаний/опыта (через такие задачи гораздо быстрее развиваются навыки). Главное отличить реально полезную сложную задачу, которая прокачает, от задачи, на которую ищут крайнего.Быть ответственным за профессиональное развитие. Не ждать пока тимлид решит, что изучать. Не стоит забывать, что слепое следование чужому плану заточит под задачи конкретной компании. Стоит обсуждать и встраивать свои интересы в план. Если этого не сделать - высокий риск получить "непереносимые" компетенции, что ударит по карьерным возможностям. Но и не стоит ударятся в крайности: изучать абсолютно всё подряд или пассивно ждать, пока выдадут план развития.СамоорганизацияСпособность предоставлять тот объем информации, который необходим для общения с людьми разного бекграунда.Решение конфликтовДостаточно уверенного чтения документации и статей, но для более перспективных вакансий разговорный/письменный навык становится обязательным.Искать единомышленников и присоединяться/создавать комьюнити для общения и передачи опыта.Чтобы быть конкурентоспособным, стоит изучать и наблюдать за новыми веяниями, а также уметь адаптироваться под них.Опытному разработчику стоит развивать навыки управления и общения с бизнесом для эффективного выполнения задач. Это легче делать, если развит эмоциональный интеллект. Для джуниора навык также полезен, чтобы лучше взаимодействовать с коллегами.Базовые операцииАрифметические операцииЦиклы for/whileЛогические операцииБитовые операцииФункцииlambdaОператорыТипы данныхДинамическая типизацияСтатическая типизацияRTTIУказатели и ссылкиОрганизация кодовой базыСсылкиМодель памятиУмные указателиСырые УказателиРазделение кода на headers/cpp юнитыОбласть видимостиУтечки памятиForward declarationunique_ptrshared_ptrВремя жизниОператоры new/deleteweak_ptrПространство имёнПерегрузка стандартных операторов для различных типов/структур/классов.Чтобы избежать проблем с управлением памятью, старайтесь писать код используя ссылки и умные указатели.Структуры и классыОбработка ошибокПерегрузка методовТаблица вирутальных методовООПИсключенияAccess violationДинамический полиморфизмВиртуальные методыПравило нуля/трех/пятиСтатический полиморфизмМножественное наследованиеРомбовидное наследованиеКоды возвратаНе используйте множественное наследованиеauto (автоматическое выведение типов)Концепции языкаtype castingstatic_castconst_castdynamic_castreinterpret_castНеопределённое поведение (Undefined Behavior)Поиск, зависящий от аргумента (ADL)МакросыName manglingСтандартная библиотека + STLПоток ввода/выводаАлгоритмы стандартной библиотекиИтераторыКонтейнерыДата/времяМногопоточностьЯзыковые конструкции для которых отсутствуют прописанные требования в стандартах. В случае ошибки дальнейшее поведение будет предсказать невозможно, и всецело будет зависеть от контекста выполнения или платформы, где запущено приложение.ШаблоныVariadic templatesСпециализация шаблонаtype traitsSFINAEПолная специализацияЧастичная специализацияRAIIpimplErase-RemoveNon-Copyable/Non-MoveableCopy and swapCopy on writeCRTPСтандартыC++11/14C++17C++20newestC++0xИдиомыРабота с исходным кодомТекстовый редакторIDEРедакторы исходного кодаОтладчикЛинтерыЗнание о базовых возможностях (shortcuts, tools, plugins)Умение читать сообщения отладчикаОтладочные символыWinDbgGDBВыберите один из понравившихся популярных IDE и хорошо освойте его: Eclipse, MS Visual Studio, Qt Creator, JetBrains Clion, XCode и т.д.Научитесь пользоваться отладчиком. Изучите его возможности.Выберите один из популярных редакторов и хорошо освойте его. К примеру: Notepad++, Atom, и т.д.Навык работы с отладчиком через командную строку - узконаправленный навык. В регулярной работе достаточно уметь работать с отладчиком в рамках IDE.Ознакомьтесь с самыми распространёнными ошибками (segfault, out of memory, access violation) и концепцией неопределённого поведения (undefined behavior)Выберите один из популярных редакторов и и хорошо освойте его: Visual Code, Atom, Sublime Text и т.д.КомпиляторыБазовые знания работы компиляторовКомпиляция кода в объектные файлыКомпоновка объектных файлов в приложение (линковка)Этапы работы компилятораОсобенности работы конкретного компилятораУ компиляторов есть свои особенности, о которых хорошо бы знать: Clang++/LLVM, Intel C++, MSVS C++, GCC, MinGWЕсть несколько этапов работы компилятора, о которых следует знать. Это помогает решать проблемы при сборке приложения. Достаточно иметь базовое понимание, чтобы решать большую часть проблем. Детали работы важны разработчикам компиляторов.Системы сборкиCMakeMakefileninjaПакетные менеджерыvcpkgspackConannugetПопулярныебиблиотекиboostopencvpocoПодключение библиотекprotobufgRPCfmtpybindllspdlogranges_v3tensorflowopenclФреймворкиgtest/gmockQtcatch2google profilerpytorch c++ЛицензированиеВзаимодействие с библиотекамиВнимательно читайте условия лицензионного соглашения. Ваш проект должен их соблюдать.ИнформатикаСтруктуры данныхАлгоритмыБулева алгебраКонечные автоматыТакже необходимо понимать, как вычислить сложность и потребление памяти у алгоритмов.Системы контроля версийРаспределенныеЦентрализованныеSVNgitMercurialПрактики разработкиКачество кодаПравила оформления кодаПринципы разработкиKISS (Keep It Simple, Stupid)DRY (Don't Repeat Yourself)YAGNI (You Aren't Gonna Need It)APO (Avoid Premature Optimization)BDUF (Big Design Up Front)Композиция предпочтительнее наследованияБритва ОккамаРазделяй и властвуйЛогирование и телеметрияРевью кодаУмение читать чужой кодРевью чужого кодаПонимание жизненного цикла производства ПОРеализацияТестированиеПоддержкаВерсионирование ПОЮнит тестыИнтеграционноеФункциональноеПроизводительностьФормирование архитектуры и дизайн компонентовИнтеграция компонентовВыпускСбор требованийОкончание жизненного циклаАнализаторы кодаСтатическиеДинамическиеПрофайлерыC++ core guidelinesПромышленные стандартыMISRAAutosarРабота с командной строкойbatchPowershellbashCI/CDTrunk Based DevelopmentZero downtime deploymentСоздание пакета поставки ПОДокументацияИнсталляторИспользование других языков программированияМежязыковое взаимодействиеПравила именования переменных, пробелы vs табы, положение фигурных скобок и т.д.Настроить форматирование и автоматически проверять в одной из утилит: clang-format, Resharper - стиль кода, MSVS - стиль кода.- Скриптовые - Функциональные - SQL like- NoSQLИногда требуется предоставить обертку к библиотеке, написанной на C++ для другого ЯП, например Python или C#. Для этого применяют специальные библиотеки/фреймворки.Обратная совместимостьНе игнорируйте предупреждения компилятора и статического анализатора. Они вам друзья, а не врагиMicrosoft GSLПроектирование ПОАрхитектурные стилиComponent-basedMonolithic applicationLayeredClient-serverMicroservices architectureEvent-drivenPlug-insRESTService-oriented architectureПаттерны проектирования (GoF)ПоведенческиеСтруктурныеПорождающиеООПSOLIDUMLАрхитектурные паттерныMVCMVVMThree-tierOnionHexagonМетодологииTest Driven DevelopmentBehavior Driven DevelopmentDomain Driven DesignПамятьАбстракции памятиВыравнивание памятиУправление памятьюБинарные единицыИсполняемый файлСтатическая библиотекаДинамическая библиотекаСтекГлобальная памятьКучаПамять приложенияВиртуальная памятьОперационные системыМногопоточностьОшибкиDead lockRace conditionLive lockStarvationПотокиКонкуренцияМьютексыСемафорыАлгоритмы без блокировок (lock-free)Обработка событийСинхронныеАсинхронныеПроцессыМежпроцессное взаимодействиеShared memoryPipesСериализацияjsonXMLСетевой стекTCP/IPOSIСокетыHTTPTCPUDPФайловая системаПланировщикВиртуализацияVirtualBoxVMware WorkstationКонтейнеризацияHyper-VDockerОблачные сервисыKubernetesБезопасностьШифрованиеМногопроцессорные системыMulticore CPUNUMAВвод и вывод информацииДрайверыАудиоГрафическое вычисление/отображениеПечатьDirectSoundOpenALDirectXVulkanOpenGLCUDAОбщие навыкиЯзыковые инструментыСинтаксис языкаC++ Developer RoadmapО карте:С++ всё ещё является одним из самых популярных языков разработки. Есть немало желающих начать его изучать и стать C++ разработчиками. Перед такими людьми встают вопросы: "С чего мне начать? Что и в каком порядке мне изучать? Какие книги стоить почитать?" Мы попытались ответить на эти вопросы в представленной дорожной карте. Карта акцентируется на общих компетенциях и навыках, которые встречаются в большинстве проектов. Она призвана помочь тем, кто только начинает свое обучение или имеет небольшой опыт. Изучив набор перечисленных материалов, вы сможете составить более продуктивный план обучения, не отвлекаясь на побочную информацию. Это поможет вам освоить C++ на том уровне, который встречается во многих коммерческих проектах.Как ориентироваться:Если у вас есть замечания, вопросы или предложения, будем рады получить любую помощь и поддержку. Мы открыты для общения :)Для этого используйте следующие механизмы Github:- Предложения/правки по репозиторию - создавайте и присылайте новый PR в Pull RequestsПредложения и замечания:OptionalJuniorMiddleSeniorМидл способен создать дизайн и решения для функционала внутри компонента/приложения даже в случае неполноты требований.Синиор способен создать дизайн и решение для компонента/приложения с учётом бизнес-контекста.Джуниору важно научиться писать структурированный код и не усложнять его без надобности. Код должен быть легко читаемым и поддерживаемым.От джуниора ожидается осведомленность про категории, которые относятся к Middle/Senior. Будет достаточным поверхностное понимание темы.На карте представлены компетенции, которые выделены в "этапы". Мы считаем, что джуниору стоит начинать изучение в данном порядке, чтобы выстроить прочный фундамент.Репозиторий:https://github.com/salmer/CppDeveloperRoadmap \ No newline at end of file diff --git a/Russian/Graph/roadmap.graphml b/Russian/Graph/roadmap.graphml deleted file mode 100644 index a82ef82..0000000 --- a/Russian/Graph/roadmap.graphml +++ /dev/null @@ -1,9755 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - C++ developer - - - - - - - - - - - - Soft skills - - - - - - - - - - - - Hard skills - - - - - - - - - - - Сначала может показаться, что некоторые из навыков -развивать невозможно. Однако мы считаем иначе. -Над каждым из пунктов возможно работать. Всё -упирается в желание и внутренние блоки. Всё -индивидуально, и зависит от вас. :) - - - - - - - - - - - Умение учиться - - - - - - - - - - - Работа с ошибками - - - - - - - - - - - Мышление - - - - - - - - - - - Ответственность - - - - - - - - - - - Управление ресурсами - - - - - - - - - - - Коммуникация - - - - - - - - - - - Командная работа - - - - - - - - - - - Эмоциональный интелект - - - - - - - - - - - Понимание контекста разработки - - - - - - - - - - - Клиентоориентированность - - - - - - - - - - - Технологии - - - - - - - - - - - Тренды - - - - - - - - - - - Эмпатия - - - - - - - - - - - Концентрация - - - - - - - - - - - Открытость новому - - - - - - - - - - - Адаптируемость - - - - - - - - - - - Стрессоустойчивость - - - - - - - - - - - Работа в неопределённости - - - - - - - - - - - Понимание распределения ролей в команде - - - - - - - - - - - Помощь - - - - - - - - - - - Работа в распределённой команде - - - - - - - - - - - Предоставление обратной связи - - - - - - - - - - - Лидерство - - - - - - - - - - - Наставничество - - - - - - - - - - - Делегирование - - - - - - - - - - - Постановка задач сотрудникам - - - - - - - - - - - Планирование и целеполагание - - - - - - - - - - - Переговорческие навыки - - - - - - - - - - - Английский язык - - - - - - - - - - - Презентация - - - - - - - - - - - Навык переписки - - - - - - - - - - - Нетворкинг - - - - - - - - - - - Умение слушать - - - - - - - - - - - Убеждение - - - - - - - - - - - Умение доносить мысль/идеи внутри команды - - - - - - - - - - - Поиск компромиссов - - - - - - - - - - - Регулирование споров - - - - - - - - - - - Подача информации людям вне команды - - - - - - - - - - - Тайм-менеджмент - - - - - - - - - - - Приоритизация - - - - - - - - - - - Принятие решений - - - - - - - - - - - Слепая печать - - - - - - - - - - - Многозадачность - - - - - - - - - - - Дисциплина - - - - - - - - - - - Упорство - - - - - - - - - - - Инициативность - - - - - - - - - - - Самостоятельность - - - - - - - - - - - Решение проблем - - - - - - - - - - - Логическое - - - - - - - - - - - Критическое - - - - - - - - - - - Креативное - - - - - - - - - - - Стратегическое - - - - - - - - - - - Системное - - - - - - - - - - - Восприятие критики - - - - - - - - - - - Своевременное сигнализирование об ошибках - - - - - - - - - - - Признание своих ошибок - - - - - - - - - - - Анализ ошибок - - - - - - - - - - - Умение задавать правильные вопросы - - - - - - - - - - - Экспериментирование - - - - - - - - - - - Управление знаниями - - - - - - - - - - - Работа с информацией - - - - - - - - - - - Умение собирать информацию, -анализировать её и выдавать -взвешенное  решение. - - - - - - - - - - - Рефлексия - - - - - - - - - - - Cпокойно реагировать на то, что люди говорят. -Скорее всего, они учитывают только собственный -контекст, когда что-то пытаются доказать. Это -нормально. Оценивайте полезность их точки зрения. - - - - - - - - - - - Брать сложные задачи, чтобы развивать свои -навыки и компетенции, даже когда недостаточно -знаний/опыта (через такие задачи гораздо быстрее -развиваются навыки). Главное отличить реально -полезную сложную задачу, которая прокачает, -от задачи, на которую ищут крайнего. - - - - - - - - - - - Быть ответственным за профессиональное развитие. Не ждать -пока тимлид решит, что изучать. Не стоит забывать, что слепое -следование чужому плану заточит под задачи конкретной компании. -Стоит обсуждать и встраивать свои интересы в план. Если этого -не сделать - высокий риск получить "непереносимые" компетенции, -что ударит по карьерным возможностям. Но и не стоит ударятся в -крайности: изучать абсолютно всё подряд или пассивно ждать, пока -выдадут план развития. - - - - - - - - - - - Самоорганизация - - - - - - - - - - - Способность предоставлять тот объем информации, -который необходим для общения с людьми разного -бекграунда. - - - - - - - - - - - Решение конфликтов - - - - - - - - - - - Достаточно уверенного чтения документации и статей, -но для более перспективных вакансий -разговорный/письменный навык становится обязательным. - - - - - - - - - - - Искать единомышленников и присоединяться/создавать -комьюнити для общения и передачи опыта. - - - - - - - - - - - Чтобы быть конкурентоспособным, стоит изучать и наблюдать -за новыми веяниями, а также уметь адаптироваться под них. - - - - - - - - - - - Опытному разработчику стоит развивать навыки управления и -общения с бизнесом для эффективного выполнения задач. -Это легче делать, если развит эмоциональный интеллект. -Для джуниора навык также полезен, чтобы лучше -взаимодействовать с коллегами. - - - - - - - - - - - - - - 1 этап - - - - - - - - - - Folder 1 - - - - - - - - - - - - - - - - Базовые операции - - - - - - - - - - - Арифметические операции - - - - - - - - - - - Циклы for/while - - - - - - - - - - - Логические операции - - - - - - - - - - - Битовые операции - - - - - - - - - - - Функции - - - - - - - - - - - lambda - - - - - - - - - - - Операторы - - - - - - - - - - - Типы данных - - - - - - - - - - - Динамическая типизация - - - - - - - - - - - Статическая типизация - - - - - - - - - - - RTTI - - - - - - - - - - - Указатели и ссылки - - - - - - - - - - - Организация кодовой базы - - - - - - - - - - - Ссылки - - - - - - - - - - - Модель памяти - - - - - - - - - - - Умные указатели - - - - - - - - - - - Сырые Указатели - - - - - - - - - - - Разделение кода на headers/cpp юниты - - - - - - - - - - - Область видимости - - - - - - - - - - - Утечки памяти - - - - - - - - - - - Forward declaration - - - - - - - - - - - unique_ptr - - - - - - - - - - - shared_ptr - - - - - - - - - - - Время жизни - - - - - - - - - - - Операторы new/delete - - - - - - - - - - - weak_ptr - - - - - - - - - - - Пространство имён - - - - - - - - - - - Перегрузка стандартных операторов для -различных типов/структур/классов. - - - - - - - - - - - Чтобы избежать проблем с управлением памятью, -старайтесь писать код используя ссылки и умные -указатели. - - - - - - - - - - - - - - - - 2 этап - - - - - - - - - - Folder 2 - - - - - - - - - - - - - - - - Структуры и классы - - - - - - - - - - - Обработка ошибок - - - - - - - - - - - Перегрузка методов - - - - - - - - - - - Таблица вирутальных методов - - - - - - - - - - - ООП - - - - - - - - - - - Исключения - - - - - - - - - - - Access violation - - - - - - - - - - - Динамический полиморфизм - - - - - - - - - - - Виртуальные методы - - - - - - - - - - - Правило нуля/трех/пяти - - - - - - - - - - - Статический полиморфизм - - - - - - - - - - - Множественное наследование - - - - - - - - - - - Ромбовидное наследование - - - - - - - - - - - Коды возврата - - - - - - - - - - - Не используйте -множественное наследование - - - - - - - - - - - - - - - - 3 этап - - - - - - - - - - Folder 3 - - - - - - - - - - - - - - - - auto (автоматическое выведение типов) - - - - - - - - - - - Концепции языка - - - - - - - - - - - type casting - - - - - - - - - - - static_cast - - - - - - - - - - - const_cast - - - - - - - - - - - dynamic_cast - - - - - - - - - - - reinterpret_cast - - - - - - - - - - - Неопределённое поведение (Undefined Behavior) - - - - - - - - - - - Поиск, зависящий от аргумента (ADL) - - - - - - - - - - - Макросы - - - - - - - - - - - Name mangling - - - - - - - - - - - Стандартная библиотека + STL - - - - - - - - - - - Поток ввода/вывода - - - - - - - - - - - Алгоритмы стандартной библиотеки - - - - - - - - - - - Итераторы - - - - - - - - - - - Контейнеры - - - - - - - - - - - Дата/время - - - - - - - - - - - Многопоточность - - - - - - - - - - - Языковые конструкции для которых отсутствуют прописанные -требования в стандартах. В случае ошибки дальнейшее -поведение будет предсказать невозможно, и всецело будет -зависеть от контекста выполнения или платформы, где запущено -приложение. - - - - - - - - - - - - - - - - 4 этап - - - - - - - - - - Folder 4 - - - - - - - - - - - - - - - - Шаблоны - - - - - - - - - - - Variadic templates - - - - - - - - - - - Специализация шаблона - - - - - - - - - - - type traits - - - - - - - - - - - SFINAE - - - - - - - - - - - Полная специализация - - - - - - - - - - - Частичная специализация - - - - - - - - - - - RAII - - - - - - - - - - - pimpl - - - - - - - - - - - Erase-Remove - - - - - - - - - - - Non-Copyable/Non-Moveable - - - - - - - - - - - Copy and swap - - - - - - - - - - - Copy on write - - - - - - - - - - - CRTP - - - - - - - - - - - Стандарты - - - - - - - - - - - C++11/14 - - - - - - - - - - - C++17 - - - - - - - - - - - C++20 - - - - - - - - - - - newest - - - - - - - - - - - C++0x - - - - - - - - - - - Идиомы - - - - - - - - - - - - - - - - 1 этап - - - - - - - - - - - - - - - - - - Folder 5 - - - - - - - - - - - - - - - - Работа с исходным кодом - - - - - - - - - - - Текстовый редактор - - - - - - - - - - - IDE - - - - - - - - - - - Редакторы исходного кода - - - - - - - - - - - Отладчик - - - - - - - - - - - Линтеры - - - - - - - - - - - Знание о базовых возможностях (shortcuts, tools, plugins) - - - - - - - - - - - Умение читать сообщения отладчика - - - - - - - - - - - Отладочные символы - - - - - - - - - - - WinDbg - - - - - - - - - - - GDB - - - - - - - - - - - Выберите один из понравившихся популярных IDE -и хорошо освойте его: Eclipse, MS Visual Studio, -Qt Creator, JetBrains Clion, XCode и т.д. - - - - - - - - - - - Научитесь пользоваться отладчиком. Изучите его -возможности. - - - - - - - - - - - Выберите один из популярных редакторов и хорошо -освойте его. К примеру: Notepad++, Atom, и т.д. - - - - - - - - - - - Навык работы с отладчиком через командную строку - -узконаправленный навык. В регулярной работе достаточно -уметь работать с отладчиком в рамках IDE. - - - - - - - - - - - Ознакомьтесь с самыми распространёнными ошибками -(segfault, out of memory, access violation) и концепцией  -неопределённого поведения (undefined behavior) - - - - - - - - - - - Выберите один из популярных редакторов и и хорошо -освойте его: Visual Code, Atom, Sublime Text и т.д. - - - - - - - - - - - - - - - - 3 этап - - - - - - - - - - Folder 6 - - - - - - - - - - - - - - - - - Компиляторы - - - - - - - - - - - Базовые знания работы компиляторов - - - - - - - - - - - Компиляция кода в объектные файлы - - - - - - - - - - - Компоновка объектных файлов в приложение (линковка) - - - - - - - - - - - Этапы работы компилятора - - - - - - - - - - - Особенности работы конкретного компилятора - - - - - - - - - - - У компиляторов есть свои особенности, о которых -хорошо бы знать: Clang++/LLVM, Intel C++, MSVS C++, -GCC, MinGW - - - - - - - - - - - Есть несколько этапов работы компилятора, о которых -следует знать. Это помогает решать проблемы -при сборке приложения. Достаточно иметь базовое -понимание, чтобы решать большую часть проблем. -Детали работы важны разработчикам компиляторов. - - - - - - - - - - - - - - - - 5 этап - - - - - - - - - - Folder 7 - - - - - - - - - - - - - - - - Системы сборки - - - - - - - - - - - CMake - - - - - - - - - - - Makefile - - - - - - - - - - - ninja - - - - - - - - - - - Пакетные менеджеры - - - - - - - - - - - vcpkg - - - - - - - - - - - spack - - - - - - - - - - - Conan - - - - - - - - - - - nuget - - - - - - - - - - - Популярные -библиотеки - - - - - - - - - - - boost - - - - - - - - - - - opencv - - - - - - - - - - - poco - - - - - - - - - - - Подключение библиотек - - - - - - - - - - - protobuf - - - - - - - - - - - gRPC - - - - - - - - - - - fmt - - - - - - - - - - - pybindll - - - - - - - - - - - spdlog - - - - - - - - - - - ranges_v3 - - - - - - - - - - - tensorflow - - - - - - - - - - - opencl - - - - - - - - - - - Фреймворки - - - - - - - - - - - gtest/gmock - - - - - - - - - - - Qt - - - - - - - - - - - catch2 - - - - - - - - - - - google profiler - - - - - - - - - - - pytorch c++ - - - - - - - - - - - Лицензирование - - - - - - - - - - - Взаимодействие - с библиотеками - - - - - - - - - - - Внимательно читайте условия лицензионного соглашения. -Ваш проект должен их соблюдать. - - - - - - - - - - - - - - - - 1 этап - - - - - - - - - - Folder 8 - - - - - - - - - - - - - - - - Информатика - - - - - - - - - - - Структуры данных - - - - - - - - - - - Алгоритмы - - - - - - - - - - - Булева алгебра - - - - - - - - - - - Конечные автоматы - - - - - - - - - - - Также необходимо понимать, как вычислить сложность -и потребление памяти у алгоритмов. - - - - - - - - - - - - - - - - 4 этап - - - - - - - - - - Folder 9 - - - - - - - - - - - - - - - - Системы контроля версий - - - - - - - - - - - Распределенные - - - - - - - - - - - Централизованные - - - - - - - - - - - SVN - - - - - - - - - - - git - - - - - - - - - - - Mercurial - - - - - - - - - - - Практики разработки - - - - - - - - - - - Качество кода - - - - - - - - - - - Правила оформления кода - - - - - - - - - - - Принципы разработки - - - - - - - - - - - KISS (Keep It Simple, Stupid) - - - - - - - - - - - DRY (Don't Repeat Yourself) - - - - - - - - - - - YAGNI (You Aren't Gonna Need It) - - - - - - - - - - - APO (Avoid Premature Optimization) - - - - - - - - - - - BDUF (Big Design Up Front) - - - - - - - - - - - Композиция предпочтительнее наследования - - - - - - - - - - - Бритва Оккама - - - - - - - - - - - Разделяй и властвуй - - - - - - - - - - - Логирование и телеметрия - - - - - - - - - - - Ревью кода - - - - - - - - - - - Умение читать чужой код - - - - - - - - - - - Ревью чужого кода - - - - - - - - - - - Понимание жизненного цикла производства ПО - - - - - - - - - - - Реализация - - - - - - - - - - - Тестирование - - - - - - - - - - - Поддержка - - - - - - - - - - - Версионирование ПО - - - - - - - - - - - Юнит тесты - - - - - - - - - - - Интеграционное - - - - - - - - - - - Функциональное - - - - - - - - - - - Производительность - - - - - - - - - - - Формирование архитектуры и дизайн компонентов - - - - - - - - - - - Интеграция компонентов - - - - - - - - - - - Выпуск - - - - - - - - - - - Сбор требований - - - - - - - - - - - Окончание жизненного цикла - - - - - - - - - - - Анализаторы кода - - - - - - - - - - - Статические - - - - - - - - - - - Динамические - - - - - - - - - - - Профайлеры - - - - - - - - - - - C++ core guidelines - - - - - - - - - - - Промышленные стандарты - - - - - - - - - - - MISRA - - - - - - - - - - - Autosar - - - - - - - - - - - Работа с командной строкой - - - - - - - - - - - batch - - - - - - - - - - - Powershell - - - - - - - - - - - bash - - - - - - - - - - - CI/CD - - - - - - - - - - - Trunk Based Development - - - - - - - - - - - Zero downtime deployment - - - - - - - - - - - Создание пакета поставки ПО - - - - - - - - - - - Документация - - - - - - - - - - - Инсталлятор - - - - - - - - - - - Использование других языков программирования - - - - - - - - - - - Межязыковое взаимодействие - - - - - - - - - - - Правила именования переменных, пробелы vs табы, -положение фигурных скобок и т.д. - - - - - - - - - - - Настроить форматирование и автоматически проверять - в одной из утилит: clang-format, Resharper - стиль кода, -MSVS - стиль кода. - - - - - - - - - - - - Скриптовые -- Функциональные -- SQL like -- NoSQL - - - - - - - - - - - Иногда требуется предоставить обертку к библиотеке, написанной -на C++ для другого ЯП, например Python или C#. Для этого -применяют специальные библиотеки/фреймворки. - - - - - - - - - - - Обратная совместимость - - - - - - - - - - - Не игнорируйте предупреждения компилятора -и статического анализатора. Они вам друзья, -а не враги - - - - - - - - - - - Microsoft GSL - - - - - - - - - - - - - Проектирование ПО - - - - - - - - - - - Архитектурные стили - - - - - - - - - - - Component-based - - - - - - - - - - - Monolithic application - - - - - - - - - - - Layered - - - - - - - - - - - Client-server - - - - - - - - - - - Microservices architecture - - - - - - - - - - - Event-driven - - - - - - - - - - - Plug-ins - - - - - - - - - - - REST - - - - - - - - - - - Service-oriented architecture - - - - - - - - - - - - - - 2 этап - - - - - - - - - - Folder 10 - - - - - - - - - - - - - - - - - Паттерны проектирования (GoF) - - - - - - - - - - - Поведенческие - - - - - - - - - - - Структурные - - - - - - - - - - - Порождающие - - - - - - - - - - - ООП - - - - - - - - - - - - SOLID - - - - - - - - - - - UML - - - - - - - - - - - - - Архитектурные паттерны - - - - - - - - - - - MVC - - - - - - - - - - - MVVM - - - - - - - - - - - Three-tier - - - - - - - - - - - Onion - - - - - - - - - - - Hexagon - - - - - - - - - - - Методологии - - - - - - - - - - - Test Driven Development - - - - - - - - - - - Behavior Driven Development - - - - - - - - - - - Domain Driven Design - - - - - - - - - - - Память - - - - - - - - - - - Абстракции памяти - - - - - - - - - - - Выравнивание памяти - - - - - - - - - - - Управление памятью - - - - - - - - - - - Бинарные единицы - - - - - - - - - - - Исполняемый файл - - - - - - - - - - - Статическая библиотека - - - - - - - - - - - Динамическая библиотека - - - - - - - - - - - Стек - - - - - - - - - - - Глобальная память - - - - - - - - - - - Куча - - - - - - - - - - - Память приложения - - - - - - - - - - - Виртуальная память - - - - - - - - - - - Операционные системы - - - - - - - - - - - Многопоточность - - - - - - - - - - - Ошибки - - - - - - - - - - - Dead lock - - - - - - - - - - - Race condition - - - - - - - - - - - Live lock - - - - - - - - - - - Starvation - - - - - - - - - - - Потоки - - - - - - - - - - - Конкуренция - - - - - - - - - - - Мьютексы - - - - - - - - - - - Семафоры - - - - - - - - - - - Алгоритмы без блокировок (lock-free) - - - - - - - - - - - Обработка событий - - - - - - - - - - - Синхронные - - - - - - - - - - - Асинхронные - - - - - - - - - - - Процессы - - - - - - - - - - - Межпроцессное взаимодействие - - - - - - - - - - - Shared memory - - - - - - - - - - - Pipes - - - - - - - - - - - Сериализация - - - - - - - - - - - json - - - - - - - - - - - XML - - - - - - - - - - - Сетевой стек - - - - - - - - - - - TCP/IP - - - - - - - - - - - OSI - - - - - - - - - - - Сокеты - - - - - - - - - - - HTTP - - - - - - - - - - - TCP - - - - - - - - - - - UDP - - - - - - - - - - - Файловая система - - - - - - - - - - - Планировщик - - - - - - - - - - - Виртуализация - - - - - - - - - - - VirtualBox - - - - - - - - - - - VMware Workstation - - - - - - - - - - - Контейнеризация - - - - - - - - - - - Hyper-V - - - - - - - - - - - Docker - - - - - - - - - - - Облачные сервисы - - - - - - - - - - - Kubernetes - - - - - - - - - - - Безопасность - - - - - - - - - - - Шифрование - - - - - - - - - - - Многопроцессорные системы - - - - - - - - - - - Multicore CPU - - - - - - - - - - - NUMA - - - - - - - - - - - Ввод и вывод информации - - - - - - - - - - - Драйверы - - - - - - - - - - - Аудио - - - - - - - - - - - Графическое вычисление/отображение - - - - - - - - - - - Печать - - - - - - - - - - - DirectSound - - - - - - - - - - - OpenAL - - - - - - - - - - - DirectX - - - - - - - - - - - Vulkan - - - - - - - - - - - OpenGL - - - - - - - - - - - CUDA - - - - - - - - - - - Общие навыки - - - - - - - - - - - Языковые инструменты - - - - - - - - - - - Синтаксис языка - - - - - - - - - - - C++ Developer Roadmap - - - - - - - - - - - О карте: - - - - - - - - - - - С++ всё ещё является одним из самых популярных языков разработки. Есть немало желающих начать его изучать -и стать C++ разработчиками. Перед такими людьми встают вопросы: "С чего мне начать? Что и в каком порядке -мне изучать? Какие книги стоить почитать?" Мы попытались ответить на эти вопросы в представленной дорожной -карте. Карта акцентируется на общих компетенциях и навыках, которые встречаются в большинстве проектов. Она -призвана помочь тем, кто только начинает свое обучение или имеет небольшой опыт. Изучив набор перечисленных -материалов, вы сможете составить более продуктивный план обучения, не отвлекаясь на побочную информацию. -Это поможет вам освоить C++ на том уровне, который встречается во многих коммерческих проектах. - - - - - - - - - - - Как ориентироваться: - - - - - - - - - - - Если у вас есть замечания, вопросы или предложения, будем -рады получить любую помощь и поддержку. Мы открыты для -общения :) - -Для этого используйте следующие механизмы Github: -- Предложения/правки по репозиторию - создавайте и -присылайте новый PR в Pull Requests - - - - - - - - - - - - Предложения и замечания: - - - - - - - - - - - Optional - - - - - - - - - - - Junior - - - - - - - - - - - Middle - - - - - - - - - - - Senior - - - - - - - - - - - Мидл способен создать -дизайн и решения для -функционала внутри -компонента/приложения -даже в случае неполноты -требований. - - - - - - - - - - - Синиор способен создать -дизайн и решение для -компонента/приложения с -учётом бизнес-контекста. - - - - - - - - - - - Джуниору важно научиться -писать структурированный -код и не усложнять его без -надобности. Код должен -быть легко читаемым и -поддерживаемым. - - - - - - - - - - - От джуниора ожидается -осведомленность про -категории, которые -относятся к Middle/Senior. -Будет достаточным -поверхностное понимание -темы. - - - - - - - - - - - На карте представлены -компетенции, которые -выделены в "этапы". Мы -считаем, что джуниору -стоит начинать изучение -в данном порядке, чтобы -выстроить прочный -фундамент. - - - - - - - - - - - Репозиторий: - - - - - - - - - - - - https://github.com/salmer/CppDeveloperRoadmap - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Russian/Graph/roadmap.svg b/Russian/Graph/roadmap.svg deleted file mode 100644 index 22ef60d..0000000 --- a/Russian/Graph/roadmap.svg +++ /dev/null @@ -1,7520 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - C++ developer - - - - - - - - - - - - Soft skills - - - - - - - - - - - - Hard skills - - - - - - - - - - - - - - Сначала может показаться, что некоторые из навыков - развивать невозможно. Однако мы считаем иначе. - Над каждым из пунктов возможно работать. Всё - упирается в желание и внутренние блоки. Всё - индивидуально, и зависит от вас. :) - - - - - - - - - - - - - Умение учиться - - - - - - - - - - - - - Работа с ошибками - - - - - - - - - - - - - Мышление - - - - - - - - - - - - - Ответственность - - - - - - - - - - - - - Управление ресурсами - - - - - - - - - - - - - Коммуникация - - - - - - - - - - - - - Командная работа - - - - - - - - - - - - - Эмоциональный интелект - - - - - - - - - - - - - Понимание контекста разработки - - - - - - - - - - - - - Клиентоориентированность - - - - - - - - - - - - - Технологии - - - - - - - - - - - - - Тренды - - - - - - - - - - - - - Эмпатия - - - - - - - - - - - - - Концентрация - - - - - - - - - - - - - Открытость новому - - - - - - - - - - - - - Адаптируемость - - - - - - - - - - - - - Стрессоустойчивость - - - - - - - - - - - - - Работа в неопределённости - - - - - - - - - - - - - Понимание распределения ролей в команде - - - - - - - - - - - - - Помощь - - - - - - - - - - - - - Работа в распределённой команде - - - - - - - - - - - - - Предоставление обратной связи - - - - - - - - - - - - - Лидерство - - - - - - - - - - - - - Наставничество - - - - - - - - - - - - - Делегирование - - - - - - - - - - - - - Постановка задач сотрудникам - - - - - - - - - - - - - Планирование и целеполагание - - - - - - - - - - - - - Переговорческие навыки - - - - - - - - - - - - - Английский язык - - - - - - - - - - - - - Презентация - - - - - - - - - - - - - Навык переписки - - - - - - - - - - - - - Нетворкинг - - - - - - - - - - - - - Умение слушать - - - - - - - - - - - - - Убеждение - - - - - - - - - - - - - Умение доносить мысль/идеи внутри команды - - - - - - - - - - - - - Поиск компромиссов - - - - - - - - - - - - - Регулирование споров - - - - - - - - - - - - - Подача информации людям вне команды - - - - - - - - - - - - - Тайм-менеджмент - - - - - - - - - - - - - Приоритизация - - - - - - - - - - - - - Принятие решений - - - - - - - - - - - - - Слепая печать - - - - - - - - - - - - - Многозадачность - - - - - - - - - - - - - Дисциплина - - - - - - - - - - - - - Упорство - - - - - - - - - - - - - Инициативность - - - - - - - - - - - - - Самостоятельность - - - - - - - - - - - - - Решение проблем - - - - - - - - - - - - - Логическое - - - - - - - - - - - - - Критическое - - - - - - - - - - - - - Креативное - - - - - - - - - - - - - Стратегическое - - - - - - - - - - - - - Системное - - - - - - - - - - - - - Восприятие критики - - - - - - - - - - - - - Своевременное сигнализирование об ошибках - - - - - - - - - - - - - Признание своих ошибок - - - - - - - - - - - - - Анализ ошибок - - - - - - - - - - - - - Умение задавать правильные вопросы - - - - - - - - - - - - - Экспериментирование - - - - - - - - - - - - - Управление знаниями - - - - - - - - - - - - - Работа с информацией - - - - - - - - - - - - - Умение собирать информацию, - анализировать её и выдавать - взвешенное  решение. - - - - - - - - - - - - - Рефлексия - - - - - - - - - - - - - Cпокойно реагировать на то, что люди говорят. - Скорее всего, они учитывают только собственный - контекст, когда что-то пытаются доказать. Это - нормально. Оценивайте полезность их точки зрения. - - - - - - - - - - - - - Брать сложные задачи, чтобы развивать свои - навыки и компетенции, даже когда недостаточно - знаний/опыта (через такие задачи гораздо быстрее - развиваются навыки). Главное отличить реально - полезную сложную задачу, которая прокачает, - от задачи, на которую ищут крайнего. - - - - - - - - - - - - - Быть ответственным за профессиональное развитие. Не ждать - пока тимлид решит, что изучать. Не стоит забывать, что слепое - следование чужому плану заточит под задачи конкретной компании. - Стоит обсуждать и встраивать свои интересы в план. Если этого - не сделать - высокий риск получить "непереносимые" компетенции, - что ударит по карьерным возможностям. Но и не стоит ударятся в - крайности: изучать абсолютно всё подряд или пассивно ждать, пока - выдадут план развития. - - - - - - - - - - - - - Самоорганизация - - - - - - - - - - - - - Способность предоставлять тот объем информации, - который необходим для общения с людьми разного - бекграунда. - - - - - - - - - - - - - Решение конфликтов - - - - - - - - - - - - - Достаточно уверенного чтения документации и статей, - но для более перспективных вакансий - разговорный/письменный навык становится обязательным. - - - - - - - - - - - - - Искать единомышленников и присоединяться/создавать - комьюнити для общения и передачи опыта. - - - - - - - - - - - - - Чтобы быть конкурентоспособным, стоит изучать и наблюдать - за новыми веяниями, а также уметь адаптироваться под них. - - - - - - - - - - - - - Опытному разработчику стоит развивать навыки управления и - общения с бизнесом для эффективного выполнения задач. - Это легче делать, если развит эмоциональный интеллект. - Для джуниора навык также полезен, чтобы лучше - взаимодействовать с коллегами. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 этап - - - - - - - - - - - - - - - - Базовые операции - - - - - - - - - - - - - Арифметические операции - - - - - - - - - - - - - Циклы for/while - - - - - - - - - - - - - Логические операции - - - - - - - - - - - - - Битовые операции - - - - - - - - - - - - - Функции - - - - - - - - - - - - - lambda - - - - - - - - - - - - - Операторы - - - - - - - - - - - - - Типы данных - - - - - - - - - - - - - Динамическая типизация - - - - - - - - - - - - - Статическая типизация - - - - - - - - - - - - - RTTI - - - - - - - - - - - - - Указатели и ссылки - - - - - - - - - - - - - Организация кодовой базы - - - - - - - - - - - - - Ссылки - - - - - - - - - - - - - Модель памяти - - - - - - - - - - - - - Умные указатели - - - - - - - - - - - - - Сырые Указатели - - - - - - - - - - - - - Разделение кода на headers/cpp юниты - - - - - - - - - - - - - Область видимости - - - - - - - - - - - - - Утечки памяти - - - - - - - - - - - - - Forward declaration - - - - - - - - - - - - - unique_ptr - - - - - - - - - - - - - shared_ptr - - - - - - - - - - - - - Время жизни - - - - - - - - - - - - - Операторы new/delete - - - - - - - - - - - - - weak_ptr - - - - - - - - - - - - - Пространство имён - - - - - - - - - - - - - Перегрузка стандартных операторов для - различных типов/структур/классов. - - - - - - - - - - - - - Чтобы избежать проблем с управлением памятью, - старайтесь писать код используя ссылки и умные - указатели. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2 этап - - - - - - - - - - - - - - - - Структуры и классы - - - - - - - - - - - - - Обработка ошибок - - - - - - - - - - - - - Перегрузка методов - - - - - - - - - - - - - Таблица вирутальных методов - - - - - - - - - - - - - ООП - - - - - - - - - - - - - Исключения - - - - - - - - - - - - - Access violation - - - - - - - - - - - - - Динамический полиморфизм - - - - - - - - - - - - - Виртуальные методы - - - - - - - - - - - - - Правило нуля/трех/пяти - - - - - - - - - - - - - Статический полиморфизм - - - - - - - - - - - - - Множественное наследование - - - - - - - - - - - - - Ромбовидное наследование - - - - - - - - - - - - - Коды возврата - - - - - - - - - - - - - Не используйте - множественное наследование - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 3 этап - - - - - - - - - - - - - - - - auto (автоматическое выведение типов) - - - - - - - - - - - - - Концепции языка - - - - - - - - - - - - - type casting - - - - - - - - - - - - - static_cast - - - - - - - - - - - - - const_cast - - - - - - - - - - - - - dynamic_cast - - - - - - - - - - - - - reinterpret_cast - - - - - - - - - - - - - Неопределённое поведение (Undefined Behavior) - - - - - - - - - - - - - Поиск, зависящий от аргумента (ADL) - - - - - - - - - - - - - Макросы - - - - - - - - - - - - - Name mangling - - - - - - - - - - - - - Стандартная библиотека + STL - - - - - - - - - - - - - Поток ввода/вывода - - - - - - - - - - - - - Алгоритмы стандартной библиотеки - - - - - - - - - - - - - Итераторы - - - - - - - - - - - - - Контейнеры - - - - - - - - - - - - - Дата/время - - - - - - - - - - - - - Многопоточность - - - - - - - - - - - - - Языковые конструкции для которых отсутствуют прописанные - требования в стандартах. В случае ошибки дальнейшее - поведение будет предсказать невозможно, и всецело будет - зависеть от контекста выполнения или платформы, где запущено - приложение. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 4 этап - - - - - - - - - - - - - - - - Шаблоны - - - - - - - - - - - - - Variadic templates - - - - - - - - - - - - - Специализация шаблона - - - - - - - - - - - - - type traits - - - - - - - - - - - - - SFINAE - - - - - - - - - - - - - Полная специализация - - - - - - - - - - - - - Частичная специализация - - - - - - - - - - - - - RAII - - - - - - - - - - - - - pimpl - - - - - - - - - - - - - Erase-Remove - - - - - - - - - - - - - Non-Copyable/Non-Moveable - - - - - - - - - - - - - Copy and swap - - - - - - - - - - - - - Copy on write - - - - - - - - - - - - - CRTP - - - - - - - - - - - - - Стандарты - - - - - - - - - - - - - C++11/14 - - - - - - - - - - - - - C++17 - - - - - - - - - - - - - C++20 - - - - - - - - - - - - - newest - - - - - - - - - - - - - C++0x - - - - - - - - - - - - - Идиомы - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 этап - - - - - - - - - - - - - - - - - Работа с исходным кодом - - - - - - - - - - - - - Текстовый редактор - - - - - - - - - - - - - IDE - - - - - - - - - - - - - Редакторы исходного кода - - - - - - - - - - - - - Отладчик - - - - - - - - - - - - - Линтеры - - - - - - - - - - - - - Знание о базовых возможностях (shortcuts, tools, plugins) - - - - - - - - - - - - - Умение читать сообщения отладчика - - - - - - - - - - - - - Отладочные символы - - - - - - - - - - - - - WinDbg - - - - - - - - - - - - - GDB - - - - - - - - - - - - - Выберите один из понравившихся популярных IDE - и хорошо освойте его: Eclipse, MS Visual Studio, - Qt Creator, JetBrains Clion, XCode и т.д. - - - - - - - - - - - - - Научитесь пользоваться отладчиком. Изучите его - возможности. - - - - - - - - - - - - - Выберите один из популярных редакторов и хорошо - освойте его. К примеру: Notepad++, Atom, и т.д. - - - - - - - - - - - - - Навык работы с отладчиком через командную строку - - узконаправленный навык. В регулярной работе достаточно - уметь работать с отладчиком в рамках IDE. - - - - - - - - - - - - - Ознакомьтесь с самыми распространёнными ошибками - (segfault, out of memory, access violation) и концепцией  - неопределённого поведения (undefined behavior) - - - - - - - - - - - - - Выберите один из популярных редакторов и и хорошо - освойте его: Visual Code, Atom, Sublime Text и т.д. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 3 этап - - - - - - - - - - - - - - - - - Компиляторы - - - - - - - - - - - - - - Базовые знания работы компиляторов - - - - - - - - - - - - - Компиляция кода в объектные файлы - - - - - - - - - - - - - Компоновка объектных файлов в приложение (линковка) - - - - - - - - - - - - - Этапы работы компилятора - - - - - - - - - - - - - Особенности работы конкретного компилятора - - - - - - - - - - - - - У компиляторов есть свои особенности, о которых - хорошо бы знать: Clang++/LLVM, Intel C++, MSVS C++, - GCC, MinGW - - - - - - - - - - - - - Есть несколько этапов работы компилятора, о которых - следует знать. Это помогает решать проблемы - при сборке приложения. Достаточно иметь базовое - понимание, чтобы решать большую часть проблем. - Детали работы важны разработчикам компиляторов. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 этап - - - - - - - - - - - - - - - - Системы сборки - - - - - - - - - - - - - CMake - - - - - - - - - - - - - Makefile - - - - - - - - - - - - - ninja - - - - - - - - - - - - - Пакетные менеджеры - - - - - - - - - - - - - vcpkg - - - - - - - - - - - - - spack - - - - - - - - - - - - - Conan - - - - - - - - - - - - - nuget - - - - - - - - - - - - - Популярные - библиотеки - - - - - - - - - - - - - boost - - - - - - - - - - - - - opencv - - - - - - - - - - - - - poco - - - - - - - - - - - - - Подключение библиотек - - - - - - - - - - - - - protobuf - - - - - - - - - - - - - gRPC - - - - - - - - - - - - - fmt - - - - - - - - - - - - - pybindll - - - - - - - - - - - - - spdlog - - - - - - - - - - - - - ranges_v3 - - - - - - - - - - - - - tensorflow - - - - - - - - - - - - - opencl - - - - - - - - - - - - - Фреймворки - - - - - - - - - - - - - gtest/gmock - - - - - - - - - - - - - Qt - - - - - - - - - - - - - catch2 - - - - - - - - - - - - - google profiler - - - - - - - - - - - - - pytorch c++ - - - - - - - - - - - - - Лицензирование - - - - - - - - - - - - - Взаимодействие - с библиотеками - - - - - - - - - - - - - Внимательно читайте условия лицензионного соглашения. - Ваш проект должен их соблюдать. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 этап - - - - - - - - - - - - - - - - Информатика - - - - - - - - - - - - - Структуры данных - - - - - - - - - - - - - Алгоритмы - - - - - - - - - - - - - Булева алгебра - - - - - - - - - - - - - Конечные автоматы - - - - - - - - - - - - - Также необходимо понимать, как вычислить сложность - и потребление памяти у алгоритмов. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 4 этап - - - - - - - - - - - - - - - - Системы контроля версий - - - - - - - - - - - - - Распределенные - - - - - - - - - - - - - Централизованные - - - - - - - - - - - - - SVN - - - - - - - - - - - - - git - - - - - - - - - - - - - Mercurial - - - - - - - - - - - - - Практики разработки - - - - - - - - - - - - - Качество кода - - - - - - - - - - - - - Правила оформления кода - - - - - - - - - - - - - Принципы разработки - - - - - - - - - - - - - KISS (Keep It Simple, Stupid) - - - - - - - - - - - - - DRY (Don't Repeat Yourself) - - - - - - - - - - - - - YAGNI (You Aren't Gonna Need It) - - - - - - - - - - - - - APO (Avoid Premature Optimization) - - - - - - - - - - - - - BDUF (Big Design Up Front) - - - - - - - - - - - - - Композиция предпочтительнее наследования - - - - - - - - - - - - - Бритва Оккама - - - - - - - - - - - - - Разделяй и властвуй - - - - - - - - - - - - - Логирование и телеметрия - - - - - - - - - - - - - Ревью кода - - - - - - - - - - - - - Умение читать чужой код - - - - - - - - - - - - - Ревью чужого кода - - - - - - - - - - - - - Понимание жизненного цикла производства ПО - - - - - - - - - - - - - Реализация - - - - - - - - - - - - - Тестирование - - - - - - - - - - - - - Поддержка - - - - - - - - - - - - - Версионирование ПО - - - - - - - - - - - - - Юнит тесты - - - - - - - - - - - - - Интеграционное - - - - - - - - - - - - - Функциональное - - - - - - - - - - - - - Производительность - - - - - - - - - - - - - Формирование архитектуры и дизайн компонентов - - - - - - - - - - - - - Интеграция компонентов - - - - - - - - - - - - - Выпуск - - - - - - - - - - - - - Сбор требований - - - - - - - - - - - - - Окончание жизненного цикла - - - - - - - - - - - - - Анализаторы кода - - - - - - - - - - - - - Статические - - - - - - - - - - - - - Динамические - - - - - - - - - - - - - Профайлеры - - - - - - - - - - - - - C++ core guidelines - - - - - - - - - - - - - Промышленные стандарты - - - - - - - - - - - - - MISRA - - - - - - - - - - - - - Autosar - - - - - - - - - - - - - Работа с командной строкой - - - - - - - - - - - - - batch - - - - - - - - - - - - - Powershell - - - - - - - - - - - - - bash - - - - - - - - - - - - - CI/CD - - - - - - - - - - - - - Trunk Based Development - - - - - - - - - - - - - Zero downtime deployment - - - - - - - - - - - - - Создание пакета поставки ПО - - - - - - - - - - - - - Документация - - - - - - - - - - - - - Инсталлятор - - - - - - - - - - - - - Использование других языков программирования - - - - - - - - - - - - - Межязыковое взаимодействие - - - - - - - - - - - - - Правила именования переменных, пробелы vs табы, - положение фигурных скобок и т.д. - - - - - - - - - - - - - Настроить форматирование и автоматически проверять - в одной из утилит: clang-format, Resharper - стиль кода, - MSVS - стиль кода. - - - - - - - - - - - - - - Скриптовые - - Функциональные - - SQL like - - NoSQL - - - - - - - - - - - - - Иногда требуется предоставить обертку к библиотеке, написанной - на C++ для другого ЯП, например Python или C#. Для этого - применяют специальные библиотеки/фреймворки. - - - - - - - - - - - - - Обратная совместимость - - - - - - - - - - - - - Не игнорируйте предупреждения компилятора - и статического анализатора. Они вам друзья, - а не враги - - - - - - - - - - - - - Microsoft GSL - - - - - - - - - - - - - Проектирование ПО - - - - - - - - - - - - - Архитектурные стили - - - - - - - - - - - - - Component-based - - - - - - - - - - - - - Monolithic application - - - - - - - - - - - - - Layered - - - - - - - - - - - - - Client-server - - - - - - - - - - - - - Microservices architecture - - - - - - - - - - - - - Event-driven - - - - - - - - - - - - - Plug-ins - - - - - - - - - - - - - REST - - - - - - - - - - - - - Service-oriented architecture - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2 этап - - - - - - - - - - - - - - - - - Паттерны проектирования (GoF) - - - - - - - - - - - - - - Поведенческие - - - - - - - - - - - - - Структурные - - - - - - - - - - - - - Порождающие - - - - - - - - - - - - - ООП - - - - - - - - - - - - - - SOLID - - - - - - - - - - - - - - UML - - - - - - - - - - - - - Архитектурные паттерны - - - - - - - - - - - - - MVC - - - - - - - - - - - - - MVVM - - - - - - - - - - - - - Three-tier - - - - - - - - - - - - - Onion - - - - - - - - - - - - - Hexagon - - - - - - - - - - - - - Методологии - - - - - - - - - - - - - Test Driven Development - - - - - - - - - - - - - Behavior Driven Development - - - - - - - - - - - - - Domain Driven Design - - - - - - - - - - - - - Память - - - - - - - - - - - - - Абстракции памяти - - - - - - - - - - - - - Выравнивание памяти - - - - - - - - - - - - - Управление памятью - - - - - - - - - - - - - Бинарные единицы - - - - - - - - - - - - - Исполняемый файл - - - - - - - - - - - - - Статическая библиотека - - - - - - - - - - - - - Динамическая библиотека - - - - - - - - - - - - - Стек - - - - - - - - - - - - - Глобальная память - - - - - - - - - - - - - Куча - - - - - - - - - - - - - Память приложения - - - - - - - - - - - - - Виртуальная память - - - - - - - - - - - - - Операционные системы - - - - - - - - - - - - - Многопоточность - - - - - - - - - - - - - Ошибки - - - - - - - - - - - - - Dead lock - - - - - - - - - - - - - Race condition - - - - - - - - - - - - - Live lock - - - - - - - - - - - - - Starvation - - - - - - - - - - - - - Потоки - - - - - - - - - - - - - Конкуренция - - - - - - - - - - - - - Мьютексы - - - - - - - - - - - - - Семафоры - - - - - - - - - - - - - Алгоритмы без блокировок (lock-free) - - - - - - - - - - - - - Обработка событий - - - - - - - - - - - - - Синхронные - - - - - - - - - - - - - Асинхронные - - - - - - - - - - - - - Процессы - - - - - - - - - - - - - Межпроцессное взаимодействие - - - - - - - - - - - - - Shared memory - - - - - - - - - - - - - Pipes - - - - - - - - - - - - - Сериализация - - - - - - - - - - - - - json - - - - - - - - - - - - - XML - - - - - - - - - - - - - Сетевой стек - - - - - - - - - - - - - TCP/IP - - - - - - - - - - - - - OSI - - - - - - - - - - - - - Сокеты - - - - - - - - - - - - - HTTP - - - - - - - - - - - - - TCP - - - - - - - - - - - - - UDP - - - - - - - - - - - - - Файловая система - - - - - - - - - - - - - Планировщик - - - - - - - - - - - - - Виртуализация - - - - - - - - - - - - - VirtualBox - - - - - - - - - - - - - VMware Workstation - - - - - - - - - - - - - Контейнеризация - - - - - - - - - - - - - Hyper-V - - - - - - - - - - - - - Docker - - - - - - - - - - - - - Облачные сервисы - - - - - - - - - - - - - Kubernetes - - - - - - - - - - - - - Безопасность - - - - - - - - - - - - - Шифрование - - - - - - - - - - - - - Многопроцессорные системы - - - - - - - - - - - - - Multicore CPU - - - - - - - - - - - - - NUMA - - - - - - - - - - - - - Ввод и вывод информации - - - - - - - - - - - - - Драйверы - - - - - - - - - - - - - Аудио - - - - - - - - - - - - - Графическое вычисление/отображение - - - - - - - - - - - - - Печать - - - - - - - - - - - - - DirectSound - - - - - - - - - - - - - OpenAL - - - - - - - - - - - - - DirectX - - - - - - - - - - - - - Vulkan - - - - - - - - - - - - - OpenGL - - - - - - - - - - - - - CUDA - - - - - - - - - - - - - Общие навыки - - - - - - - - - - - - - Языковые инструменты - - - - - - - - - - - - - Синтаксис языка - - - - - - - - - - - - - C++ Developer Roadmap - - - - - - - - - - - - - О карте: - - - - - - - - - - - - - С++ всё ещё является одним из самых популярных языков разработки. Есть немало желающих начать его изучать - и стать C++ разработчиками. Перед такими людьми встают вопросы: "С чего мне начать? Что и в каком порядке - мне изучать? Какие книги стоить почитать?" Мы попытались ответить на эти вопросы в представленной дорожной - карте. Карта акцентируется на общих компетенциях и навыках, которые встречаются в большинстве проектов. Она - призвана помочь тем, кто только начинает свое обучение или имеет небольшой опыт. Изучив набор перечисленных - материалов, вы сможете составить более продуктивный план обучения, не отвлекаясь на побочную информацию. - Это поможет вам освоить C++ на том уровне, который встречается во многих коммерческих проектах. - - - - - - - - - - - - - Как ориентироваться: - - - - - - - - - - - - - Если у вас есть замечания, вопросы или предложения, будем - рады получить любую помощь и поддержку. Мы открыты для - общения :) - - Для этого используйте следующие механизмы Github: - - Предложения/правки по репозиторию - создавайте и - присылайте новый PR в Pull Requests - - - - - - - - - - - - - Предложения и замечания: - - - - - - - - - - - - - Optional - - - - - - - - - - - - - Junior - - - - - - - - - - - - - Middle - - - - - - - - - - - - - Senior - - - - - - - - - - - - - Мидл способен создать - дизайн и решения для - функционала внутри - компонента/приложения - даже в случае неполноты - требований. - - - - - - - - - - - - - Синиор способен создать - дизайн и решение для - компонента/приложения с - учётом бизнес-контекста. - - - - - - - - - - - - - Джуниору важно научиться - писать структурированный - код и не усложнять его без - надобности. Код должен - быть легко читаемым и - поддерживаемым. - - - - - - - - - - - - - От джуниора ожидается - осведомленность про - категории, которые - относятся к Middle/Senior. - Будет достаточным - поверхностное понимание - темы. - - - - - - - - - - - - - На карте представлены - компетенции, которые - выделены в "этапы". Мы - считаем, что джуниору - стоит начинать изучение - в данном порядке, чтобы - выстроить прочный - фундамент. - - - - - - - - - - - - - Репозиторий: - - - - - - - - - - - - - - https://github.com/salmer/CppDeveloperRoadmap - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Russian/README.md b/Russian/README.md index 9ef3e6e..59c147f 100644 --- a/Russian/README.md +++ b/Russian/README.md @@ -26,13 +26,13 @@ # :milky_way: Дорожная карта -Дорожная карта представлена в двух вариантах: +Дорожная карта представлена в следующих форматах: +* :arrow_forward: [draw.io (исходник, редактируемый)](https://salmer.github.io/CppDeveloperRoadmap/goto/drawio/?l=ru) * :arrow_forward: [Miro](https://salmer.github.io/CppDeveloperRoadmap/goto/miro/?l=ru) * :arrow_forward: [SVG](https://salmer.github.io/CppDeveloperRoadmap/goto/svg/?l=ru) -* :arrow_forward: [GraphML (исходник)](https://salmer.github.io/CppDeveloperRoadmap/goto/graphml/?l=ru) -Информация о том, как просматривать и модифицировать роадмапу в формате graphML есть [здесь](./Graph/README.md) +Дорожная карта — это один файл `roadmap.drawio.svg` на язык: изображение и редактируемый исходник [draw.io](https://www.drawio.com) в одном файле. Как её просматривать и редактировать, описано [здесь](./Graph/README.md) # :key: Лицензия Карта распространяется по лицензии **CC BY-NC-SA 4.0**: [RUS](https://creativecommons.org/licenses/by-nc-sa/4.0/deed.ru) || [ENG](https://creativecommons.org/licenses/by-nc-sa/4.0/deed.en). Если вкратце: @@ -46,8 +46,8 @@ Если у вас есть замечания, вопросы или предложения, будем рады получить любую помощь и поддержку. Мы открыты для общения :) Для этого используйте следующие механизмы Github: -- Предложения/правки **по репозиторию** - создавайте и присылайте новый PR в [Pull Requests](https://github.com/salmer/CppDeveloperRoadmap/pulls) -- Предложения/правки **по дорожной карте в Miro** - создавайте и присылайте новый запрос в [Issues](https://github.com/salmer/CppDeveloperRoadmap/issues) (в Miro нет возможности вести историю изменений, потому доступ к изменениям в карте ограничен. Все правки мы вносим сами после ознакомления с предложениями). +- Предложения/правки **по контенту или дорожной карте** - создавайте и присылайте новый PR в [Pull Requests](https://github.com/salmer/CppDeveloperRoadmap/pulls) (карта редактируется как обычный файл — см. [инструкцию](./Graph/README.md)) +- Вопросы и предложения **без конкретной правки** - создавайте новый запрос в [Issues](https://github.com/salmer/CppDeveloperRoadmap/issues) # :telephone: Контакты diff --git a/TODO.md b/TODO.md new file mode 100644 index 0000000..5c3ef62 --- /dev/null +++ b/TODO.md @@ -0,0 +1,8 @@ +1. Избавиться от Miro и GraphQL -> переехать на свой движок +2. Отрефакторить то, что есть +3. Добавить AI секцию + - Соблюдать политику компании + - Ичуть язык, потому что AI может нагенерировать всякого... +4. Добавить MDR и другие требования приближающиеся +5. Добавить испанский +6. Делать всё так, чтобы не поломать всё тем, кто может ссылать на уже существующие документы \ No newline at end of file diff --git a/_layouts/svg_viewer.html b/_layouts/svg_viewer.html index 8c807cf..b5b4451 100644 --- a/_layouts/svg_viewer.html +++ b/_layouts/svg_viewer.html @@ -9,6 +9,6 @@ - {{ page.title }} + {{ page.title }} diff --git a/assets/example.png b/assets/example.png deleted file mode 100644 index ed7e28dbf7b679bfab9096e160637a4621f98026..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 454224 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�?N9sKSFdsxpLsM2{YrDsCgC%+gB+!bJvBn;6wUj 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

R@Ib>%??l{13^qvAys;GNJq1 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 z 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�U!<#iV*bC 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 z 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 z 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

=<>{Q;BTWIh#i;sd|IZSGpUZU^7UHo@6ro5wTD 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 Date: Sat, 11 Jul 2026 11:41:51 +0200 Subject: [PATCH 2/2] updated lycheeignore --- .lycheeignore | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.lycheeignore b/.lycheeignore index 13878cf..f4dd7ae 100644 --- a/.lycheeignore +++ b/.lycheeignore @@ -16,3 +16,7 @@ https://(en|ru|zh)\.cppreference\.com/.* https://isocpp\.org/.* # Intel blocks automated clients (bots) https://www\.intel\.com/.* +# Our own /goto/ redirect pages: a PR that adds a new one always 404s until +# it is merged and GitHub Pages redeploys, so checking them pre-merge is a +# guaranteed false positive (chicken-and-egg). +https://salmer\.github\.io/CppDeveloperRoadmap/goto/.*