This first post is going to be a spaghetti of streaming thought so bear with me. It’s not going to cover different data structures and algorithms but rather how I view them. I’m currently at the point in my career where, out of concern of becoming stagnant, I have decided to use my free time to read up on data structures and algorithms. “Boring!” you might say and you know what, parts of it are. On a daily basis I don’t write code with “which algorithm should I use?” in mind. I’m typically faced with a problem and try to come up with a solution that isn’t complete performance garbage. In my efforts to become a better engineer I need to review these topics because as far as I remember from my schooling, they weren’t taught. What else would expect from an art school? Hindsight is 20/20 and I wish I attended a different school. As with most education, I learned more outside the classroom than I did within. Anyways, the main thing I’ve taken an interest in is, “am I implementing code that is efficient and makes sense?” and I think that’s very important for an engineer. Understanding when to use certain data structures to contain information and when it’s best to use a certain algorithm to retrieve information should be in the back of every engineers mind. Preemptive optimization isn’t necessarily a good thing but one concern I have is when an engineer disregards it altogether and never revisits the code. We’re consistently in the position of “just get the feature in” without any consideration towards is it even implemented correctly. We’ll get back to it later is a common saying but we never get back to code until it becomes an issue. I tend to avoid this entirely by simply taking my time when I implement a feature. Does it take more time to get it in? Yes. Does it save us time in the end by not requiring later cleanup? I believe so. Cleanliness, efficiency, and understandably written is my goal for developing code. With that I need to understand data structures and algorithms very well so I implement them correctly and in a manner that another engineer and build off of. Data structures and algorithms weren’t taught to me and I would highly recommend engineers of all experience levels to review them every now and then just to remind themselves of the tools we have to solve problems.