As luck would have it, I am currently not managing any engineers. This break in management duties provides me with a window to talk about what — I assume — is a very unpopular opinion that I hold.
It involves company hack-a-thons. You know, those two- or three-day stretches that companies set aside to let their engineers work on something they find interesting. Sometimes the engineers have to work on a company-specific project. Sometimes they are free to build whatever they want to. As long as they finish it within a small, arbitrary time slot.
So here’s the thing. I’ve worked at lots of companies that have sponsored their own hack-a-thons. And I’ve participated in many of them. I’ve given up nights and weekends, eschewed sleep, and frantically churned out code, so that I’d have something to demo by the deadline. My co-workers seemed to enjoy these hack-a-thons. Maybe I seemed to enjoy them too. …
“Give a person a fish,” we say, “and you feed them for a day; teach a person to fish and you feed them for a lifetime.”
This adage reminds us that if we want to truly teach someone and make them self-sufficient, we shouldn’t simply hand them exactly what they need. Instead, we should guide them, and ensure that they understand how to do what we’re teaching them to do.
Part of this involves showing them not just what they need to do to achieve a certain task (bait the hook with a cricket) but why they need to do it in the first place (we use crickets as bait because we’re fishing for sunfish). …
One of my favorite scenes in the 1999 classic film Office Space is the one in which the office workers sing Happy Birthday to Lumbergh, their boss. While most fans of that scene love the fact of Milton once again not getting a piece of birthday cake, the gem in the scene for me is simply the bland, joyless way in which the song is sung by the bland, joyless workers.
Because even in the cheeriest of circumstances, Happy Birthday almost always sounds terrible when sung in a group. Which, given that the song ranks among the most commonly-sung in history, can seem a bit odd. …
We all have our own favorite musicians. By and large, we base them on the songs they perform, and the recordings that they produce. But rarely can those musicians claim sole credit for their recordings. Even the most famous and talented musical artists usually enter the recording studio with other musicians, each skilled at their own instrument(s). Together, they collaborate to produce the final recordings.
Sometimes those other musicians are the artist’s regular backup band. …
As we build microservices, there are many concepts we need to understand. We need to know the fundamentals (e.g. database per microservice). We should be aware of different microservice stereotypes (such as BFFs). And we should be fluent in certain design patterns (such as Aggregates).
Observability is another important concept for us engineers to understand. Observability describes the degree to which we can understand how our services are behaving, based on data that we collect from them.
People sometimes use the terms observability and monitoring interchangeably. Strictly speaking, observability describes a characteristic of our system (can we adequately understand our services’ health and behavior?) whereas monitoring describes the activities we take to perform this observation. …
Software engineering interview questions, by and large, suck. How many of us have been presented with questions and challenges that have little in common with what we actually do on the job? I mean, come on. When was the last time anyone actually wrote production code to reverse a linked list, anyway (and on a whiteboard, no less)?
This, of course, begs an important question: what questions should we be asking software engineering candidates? What are the challenges that we can throw at them, that will help us judge whether he or she really can survive and excel as a real-world software engineer? …
When I joined Spotify, I did what most listeners do. I created my first playlist (if I remember correctly, it was called “Dave’s First Playlist”.) The criteria for a song to make it into that playlist was simple: do I like the song?
The problem soon became apparent. I had culled it as a general-purpose playlist, applicable anytime. The problem was, it wasn’t ideally-suited for any one situation. A given song might fit one particular mood I’m in, or activity I’m doing, but be entirely ill-suited for another.
This means different playlists for different situations — what I call topic-oriented playlists. The problem is, once we’re in that situation, it’s too late to cull the perfect playlist. …
Previously, I wrote about the Aggregate, an important but underappreciated microservice design pattern. Often when I introduce this pattern, I hear a common concern: if we adopt an Aggregate-oriented architecture, won’t we be closing the door to searching our data?
The answer is, emphatically, no.
In this article, we’ll recap that Aggregate pattern, show why (on first glance) it might appear that the pattern precludes searching, and then explain why that’s not actually the case.
The Aggregate is an important design pattern when it comes to designing microservices. I’d described this pattern, its benefits, and how to adopt it in a previous article. …
Of all of the features introduced in Java 14, perhaps the one that has generated the most excitement is Records.
Developers have long lamented the need to write and maintain cumbersome, unnecessary code when creating simple Java classes. Records — currently a preview feature — promise to change all of that. Java developers are excited, and rightly so. But are they excited for all the right reasons?
Java has a reputation for being a verbose, bloated language. Perhaps the single most salient reason is that the language forces us to implement methods that the compiler should be able to suss out itself. …
The mission had succeeded with barely a hitch. As the planes returned to Guadalcanal at noon on that April day, the pilots all held a feeling of excitement, even if their radio silence forbade them from expressing it. Captain Thomas G. Lanphier, Jr. finally broke the silence.
“That son of a bitch will not be dictating any peace terms in the White House,” he radioed to the control tower.
The “son of a bitch” was Admiral Isokoru Yamamoto, the commander-in-chief of the Japanese Combined Fleet, the mastermind behind the Japanese attack on Pearl Harbor sixteen months prior and, consequently, one of the men most hated in America. …