profile

Dan Goslen | The Team-Driven Developer

Learn the tips and tools for building software as a team! Every other week, I send a long-form article, a team-building exercise, and resources to help you build better software teams so you can build better software.

Featured Post

Improve Your Writing with Three Simple Words

Team-Driven Developer A newsletter with tips and tools for building software as a team Imagine reading a technical design document or RFC. As you read, you notice that the language in the document is a bit confusing. For example: Requests likely need to be authorized using standard HTTP auth mechanisms What does this “requirement” mean? Are we using “standard” Authorization headers with base 64 encoded usernames and passwords? I don’t see a mention of HTTPS. And I also don’t know what...

Team-Driven Developer A newsletter with tips and tools for building software as a team A complex system is not the same as a system that delivers advanced functionality. Complexity within software refers to the characteristics of a software system and its ability to change over time. Functionality refers to the capabilities a software system exposes. In my experience, we often overlook this distinction more than we realize. I’ve seen engineers brag about how complex their system was as...

Team-Driven Developer A newsletter with tips and tools for building software as a team 👋 Hi everyone! Sorry for the delay in getting the latest issue out - I've had some unexpected family needs that required a lot of my time and attention, and I wasn't able to get an issue out. Thank you for your patience! Onto the issue. At some point in your career, you’ll be on a project that is running behind. Maybe the scope was bigger than expected. Maybe a few technical risks exploded. Perhaps the...

Team-Driven Developer A newsletter with tips and tools for building software as a team 👋 Welcome to all the new members of the newsletter! Glad you are here. As I’ve shared, I’m a big fan of code reviews and their benefits. Code reviews are an important part of the software lifecycle, both automated and person-to-person. They can help spread knowledge, act as a conduit for mentoring, find bugs before they make it to production, etc. Unfortunately, code reviews also have a tendency to start...

Team-Driven Developer A newsletter with tips and tools for building software as a team Time is one of our most important assets. And the best engineers use this to their advantage. They understand that by being "choosey" with how they spend their time, they can accomplish more than other engineers who might be unfocused or sporadic in how they use their time. One tool I employ frequently to manage my time (and effort) is timeboxing. Timeboxing is about switching how you work. Instead of...

Team-Driven Developer A newsletter with tips and tools for building software as a team Hi! This week's newsletter is a bit different. I've suddenly run into some unfortunate build problems 😭 for the website and will need to share this week's article inline vs. on a separate post. Hoping to resolve these issues and return to normal in a few weeks! Related: I'm taking a vacation, so I'll be skipping the second issue this month. I'll pick back up in April! The other week, I heard an interesting...

Team-Driven Developer A newsletter with tips and tools for building software as a team The first time I hit the proverbial "deploy button" as a software engineer, I was anything but calm. While we were confident in our tests, we always feared, "What if something goes wrong?" or "What if we missed a critical test case?" This first deployment went fine, but over the past decade, I've had my fair share of botched deployments or the need to rollback quickly. It's not a fun place to be in. During...

Team-Driven Developer A newsletter with tips and tools for building software as a team Software engineers are all about principles and patterns. Short acronyms like DRY, YAGNI, KIS, etc., are used everywhere within the industry to try and concisely communicate an axiom of how to write software. One principle that arises within software engineering is that of reusability. We have this idea that we can build software components once and reuse them everywhere. The idea is that by building...

Team-Driven Developer A newsletter with tips and tools for building software as a team A few years ago, my wife and I replaced all the windows in our home. When it came time to install it, I figured it would take the better part of a week (it’s about 22 windows). Instead, the company said, “Oh, it takes about two days.” I was skeptical but guessed they would send a larger crew or something than I had imagined. On installation day, two guys showed up. Two! How were two guys going to replace...

Team-Driven Developer A newsletter with tips and tools for building software as a team 👋 Welcome to the first issue of 2025! And a special welcome to all the new subscribers over the holiday! Let's jump right in. As I’ve encountered more and more problems as a software engineer, I’ve often found myself having one of two knee-jerk reactions when faced with a new problem: 1) too easy 2) impossible. Of course, those reactions are extremes. Most problems lie somewhere in the middle. Additionally,...