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

What's the Point of Pull Requests?

Team-Driven Developer A newsletter with tips and tools for building software as a team We've recently started a group at Webflow to enhance our existing code review process.And it made me think of an older article I wrote all about the point of pull requests. In a nutshell, pull requests aren't the same as a code review, but they are a common channel to help code reviews run smoothly. I rewrote and added some parts of the article based on the discussions we were having as a group, and wanted...

Team-Driven Developer A newsletter with tips and tools for building software as a team If you’ve ever joined a new team, tackled a legacy codebase, or stepped into an unfamiliar domain, the feeling can be overwhelming. There’s too much to know—and not enough time to learn it all. That’s why I use a model I call traversing the knowledge graph. It helps me orient quickly, pull in the most relevant context, and start contributing with confidence. In this post, I’ll describe: How I think and...

Team-Driven Developer A newsletter with tips and tools for building software as a team You’re staring at your editor. The code should work, but you’ve been fighting an error for a full day. You can’t figure out the problem no matter what you try. Or you’ve been staring at an empty file, wondering what code to write. You’ve got a vague Jira ticket, a lack of context, and a codebase that is difficult to understand. You’re blocked. Now, what do you do? It’s tempting—easy, even—to ping someone...

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...