I remember when I first realized some Universities were no longer teaching Computer Engineering and Computer Science students C++. Realizing the sad truth in it, I cringed. Flushed with sadness, I was utterly sick to my stomach.
You see, I spent my University years watching men do things with C/C++ that would blow your mind today. Granted, these men were utter freaks of nature, and I mean that in a good way.
One of them was a very good friend. I never got to tell him, but sometimes I felt as though he was a best friend. A proverbial programming demi-god since his toddler years, my very best aspirations were to be half as good a developer as he is.
Let’s call him Hercules:
Hercules created a welcoming environment where I could explore C++ and literally ask him any questions I wanted. Talk about lucking out!
Artificial Intelligence, OpenGL and Game Theory were Hercules’ ideas of a good Friday night. I soaked it all up - osmosis has its place.
Hercules would always ask, “Did you check the MSDN examples?” That was the back-in-the-day speak for, “Did you Google it?”
And if impending doom wasn’t lurking around the corner, he’d say, “Give it five minutes.” Give it five minutes. That meant learn to sleep on problems - a technique I use almost every single day.
For kicks we’d code trivia programs on paper. Or hop on over to the International Obfuscated C Code Contest to checkout the latest entries. C/C++ can be a powerful binding force.
You see, what I learned most from Hercules was less about being a coding BAMF and more about being an effective mentor, teacher and guide. And there isn’t a semi-colon in the world I wouldn’t write to learn those lessons.
Then there were the Twins. I affectionately called them Cerberus:
The title wasn’t as glamorous as Hercules. Naturally, they didn’t care for it. I understood. It’s not like they were guarding anything in particular. Quite the opposite actually.
You see, Cerberus shared their knowledge of C++ and object oriented programming freely, albeit not always openly. Picture this…
What if you met a guy who could code you under the table? I’m talking six feet under the table? Like get ready to pray to whatever God you worship time.
Now clone this guy. Then imbue each clone with the ability to telepathically share code and communicate.
Now your starting to get a clear picture of the coding beast that is Cerberus. Programming Gods? Yes. Productivity Ninjas. OMFGBBQ. Freaks of nature? Absolutely.
Now mind you, I was already a pretty accomplished C++ developer under Hercules’ apprenticeship - way above my peers - before I started pairing with Cerberus on big projects. Yet, the sheer speed with which Cerberus shipped product continues to haunt me ‘til today.
My time with the Twins, bonded by our shared love for C++, taught me so many things I remain grateful for. Cerberus thought me how to break down domains into understandable and digestible models.
They taught me how to find out which code libraries were best and how to realize when it was time for new blood. But, most importantly, my time with Cerberus taught me to ship. And shipping continues to have value beyond measure. Indeed, priceless.
Bit by the Software Engineering Bug
I worked on my first professional grade application with Cerberus:
It was a Flight Management System - aptly code named Krull. Unmanaged and free C++ with an OpenGL and OpenAL core.
A few rough edges, no doubt, but we knocked the socks off our competition. And right then, right there, I saw the inevitable success that comes from combining competent code with an eye for design.
Not everyone will be as lucky as I was. Not everyone will have the chance to be mentored by an Olympian and to pair program with the sons of Echidna and Typhon.
But that’s the whole point, isn’t it?
Fundamentals should prepare you for greatness whether you’re fighting code with the sons of Olympus or simply trying to meet your project deadlines.
C++ is one of those foundations.
Live it. Breathe it. And you’ll be prepared for whatever comes your way.
I mean, what do you think the Ruby interpreter is written in? Or the PHP interpreter for that matter? The roots of iOS? Nginx? This stuff isn’t magic.
Hell, while you’re at it, throw the Node.js V8 engine into the mix. And since we’re talking Google lineage, checkout Chrome Native Client. All the tools many have come to know and love all have a single language at their core. You guessed it - C++.
Should knowledge so crucial to the many, be vested in so little few? Hell No! The first chance you get to learn C++, do it…
But not because I said so.
Do it because you love open source. Do it because you cherish progress. Do it because, like me, you live and breathe this shit!