WIBWO 9: Software Design

Feb 17th, 2020

As I move further along in my career I have noticed that learning different languages, technologies, frameworks or what have you will only get you so far. For one, I'm not the type of person who finds joy in doing that. I have noticed I'd rather find one of those things that speaks to me, and then go deep into it. It may have been a coincidence that I started with PHP as my back-end language, but I haven't felt it necessary to do too much exploration after that. I dabbled in node and python, but I liked the comfort of PHP and I didn't want to relearn how they did things and waste time. They weren't solving a different problem that I couldn't currently solve, they were just a different flavor.

The point is that when you are frequently jumping from framework to library to language all over the place, you aren't really doing much of anything at all. Sure you may be able to add another item to your list of technologies on your resume, but so what? It's superficial knowledge. Even if that is something you like to do, you should have a language or framework as your go-to where you can learn on a deeper level without it getting in the way of that.

The things that are important to know and bring with you in your career are agnostic to any language or framework. They all abide by patterns and principles. You won't even recognize their existence until you learn them yourself. Over time the most desirable language will change, but the foundations of good software will most likely not, at least within the span of a career.

Anyway, as I get further along in my career, the straight-forwardness of completing the next task/bug are becoming a smaller part of my job. I'm taking more responsibility for seeing the bigger picture and making sure the system is well designed. Because of this, I have been devouring everything I can find when it comes to learning about system design and architecture, object-oriented design and programming, design patterns, etc.

Imgur

The hardest part about learning this stuff is that I'm pretty sure the best way to do that is having a work mentor that knows it well, and I don't have that. I'm not sure what the next best option is, but I am bordering on desperate to find that. I have read Clean Code, The Pragmatic Programmer, and Practical Object-Oriented Design in Ruby by Sandi Metz and am currently on the gang of four book, Design Patterns.

I am exposing myself constantly to these ideas and practicing them as much as possible, which is one very important part of learning well. The part I'm missing is quickly recognizing and learning from failure, or saving time by catching a flag for future failure early, which is really where a mentor comes in. I could be solving a problem with the wrong design pattern and not realize I'm doing it until way down the line when the requirements change and I've boxed myself in. Meanwhile, the person with the mentor had their error recognized immediately and explained--that's a huge advantage.

I haven't done a WIBWO post in a while, but that's pretty much been my main focus for that stretch of time. I was eager to create a site to host video courses, but I may have to acknowledge failure and kill that series of blog posts. Unfortunately, there doesn't seem to be a great option for hosting videos that doesn't cost less money than I'm comfortable paying. I'm not ready to back the project financially because it feels too risky. I'll stick to cheaper to maintain projects instead, and I'll be working on some ideas! I'll do my best to blog about those things as they come along. I've been doing a poor job of blogging regularly like I was before, but that's because I'm just a scaredy cat who doesn't want to acknowledge failure. I'll try to be more consistent since I've been getting more readers here than I expected to be honest. I appreciate anyone who reads this, knowing someone sees it is what motivates me to keep going.

 

Did you enjoy this article? Did you hate it? Email me at cwinter.web@gmail.com! The more feedback I get, the better job I can do writing helpful articles--and that is important to me. Thanks for reading!