Practical Wisdom for the Modern Developer: Final Lessons from "The Rules of Programming"

The image shows a wooden Scrabble tile with the word 'WISDOM' written in capital letters, surrounded by a few blue flowers, giving a hint of spring or celebration. The background is blurred and indistinct, but it seems to be a solid color that doesn't compete for attention with the main subject. There are no additional objects or elements in the image. The focus is on the Scrabble tile and the flowers, suggesting a theme of knowledge, insight, or thoughtfulness.

This post is part of an ongoing series on the books that I have read as part of my continual professional development (CPD). All of my CPD posts are available at the following link: Continual Professional Development

In this final post on Chris Zimmerman’s “The Rules of Programming,”, I wanted to share my final key takeaways and how they resonate with the challenges and opportunities faced by technology teams today. I’ve curated a selection of quotes that I find particularly insightful, offering practical guidance for team leaders, decision-makers, and anyone striving to build better software and more sustainable development practices.

As a technology consultant, I’m constantly seeking wisdom from diverse sources, and as I reflect on this series, I honestly believe that this book has proven to be a valuable resource for fostering a more effective and enjoyable developer experience.

Solve the Problem You Understand

One of the most fundamental principles in software development is the importance of clarity. It’s tempting to jump into complex, overarching solutions, but often, the most efficient path lies in focusing on what’s immediately understandable. The following quote highlights that.

More of the time, the specific solution is easier to implement than the general solution. Solve the problem you understand. Don’t try to solve a more general problem until you’ve got enough examples to be confident that the more general problem is worth solving.

- Chris Zimmerman, The Rules of Programming

This resonates deeply with my experience advising teams. Often, the biggest roadblocks aren’t technical complexities, but rather a lack of clarity around the core problem. By breaking down large, ambiguous tasks into smaller, more manageable chunks, we can build confidence and avoid getting bogged down in unnecessary abstraction. This approach not only improves efficiency but also fosters a sense of accomplishment within the team.

đź’ˇ Tip

Don’t take my word for it. In season 8, episode 3 of The Modern .NET Show, Jerry Nixon (Principal Product Manager at Microsoft, focussing on the tooling and Developer Experience around Azure SQL Server) said, “Simple is always the better choice.”

The Power of Readable Code

In the fast-paced world of software development, time is a precious commodity. A significant portion of that time is spent reading and debugging code, rather than writing it. the following quote underscores the importance of writing code that is easy to understand.

Writing code that’s easy to read makes everything else go more smoothly, since we all spend a lot more time reading and debugging code than we spent writing it in the first place. When you’re debugging a bit of code, it’s much easier to figure out what’s going wrong when you have a quick way to understand what it’s trying to accomplish.

- Chris Zimmerman, The Rules of Programming

As a consultant, I frequently observe the impact of code readability on team productivity. When code is clear and concise, developers can quickly grasp the logic, identify potential issues, and collaborate more effectively. Investing in code quality upfront pays dividends in the long run, reducing debugging time and improving overall team morale.

Thoughtful Comments Over Hurried Ones

Comments are an essential part of well-written code, providing context and explaining the “why” behind the “what.” However, in the rush to meet deadlines, it’s easy to neglect this crucial aspect. Zimmerman addresses the pitfalls of inadequate commenting when he says:

Programmers in a hurry write hurried comments, not thoughtful ones. They aim to meet mechanical standards before moving on, which produces comments that are correct but uninformative.

- Chris Zimmerman, The Rules of Programming

I’ve seen countless examples of code riddled with comments that simply restate what the code already does. These “hurried comments” offer little value and can even be misleading. Instead, we should strive to write code that is self-documenting, with clear naming conventions and well-structured logic. Comments should be used sparingly to explain complex decisions or provide additional context.

Names Speak Volumes

Choosing meaningful names for variables, functions, and classes is one of the most effective ways to improve code readability. Good names act as a form of documentation, instantly conveying the purpose of a particular element. Zimmerman highlights the importance of this often-overlooked practice thusly:

Choosing good names for variable is a shortcut to understand their purpose—good names are your first and most important bit of documentation. Comments provide context and explanation—they focus on the big picture, the "why" to the code’s "what". If you’re used to explaining good code or having it explained to you, then reading code written this way feels familiar. Good comments feel like reading a story.

- Chris Zimmerman, The Rules of Programming

I often advise teams to spend extra time considering naming conventions. While it may seem like a small detail, it can have a profound impact on code maintainability and collaboration. When everyone understands the purpose of each element, it becomes much easier to modify and extend the code base.

The Cost-Benefit Analysis of Automation

Automation can be a powerful tool for improving efficiency, but it’s important to approach it strategically. Not every task is worth automating, and sometimes the cost of automation outweighs the potential benefits. This quote provides a pragmatic approach to automation decisions:

If the cost-benefit math for the automation looks like a toss-up, then don’t do it. It’s important to note that doing the math is designed to identify solutions that won’t work, not necessarily to verify that a solution will work.

- Chris Zimmerman, The Rules of Programming

As a consultant, I’ve seen many automation projects fail because the initial cost-benefit analysis was flawed. It’s crucial to consider not only the direct costs of automation but also the indirect costs, such as maintenance and potential errors. Sometimes, a manual task that is relatively inexpensive to perform is more efficient than a complex automation solution that is prone to problems.

Team Sanity as a Soft Goal

It’s easy to focus solely on technical metrics. However, neglecting team well-being can have a detrimental impact on productivity and morale. Zimmerman advocates for considering team sanity as a worthwhile goal:

It’s not unreasonable to consider team sanity as a soft goal. A manual task may not be all that time-consuming, but if it’s a constant irritant and it can be fixed relatively easily, it might be worth doing even if the math doesn’t quite work out. Don’t be afraid to spend a day now and then just to make everyone’s lives more pleasant—especially when the math is a close call anyhow.

- Chris Zimmerman, The Rules of Programming

I often encourage my clients to prioritize team well-being, even if it doesn’t directly translate into increased revenue. A happy and motivated team is a more productive team. Sometimes, investing a small amount of time in improving the developer experience can yield significant returns in the long run.

You might think this quote is at odds with the one above it but, as with everything in software engineering, it’s about balance. Figure out what works for your team and the context of the issue: is it work the long-term maintenance costs if it makes the team’s lives easier?

Sometimes, You Just Need to Get to Work

It’s easy to get caught up in analysis paralysis, endlessly debating the best approach to a problem. However, at some point, it’s necessary to take action and start implementing a solution. Zimmerman reminds us of the importance of pragmatism:

Imagine that you’ve got a big chunk of wood with a hundred nails sticking out of it. They make it impossible to use the chunk of wood for anything else. You could just ignore the nails. You could hope that someone else will hammer the nails for you. You could spend a lot of time tinkering with a nail-hammering machine that might work someday. Or you could take out your hammer and get to work.

Sometimes you just need to hammer the nails.

- Chris Zimmerman, The Rules of Programming

This is a powerful metaphor for the software development process. While careful planning and analysis are important, there comes a time when you need to roll up your sleeves and start building. Don’t let the pursuit of perfection prevent you from delivering value.


Ready to Apply These Principles?

These quotes from “The Rules of Programming” (and those in the other four posts about this book) offer a wealth of wisdom for anyone working in technology. They remind us that simplicity, consistency, and collaboration are essential for building successful software and high-performing teams.

Ready to apply these principles to your team and unlock greater efficiency and developer satisfaction? I offer strategic technology consultation services to help organisations like yours navigate the complexities of modern technology.

We'll never share your name with anyone else.
We'll never share your email with anyone else.
Providing a subject can help us deal with your request sooner.
Please be as specific as possible; it will help us to provide a more specific response.
Un-checking this box will ensure that your data is deleted (in line with our privacy policy after we have dealt with your request. Leaving this box checked will auto enrol you into our email communications, which are used for marketing purposes only.