Write the Test First

More on Test-Driven Development

One of the most valuable development practice that has become popular recently is test-driven development. When done correctly, unit tests can dramatically drop the cost of maintaining software while increasing its value. All the things that management wants and needs from the processes that are built around software development are embodied in this simple practice …

Read More
Refactor Legacy Code

Code Transformations

A lot of poor designs can be attributed to sticking with an existing design as changing requirements show us the need for a better one. Oftentimes, an initial design is just a stab in the dark. We might not know enough to make an informed decision but we have to get something done, so we …

Read More
Say What, Why, and for Whom Before How

Work Through Examples

One of the biggest challenges in building software is specifying what needs to be built. A blueprint captures all of the valuable information we need in order to build a building and details such as the tensile strength of the material and how to build a foundation are available through other sources. Blueprints have no …

Read More
Bits and Pieces

Making Code Testable

I believe that testability is one of the key characteristics of good, maintainable software. But what do I mean by testability? Testable code is code that’s written in such a way that it is independently verifiable. It has a well-defined programmatic interface and it can be fully tested based on that interface. Testable code receives …

Read More
Bits and Pieces

Complex Systems

When I look at the systems around me I noticed three kinds. There are simple systems, there are complex systems, and there are complex adaptive systems. Most of us are familiar with simple systems. They have a direct cause and effect relationship that can be easily traced. Other systems are less direct. Complex systems are …

Read More