
Latest
Aug
09

The Coffee Machine: A Series
Why do so many applications become so hard to maintain over time? What causes software to go wrong? How can we recognize when it turns on us? What can we do to bring it back? And, how can Ruby help?
2 min read
Jul
31
Abstraction + Encapsulation: What's the difference?
Abstraction and encapsulation are terms you often hear when learning object-oriented programming. Both are about hiding details. But, what's the difference? What do they really mean?
1 min read
Jul
31
Do not allow_any_instance_of (unless you must)
The RSpec team says not to use `allow_any_instance_of`. So, why did they include it in RSpec in the first place?
2 min read
Jul
31
A Lesson in Courage
We will be successful when we have a style that celebrates a consistent set of values that serve both human
2 min read
Jul
31
Stuck on Where to Begin Refactoring? Start with the 3 Cs of Code Quality
When jewelers talk about the quality of a gemstone, they talk about the three Cs: color, cut, and clarity. Programmers have their own three Cs for measuring software quality: complexity, churn, and coverage.
2 min read
Jul
29
Is DRY the Worst Programming Advice Ever?
DRY (or Don’t Repeat Yourself) was probably the first pearl of programming wisdom you learned when you began to explore software development. But, was it sage advice?
3 min read
Jul
28
Entomology: The Art of Classifying Bugs
Classifying defects correctly helps customers, engineers, and everyone in between.
3 min read
Jul
28

Coming Soon
Hello! And, welcome to The Code Gardener — an occasional newsletter about writing software well. Things will be up and running
Apr
08
Critical Path
A colleague of mine recently asked what I meant by "critical path." I gave her the following example, which she
1 min read
Sep
28
A Garden's for Life
Portia Tung:
And no matter how much we try to hurry the seed along, Nature will run its course. Assigning
1 min read