Hey, this is just going to be a ranty reflection I wanted to do for some time now about my programming journey. I’m writing this now because I don’t think that I will have any more drastic changes in my programming journey, well at least not in the next 20 years. Programming is also becoming less and less my livelihood as I attempt to spend more time exploring other crafts. Anyway!
Looking back at my history with programming, I think it’s safe to say that I got somewhat lucky in my education. I started programming at 17 at a polytechnic with 0 clue of whether I liked it or not, and it so happens that I ended up loving programming so much it became an obsession. Now that I’m no longer young, thinking back, that was such an insane bet I had.
I was also lucky to grow up from with an environment of crazy and passionate peers. I recall that my group first project in C had us creating a text based game in terminal. We were given nothing much, but we kept figuring out cool stuff and techniques, openly and eagerly sharing them with others. At the end we had sound, colours, graphics, ascii animation, data driven code, etc. Mind you, some of us like me only started coding in the past 15 weeks before the project. After we graduated, most of us reunited in university after 2 years of National Service, and the cycle continued in our group projects; innovating and sharing and innovating again. I genuinely believe and still believe today that this is beautiful and what programming is really about.
However, we are not in our bubble. This is in the late 2000s so concepts like RAII, OOP, Garbage Collection were seen in a positive light. We started gravitating towards those concepts heavily because hey, we are young and don’t know any better right? Surely the experts and tech evangelists know more? Apparently the industry didn’t seem to either.
I can only account for my own journey, but I like to believe that I went deep into many of those programming concepts and beliefs, and was an advocate of all of them at different points of my life. It’s a whirlwind of conflicting information. It wasn’t until I watched a bit of Casey on Handmade Hero when I realised a lot of these concepts are not grounded in any reality. That’s when I become hyper-fixated on practical and tangible approaches when I program and honestly I think this way of programming has proven to work so much better than all the other approaches I have tried in the past.
On one hand I feel like, damn, what a waste of time investing my time and energy believing that things like OOP is the future of programming. I felt like I have gone into so many goosechases that I feel a bit tired of picking up another CS concept or technology.
On the other hand, I feel lucky to see the light to “escape” chasing geese. This was apparent when I meet up with some of my peers and they repeatedly complain about the same problems that plague the ideas and concepts that was sold to them and they ate it whole sale. Things like how they constantly had to deal with Garbage Collection memory leaks, shared pointers being a complete mess, RAII causing their apps to slow down, and more. And it shows! Look at some of the commericial applications you use at some of my peers are involved in! Lots of things are slow and buggy now, to the point where they even cause production slow-downs and even affect the livihood of others.
The scary part is I see some of my students walking the same path, or beginning to walk a similar path. I’m starting to wonder if it’s some kind of a vicious cycle or something.
I guess at the end of the day, I can’t complain. It’s probably a net positive. If there’s anything to be upset about, it’s that I tried to go deep, but those deep things meant nothing in the end. Going deep in things like OOP and metatemplate programming just sadly did not pay off because those concepts are just not based on reality. The good news is that writing in simple C code is the foundation I can fall back to and build up from again. I can’t imagine what it’s like if my foundation is in OOP, like if my first language was Java…