Reinventing wheels

This opinion has changed twice over the last four years for me, it started out as re-invent wheels, don't use packages, then changed to don't re-invent anything. It's settled to a happy medium, leaning more towards reinvention.

I've realized through mine and other peoples experiences that you are shaped quite a lot by the first person you thought was God-like when it came to programming. A lot of my principles are extensions of my first mentor. I've modified a lot of it to suit me better, but the core of most of my ideas are the same.

There are a few exceptions to the above, the most important one, is the use of dependencies. When I started my first job, people found it strange that I was using vim, and had almost no dependency in my code. The second bit received quite a few backlash. It's not that I was doing it consciously, it's the only way I knew how to do things. It was my first job, and I thought others did in fact know better than me, as they had a lot more experience than me, and it was mostly true. So, I followed that advice. The next few years, in other jobs, I noticed the same trend of not to DIY.

Something felt strange. I asked myself, Whats the point of this? It was boring, and it stunted my growth, I became less of a programmer and more of a library expert. It was always under the guise that, we have deadlines and people don't care about code, they just want products. But I care. Later learned that they are not inversely realted (Htmx btw). In the short term maybe.

This changed at my last job, the guy who wrote the code left and was no longer there. But I respected him, because he helped me enjoy programming again. He put his thoughts down in docs clearly. Before I started writing any code, I made sure to read and understand as much of his thought process through docs. It was one of the best code I'd ever seen professionally. It was not easy, but it was simple. Every line of code had a reason behind it, which forced me to do the same. It was one of the best years of my professional career. Till management changed and started dictating how the API should be designed, and fired some of the best developers I've had a chance to work with. It's the first time I felt burned out, not because of the hours, but work felt meaningless and boring. It wasn't long, before I was fired too.

It was not an easy pill to swallow, but I decided to pursue ideas, paradigms that got me into programming in the first place. It helped to find, [this](https://ericsink.com/entries/depth.html?ref=seagin.me article questioning if deep understanding would still be valuable. Also, I found other people talk about this more in videos and articles. This helped me to not question my sanity.

So I've come back full circle, but I don't completely reinvent the wheel, unless it's out of curiosity. I created a network protocol in C, just for the sake of it, and it was fucking fun. More often that not, I prefer not to use dependencies, I'm lucky that I found Go, the standard stuff is pretty awesome. I have started to really enjoy programming again, I'm happy to sit down at my desk, and write code. It definitly helps if you like what you are doing.

Most importantly, I've realized I am more capable than I think I am. Sure, others might be able to do it better, but the only way to get better is to write shitty code, realize why it's shitty and then write it better. So I intend to reinvent as may wheels as I damn well please.