mirror of
https://github.com/salmer/CppDeveloperRoadmap.git
synced 2025-12-17 12:34:37 +03:00
Added "go back buttons" in english articles
This commit is contained in:
@@ -7,3 +7,6 @@
|
||||
- [C++ Applications](https://www.stroustrup.com/applications.html)
|
||||
- [What is C++ used for?](https://www.codecademy.com/resources/blog/what-is-c-plus-plus-used-for/)
|
||||
|
||||
---
|
||||
|
||||
[**To main page**](../README.md)
|
||||
@@ -46,3 +46,7 @@
|
||||
- [Sanjay Madhav, Josh Glazer - Multiplayer Game Programming: Architecting Networked Games](https://www.amazon.com/Multiplayer-Game-Programming-Architecting-Networked/dp/0134034309)
|
||||
|
||||
This book is an excellent introduction to networking theory. It will explain network foundations through video games examples. They will help you to write your first application working via a network. Besides a theory, you will gain experience in how to work with it in C++. All examples are written in C++11/14.
|
||||
|
||||
---
|
||||
|
||||
[**Go back**](Overview.md) | [**To main page**](../../README.md)
|
||||
@@ -79,3 +79,7 @@
|
||||
- [Victor Olifer - Computer Networks: Principles, Technologies and Protocols for Network Design](https://www.amazon.com/Computer-Networks-Principles-Technologies-Protocols-ebook/dp/B001GQ35P4)
|
||||
|
||||
Another great book on the basics of computer networks. At some points, the presentation of information can seem a little more complicated, compared to Tanenbaum's work. Therefore, we recommend choosing the book whose narrative is more suitable for you.
|
||||
|
||||
---
|
||||
|
||||
[**Go back**](Overview.md) | [**To main page**](../../README.md)
|
||||
@@ -6,3 +6,7 @@ These articles will help you find your way to study C++. All books are divided a
|
||||
- [Junior](Junior.md)
|
||||
- [Middle](Middle.md)
|
||||
- [Senior](Senior.md)
|
||||
|
||||
---
|
||||
|
||||
[**To main page**](../../README.md)
|
||||
|
||||
@@ -42,3 +42,7 @@
|
||||
- [MSDN](https://docs.microsoft.com/en-us/cpp/build/vscpp-step-0-installation?view=msvc-160)
|
||||
|
||||
If you are at the starting point of your studying path, it's recommended to start practicing and doing exercises in the IDE: Microsoft Visual Studio (Community Edition). Nowadays, it's one of the friendliest IDEs among others to beginners, either in installation or usage (and it's absolutely for free!). It will help you to concentrate on language and not to struggle with the development environment. On MSDN you will find a nice guidebook that describes the following aspects: how to install the Visual Studio, create the first console project, and implement the first application.
|
||||
|
||||
---
|
||||
|
||||
[**Go back**](Overview.md) | [**To main page**](../../README.md)
|
||||
@@ -49,3 +49,7 @@
|
||||
- [Chris Richardson - Microservices Patterns](https://www.amazon.com/Microservices-Patterns-examples-Chris-Richardson/dp/1617294543)
|
||||
|
||||
The book focuses on the modern architectural approach of system design - microservices. This work will explain how to make a consistent transformation of an application from a "monolithic" state into a set of microservices. It contains a set of patterns, as well as tips for refactoring existing code in order to perform this procedure most effectively.
|
||||
|
||||
---
|
||||
|
||||
[**Go back**](Overview.md) | [**To main page**](../../README.md)
|
||||
@@ -34,3 +34,6 @@
|
||||
- [A cheatsheet of modern C++ language and library features](https://github.com/AnthonyCalandra/modern-cpp-features)
|
||||
- [Collection of libraries and frameworks for C++ ](https://github.com/fffaraz/awesome-cpp)
|
||||
|
||||
---
|
||||
|
||||
[**To main page**](../README.md)
|
||||
|
||||
@@ -15,3 +15,7 @@ To get started with C++ one needs a basic set of school knowledge:
|
||||
Despite all the history behind C++ we believe that its modern version is much simpler that it used to be.
|
||||
|
||||
Don't be afraid to learn it and good luck!
|
||||
|
||||
---
|
||||
|
||||
[**To main page**](../README.md)
|
||||
|
||||
@@ -27,3 +27,6 @@ It is a developer who has theoretical knowledge of software development and litt
|
||||
- Don't bury yourself in the task for too long. If after several attempts there is no progress, immediately contact your colleagues for help. They expect that the task will be completed by you within a reasonable period. Your main goal is to solve problems, not create them for the team.
|
||||
- When difficulties arise, try to find a couple of possible solutions yourself, and then approach your mentor. Your mentor will adjust or complement your solution.
|
||||
- Juniors tend to fall into a common trap: the more lines of code are written, the cooler they are as developers. Don't get caught! Remember, the more code you write, the higher the chance of an error. Ideally, the code should be written so that when you return to it six months later, you can quickly recall what it does. A good developer is not someone who writes a lot of code. A good developer behaves like a samurai: he delivers one precise and deadly blow, rather than pointlessly swinging his sword to hit the enemy.
|
||||
---
|
||||
|
||||
[**Go back**](Overview.md) | [**To main page**](../../README.md)
|
||||
|
||||
@@ -45,3 +45,7 @@ In general, the middle developer solves technical tasks. In comparison with a Ju
|
||||
|
||||
- The main trap of many middle developers: they're "fanboys" of technologies, frameworks, design patterns, or methodologies. Try to be more pragmatic while solving tasks on your project. Don't try to intake all the newest ideas only to play with them or get "yet another skill" to your CV. The Middle role is a "pandora box" of overengineering or "diving" around frameworks.
|
||||
- If you really think a library/framework is needed for a project - discuss it with a Senior or Lead engineer first. Propose them to create a "proof of concept" where you will be able to check all hypotheses in action before intake a new dependency. Please, don't try to do it in secret from your team! It's fun for you, but it's a "disaster" for your team in the future. It increases maintenance costs and might bring unforeseen consequences.
|
||||
|
||||
---
|
||||
|
||||
[**Go back**](Overview.md) | [**To main page**](../../README.md)
|
||||
@@ -20,3 +20,7 @@ You can read these articles to get understanding about each level, and its commo
|
||||
- [Junior C++](Junior.md)
|
||||
- [Middle C++](Middle.md)
|
||||
- [Senior C++](Senior.md)
|
||||
|
||||
---
|
||||
|
||||
[**To main page**](../../README.md)
|
||||
@@ -41,3 +41,7 @@ It is someone who is familiar the syntax of the language and can write a simple
|
||||
|
||||
- It's easier to look for the solutions in English, but don't torture yourself if your current language proficiency isn't high enough. You might get demotivated too soon. Most of the problems you are likely to encounter in the beginning are searchable in your native language.
|
||||
- If you feel that your English is insufficient, start studying it through the use of simpler and more pleasant means: series, video games, fiction, news outlets or articles you're interested in. Several months are enough to refine your skill of English comprehension.
|
||||
|
||||
---
|
||||
|
||||
[**Go back**](Overview.md) | [**To main page**](../../README.md)
|
||||
|
||||
@@ -20,3 +20,7 @@ It is a developer who understands not only the technical, but also the business
|
||||
## Tips and recommendations
|
||||
|
||||
Depending on the specifics of the company and on your desires, the path of further development lies either in the learning of recent technologies and technical skills required in your chosen field of knowledge (for example, special sections of mathematics, physics, etc. - the path of a technical expert), or in the field of management and interaction with people (tech lead, team lead, PM, etc.). Choose wisely. 🙂
|
||||
|
||||
---
|
||||
|
||||
[**Go back**](Overview.md) | [**To main page**](../../README.md)
|
||||
@@ -34,3 +34,7 @@ C++ develops in the same way as all other languages: it takes some popular idea
|
||||
- Remember that many experienced developers run into problems too and can get stuck in "obvious" places. Just take a break, do something else, and then return to the task after a break.
|
||||
- Find like-minded people who are also starting their learning path. So, it will be more interesting for you to immerse yourself in learning the language together as well as share knowledge and experience with each other. It will also help to develop teamwork skills. The days of "free artists" have ended. Almost everywhere you will have to work as a team.
|
||||
- Try to find yourself an experienced mentor. Under his guidance, you will be able to avoid various typical traps and wasted time on them.
|
||||
|
||||
---
|
||||
|
||||
[**To main page**](../README.md)
|
||||
@@ -43,3 +43,7 @@ This is another urban legend from the "Old Guard" that had stopped writing C++ b
|
||||
## C++ is legacy area only
|
||||
|
||||
Partially it's true, but it's good to note that it's applicable for other languages. Even with a modern stack, developers can produce code that will become legacy very fast. The code quality mainly depends on the technical culture of a team and its pioneers, not a language. The majority amount of legacy code is produced under the human factor: developer's grade and skill set, work ethic, wrong estimations, etc. Nowadays, you can meet a lot of projects working 24/7 for years and written in C++. Such kinds of systems are often the business foundation of revenue. In this case, it's really dangerous to perform any huge changes in short time. The developers make any changes with high attention to any regression. But don't think that legacy projects can not help you to improve yourself. In fact, these projects can give you a challenge that can bring you widespread experience in different areas: code reading, reverse-engineering, testing, designing of SW architecture, automation, requirements gathering, etc.
|
||||
|
||||
---
|
||||
|
||||
[**To main page**](../README.md)
|
||||
@@ -67,3 +67,7 @@ The following examples are more suitable for students who are passing or recentl
|
||||
* Linear algebra library: matrices, vectors, calculations, etc.
|
||||
* Modeling of various processes: physics, theoretical mechanics, etc.
|
||||
* Application of numerical methods: integration, differentiation, approximation, interpolation, etc.
|
||||
|
||||
---
|
||||
|
||||
[**To main page**](../README.md)
|
||||
|
||||
@@ -9,3 +9,7 @@ The entry barrier into C++ development is still higher compared to other languag
|
||||
This roadmap tries to fill the gap that has been formed. The idea of creation arose after a large number of interviews with inexperienced candidates for the position of a C++ developer. They showed common patterns: gaps in basic knowledge, lack of understanding on how to learn the language and where to get the knowledge from.
|
||||
|
||||
Also, the map can be useful for those who have already been practicing using C++ for some time in personal and work projects. It can help you to understand what knowledge you are lacking to deepen the level of language proficiency, as well as become a highly qualified specialist.
|
||||
|
||||
---
|
||||
|
||||
[**To main page**](../README.md)
|
||||
@@ -15,3 +15,7 @@ Yes and no. :)
|
||||
Computer science basics will help you for sure. For example, understanding procedural programming, OOP or other concepts and general knowledge. But you shouldn't rely on them completely. The most common case that newbies often find themselves in is that they try to write in C++ in the paradigms of other languages. For example, C developers tend to write C++ programs in procedural style, or they tend to think that C++ is "C with classes".
|
||||
|
||||
C++ is rich in ideas and coding approaches. Therefore, it is recommended to start learning the language with a clean head. Understand its ideas. This will help you to use the language effectively in your work tasks. Knowledge of other languages will help you compare them with each other and identify strengths and weaknesses.
|
||||
|
||||
---
|
||||
|
||||
[**To main page**](../README.md)
|
||||
@@ -165,3 +165,6 @@ Newborn developers have a limited understanding of the tools available, which ma
|
||||
|
||||
Cross-platform and highly efficient client for Windows, Linux, MacOS. Supports integration with GitHub, Bitbucket and Gitlab, as well as all the necessary functionality for everyday work: studying the history of changes, receiving/submitting changes, switching between branches, built-in conflict resolution editor, etc.
|
||||
|
||||
---
|
||||
|
||||
[**To main page**](../README.md)
|
||||
|
||||
Reference in New Issue
Block a user