Friday, 12 March 2021
Richard Ngwa
12 minute read
Sometimes you simply have to make the plunge because doing nothing is not an option
Are you an experienced C/C++ programmer, with years spent using C++ 98 and little exposure to compilers post C++11? Do you feel bridging the gap to the latest C++ standard is becoming more and more difficult, yet more and more necessary? Do you wish you could write web applications but believe transitioning to C# would be too arduous, especially if you had to incur the expenses?
Perhaps you would take the leap, with less trepidation, if you could be assured that your new environment would provide inspiring peers all keen to help you along the way. Maybe you would make the switch if your employer perceived your personal development as their blueprint for success, and positively encouraged you to learn new technologies and attend training conferences at their expense. You may even be a C# developer who just wants to be in stimulating environment.
What is stopping you? We all have reasons for not making such major changes. Maybe the following excuses ring a bell:
If the first reason applies to you, you probably do not fit into the above characterization, but by reading this far I expect you would prefer a different environment. As for those using the second excuse, trust me, those companies do exist - they are just rare. It took me a long time to find one, but I eventually did, and so will you .
This article is not designed to pitch C++ against C#. They are both complex and fantastic at what they were designed to do. This article is about encouraging C++ programmers who want to make the transition to C#, and C# programmers looking for a better environment to develop their skills.
There is, of course, no fundamental problem with C++. However, for C++ programmers with little knowledge of compilers beyond C++98, C# may be the natural answer if you want to:
With a bit of guidance, your C/C++ experience will make the transition smoother than you would imagine.
C++ was never designed for the internet, nor was it designed with platform-agnostics as a primary concern. The internet changed our lives and with the Internet of Things (IoT) we want our software to sit comfortably in a heterogenous network of hosts. but to survive, even those companies would need to upgrade to newer C++ standards.
I followed the proposals for the C++98 replacement and used a lot of the earliest implementations by Boost. I secured one of the earliest copies of the book C++ Concurrency in Action through Manning’s Early Access Programs (MEAP) and covered as much as I could. That experience alone was enough to convince any long-term C++98 Standard developer to wake up and catch up or be left irrelevant. And more standards were in the pipeline! It was time I started seriously considering my options.
At the time of my transition in 2019, I did not have much practical experience of C++ beyond C++98. I was convinced that upgrading to C++17 (the latest standard at the time) would have been more difficult than making the transition to C#. There was already so much you needed to understand, at a lower level, simply to get to grips with features in C++03, not to mention C++11:
I guessed that all the new idioms/techniques in the latest version of C++ existed in C#. If I transitioned to the latest version of C#, I would learn all these features as part of the language. It would certainly not be as overwhelming because I would have no pre-expectations.
Rock Solid Knowledge was one of the very few companies that fitted the profile of the sort of environment I wanted to be part of. My pre-requisite for accepting my role was the promise of the opportunity to make the transition to C#. That is exactly what happened. It can happen to you too.
This is for the C/C++ programmers planning to make the transition to C#. If you had been programming for 10-15 years prior to the release of C++11 and you had not been keeping up with the changing standards, very soon C++ code would look like a very different language altogether. In my opinion, with a solid foundation in C/C++, it is easier to make the transition to C# than it is to bridge the chasm to the latest C++ standard. The problem stems from the distance between C++98 and C++11. As you would imagine, the longer it takes to update standards, the more changes, enhancements and features there are in new standards. C#, like any language, evolves, but with small, frequent increments that make the evolution seamless and painless. All you need is the right environment and the readiness to learn.
It does not have to be Rock Solid Knowledge (RSK). However, let me tell you a bit about my experience at RSK so far.
I confess that until I started doing C#, I had never had to unit test my code! There you have it. Over 20 years of C/C++ and no experience of unit tests. Everywhere I went we had Quality Assurance teams that were blamed for bugs discovered during system implementation. Not very nice, I would say. RSK prides itself on the quality of its products and Test-Driven Development (TDD) takes center stage. We are provided with online courses and live training sessions as part of a goal to develop us as employees. In a short time here, I have become proficient in unit-testing and now wonder how I did without it before.
As well as TDD, how about these for motivation to get out of bed:
In short, at RSK I feel like I am part of something special. These are just a few of the benefits of being part of the RSK experience.
Taking this jump can be terrifying but, in the right environment, the journey can be a pleasant one.
You can reach out to us if you would like some advice on the transition. We may be able to help. We are always looking for experienced C# hires too.
Last updated: Friday, 16 February 2024
Senior Software Developer
He/him
Richard is an experienced Senior Software Developer at Rock Solid Knowledge.
We're proud to be a Certified B Corporation, meeting the highest standards of social and environmental impact.
+44 333 939 8119