musings

Random thoughts and writings.

Technical Debt and the Rewrite-In-Place

My group just finished up a massive year-and-a-half-long rewrite of a major project. I've blogged about events during this project several times before, from a stupid bug and a plea for help to reminding my boss that junior developers are awesome to building the ultimate RestSharp client. But, as of two months ago, we're done with it! It's running in production, and 20k people use it every day. So now, it's finally time to discuss the biggest mistake I made... Read more >

All Code Is Disposable, Just As It Should Be

My recent post I Am a 9 to 5 Developer (And So Can You!) is getting WAY more traffic than I expected, and I am both humbled and excited that so many people in our profession seem to feel the same way that I do: namely, that you CAN leave work at work and still be a good developer. So, for everyone that read that post and stuck around to read this one, thank you so much for-a reading my... Read more >

I Am a 9 to 5 Developer (And So Can You!)

I've been thinking quite a bit about a particular tweet from Safia Abdalla: A perhaps unpopular opinion (and a little ironic coming from me).You don’t have to write blog posts, contribute to open source, give technical talks, or anything else to be a capable and great engineer.You can leave your code at the office and that’s totally fine.— Safia Abdalla (@captainsafia) January 13, 2018 This particular position is near and dear to my heart, though... Read more >

8 Things Every New Programmer Should Know

1. It doesn't get easier; you get smarter. Programming is not a simple endeavor. Requirements change in the middle of projects; technology advances quickly and ruthlessly; customers are quick to judge and slow to explain. Programming does not get easier. Rather, we programmers get smarter. The first time you encounter a particular bug, you're a failure until you stumble upon the solution, at which point you promptly become a god. The trick is this: the next time you find that... Read more >

Become Your Teammates' Rubber Duck

You may be familiar with the term rubber duck debugging. This is the idea that in order to help a programmer solve a problem, s/he should explain it to some kind of inanimate object (most commonly a rubber duck), because in the process of explaining the problem they will often solve the problem. I'm finding that the best way to help people with their problems is to become that rubber duck. Though, perhaps, a slightly smaller one. Image is... Read more >

How Much "Magic" Are We Comfortable With?

Our Continuous Integration and Continuous Deployment (CI/CD) build system (that we recently implemented) is truly a joy to behold, but it's also basically magic from my perspective. Check some code in, wait a few minutes, something happens, and then BOOM it's on the dev server. I know that it works, but I don't know exactly how. Should I take the time and effort to find out? I'm a completionist, which means I'm also a naturally inquisitive person. I want... Read more >

"I Don't Trust Anything That We Didn't Build"

The problems started small, as they often do. But as we've seen many times before, lots of small problems in quick succession tend to make one big problem. In this case, the problem got big fast. It started off easy enough: read the big report, find the bug, fix it, the usual. Our bug-tracking team located the source of the issue right away, and my team set about trying to work out the fix. We found the data source that... Read more >