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:
- I am indispensable here, too much hassle!
- No company will allow me to develop at their expense!
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 .
What’s the matter with C/C++?
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:
- Write platform-independent applications
- Write web applications
- Worry less about managing the lifetime of heap-based objects
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.
“Should I stay or should I go?”
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:
- Lvalue and rvalue
- Promises, Futures,
- Variadic Templates, etc
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.
“Nothing easy is worth having”
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.
Yea, sure, why Rock Solid Knowledge?
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:
- I have time allocated for daily self-development. I am paid while I improve myself!
- As a C/C++ developer I have used MAKE files, but never worked with build pipelines. Within two years at RSK I now create Azure build pipelines that require knowledge of YAML and PowerShell, neither of which I had ever used before.
- I have attended one of the world-renowned NDC development conferences.
- I am surrounded by highly skilled, yet so approachable, peers so I actually look forward to going into work!
- We work as a team and party as one, no class structure.
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.