By Zed A. Shaw

I Preserve the Old Ways...I Guess?

I've been streaming C++ game dev a lot lately, working on a fun Roguelike game and a old school Raycaster game. My concept for the roguelike is to use text characters for the game's sprites, but to not be limited by the usual terminal output style. That means I have sounds, music, layered elements, and many other things you can't do with a terminal. The project has been an amazing learning experience. I'm learning so much about C++ and game development with these little projects.

While I'm doing this I get comments and questions like this:

"I can't believe you're doing this with just Vim."
To me it seems like IDE companies have done an excellent job of convincing programmers that there's only insanely overtooled IDE's or ed. It never occurs to people that editors like Vim and Emacs are in many ways far more powerful than any IDE, but they don't see lots of places to click a mouse and just assume Vim is dumb.
"Wouldn't using Visual Studio make this easier?"
This is different from the IDE comment because people suggesting this are thinking about beginners taking my courses, and thinking that a more powerful editor is the same as an easy to use editor. My answer to this is more complex than this little blurb, but it generally boils down to a mixture of accessibility and thinking about someone's future. If you can code without Visual Studio you can work on any language and any platform you want. If you can only code with Visual Studio then you're stuck on Microsoft's platforms and will have huge problems using any new or interesting language.
"See? If you used an IDE it'd yell at you every time you made a mistake."
This usually comes up when I'm doing some refactoring, but also people are watching me make simple mistakes like typos. What they think will help is the second I make any typos the editor SCREAMS AT ME "HEY YOU MADE A MISTAKE HAHAHAHAHAHAHA YOU SUCK" by drawing red squiggles under the error. To me this is a massive flow breaker and creativity stomper. It's like someone coming over to my canvas while I'm painting and constantly yelling, "THAT's WRONG!" I'd rather just type, get my thoughts out, then fix it up with the compiler that does the exact same thing but more accurately.
"You know there's a Language Server Protocol for Vim right?"
This is similar to the red squiggles enjoyer, but it's more people who think having a CTRL-SPACE lookup system would help me find stuff. I tend to just write my code so that I know where everything is, keep it small, and name things in a way that matches how I'm coding. Avoiding intellisense style input systems also forces me to actually really learn where things are and what they're named. This in turn forces me to keep things organized in a way that makes sense, rather than...intellisense.

A common theme in all of these queries is a desire to make programming easier with tools, which I can't actually fault. At some point we're all using tools to make the job easier. I use a compiler to produce machine code for my computer. I use an Operating System to run that computer. Would it make me more hardcore to manually code my own OS with dip switches on a front panel with only LEDs to guide me? No, I'd be an idiot in 2024, but in 1977 if I'd just bought a Newbear 77-68 that would be fun.

As these tools get stronger the distance between what I do and what everyone else does grows. Right now people are using LLMs to generate their code. In 10 years those people will be asking Microsoft Visual Studio users, "Bro, why are you...typing your code? Don't you know Code Gen 20k exists?" Those same people will be looking at what I do like I'm a renaissance oil painter.

Of Paintings and Photos

I really like to paint and draw. I like oil painting the most, but pastels are a very close second. Why bother painting if I can just take a photo? Photographs are more accurate, easier to create, transmit, share, and edit. Probably the only hard thing with photographs today is actually getting them printed. I'm pretty sure I could do a 9x12 painting before someone could get a 9x12 print of their photos, but that doesn't make paintings easier. Not by a long wide margin.

Why paint then? Because the act of painting is enjoyable. Painting is proof that humans still enjoy the act of creating things even if there's an easier alternative. People still love to cook even if they can get food magically delivered to their house with their phone. People still enjoy writing even though an AI can generate whole books for them with a few clicks. No matter how good technology gets, humans will still enjoy doing the same things less efficiently because efficiency is not the point.

Even with photography people don't just snap a photo and that's it. Before Photoshop photographers would spend countless hours in the dark room dodging and burning prints to get them just right. I've done manual photo development and it's awesome, but even with digital photos photographers will spend weeks editing and perfecting an image. Photographers still enjoy a personally involved process with their art.

I think it's that phrase--"a personally involved process"--that's key. It's not that these enjoyable creative experiences are slower. I've watched people grab their mouse 1000 times while they use Visual Studio and wonder how they can possibly use something so slow all day long. I'm sure though there's VSC wizards out there that bang out solutions in no time, but for me Visual Studio and other IDEs remove the personally involved process I enjoy. Other people find my processes annoying, so for them it's a win to remove the annoyances. For me the "convenience" is just killing my experience.

Out of Necessity

For the first 15-20 or so years of my programming career there really wasn't an internet to rely on when I needed help. I had man pages, the code other people wrote, books, and lots of offline resources, but mostly I had to figure everything out myself. If something didn't work then I'd have to debug it and solve the problem on my own. Maybe I could ask for help in #irc but the people on IRC servers were mostly there to inflate their egos by demonstrating their vast memorized knowledge rather than help people. It was either figure it out myself or give up, and so I simply got better at figuring things out myself.

There also weren't any magic LSP systems, but that didn't mean text editors sucked. Editors like Emacs and Vim were great and could do tons of things for you, but they took time to learn. Once you did learn them they were (are) powerful as hell, and more importantly, these editors are the exact same powerful on every language. Vim and Emacs were born in two different worlds to solve the same problem of "editing text smartly," while today's editors are more solving the problem of "evolving software smartly." This forced all the programmer's of my generation to write our software to be easy to understand because we simply didn't have tools to help us if we didn't.

If you ever want to experience how bad code analysis tools were just try to use the old school ctags. I mean it's hosted on Sourceforge so you know it's hot garbage (or potentially rock solid (or both)). I'm serious, try to use it for a day in the terminal to see how bad something as simple as "where's this function" truly was. Out of necessity we were forced to put things in logical places and name things really well. We had to be very consistent and organized or be forced to suffer though the hell that is ctags.

The other aspect of this way to work is that I was forced to understand the code I write. I had to remember where things were, what they did, and if I couldn't then I changed it so I could.

The "Old Ways" Scam

You may sense a reluctance when I tell you that I'm preserving the old traditions and that's because this phrasing is typically used to trick people into believing stupid things. Someone will proclaim that software is on its last leg! Why back in my day, we could get a game like Doom on a floppy disk and it was awesome! None of this trash Call of Duty 100GB bullshit. ONE HUNDRED GIGABYTES! What are they doing to our poor computers?!

The thing is, Call of Duty is rendering a fully realistic simulation of potentially hundreds of people running around shooting at people in full 4k resolution. 100GB of data is chump change compared to the amount of information it's rendering to your screen. To put this into perspective, if I record a video that's only 30 minutes long then render it in a raw format like Grass Valley HQX that 30 minute video of me typing will take almost 50GB of data. Not only that, but my coding video is mostly static text in 1080p. It's not even close to as detailed and variable as an equivalent 30 minutes of CoD gameplay.

Sure, Doom was pretty awesome for the time, and that style is definitely coming back. Doom had style and that's what made it awesome. But don't for a second think that Doom was doing more with less. Compared to Call of Duty or even Fallout 4 from years ago, Doom was doing less with less.

You find this weird hearkening to the good old days in almost every authoritarian propaganda ever. The Glorious Leader peddles this fantasy that life was so much better before but all of their claims are based on a fantasy. If you know your history you know that things were not better for everyone in the past, and in many ways this call to arms and a return to the old ways is almost always a thinly veiled way to convince you it's alright to attack a certain group of people. "They're the ones holding us back from the glory of the old ways. Get 'em!"

That's why I'm reluctant to say I preserve the old ways of writing code. I'm not trying to do it this way or trying to glorify this way of programming like it's the one true way. It's just how I do things, and it seems to work for me. I don't think the way I code is the best for everyone. I do think coding without much help will train your brain better because of the simple fact that it forces you to actually think and remember what you need to know, but after you feel confident and skilled then do what.ever.the.fuck.you.want.

I'm reminded of this story about Rob Zombie when More Human than Human came out. Someone commented that he used 64 tracks on the song but Black Sabbath only used 4 tracks on all of their songs. Rob replied with,

"Yep, sounds like it."

More Than Just a Job

I think a big part of these thoughts is this question I've been contemplating that's rarely asked of programmers, but frequently asked of other creative disciplines:

"Who are you as a programmer?"

This question seems weird because I'm not asking you who you are. I'm asking you who are you when you code? This is a fundamental shift because it will set your style, way of expressing yourself, and gives you freedom to be yourself in your expression. You as a person could be almost anything, but then sit down and write code and be completely different in your style. Or the same. It really should be up to you, and you should be allowed to decide to be different one day.

Some of you read that paragraph and immediately cringe though. To you the idea that a fellow programmer would dare to be different is the worst thing ever. Everyone must follow Google's C++ programming styles and only use React. Everyone must keep HTTP exactly the way it was defined decades ago by our lord and savior Roy T. Fielding. Express yourself? Who are you? A commie?!

The question I have for those of you with this reaction is very simple: "Who benefits if you code like Google?" You don't really benefit. You have to follow some unnatural rules created by a third party who doesn't even follow their own guidelines half the time. The only people who benefit from your lack of self-expression is every company that can easily integrate your code. Coding like Google just helps Google, and that's why so many universities and so many pundits and so many companies actively try to shame you for being yourself. If your code is bland and corporate then it's easier for them to steal it. It's easier for you to be replaced.

Of course if you actually work at Google then by all means, don't be an asshole. Code is communication after all and you want to be polite to your fellow workers. But your personal projects are not paid for by Google. If you're coding to appease a company then you're denying yourself a key component of your right to free expression.

This is the final aspect of "The Old Ways" most younger programmers don't understand. I and many of my peers didn't get into programming because it was a job. I got into programming because it was fun and challenging. It was awesome to stay up all night banging my head on some terrible code I wrote just to make a donkey move across the screen. It was fun to get a terrible website up and running for the first time. It was fun to think of a weird idea and make it a virtual reality.

I definitely didn't get into programming so some manager at Google will approve my 13th commit to alter the border thickness on the cornflower blue button in the upper left corner of the internal bug tracking tool nobody uses.


More from Learn Code the Hard Way

I Preserve the Old Ways...I Guess?

I've realized that I seem to be preserving the old way to code, and I don't know how to feel about that.

OpinionPublished Jan 27, 2025

Rogue is the Best Project

My pitch for Rogue being the best for both beginners and old crusty coders like me.

TechnologyPublished Dec 1, 2024

Very Deep Not Boring Beginner Projects

A list of projects that anyone with basic programming knowledge can do in any language, but have a lot of depth and aren't boring to do.

OpinionPublished Oct 1, 2024

C++ Is An Absolute Blast

Where I try to explain why I feel like C\+\+ is so much fun, and to correct some misinformation.

TechnologyPublished Oct 1, 2024