Articles

Software engineering lessons from production, raw and honest from the heart โ€” almost 20 years of them. Jump to a year in the sidebar, or browse categories and curated collections.

August 2023

Finding modules in a Big Ball of Mud with ChatGPT

Detangling a Big Ball of Mud is hard. You have to find domain boundaries where none exist. Looks like AI can help ๐Ÿคฉ

Followup answers to Forget complicated code, focus on the system

Why are utility files bad? How do you recognize architectural complexity? What the hell is a transitive dependency?

Forget complicated code, focus on the system

Clean code matters, but it's the architectural complexity that truly impacts your productivity and bug count. Focus on simplifying the system, not just the code.

Programming in Markdown

What if you could focus on the fun _engineering_ part of your job, not on coding? You can!

July 2023

The Wally Reflector

Unleash the power of 'The Wally Reflector' to manage the influx of 'quick requests' and empower your team.

What I learned from Team Topologies

You can't escape Conway's Law. Might as well use it for good.

Working with product

A strong partnership with product is key to an enjoyable engineering life

Different worlds

Different lenses, different worlds. Your perspective is shaped by your experiences. Even in debates, all sides can be right in their own context.

You can't stop the business, or why rewrites fail

Rewriting code isn't a magic fix-all. Consider the opportunity cost, complexity of the old system, and estimation challenges. Instead of stopping all to rewrite or building new while maintaining the old, try incremental improvements and new code adoption.

Update state during render, better explained

A few readers wrote in to say that the React Can Update State During Render email last week made no sense. Here's a better explanation.

June 2023

React can update state during render

An unexpected feature of React: updating state during render. It's a UX and performance optimization

Clarification on how ownership makes careers

Aa few readers wrote in with questions and objections to last week's Ownership makes careers email. Here's a few clarifications.

Ownership makes careers

Own shit. At least put your name on things. Yes, before it's successful.

When to throw away your code

Delete code when it stops providing value ๐Ÿ’ก All code is a liability; context matters. Keep what solves problems, toss the rest.

JavaScript games and Wonderful tools

Discover the magic of HTML5 game development with Game Dev JS Weekly and level up your productivity by eliminating daily frictions with Wonder Tools

What does "solve problems" even mean

Focus on solving problems, not just doing work or writing code. Think creatively, question existing processes, and prioritize effective outcomes

Why taming architectural complexity is paramount

Unravel the hidden costs of architectural complexity in software engineering and learn practical strategies to tackle it. Boost productivity, reduce defects, and improve staff retention with insights from an MIT PhD thesis.

Effective standups

The secret to effective standups that don't suck

May 2023

How one sentence guides your career

Unlock the secret to guiding your career with a powerful positioning statement. Learn to stand out in the job market and attract opportunities that align with your expertise and values.

What you can expect from the Senior Mindset Retreat

Unlock your true potential at the Senior Mindset Retreat! ๐Ÿš€ Develop crucial soft skills for career growth and become the leader the tech world needs. It's not just about coding, it's about teamwork, ownership, and making an impact.

Two types of complexity and their impact

Complicated code slows down junior devs, while complex systems impact senior devs more. Focus on managing system complexity & dependencies, not just simplifying code.

How positioning makes you stand out from the crowd

Stand out in the job market with a strong positioning statement! Focus on the value you bring to organizations, not just tech skills. Be specific about what you do, for whom, and how.

Why a tech meltdown is the best time to invest in your career

Invest in your career growth. Seize the moment to develop new skills and prepare for a brighter future

How I turned 15 years of writing into a chatbot

What do you do with 15 years of your writing history when LLMs hit the scene? A chatbot!

Your manager can be a peer

This collaborative approach enhances both people and technical aspects of a team, leading to a more efficient work environment.

You can't fix the wrong abstraction

Unlock the secrets to combating architectural complexity in software development and learn to identify and fix the wrong abstraction. Boost productivity, reduce bugs, and retain more staff.

Eight things to know about LLMs

eightthings.pdf is the best paper I've read on what's going on in AI right now and why everyone is excited. Here's my summary.

Hug your manager

Behind every thriving team is a dedicated manager who shields them from corporate chaos, sacrificing their own well-being for the team's success.

April 2023

A backend service nobody can grok

a little case study from an upcoming book I'm writing with Manning about software rewrites

Own the outcome, not the work

Efficient problem-solving in engineering with a shift in perspective โ€“ focusing on user outcomes can lead to innovative solutions and change your approach to system design.