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…

Seven Practices for Growing Your Code Review Skills

Code reviews are becoming more and more essential to the software development process. The days of cowboy coders building software alone in private offices with no collaboration or oversight are mostly gone. Instead, we’ve realized the value of building things with others who can point out hazards in our blind spots and spur us to think about and justify our decisions. No matter how much experience you may have, there are a few things you can do to develop this valuable skill. Read more on Seven Practices for Growing Your Code Review Skills…

Debugging Strategies You Can Use on Every Project

I’ve wanted to write a post about debugging for a while, but it’s a topic that can be really difficult to discuss in a general way. Approaches to debugging vary wildly and span multiple technologies and domains (hardware vs. software vs. other).

Bugs can also exist on all types of scales—everything from users reporting an issue in your production application, to code failing to compile, to your app crashing when you use it in a certain way. Read more on Debugging Strategies You Can Use on Every Project…

Three Keys to Success with Remote Pair Programming


By now, most people understand the benefit of pair programming. Sharing knowledge (and pain) provides a lot of advantages for both junior and senior developers alike.

I really enjoy pair programming, not only for the learning, but for the social aspect as well. It gives me a chance to get to know my co-workers better: the way they work, the kind of work they like, and even just random common interests we have. I’m a fairly extroverted person, so getting to work with someone to solve problems throughout the day leaves me feeling energized and ready for more. Read more on Three Keys to Success with Remote Pair Programming…

Improve Your Autocomplete Timing with Debouncing

We have an application with an autosuggestion search box that’s driven by a query to our GraphQL server. When the user types in a string, such as “at,” we can query our server for the term our search engine thinks we should suggest—maybe “atomic.”

We wanted this search box to be fast and efficient; what’s the point of an autosuggestion if it takes as long to generate as it does to type? So, we had to be thoughtful about how to power the search box. Here’s how we went about designing it.
Read more on Improve Your Autocomplete Timing with Debouncing…

Mob Programming: How We Stumbled Upon and Learned to Love It

I’ve been reflecting on how my current team is both super-productive and fun to work with. One key element of this is that we recently started to practice mob programming. We did this organically without actually knowing what the practice was, but we have since learned how to apply it in certain situations. The results have been extremely positive.
Read more on Mob Programming: How We Stumbled Upon and Learned to Love It…

Mocking React/Apollo Data Tables for UI Development

Recently, I was tasked with creating a new screen containing a table of data for a project using React and Apollo. In the past, we would typically start by defining the database table, other access layers in between that and a GraphQL query schema, and finally the query on the front end using Apollo. This has been quite tedious, and often, we ended up tweaking the schema many times until we ended up with precisely what the front-end UI needed. Read more on Mocking React/Apollo Data Tables for UI Development…