The Helpful Developer
Over the past few years, we have been so focused on worrying about the future of our own profession that most of us have failed to notice the most important thing that’s about to happen: Everybody...
View ArticleWhat is an Engineer?
As I write this, it’s the start of 2026 and many people are in a crisis about what their job is. “If AI writes all the code, am I still an engineer?” “Will the world still need software engineers?”...
View ArticleHow to Build a Great Platform
In the field of software engineering, we often talk about using or building a “platform.” Let’s talk about what that really means and the principles for how to build a great platform. What is a...
View ArticleWhat Makes a Great Developer Experience?
I’ve been working for over 20 years in the field of “developer experience,” where we help developers be more effective, efficient, and happy, by improving tools, systems, and processes. I have been...
View ArticleAn Analogy for Software Development
Sometimes, I have to explain software development to people who are not software developers. Over the years, I have come up with an analogy that explains what software development is like and its...
View ArticleCode Simplicity: The Fundamentals of Software is Now Free
About a year ago, a Twitter user tagged me and some other programming authors in a thread where they described the barriers to accessing computer programming books in their country. I’ve been made...
View ArticleWhat is a Monorepo, Really?
There are often discussions at software companies about whether they should or shouldn’t have a “monorepo,” meaning “a single, version-controlled repository for all code at the company.” Very often,...
View ArticleReasoning and Choice
One of the most important properties about any software system is the ability to understand what it is going to do without having to run it. This concept is usually referred to as the ability to...
View ArticleThe Definition of Simplicity
Many years ago, I wrote a blog post explaining what was wrong with computers, and essentially saying the problem was complexity. Several years after that, I published Code Simplicity, which was...
View ArticleFires vs. Strategy
There’s a point that I’ve been making to engineers recently that I realized would be valuable if shared more widely. When you do engineering work, there are different types of tasks that get given to...
View ArticleHow to Learn to Program
One question that people ask me all the time is, “How do I become a programmer?” Or, “How do I learn to program?” There are a lot of possible answers to this, depending on the person and how you want...
View ArticleHow to be a Great Programmer: Awareness, Understanding, and Responsibility
There are three key factors to being or becoming a great programmer: awareness, understanding, and responsibility. I’ve talked a lot about the subject of understanding. Heck, I even named my most...
View ArticleUnderstanding Software
Hey everybody. I’ve published a new book! It’s called Understanding Software. The book contains all of the content that I’ve written on software development and working in teams since the publication...
View ArticleKindness and Code
It is very easy to think of software development as being an entirely technical activity, where humans don’t really matter and everything is about the computer. However, the opposite is actually true....
View ArticleThe Fundamental Philosophy of Debugging
Sometimes people have a very hard time debugging. Mostly, these are people who believe that in order to debug a system, you have to think about it instead of looking at it. Let me give you an example...
View ArticleRefactoring is About Features
There’s a point that I made in the book but which I have had to point out to people a few times since then, and so I wanted to emphasize it a bit more. When you clean up code, you are always doing it...
View ArticleEffective Engineering Productivity
Often, people who work on engineering productivity either come into conflict with the developers they are attempting to help, or spend a long time working on some project that ends up not mattering...
View ArticleMeasuring Developer Productivity
Almost as long as I have been working to make the lives of software engineers better, people have been asking me how to measure developer productivity. How do we tell where there are productivity...
View ArticleTwo is Too Many
There is a key rule that I personally operate by when I’m doing incremental development and design, which I call “two is too many.” It’s how I implement the “be only as generic as you need to be” rule...
View ArticleHow to Handle Code Complexity in a Software Company
Here’s an obvious statement that has some subtle consequences: Only an individual programmer can resolve code complexity. That is, resolving code complexity requires the attention of an individual...
View Article