Skip to main content

Driving Manual-transmission cars and C/C++ Programmers — What do they have in common?

You may ask what the drivers of traditional manual-transmission cars and C/C++ programmers have anything to do with each other.
Well, I am a software engineer and I am also a car enthusiast (aka a petrolhead in UK). I am noticing certain trends in both the car industry and the software engineering community/industry; therefore, I wanted to share my opinions.
I started programming in Basic before I even owned my own computer. I remember when I first learned a for-loop in Basic, I walked over to my friend’s house and typed it up on his Commodore 64. When I was in high-school, I did more Basic (Better Basic and QuickBASIC) and also some Turing (not Turing Machine….I am talking about a language invented by University of Toronto to teach programming and it was Pascal-like). Then I switched to C/C++ and learned all about proper handling of memory and what we call “unmanaged” code these days. C/C++ were the choice if you wanted to do some low-level programming or also if you wanted to write scalable applications. Then some other programming languages started becoming more popular and these were the languages that promised developers the capability of scalable programs without worrying about the complexity that you had to deal with while programming C/C++. Java is one of those languages. Then Python, Ruby and C# (.NET) also joined Java in this group. We also have Node.js, Golang and Scala as more recent players that have proven “simplicity” and scalability.
You may say: “I like to code in C/C++ because it gives me a special satisfaction”, but as a software engineer, you have to be true to yourself and you really need to ask what the right tool is for that given job. C/C++ are the right choice if you are building something where performance is absolutely crucial or you are building some drivers where you really need C/C++. However, if you are building a simple website that is collecting customer’s input and saving it to database, then you really do not want to use C/C++. In these situations, developers are choosing C#, Java, Ruby, Node.js, and Python because they are relatively fast and much easier to maintain and expand.
What I am trying to say is that fewer and fewer programmers are using C/C++ and it will be harder to find developers in this area from year to year. C/C++ will not go away, but no high-school students would be exposed to it. Maybe even no university students would be exposed to it.
I will switch over to cars and explain how driving traditional manual-transmission cars is related to C/C++ programming.
Until automatic transmissions were invented, manual transmission was the only choice. People who liked to drive learned to drive and they enjoyed driving manual-transmission cars. A lot of people opted out of driving because it was just complex for them. Then manufacturers started putting automatic transmissions in their cars. Customers started buying cars with automatic transmission because they were more convenient (easier to drive), but these automatic transmissions were not yet efficient enough from performance nor economical point of view.
In last 10 years automatic transmissions (traditional automatics and dual-clutch automatics) started being engineered to equal and exceed the performance and economical levels of manual transmissions. Nowadays, you can buy cars with automatic transmission that will give you better MPGs and better 0–60 times than the exact cars with manual transmission. In fact, a lot of cars are stopped being manufactured with manual transmission because there is no market for them. One of these cars in the latest 991 model of Porsche 911 GT3; Porsche is only selling the model with dual-clutch automatic transmission also known as PDK; some people refer to these transmissions as “automated manuals”. This is frustrating Porsche car enthusiasts and specifically those purists. However, I understand why Porsche is doing this; they believe that manual transmission is the weakest link in the design of this car and to take this car to next level, they decided to design and manufacture 911 GT3 with dual-clutch transmission only.
As a car enthusiast I like to drive cars and with manual transmissions because there is a X-factor about them that make my driving experience more enjoyable, but at the same time I fully recognize that automatics can perform better and that needs to be well recognized; that’s why a lot of racing leagues use cars with dual-clutch sequential transmissions.
Cars with manual transmissions will not be fully extinct, but over next 10–20 years, they will be harder to find the same it will be harder to find skilled C/C++ programmers.
Almir Mustafic


Comments

Popular posts from this blog

Brand New programming language and one solution OR …

Brand New programming language and one solution OR Two existing programming languages, one solution for EACH? I understand that there is no right or wrong. It all depends on your software architecture, team structure, team skills and other factors, but I still want to explain the scenario as it may look familiar to some. Let me explain. Let’s assume that you have microservices and common libraries in two major programming languages. You have some teams who are experts in one and some teams experts in the other programming language. Now you need to come up with a solution for a scenario that all teams will need to leverage. Let’s assume that your cloud platform has an off-the-shelf approach for this but it is supported by a 3rd programming language that your teams do not have much experience in. What is the right thing for your organization and not just from the technical point of view? A) Do you embrace what your cloud platform gives you off the shelf and implement thi...

10,000 foot level view in technology

10,000 foot level view in technology: How useful is it? What can be done at this level? If the 30,000 foot level is the CTO level, then consider the 10,000 foot level as the level that software engineering managers and directors operate at. To achieve the success at 10,000 foot level, you as a software engineering manager need to dive deep into technical details, help the team lay the foundation from BOTH organizational and technical side. It is the little moves that get the team to this level. Once the team’s applications and results at that level, then you as a manager have ability to perform the high level analysis and troubleshooting without necessarily being in code on daily or weekly basis. Therefore, your ability to troubleshoot technical issues at the 10,000 foot level is a testament to the great work of your team. Go TEAM !! Almir Mustafic

Programming languages to teach students in high-school and university

Python-like or C-like as the language to introduce programming to students in high school and university? The question is: Do you introduce programming concepts to high-school/university students using languages that handle memory and other things for you or do you start introducing all of these concepts in languages like C that require you to understand all aspects. I will tell you what worked for me. I was introduced to programming in grade 10 using Basic programming language. There was a version called Better Basic and also Quick Basic. Then in grade 11 we learned procedural programming in a programming language called Turing (not Turing machine but a Pascal-like language developed by University of Toronto for teaching purposes). Then a year later, I started getting interested in C and C++. As you can see, I eased into the languages that introduced me to NULL exceptions and memory leaks :) With this approach I was not overwhelmed and this set up the foundation for a fun journey ...