A career in software produces a handful of truly iconic moments. First, you beam with pride the first time something you wrote works in production. Then, you recoil in horror the first time you bring your team’s project to a screeching halt with a broken build or some sort of obliteration of the day’s source history. And so it goes at the individual level.
But so it also goes at the team or department level, with diluted individual responsibility and higher stakes. Everyone enjoys that first major launch party. And, on the flip side, everyone shudders to recall their first death march. But perhaps no moment produces as many hangdog looks and feelings as the collective, mission critical whiff.
I bet you can picture it. Your group starts charging at an aggressive deadline, convinced you’ll get there. The program or company has its skeptics, and you fall behind schedule, but you resolve to prove them wrong. External stakes run high, but somehow your collective pride trumps even that. At various points during the project, stakeholders offer a reprieve in the form of extensions, but you assure them you get there.
It requires a lot of nights and weekends, and even some all-nighters in the run up to launch. But somehow, you get there. You ship your project with an exhausted feeling of pride.
And then all hell breaks loose.
Major bugs stream in. The technical debt you knew you’d piled up comes due. Customers get irate and laugh sardonically at the new shipment. And, up and down the organizational ladder, people fume. Uh oh.
How do you handle this? What can you learn?
Continue reading Recovering from a Mission Critical Whiff
Over the last few years, I’ve had the occasion to observe lots of software teams. These teams come in all shapes and sizes, as the saying goes. And, not surprisingly, they produce output that covers the entire spectrum of software quality.
It would hardly make headline news to cite team members’ collective skill level and training as a prominent factor in determining quality level. But what else affects it? Does team size? Recently, I found myself pondering this during a bit of downtime ahead of a meeting.
Continue reading The Relationship Between Team Size and Code Quality
Stop me if this sounds familiar. (Well, not literally. I realize that asynchronous publication makes it hard for you to actually stop me as I type. Indulge me the figure of speech.) You work on a codebase for a long time, all the while having the foreboding sense of growing messiness. One day, perhaps when you have a bit of extra time, you download a static analyzer to tell you “how bad.”
Then you have an experience like a holiday-time binge eater getting on a scale on January 1st. As the tool crunches its results, you wince in anticipation. Next, you get the results, get depressed, and then get busy correcting them. Unlike shedding those holiday pounds, you can often fix the most egregious errors in your codebase in a matter of days. So you make those fixes, pat yourself on the back, and forget all about the static analyzer, perhaps letting your trial expire or leaving it to sit on the shelf.
If you’re wondering how I got in your head, consider that I see this pattern in client shops frequently. They regard static analysis as a one time cleanup effort, to be implemented as a small project every now and then. Then, they resolve to carry the learning forward to avoid making similar mistakes. But, in a vacuum, they rarely do.
Continue reading Adding Static Analysis to Your Team’s DNA
When Christmas time arrives, it comes with the need to buy gifts, eat too much food, and attend various gatherings.
All of that comes awkwardly together each year in the form of the company Christmas party. Everyone heads to some local steakhouse for high end food, Bob from accounting having one too many, and some kind of gift exchange. If you’re a dev manager and yours is the sort of organization where managers present their direct reports with Christmas presents, you probably wonder what to get them. Since you know they like techie things, should you get them a Raspberry Pi or something? What if they don’t like Linux? A drone, maybe? One of those Alexa things?
Personally, I’d advise you to do something a little different this year. Instead of a tchotchke or a gift card, give them the gift of trust.
Now, I know what you’re thinking. Not only did I just propose something insanely hokey, but even if you wanted to do it, you can’t exactly put “trust” in a holiday print box and hand it out between speeches and dessert.
Obviously, I don’t mean to suggest that you should just say, “Merry Christmas, I trust you, and isn’t that really the greatest gift of all?” Rather, you should give them a gift that demonstrates you trust them. I’ll explore that a bit further in this post.
Continue reading The Best Christmas Present to Give Your Developers