A Case Against Dependencies

When you need to add a major bit of functionality to your system, what’s the first thing you do? Naturally, you start looking through whatever package repository is appropriate for a solution that fits. While there’s nothing inherently wrong with this, it’s important to think of the trade-offs made by adding external dependencies. Read more on A Case Against Dependencies…

Getting Ready to Break Everything (in 5 Easy Steps)

Every project eventually hits a point where a big change needs to be made, and it’s going to break everything. And you’re going to be the one stuck putting it back together.

Whether it’s a language or tool change that causes your application to no longer compile, a third-party SaaS service change that breaks features throughout your app, or just a big refactoring, eventually you’re going to have to bite off more than you can chew. After having been faced with situations like these many times, I’ve developed a coping strategy. Read more on Getting Ready to Break Everything (in 5 Easy Steps)…

3 Tips for Dealing with Technical Debt

Technical debt occurs when we knowingly or unknowingly make a decision that will require parts of our system to be reworked later. Maybe we write some messy code in the interest of rapid prototyping and iteration, or maybe we avoid updating a library because it introduces changes that will require a lot of refactoring. We could also simply be unaware of the best way to do do something and learn later that our solution has some negative implications. Read more on 3 Tips for Dealing with Technical Debt…

Learn by Linting: Using Linters to Help Learn Programming Languages

I recently started using Exercism to enhance my proficiency with Ruby. It’s an excellent tool for learning a new language or refining your knowledge in a language you already know. The best part about it is that you can submit your solutions for a mentor to review and provide feedback. Read more on Learn by Linting: Using Linters to Help Learn Programming Languages…

Surviving an Infrastructure Upgrade

In any moderately complex application, there comes a time for major upgrades. These upgrades are often deprioritized until some business case knocks on your door to make the update more urgent, which can raise insanity levels and make jumping this hurdle seem insurmountable. After having gone through this process several times on various projects, I wanted to share some of my strategies to deal with such a potentially vicious beast. Read more on Surviving an Infrastructure Upgrade…

Want to Write Clearer Code? Follow the Cooperative Principle

Lately, I’ve noticed a transition in my craft as a software developer. While I once devoted almost all of my mental energy to getting code to run properly, I’m now putting more thought into writing clear and maintainable code. I’ve started to understand that programming languages are not only a way for me to “talk to” computers, but also a way to communicate with others about how a system is meant to work. Read more on Want to Write Clearer Code? Follow the Cooperative Principle…