I remember a funny story from the days after graduating from college, full of inspiration and ambition, but little money to call my own. Finding loose change to put gas in the car was something in the back of my mind all the time. My friend had just landed a staff position at Microsoft making a real salary. His department was promoting Visual Basic as an alternative to “real” programming languages.
His major point was that memory allocation was, and still is, a task that should not be messed with by software developers. And to learn anything on the C family of programming languages was for “crazy people”. That idea got stuck in my mind ever since. I got a job, was fired, moved, got other jobs, changed careers, got other jobs, got married, moved again, and that idea kept coming back to me.
As I advance in my software engineering path, space in memory is not such a precious resource as it used to be. But nevertheless, every time you create a variable, it needs to be allocated in memory to be accessible in your program. And someone had to figure out how the memory is going to be organized so your program can run.
I am a firm believer that to jump to the next level in understanding of software engineering, one must understand inner workings of its tools. We came to a point in our society that is perfectly fine to never have to open the hood of your car to drive to work everyday. Hell, car manufacturers now hide everything behind plastic covers that have no functionality whatsoever other than make the engine compartment look clean and organized. But keeping ourselves at bay do not make us constructors of better cars, it just keep us as consumers of pre-fab automobiles.
And it is weird to talk about cars, which are on the top spot of most consumers wishlists. I am not advocating that we should build our own cars. But as a software developer, I am in the business of creating new things. If you don’t know your tools work, you are limiting yourself and your growth as a programmer.
And second, was it worth it? Should I have spent my time learning a hot new framework instead? It is not super useful, I am not planning a C development spree anytime soon creating hot new apps. I had to explain that to my wife, and it was hard to articulate it at first. “C is like Latin,” I mumbled. The real answer, as in everything in life, is “it depends.” In perspective, when I think of C to myself , my conclusion is “Hum, now I know it.” And that feeling is something you can’t put a price tag on it.