Much has been written about the technical challenges of rewrites. In one of his most famous pieces, Joel Spolsky argued that rewrites are almost never a good idea. On the surface, it seems illogical to spend a lot of time and money duplicating code that’s already working, and in a lot of cases, it doesn’t […]
Refactoring isn’t just about optimization or replacing some ugly code with something more elegant. It’s also a chance to keep things organized and consistent, which: Helps new team members understand things better. Helps everyone contribute faster because they don’t have to consider competing patterns or conventions.
Active Record is a popular Object Relational Mapping system (ORM) that many web developers find themselves using at some point or another. A lot has been said about the benefits and drawbacks of ORMs in general, and Active Record shares all of them. Regardless of how you feel about it, using Active Record will be […]
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 […]
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 […]
There are lots of ways to improve as a developer quickly—keeping track of what’s going on in the industry, reading books, maintaining outside projects, and watching talks are some of the obvious ones. But there are a few habits you can adopt in your day-to-day work that will slowly improve a different set of skills […]
Git has some popular features that make it easy to rewrite the commit history, and in some cases, this is a benefit. However, these features can be unnecessarily confusing, and if used incorrectly, they can cause data loss.
Pair programming has become popular as companies embrace the Agile approach, and everyone’s full of anecdotes and opinions about whether or not it works. But regardless of the efficacy of the practice in general, there are a few things we can all do to become better at pairing.
Lots of developers have side projects, but if you ask about them, they’ll probably say, “I’ve got a bunch of ideas and a few things in progress, but nothing I’ve finished.” It seems to be a common theme. Lots of interesting problems and big ideas, but not enough follow-through. A lot has been written about […]
Ruby makes it easy to extend its built-in classes, which can be very convenient and lead to more readable code—but it can also be dangerous. This practice, known as “monkey patching,” is common in the Ruby world, and since Ruby 2, it’s been possible to mitigate some of the risks using refinements.