Hello everyone, I am A Q. Today, this article is specifically for those who are still confused about what direction to take in C++ development. Years from now, you will surely thank your hardworking self! C++ is currently a very popular object-oriented language with numerous applications, and there must be one that you like and that suits you.The directions for C/C++ development are vast, including but not limited to the following directions, for reference only!!!

1. Backend/Server Development Engineer
C++ backend/server development is vital because the main programming languages for internet backend development today are C++, Java, and Golang. However, C++’s primary advantage is its exceptional performance; it maximally utilizes the CPU. Java and Golang are more suitable for writing business code. Several Java experts I know switched to using Golang during campus recruitment. Backends with strict performance requirements will prioritize C++ development. Companies like Baidu and Tencent use C++ for backend development. In high-frequency trading, quantitative private equity firms and securities companies also use C++ for backend development.Backend development requires proficiency in C++, familiarity with operating systems, computer networks, Linux network programming, design patterns, databases, as well as common data structures and algorithms, and various backend middleware.My previous shares on backend development have generally been updated based on the needs in this area, from the basics of C language to some algorithms. I hope everyone builds a solid foundation so they can learn more advanced topics later on. Furthermore, campus recruitment now places importance not only on fundamentals but also on your practical abilities, so I hope everyone avoids falling behind in the fundamentals.[Backend Development]
- Solid programming foundation, mastery of C/C++/JAVA and common algorithms and data structures;
- Familiarity with TCP/UDP network protocols and related programming, inter-process communication programming;
- Understanding of scripting languages such as Python, Shell, Perl;
- Understanding of MYSQL and SQL programming, knowledge of NoSQL and key-value storage principles;
- Comprehensive and solid software knowledge structure, mastery of operating systems, software engineering, design patterns, data structures, database systems, network security, etc.;
- Understanding of distributed system design and development, load balancing technology, system disaster recovery design, high availability systems, etc.
Below are the recruitment requirements of a certain company for reference.
Looking at the requirements for the two positions above, there are not only educational requirements, but some also require relevant internship experience. This already filters out a large number of candidates because most students complete their school tasks step by step, and only a few students who have planned in advance for this direction are ahead of the game.Moreover, a solid foundation in data structures and algorithms is necessary. Those with ACM experience or competition experience have an advantage, so if you are a freshman or sophomore, actively participate in competitions like these, regardless of whether your school is very good; it will be a great addition to your resume.As for language, it is essential to master it. For C++, if this is your first time reading this article, I suggest you follow up and review previous articles, which will definitely enhance your skills.Also, regarding TCP/IP, whether for development or testing, if you are interviewing with a company, this content will surely be a must-ask topic.Additionally, other tools such as MySQL, Nginx, Redis, etc., are necessary to become an excellent backend development engineer; learning them is a must. To excel in backend development, language proficiency is the most fundamental requirement. Other learning content can be found in previous articles.
2. Desktop Client Development Engineer
This type of client product mainly refers to application programs on personal computers. There are Windows client development engineers and Mac client development engineers, mainly focusing on interface and logic development for Windows and Mac.[PC Client Development]
- Bachelor’s degree or higher in computer software-related majors, a passion for programming, solid fundamentals, and an understanding of algorithms and data structure knowledge;
- Familiarity with Windows operating system memory management, file systems, and process/thread scheduling;
- Familiarity with MFC/Windows interface implementation mechanisms, proficient in VC, mastery of C/C++, and experience in Windows network programming;
- Proficient in Windows client development and debugging, with prior experience in Windows application software development preferred;
- Passionate about innovation and solving challenging problems, with a good foundation in algorithms and system analysis capabilities.
Similarly, language is fundamental. Positions in this area are generally developed in Windows/Mac environments. The development tool used is Visual Studio, and the frameworks included in it also need to be understood.Common tools like CMake are also essential in the client development process.For operating systems and computer networks, regardless of the C++ position, these topics are always crucial in interviews, and thus must be mastered. Multi-process, multi-threading, and network programming cannot be overlooked.In recent years, Qt has gradually become popular as a cross-platform C++ GUI application development framework. It can develop both GUI and non-GUI programs, such as console tools and servers. Qt is an object-oriented framework that uses special code generation extensions (called Meta Object Compiler, moc) and some macros, making it easy to extend and allowing for true component programming. If you are interested, you can learn it, as the job market for this position is gradually increasing, and the prospects look good.Therefore, if you want to do C++ development but don’t want to focus on backend, you can consider this direction if you are interested in client-side development. Unlike Android or iOS, which require Java and Objective-C, the main entry barrier is still learning C++.
3. Graphics/ Game/ VR/ AR
The above categories can be considered as one type.For instance, graphic development engineers have a higher threshold than general development engineers. The programming language is C++, but it requires a significant amount of mathematical application, such as linear algebra, analytical geometry, and calculus, as well as an understanding of GPU architecture.Common functions in graphics are usually provided by commercial game engines or renderers; graphic development engineers primarily modify them according to project requirements or develop new specialized functions. Compared to other business-related work, this area is more challenging, resulting in fewer people entering it.Graphics are generally sensitive to performance, especially in real-time applications (such as games), where each frame has a maximum limit of 16.6 milliseconds, placing high demands on programming.Additionally, it is necessary to learn to use game engines such as Unity, cocos2dx, and UE4, which also require a considerable time investment.[Game Client]
- Bachelor’s degree or higher in computer science/engineering-related fields, a passion for programming, solid fundamentals, and an understanding of algorithms, data structures, and software design knowledge;
- At least one commonly used programming language for game development, with C++/C# programming experience preferred;
- Experience with game engines (such as Unity, Unreal) is preferred;
- Understanding of specific game client technologies (such as graphics, audio, animation, physics, artificial intelligence, network synchronization) is preferred;
- Passionate about innovation and solving challenging problems, with strong learning, analysis, and problem-solving abilities, and good team collaboration awareness;
- Ability to read technical documents in English;
- Passionate about games.
The above is a position developed by a certain game company. For game companies, both effects and performance are highly pursued. For those looking for internships in the fall recruitment, it is not an easy task, as most schools do not offer this course. If you are very interested in this direction, you can switch languages or directions, but generally, the threshold is not low.
4. Test Development Engineer
Some may ask whether test development is testing or development. Essentially, it is still testing because testing is the core, while development is the means.Generally, test development positions require you to understand both research and testing, and also possess a certain level of in-depth working ability. Thus, you need to know Java, Python, Shell, SQL, etc., which are the basics, followed by conducting business tests.[Test Development]
- Bachelor’s degree or higher in computer science or related fields;
- One to two years of programming experience in C/C++/Python or other computer languages;
- Ability to write test plans, test cases, and implement performance and security tests;
- Ability to implement automated systems;
- Ability to locate and investigate product defects, as well as debug defects at the code level;
- Proactive, responsible, and possess good team spirit.
Take a look at the requirements for this position at a certain company. For testing-related positions, a solid computer foundation is essential. In interviews, you don’t need to speak fluently; you should at least be able to answer eight to nine out of ten questions.For students majoring in software engineering, schools will certainly offer courses related to software testing, such as black-box and white-box testing, which are the most basic…Some may have misconceptions about test development positions, thinking that it only involves clicking the mouse (though I do know some friends who do that kind of testing). In reality, it requires not only a testing foundation but also certain development requirements; at least familiarity with Java is needed, but being proficient in C++ also provides opportunities and advantages. There are also other technologies, and you need to expand your learning according to the specific requirements of the positions companies want to fill.Additionally, team members in the testing department also need to have a good personality since they need to communicate across departments. You know yourself best…
5. Network Security/Reverse Development Engineer
In fact, network security development engineers are a subdivision of positions under the broader category of network security construction and implementation.For network security development engineers, a solid understanding of computer architecture and operating systems is essential, along with familiarity with basic knowledge of network security.[Security Technology]
- A passion for the internet, with a fervent pursuit of operating systems and network security, regardless of major;
- Familiarity with vulnerability exploitation, network security offensive and defensive techniques, and understanding common hacker attack methods;
- Basic development skills, proficient in C/C++;
- Good grasp of databases, operating systems, and network principles;
- Experience in software reverse engineering, network security offensive and defensive or security system development is preferred.
Let’s analyze the specific position requirements from a certain security company; this is for a vulnerability direction. In fact, I have seen that some companies have high requirements for security development engineers, often requiring a 985 or 211 degree or even a master’s degree… which is quite normal.Now, let’s take a look at this position’s requirements; some specific skills are still necessary, and you can see that regardless of the position, programming languages, computer architecture, computer networks, and operating systems are all required!!!In modern terms, these are defaults that development engineers must understand.This vulnerability direction in security development has many technical requirements, and honestly, you will likely start at the graduate level; undergraduates rarely have such detailed skills to study.Moreover, if you have these additional skills, they will be a plus for any position, haha…So, to succeed, you need to be strong!
6. IoT/Embedded Development Engineer
This direction has become increasingly popular in recent years, with IoT and embedded systems being divided into software and hardware; the scope is broad, leading to many specialized directions. IoT is a major industry category, while embedded systems are a major technical category, sharing the common characteristic of requiring understanding of both software and hardware.Embedded systems mainly involve developing software for microcontrollers, and students majoring in computer science and technology or electronic information have certainly worked with such devices in school. This includes Linux software development, driver development, and embedded system software development, which are closer to low-level development, thus requiring the use of C language. In addition to software learning, hardware aspects must also be understood, such as reading timing diagrams, circuit diagrams, and knowledge of assembly language, as it may be used during debugging when analyzing C language disassembly. FPGA and DSP software development is relatively higher up the hardware spectrum, along with other industrial control software development.Compared to other software development, embedded systems offer broader and deeper employment directions, with better job opportunities and entry-level salaries than ordinary software engineers.[Embedded Application Development]
- Good programming foundation, proficient in C/C++;
- Mastery of operating systems, data structures, and other essential software development knowledge;
- Strong communication and understanding skills, along with good team collaboration awareness;
- Experience in Linux/Android system platform development is preferred.
The requirements for embedded development positions are quite clear and detailed.As mentioned earlier, embedded systems mainly use C/C++, and common data structures and algorithms are also essential. If you are lucky enough to read this far, consider following the author to review previous summaries of data structures and algorithms, which will be very helpful for both campus recruitment and students with 1-3 years of experience.Linux systems are also indispensable, as this type of development generally does not occur on Windows. Therefore, on Linux systems, knowledge of Shell is necessary, and faster compilation also requires Makefile.Additionally, multi-process and multi-thread programming are crucial; I have provided detailed introductions to these topics in previous sections. You can learn at any time, and there will be ways to obtain the PDF as well.Finally, while it is good to know MCU-related topics, if you are a campus recruit without experience in this area, a solid foundation is generally acceptable for employers.Overall, embedded systems are a very popular direction in recent years, and this field is quite friendly to those looking to enter it, with attractive salary packages.
7. Audio/Video/Streaming/SDK
Let’s start with audio and video, which essentially aim to provide users with an extreme auditory and visual experience by fully utilizing hardware terminals in extremely complex network environments. Thus, the development process for audio and video is a pursuit of an ultimate experience.[Audio/Video Codec]
- Master’s degree or higher in computer science, signal processing, mathematics, information, or related fields;
- Solid foundation in video coding and decoding, familiar with commonly used HEVC or H264, and possess a good foundation in digital signal processing;
- Proficient in C/C++, strong coding ability, familiarity with an assembly language is a plus;
- Strong ability to read English literature;
- Strong learning ability, team spirit, and good stress resistance.
Take a look at this audio and video direction from a certain company, but to be honest, there are indeed educational requirements. Positions with educational requirements often mean if you are an undergraduate, you may not qualify; this company is quite strict about educational background.As a master’s degree holder, you will not only be assessed on your research direction but also on your foundational knowledge of programming languages, operating systems, and computer principles…Additional skills are indeed specialized and can be reviewed along with the previous additional skills, which often require in-depth understanding of specific subfields.
8. Computer Vision/Machine Learning
In fact, computer vision is a field of artificial intelligence (AI) that enables computers and systems to extract meaningful information from images, videos, and other visual inputs, and to act or provide suggestions based on that information. If AI empowers computers with the ability to think, then computer vision grants them the ability to discover, observe, and understand.However, positions in this field generally require at least a master’s degree, as undergraduates rarely enter these directions unless they are exceptionally talented. Therefore, ordinary undergraduates should generally avoid this direction; for master’s students, there is indeed a need for study.Why mention this direction? Because most of the tasks in this area will likely be accomplished using C++, with Python also being a very good option.[Computer Vision Research]
- Computer science, applied mathematics, pattern recognition, artificial intelligence, automation, statistics, operations research, bioinformatics, physics/quantum computing, neuroscience, sociology/psychology, and other majors related to image processing, pattern recognition, and machine learning, with a bachelor’s degree or higher, PhD preferred;
- Proficient in basic algorithms and applications related to computer vision and image processing;
- Strong algorithm implementation ability, proficient in C/C++ programming, familiar with at least one of Shell/Python/Matlab;
- Publication of papers in academic conferences or journals related to computer vision, pattern recognition, or awards in related international competitions, and possession of relevant patents are preferred.
See, this is correct; this direction not only has educational requirements but also requires in-depth knowledge in other areas. For master’s students aiming for this direction, effort is still necessary.Overall, campus recruitment and social recruitment today are much more challenging than in our time. Today you look at this position, tomorrow you look at that position, sigh.However, external factors are not the issue; the biggest problem is still yourself. As the saying goes, “To forge iron, one must be strong oneself.” Only by becoming stronger can external environments remain just that—external. Don’t keep looking at various things online that create anxiety; just focus on doing well yourself.Also, appropriately lowering expectations will lead you to discover a better world. Constantly looking at various unhelpful things, seeing salaries above 400,000 or 500,000, and living in anxiety because you feel you are not as good as others… is it meaningful?Keep it up, everyone; the next offer collector in the fall recruitment could be you!
For more learning materials, click the homepage to get them.
Remember to give a thumbs up after reading~