What Makes a Great Developer Experience?

April 15, 2025
4
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 intimately involved in designing key aspects of the developer experience at Google and LinkedIn, have been very involved with the research community in this space, and I’m constantly…
A set of robots read a book and build a car together.

An Analogy for Software Development

March 7, 2025
1
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 processes. I have successfully used it to explain software development to a 9-year-old kid, including advanced concepts like cybersecurity and so forth. I figure others might benefit…

Code Simplicity: The Fundamentals of Software is Now Free

May 16, 2022
7
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 distantly aware of these problems before—there are many countries in the world where the cost of a book in USD could be a person’s entire weekly salary.…
monolith on the beach

What is a Monorepo, Really?

March 11, 2022
I have now worked in developer productivity organizations at a company with a very advanced mono-repo (Google) and a company with a very advanced multi-repo system (LinkedIn), and I have to tell you: most of the valuable properties that people associate with a mono-repo have nothing to do with how many source control repositories you have. In fact, what people…
Reasoning and Choice

Reasoning and Choice

August 7, 2020
3
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 “reason about the system.” Basically, you want to make statements about the structures, actions, and results of the system without having to see them…

The Definition of Simplicity

May 19, 2020
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 essentially a thesis describing how and why simplicity was the most important quality of software. Many years after that, I was sitting in a room of some of the…

Fires vs. Strategy

March 15, 2020
3
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 you. Some tasks are emergencies or short-term work. We sometimes call this “putting out fires,” especially when the work relates to handling something that is…

How to Learn to Program

October 9, 2018
3
One question that people ask me all the time is, “How do I become a programmer?” Or, “How do I learn to program?”…

How to be a Great Programmer: Awareness, Understanding, and Responsibility

December 20, 2017
9
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 recent book Understanding Software. In particular, I’ve pointed out many times that the better you understand something, the better you will do it. However, there are two other factors…

Understanding Software

October 10, 2017
3
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 of Code Simplicity, plus some entirely new content that’s never been published anywhere. In fact, it contains one of my favorite essays that I ever wrote from back in…
1 2 3 9
Go toTop