Is it a good idea to use C++ as part of normal IT software development? Should you use C++ for a business where you would normally use something like Java, C#, or VBScript? The C++ language has picked up momentum in the last few years but I do not think that justifies C++ as a software development language for business environments. While I do advocate the C++ language for several types of software applications, I want to take a minute to offer an alternative point of view based in business reality.
The Rise and Fall of Gamgee
At a C++ conference in 2014, a software solution was introduced that greatly improved genome sequencing. At least according to the presentation surrounding Gamgee. When you read through the presentation, you see a great case made for C++ versus Java. It was truly an insightful presentation. When the sponsors of the Gamgee solution switched from Java to C++, they saw a huge improvement in genome sequencing in support of pharmaceutical research. At least in this one organization, C++ was on the rise as the virtues of Java were deemed insufficient for the task.
Fast-forward a year later and Gamgee is frozen. Taking its place is a solution that is based on … Java/Python. The replacement for Gamgee is code-named Hellbender. Apparently, whatever benefits a C++ solution offered in terms of processing speed, they probably pale in comparison to the good qualities Java brought to the table. Java has once again resumed its role as the go to solution for this organization’s particular needs. That is the implication of the switch from C++ to Java.
More Important Things Than Performance
On identical computers, a C++ solution could run faster than a Java solution. A perceived downside is that maybe it cost 3 times the amount of money to produce and improve the C++ solution versus the Java solution. You may improve the Java solution’s speed by upgrading the machine and upgrading the Java runtime. Now, you have raised the performance at a much lower cost. In the business world, that is a much better deal.
The number of people who can write Java proficiently to make business solutions may greatly outnumber those with similar skills in the domain of C++. Therefore, choosing C++ means you have fewer people for your projects. The quantity of projects you can get done goes way down. I wouldn’t say these are bad things, but in a business climate, those traits may be highly undesirable.
Basic Problems with C++ in IT
Some things have a time and a place where they fit. I do not think C++ as a language and the practices that surround it are compatible with a business climate supported by IT. You want to minimize two things in IT software development for a business/operations.
- Doing more troubleshooting than producing useful code.
- Doing so much testing that code release schedules slip.
Those two things are to be avoided in the conventional practice of IT. Tools like Microsoft Visual Studio paired with either C# or VB addresses that situation in environments based on Microsoft technology. Visual Studio and C# greatly cuts down on troubleshooting and testing while boosting reliability versus a solution made the same way in C++. That was true in years ago and remains true today. Tools of a streamlined nature such as those that support use of languages like Ruby, Java, VBScript, and PHP are all, as a class of technologies, geared towards avoiding those 2 things listed above.
According to Edmond Lau, author of The Effective Engineer, hard-nosed research has been done on this question. I learned about it reading one of his answers on Quora in which he summarizes the research. According to his reading of the research, people who use C, C++, and Java end of writing code that at most, 3x longer and needs about 3x more time to finish code than those using other languages. I would put Java at the more productive end of that curve. The research can be found here.
The Real Problem with C++ in IT
A junior developer can get pretty far with Java, C#, and such. An intermediate developer can run projects fairly independently with such turnkey software technologies. C++ does not require much to learn it, but always requires senior level skill set or high experience and greater preparation to apply it productively in an environment. That changes many things regarding labor, project execution, and continuity.
C++ Later On
I think C++ has a great future in many areas but not in business IT, business operations, and in-house enterprise software systems. Still, C++ is the premier language to know in the technology field. Knowing it can impart many benefits in terms of achieving a well-rounded understanding of software development. As I reflect on the rise and fall of the Gamgee software solution, I am reminded that not everything designated as best in class is practical. In many circumstances, the practical choice usually works best depending on the context. You just got to know when and when not to use something.
You may also wonder about:
Quora | Why is C++ so hard?
Quora | What is a “rockstar programmer?”
Book | The Effective Engineer (Time cannot be increased so use it right)