I started my working life not in software, but in marketing. I’m a creative person, and I thought that a life of crafting taglines and writing jingles would suit me well. It turned out that the marketing world was far more rote than I had pictured it to be. Surprisingly (or perhaps not) I found that programming — hitherto a hobby for me — was instead providing me with the creative outlet I craved.
So after my first couple of marketing jobs, I found one in Web development. …
I like it when my readers clap for my stories.
And while claps might have some practical value (increasing a story’s visibility and revenue), I believe the real benefit is their feel-good value. They are an easy way for readers to say to writers, “Good job. You have — however briefly — provided me with something entertaining/educational/thought-provoking/etc. Keep it up!”
So sure, I like getting claps.
In turn, I clap for stories that I've enjoyed reading. They’re easy to give, of course; one need only to click on the clappy-hand (👏) icon. Despite what I’d first assumed, clicking on the…
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…
“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…
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…
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…
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…
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…
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…