Skip to main content

Breaking down the 2024 Survey Results

· 13 min read
Christopher McArthur
C++ DevOps Expert

It's that time of year once again! The ISO Committee published the summary of the results for the C++ Developer Survey "Lite". This has been running for several years and it's probably the first time we can start to see some trends... hopefully!

The survey results, with less than 1300 developers compared to 1700 last year, is only partially explained by third-party restrictions as noted by the blog post sharing the results. Regardless a wider sample would be ideal. The dominance of CMake with an 83% market share is striking. Could this 4% growth be linked to the lower burden for managing build scripts? Despite these limitations, the survey offers valuable insights into C++ ecosystem trends.

Since this blog is all about building and shipping C++ software, I'll be focusing on the tooling and ecosystem questions and results. There's a natural bias here, as I'm particularly interested in how these trends affect developers like us. But fear not, there's plenty for everyone! In fact, I'm curious what aspects other bloggers will delve into. Let's jump right in as there are some fascinating statistical correlations to explore!

Overall Impression

There are positive signs! Build times, a crucial metric for build pipeline efficiency, are improving. The distribution of pain levels is also shifting downward. "Major Pain" responses have decreased to 43%, while "Minor Pain" holds steady at 37%. "Not Significant" responses are on the rise, reaching nearly 20%.

note

For enhanced clarity, I've opted to present the rest of the data in a table format in addition to the graphs. While the official diagram plugin, Mermaid-JS, doesn't currently support legends for this specific chart type (see issue mermaid#5292); the tables allow for a clear connection between the data points and their corresponding lines.

Key Highlights

Here's a summary of the 2024 Annual C++ Developer Survey "Lite":

Who are the respondents?

  • Almost all respondents (91%) use C++ at work.
  • Over two-thirds (67%) use C++ for personal projects or hobbies.
  • The majority of respondents (52%) have 6-20 years of experience in C++.
  • Even more (64%) have 6-20 years of total programming experience (including languages other than C++).

What platforms and build tools do C++ developers use?

  • CMake is the dominant build tool, used by over 80% of respondents.
  • Ninja (45%) has a well establish place.
  • Windows (desktop and server) is the most popular target platform, with over 60% of respondents developing for it.
    • Make/nmake (36%) are also popular choices.
    • MSBuild is commonly used for Windows development (30%).
  • Linux (desktop and server) is also very common (over 50%).
  • Nearly a third (32%) develop for embedded systems.
    • The most common project type was embedded systems (33%)
  • Mobile development is less common (Android: 15%, iOS: 10%) but still used by a significant number of respondents.

While the survey results provide valuable insights, access to the raw data would allow for a more granular analysis. This would enable us to answer intriguing questions like:

  • What percentage of developers targeting Windows, Linux, and macOS?
  • Is there a significant overlap between developers building for Android and iOS?
  • How does Ninja usage vary across different operating systems and target platforms?

With additional data, we could delve deeper into the trends and potentially uncover hidden correlations.

How is the cloud used in C++ development?

  • The most common cloud use cases are CI/CD (continuous integration and continuous delivery) and testing (around 53% and 29% respectively).
  • Cloud storage and deployment are also used by a significant portion of respondents (around 26% and 22% respectively).

It appears there may be a discrepancy in the choices for this question. Since CI/CD encompasses building, testing, and deploying code, the combined total of these individual options should ideally exceed the percentage of respondents who use CI/CD. For future surveys, ensuring clear and comprehensive answer choices would improve the interpretability of the results.

Do C++ projects use sanitizers and fuzzing?

  • Nearly half (49%) of projects use sanitizers or fuzzing as part of their development process.
  • However, a significant portion (45%) do not use them.

Given the amount of focus on memory safety, as the 5 dedicated "pain" questions to it would suggest, and how these techniques improve security. It might be a surprise to learn these number have not see any significant movement. It seems to suggest the burden of upgrading CI/CD pipelines might be inhibiting the progress in adopting these tools.

What major recent features do you planning on adoption this year?

  • Among the three features surveyed (Concepts, Coroutines, and Modules), Modules have the lowest planned adoption rate, only 29.25% of respondents indicated their projects would allow module usage.

As the article C++20 modules and Boost: an analysis highlights, concerns exist around managing the potential increase in complexity for build systems. This is likely in addition to modules introducing interoperability challenges between build systems and package managers - a concern that many of respondents are likely to have as usage of multiple build systems was very high - might delay the adoption process until broader tooling support matures.

What other programming languages do C++ developers use?

  • Python (73%) and C (53%) are the most popular companions to C++.
  • JavaScript (27%), C# (24%), and Rust (18%) are also commonly used.

The survey results reveal a fascinating interplay between C++ and other programming languages. Python's dominance (73%) as a companion language likely stems from its versatility in scripting, data analysis, and build orchestration tasks, particularly for developers supporting multiple platforms (a common scenario based on the survey). Where JavaScript (27%) and C# (24%) likely play a significant role due to their platform specific integrations which resonates well with the high usage of Windows (over 60%). Meanwhile, the rise of Rust (18%) aligns with the growing emphasis on memory safety in C++ development.

Dependency Management

How do you manage your C++ 1st and 3rd party libraries?

Year1. Inlined2. Dedicated3. System Manager4. Download5. Conan6. vcpkg7. other8. nuget9. None
202168.96% 1,28455.75% 1,03837.49% 69832.28% 60115.95% 29714.82% 2769.02% 1687.84% 1461.66% 31
202269.91% 82750.89% 60238.80% 45927.56% 32618.93% 22418.34% 2179.30% 1108.37% 991.35% 16
202368.11% 1,16248.30% 82436.23% 61827.43% 46821.34% 36418.93% 32311.25% 1927.50% 1281.41% 24
202468.54% 85448.48% 60437.80% 47125.60% 31919.34% 24119.10% 23814.53% 1815.30% 661.69% 21
  1. The library source code is part of my build
  2. I compile the libraries separately using their instructions
  3. System package managers (e.g., apt, brew, …)
  4. I download prebuilt libraries from the Internet
  5. Conan
  6. Vcpkg
  7. Other (please specify)
  8. Nuget
  9. None of the above, I do not have any dependencies

Dedicated Build Instructions are being Replaced by Package managers

Taking the sum of usage of Conan, Vcpkg, Other, and Nugest (disclaimer: "other" is assumed to be another package manager but there's no data about what people wrote) and calculating the delta over the previous year. Calculating the Pearson's Product Moment Correlation Coefficient. Give r = -0.9983817302 where "−0.8 > r > −1" is Strong negative linear correlation. Nearly perfect.

This is the best evidence for the entry point to using a package manager is handling dependencies with their own unique workflow and pipelines. Eliminating those extra processes can certainly reduce the pain of managing build system complexity.

YearDedicatedPackage Managers
2022-4.86%7.31%
2023-2.59%4.08%
20240.18%-0.75%

Comparing other categories against Package Managers and System Package Managers did not result in any significant correlations which exception to slight connection with downloads getting replace by package managers.

Package Manager Preferences

It is encouraging to see Nuget, which is for .NET and C# losing ground. The data for "other" will hopefully inspire a revised list of choices next year. This would make up and coming package managers more appealing by helping to promote and attract users. This would be an excellent driver for more innovation in this space.

Pain Points

There's is thankfully a large focus on improving the tooling and "evolving the ecosystem", to steal the lingo, so let's dive in.

note

The colors are Major Pain, Minor Pain, Not Significant Pain for the follow graphs.

Managing libraries my application depends on

Positive signs for supporting external dependencies! The percentage of developers reporting this topic as a major pain point has steadily decreased, with a 3% decline from 2021 to 2024. This is accompanied by a corresponding increase in those reporting it as a minor pain or not significant at all.

YearMajor PainMinor PainNot Significant
202148.46% 89935.47% 65816.06% 298
202247.63% 56334.77% 41117.60% 208
202347.37% 81035.09% 60017.54% 300
202445.43% 57136.44% 45818.14% 228

Delta Change

With the previous year

YearMajor PainMinor PainNot Significant
2022-0.83%-0.70%1.54%
2023-0.26%0.32%-0.06%
2024-1.94%1.35%0.60%

Build times

Encouraging signs for build times! So much so, it's included twice. Over the past four years, the survey data reveals a consistent downward trend in the percentage of developers reporting long build times as a major pain point. This decrease of 2.38% from 2021 to 2024 suggests that the C++ build ecosystem is becoming more efficient. There's a still a very slim number of developer who are not burdened by long times times.

Further exploration could investigate:

  • Is there any correlation with the decrease in pain managing dependencies?
  • Are there correlations between specific build tools and perceived build times?
  • How do build times vary across different project types or target platforms?
YearMajor PainMinor PainNot Significant
202145.24% 83738.05% 70416.70% 309
202243.94% 51538.65% 45317.41% 204
202343.34% 73537.56% 63719.10% 324
202442.86% 53737.35% 46819.79% 248

Setting up a continuous integration pipeline from scratch

The survey results indicate a persistent challenge. While there's a slight decrease in the percentage of developers reporting it as a major pain point (down to 1% from 2023 to 2024), it remains a significant hurdle for many (nearly a third of respondents!). There's little to no improvement over the 2021 data.

Is there a light at the end of the tunnel?

Perhaps! The data does shows a downward trend in those reporting it as a minor pain, suggesting some improvement. Additionally, the "Not Significant" category remains relatively stable. This could indicate that for certain segment of the ecosystem, setting up CI pipelines is becoming a more manageable task.

YearMajor PainMinor PainNot Significant
202130.85% 56842.15% 77627.00% 497
202233.73% 39440.75% 47625.51% 298
202331.35% 53140.85% 69227.80% 471
202430.35% 37642.53% 52727.12% 336

Setting up a development environment from scratch

The data on setting up development environments reveals a fascinating trend. While there's a positive shift with more respondents finding it a "not significant" pain point (up to 31.93% in 2024), there's also a concerning slight increase in those reporting it as a major pain (26.27% in 2024).

One explanation could be advancements in techniques for build script. There are some very high quality sources for CMake. That category saw a in the number of respondents experiencing pain that. However, the challenge of setting up the entire environment, especially for complex systems, seems to be persisting.

YearMajor PainMinor PainNot Significant
202125.82% 47943.56% 80830.62% 568
202227.83% 32942.98% 50829.19% 345
202326.83% 45941.09% 70332.09% 549
202426.27% 33041.80% 52531.93% 401

Closing Remarks

Get subscribed or make sure to follow. I will absolutely be continuing to post about these topics. There is 15-25% range of developers that have figured out how to build, test and ship this code with a not significant amount fo pain, and the goal is to get you there as well.

There an interesting pessimism that was present in 2022, maybe a global health pandemic and financial uncertainty impacted how respondents felt? It does make the current data trend well.