Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: GitHub Discussions
url: https://github.com/salmer/CppDeveloperRoadmap/discussions
about: Please ask and answer questions here.
7 changes: 7 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
## Description
Please include a summary of the change and which issue is fixed.

## Checklist
- [ ] Content changes have been applied to all three languages (English, Russian, Chinese) OR a follow-up issue has been opened to track missing translations.
- [ ] Any new external links have been verified. (If a link is bot-blocked and fails CI, it has been added to `.lycheeignore` with a comment).
- [ ] I have run `lychee` locally to verify links according to `CONTRIBUTING.md`.
26 changes: 22 additions & 4 deletions .github/workflows/check-links.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,21 +13,39 @@ permissions:
jobs:
lychee:
runs-on: ubuntu-latest
permissions:
contents: read
issues: write
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Restore lychee cache
uses: actions/cache@v4
with:
path: .lycheecache
key: cache-lychee-${{ github.sha }}
restore-keys: cache-lychee-

- name: Check links in markdown files
uses: lycheeverse/lychee-action@v2
id: lychee
with:
# Relative links are resolved against each file's own directory
# (lychee's default); 429 (rate limited) is accepted so busy sites
# don't fail the run; the timeout is raised above the 20s default
# because some sites (e.g. sfml-dev.org) respond slowly to runners.
args: >-
--no-progress
--accept 200..=204,429
--max-retries 2
--timeout 45
--cache
--max-cache-age 1d
"**/*.md"
fail: true
output: ./lychee/out.md

- name: Create Issue From File
if: failure() && github.event_name == 'schedule'
uses: peter-evans/create-issue-from-file@v5
with:
title: Link Checker Report
content-filepath: ./lychee/out.md
labels: report, automated issue
15 changes: 15 additions & 0 deletions .github/workflows/typos.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
name: Spell Check

on:
pull_request:
push:
branches:
- main

jobs:
typos:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Check spelling
uses: crate-ci/typos@master
2 changes: 2 additions & 0 deletions .lycheeignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,5 @@ https://medium\.com/.*
# their CDN returns 403 to GitHub-hosted runner (datacenter) IPs.
https://(en|ru|zh)\.cppreference\.com/.*
https://isocpp\.org/.*
# Intel blocks automated clients (bots)
https://www\.intel\.com/.*
34 changes: 34 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Contributing to C++ Developer Roadmap

Thank you for your interest in contributing! To maintain consistency and quality across the roadmap, please adhere to the following guidelines.

## Language Sync Rule

This project maintains parity across three languages: English (`English/`), Russian (`Russian/`), and Chinese (`Chinese/`).
**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.

## Local Jekyll Preview

To preview the site locally using GitHub Pages:
1. Ensure you have Ruby and Bundler installed.
2. Install dependencies: `bundle install`
3. Serve the site: `bundle exec jekyll serve`
4. Open the provided localhost URL in your browser.

## Link Policy

We use `lychee` to ensure all links are valid.

* **.lycheeignore**: Some valid domains (like Amazon, Reddit, or CppReference) block bots or CI IPs, resulting in false positives (403 or redirect loops). These are added to `.lycheeignore`.
* **Dead Links**: If you find a dead link, please replace it with a Wayback Machine snapshot. Note it as an "(archived copy)" in the file's respective language.
* **Manual Sweep**: Since Amazon links and other bot-blocking domains are in `.lycheeignore`, they are invisible to CI. A periodic manual sweep is required to ensure these links remain active.

### Local Link Checking

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"
```
This command must exit with code 0. Run this after ANY link change.
10 changes: 10 additions & 0 deletions Chinese/Books/Middle.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,16 @@

这是 Scott Meyers 的书籍系列中的新章节。本书汇编了一组针对 C++11 / 14 标准的技巧。

- Nicolai Josuttis:
- [C++17 - The Complete Guide(英文)](https://www.cppstd17.com)
- [C++20 - The Complete Guide(英文)](https://cppstd20.com)

Meyers 的书止步于 C++14,这两卷正好接续其后。每一卷都系统地讲解了对应标准新增的全部内容——语言特性和标准库——并配有实用示例,以及何时(和何时不)使用这些新工具的建议。

- [Klaus Iglberger - C++ Software Design:高质量软件的设计原则与模式(英文)](https://www.amazon.com/Software-Design-Principles-Patterns-High-Quality/dp/1098113160)

一本专为 C++ 撰写的现代设计模式著作。它展示了经典模式基于当今惯用法——值语义、类型擦除、`std::variant`——而非深层继承体系时的样子,是从掌握语言到用语言做设计之间的绝佳桥梁。

- [Anthony Williams - C++ 并发编程实战](https://book.douban.com/subject/35653912/)

本书是多线程编程和使用标准库特性的全面指南。它提供了有关所有原语及其“幕后”复杂性的详细说明。
Expand Down
8 changes: 7 additions & 1 deletion Chinese/Books/Senior.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,13 @@

## :pencil: C++

- 对于高级学生,没有特定的书籍推荐。在这个层次上,假设您已经对 C++的基础知识有很好的理解。唯一的挑战是要了解 C++生态系统中最新标准、新功能和工具。
- 高级阶段的书籍推荐较少:假设您已经牢固掌握了语言本身,主要挑战是紧跟新标准、新特性和新工具。以下渠道会很有帮助:
- [Standard C++ Foundation 新闻和 WG21 trip report](https://isocpp.org/) - 面向实践者撰写的标准委员会工作摘要。
- 会议演讲 - 参见[会议 YouTube 频道](../CommunitySources.md)(CppCon、Meeting C++、C++Now);主题演讲和"C++XX 新特性"类演讲是保持更新的高效方式。

- [John Lakos - Large-Scale C++ Volume I: Process and Architecture(英文)](https://www.informit.com/store/large-scale-c-plus-plus-process-and-architecture-volume-9780201717068)

关于物理设计的深入著作——如何组织组件、包和依赖关系,使 C++ 代码库在增长到数百万行时仍然易于维护。最适合负责大型长期项目结构的高级开发者。

## :muscle: 团队管理

Expand Down
9 changes: 8 additions & 1 deletion Chinese/Grades/Overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,14 @@
每个公司都有自己对开发人员评估和不同等级所声明的技能和责任视野。通常会遇到以下情况:您可能会在一家公司晋升为高级角色,但在另一家公司中被评估为中层开发人员。尽管如此,仍然可以针对每个等级引入共同期望。我们将使用先前描述过程来描述每个等级。

**示例:** 您可以查看此网站以了解不同公司中关于定位系统知识:[levels.fyi](https://www.levels.fyi/)
![定位](../../assets/GradeTable.PNG "GradeTable")
| 级别 | Apple | Amazon | Google | Facebook | Microsoft |
|---|---|---|---|---|---|
| 初级 (Junior) | ICT2 | SDE I (L4) | L3 | E3 | SDE (59-60) |
| 中级 (Middle) | ICT3 | SDE II (L5) | L4 | E4 | SDE II (61-62) |
| 高级 (Senior) | ICT4 | SDE III (L6) | L5 | E5 | Senior SDE (63-64) |
| 专家 (Staff) | ICT5 | Principal SDE (L7) | L6 | E6 | Principal SDE (65-67) |
| 首席专家 (Principal) | ICT6 | Senior Principal (L8) | L7 / L8 | E7 / E8 | Partner (68-70) |
| 杰出专家 (Distinguished/Fellow) | Distinguished / Fellow | Distinguished (L10) | L9 / L10 | E9 | Distinguished / Fellow |

## 级别说明

Expand Down
4 changes: 3 additions & 1 deletion Chinese/Graph/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,6 @@ GraphML 是一种基于 XML 的图形文件格式。许多应用程序都支持

例如,您可以使用[yEd](https://www.yworks.com/products/yed)来查看 graphML 文件并根据需要进行修改。

![示例](./example.png)
*最后与 Miro 同步:2023-09-19*

![示例](../../assets/example.png)
4 changes: 4 additions & 0 deletions Chinese/Graph/roadmap-svg.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
---
layout: svg_viewer
title: C++ Developer Roadmap (Chinese)
---
2 changes: 1 addition & 1 deletion Chinese/HowToStudy.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

- 在[C++会议](CommunitySources.md)中的演示
- 在[CppReference](https://en.cppreference.com/w/cpp)主页上,您将找到链接到最新功能概述列表页面的链接
- 您可以阅读[Bjarne Stroustrup - A Tour of C++](https://www.amazon.com/Tour-2nd-Depth-Bjarne-Stroustrup/dp/0134997832)这本书。定期检查该书以获取更新,因为它会随着每个新版本的 C ++标准进行修订。
- 您可以阅读[Bjarne Stroustrup - A Tour of C++](https://www.amazon.com/Tour-C-Depth/dp/0136816487)这本书 (第3版/覆盖 C++20)。定期检查该书以获取更新,因为它会随着每个新版本的 C ++标准进行修订。
- 专业论坛/聊天/讨论等。
- 社区 YouTube 上的概述视频
- [现代 C ++语言和库功能速查表]( https://github.com/AnthonyCalandra/modern-cpp-features )
Expand Down
6 changes: 3 additions & 3 deletions Chinese/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,11 +46,11 @@ C++ 仍然是 [2025 年](https://survey.stackoverflow.co/2025/technology#most-po
您可以通过 Github 中的以下渠道之一联系我们:

* 如果对存储库内容进行任何建议或修改 - 在[Pull Requests](https://github.com/salmer/CppDeveloperRoadmap/pulls) 中创建新 PR
* 如果对存储库内容进行任何建议或修改 - 在[Issues](https://github.com/salmer/CppDeveloperRoadmap/issues)中提交新问题。(不幸的是,Miro 框架没有历史跟踪器并且无法访问路线图。所有更改都是在审核和批准后手动添加。)
* 如果对 **Miro 路线图** 有任何建议或修改 - 在[Issues](https://github.com/salmer/CppDeveloperRoadmap/issues)中提交新问题。(不幸的是,Miro 框架没有历史跟踪器并且无法访问路线图。所有更改都是在审核和批准后手动添加。)

# :telephone: Contacts
# :telephone: 联系方式

Creators:
作者:
- [Evgenii Melnikov](https://github.com/salmer),
- [Dmitrii Dmitriev](https://github.com/DmitrievDmitriyA),
- [lusipad](https://github.com/lusipad)
32 changes: 31 additions & 1 deletion Chinese/Tooling.md
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,13 @@

PC 和 C++应用程序的项目构建管理器。该管理器的主要优点是快速项目组装。它支持跨平台开发,并与所有流行的编译器兼容。

* :arrow_forward: **ccache**

网址:https://ccache.dev
价格:免费

编译器缓存:它会存储以前的编译结果,并在再次进行相同的编译时重用它们,这可以极大地加快重新构建的速度。它透明地位于 GCC 或 Clang 之前,并只需几行代码即可与 CMake 集成,使其成为中大型项目中在构建时间方面最廉价的收益之一。

## :mag: 代码分析器和格式化工具

* :arrow_forward: **clang-format**
Expand All @@ -138,7 +145,7 @@
* :arrow_forward: **PVS Studio**

网址:https://pvs-studio.com
价格:30 天免费试用
价格:付费;开源项目和学生免费

由 PVS-Studio 开发的跨平台(Windows、Linux、MacOS)静态代码分析器。该分析器的主要目标是对源代码进行分析,以检测编译器或代码审查期间可能未被发现的各种错误。它有助于减少与语言语法和陷阱相关的错误数量。

Expand Down Expand Up @@ -172,6 +179,29 @@

来自 LLVM 项目的调试器,也是 macOS 上的默认调试器(Xcode 使用它)。它提供与 GDB 类似的功能,但架构更现代。在 Windows 上,随 IDE 一起提供的 Visual Studio 调试器扮演着相同的角色。

## :stopwatch: 性能分析器

* :arrow_forward: **perf**

网址:https://perfwiki.github.io/main/
价格:免费

Linux 上的标准采样性能分析器,内置于内核中。它能显示应用程序实际消耗 CPU 时间的位置,并在需要时提供硬件计数器细节(如缓存未命中、分支预测错误)。通常与火焰图 (flame-graph) 可视化一起使用,使性能瓶颈一目了然。

* :arrow_forward: **Tracy**

网址:https://github.com/wolfpld/tracy
价格:免费

一种实时帧性能分析器,在游戏开发中尤为流行。你可以使用轻量级宏在代码中标记区域,并在图形客户端中实时观察计时,精确到各个帧和线程。它跨平台且开销极低。

* :arrow_forward: **Intel VTune Profiler**

网址:https://www.intel.com/content/www/us/en/developer/tools/oneapi/vtune-profiler.html
价格:免费

一款功能强大的性能分析器,用于 x86 架构上的深度性能分析:瓶颈、线程效率、内存访问模式以及微架构级别的指标。当 `perf` 输出不够详细时的首选工具。在 Windows 上,Visual Studio IDE 也内置了功能强大的 CPU 和内存性能分析器。

## :floppy_disk: Git 客户端

* :arrow_forward: **SmartGit**
Expand Down
14 changes: 12 additions & 2 deletions English/Books/Middle.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,16 @@

It's a new chapter in the collection of books by Scott Meyers. This book compiles a set of tips for the C++11/14 standards.

- Nicolai Josuttis:
- [C++17 - The Complete Guide](https://www.cppstd17.com)
- [C++20 - The Complete Guide](https://cppstd20.com)

Meyers' book stops at C++14, and these two volumes pick up where it leaves off. Each one systematically walks through everything its standard added — language features and library alike — with practical examples and advice on when (and when not) to use the new tools.

- [Klaus Iglberger - C++ Software Design: Design Principles and Patterns for High-Quality Software](https://www.amazon.com/Software-Design-Principles-Patterns-High-Quality/dp/1098113160)

A modern take on design patterns, written specifically for C++. It shows how classic patterns look when built on today's idioms — value semantics, type erasure, `std::variant` — instead of deep inheritance hierarchies, and is a great bridge between knowing the language and designing with it.

- [Anthony Williams - C++ Concurrency in Action](https://www.amazon.com/C-Concurrency-Action-Anthony-Williams/dp/1617294691/ref=sr_1_3?keywords=C%2B%2B+Concurrency+in+Action%3A+Practical+Multithreading&qid=1636314477&s=books&sr=1-3)

This book is a comprehensive guide to multithreading programming and the use of standard library features. It provides detailed explanations about all primitives and their intricacies "behind the scenes."
Expand Down Expand Up @@ -65,7 +75,7 @@

This book delves into the same topics as the previous book, but with a focus exclusively on the Microsoft Windows operating system. It provides a deep and detailed look at every aspect of the OS with a specific focus on Windows and covers various nuances and aspects that may not be officially declared by the developers. It is a useful resource for those who develop low-level applications that require intensive interaction with the OS system libraries.

- [Christopher Negus - Linux Bible](https://www.amazon.com/Linux-Bible-Christopher-Negus/dp/1119578884)
- [Christopher Negus - Linux Bible](https://www.amazon.com/Linux-Bible-Christopher-Negus/dp/1394317468)

This book can serve as a follow-up to Tanenbaum's work, delving into the intricacies of the Linux operating system. The book includes detailed analysis of various aspects of the OS, with a focus on popular distributions like Red Hat, Ubuntu, and Fedora. It is an ideal resource for developers who use Linux on a daily basis

Expand All @@ -76,7 +86,7 @@

## :globe_with_meridians: Computer networks

- [Andrew S. Tanenbaum - Computer Networks](https://www.amazon.com/Computer-Networks-5th-Andrew-Tanenbaum/dp/0132126958)
- [Andrew S. Tanenbaum - Computer Networks](https://www.amazon.com/Computer-Networks-Andrew-Tanenbaum/dp/0136764053)

A classic book on the theoretical foundations of computer networks provides a detailed description, starting from the physical layer and ending with data transfer protocols. It will be extremely useful for developers who are closely involved in projects that interact with networks.

Expand Down
8 changes: 7 additions & 1 deletion English/Books/Senior.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,13 @@

## :pencil: C++

- There are no specific recommendations for books for senior level students. At this level, it is assumed that you have a good understanding of the fundamentals of C++. The only challenge is to stay updated on the latest standards, new features, and tools in the C++ ecosystem.
- There are few book recommendations at the senior level: it is assumed that you have a solid command of the language, and the main challenge is staying current with new standards, features, and tools. Useful channels for that:
- [Standard C++ Foundation news and WG21 trip reports](https://isocpp.org/) - summaries of what the standardization committee is working on, written for practitioners.
- Conference talks - see the [conference YouTube channels](../CommunitySources.md) (CppCon, Meeting C++, C++Now); keynotes and "What's new in C++XX" talks are an efficient way to keep up.

- [John Lakos - Large-Scale C++ Volume I: Process and Architecture](https://www.informit.com/store/large-scale-c-plus-plus-process-and-architecture-volume-9780201717068)

A deep treatment of physical design — how to organize components, packages, and dependencies so a C++ codebase stays maintainable as it grows to millions of lines. Most relevant for seniors who own the structure of large, long-lived projects.


## :muscle: Team management
Expand Down
4 changes: 2 additions & 2 deletions English/CommunitySources.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@
## :exclamation: Alternative sources for learning C++

- [Learncpp.com](https://www.learncpp.com/) - It is a free website devoted to teaching you how to program in C++. It's being updated regularly.
- [Hackingcpp.com](https://hackingcpp.com/index.html) - The all-in-one web portal with diffenent collections of materials related to C++: books, cheat sheets, recordings from conferences, etc.
- [Awesomecpp.com](https://awesomecpp.com) - The set of different sources about the C++.
- [Hackingcpp.com](https://hackingcpp.com/index.html) - The all-in-one web portal with different collections of materials related to C++: books, cheat sheets, recordings from conferences, etc.
- [Awesomecpp.com](https://awesomecpp.com) - A curated collection of C++ resources.
- [Cpp Con (back to basics)](https://www.youtube.com/playlist?list=PLHTh1InhhwT5o3GwbFYy3sR7HDNRA353e)
- [C++ Weekly](https://www.youtube.com/@cppweekly) - Jason Turner's YouTube show with short weekly episodes about C++ features and best practices.
- [CppCast](https://cppcast.com/) - A podcast for C++ developers with interviews about the language, libraries, and community.
Expand Down
9 changes: 8 additions & 1 deletion English/Grades/Overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,14 @@ Nowadays, you can encounter the following common grading approach. The following
Each company has its own vision of developer grading and a set of skills and responsibilities declared for different levels. It's common to encounter the following situation: you may be promoted to a senior role in one company, but in another company you might be assessed as a mid-level developer. Despite this, it's possible to introduce common expectations for each level. We will use the simplified approach described previously to describe each grade.

**Example:** You can check this website to get knowledge about leveling systems in different companies: [levels.fyi](https://www.levels.fyi/)
![](../../assets/GradeTable.PNG "GradeTable")
| Level | Apple | Amazon | Google | Facebook | Microsoft |
|---|---|---|---|---|---|
| Junior | ICT2 | SDE I (L4) | L3 | E3 | SDE (59-60) |
| Middle | ICT3 | SDE II (L5) | L4 | E4 | SDE II (61-62) |
| Senior | ICT4 | SDE III (L6) | L5 | E5 | Senior SDE (63-64) |
| Staff | ICT5 | Principal SDE (L7) | L6 | E6 | Principal SDE (65-67) |
| Principal | ICT6 | Senior Principal (L8) | L7 / L8 | E7 / E8 | Partner (68-70) |
| Distinguished/Fellow | Distinguished / Fellow | Distinguished (L10) | L9 / L10 | E9 | Distinguished / Fellow |


## Level Descriptions
Expand Down
Loading
Loading