When I travel outside of town, I always bring my camera, mainly using focal lengths of 52.5mm and 135mm. Half a year ago, I bought the Sigma 18-50mm F2.8. I was unsure about taking photos with a 28mm equivalent focal length. I decided to add an enabling constraint to my recent journey – using only the 18mm side of the lens (equivalent to 27mm).

As a result, all of my photos in Fukuoka and Oita were taken at the 18mm side. During the 8-day journey, I attempted to use the 50mm side twice, but I only treated it as a telescope. I became confident and can take creative shots using this focal length.

That’s my story of how enabling constraints improve our work.

Not quite bad, isn't it?

Enabling constraints are a set of rules that limit our actions. They stimulate our creativity and lead us to explore different ways to solve the problem.

During my early days as a software developer, I felt bored with a development task and challenged myself to work on it without using an IF statement. Later on, I pushed the codebase without a single IF statement. It contained various approaches like Conditional Operators, Maps, Strategy Patterns, etc.. These “innovative” approaches still inspire my colleagues nowadays and influence their implementation.

In the big Agile product development family, plenty of frameworks, methodologies and practices share the same characteristic – having enabling constraints installed.

Sprint Length limits the number of days spent from planning to review. It forces the product team to reduce the scope. It also creates a cadence that the team can regularly inspect and adapt to the product and the development efficiency.

WIP Limit restricts the number of active work items in the Kanban. It prevents the team from excessively putting the work items into the Kanban but never completing them. Having fewer tasks on the table means the team can focus on a single task. WIP Limit reduces the context switch and improves the efficiency.

Test-driven Development (TDD) enforces writing test code before we write the production code. It reduces waste as the production code should be written just enough to cover the tests written beforehand. The Red-Green-Refactor cycle eventually builds a comprehensive set of automated tests, reducing the need for back-and-forth manual regression tests.

Most enabling constraints might look troublesome at first glance. Once you grasp their purpose, you will truly appreciate how they enhance your growth and elevate the quality of your work.