random musings on software development and management

Parker's Law

I jokingly refer to the following as "Parker's Law":

Regardless of the size of the component being worked on, software engineers may, consciously or unconsciously, expand the complexity of the component until it becomes intellectually interesting, regardless of the component's actual needs.

Good software engineers like to be challenged and like to work on interesting problems. As applications get larger and multiple teams begin working on different parts, each individual user story or task inherently becomes smaller and hopefully simpler.

When faced with small or simple problems, as a result of trying to create a challenging and interesting solution, some engineers tend to over engineer the solution. This appears to be most prevalent in those that are innately curious, yet inexperienced. As a manager, rather than trying to squash this tendency, I've found it best to ensure that these individuals are allowed to work on the more complicated problems, even it if means a senior team member's involvement is necessary to ensure everything stays on track. When they must work on more mundane work, I help them work across teams and projects to better understand how this piece fits into the big picture so they can hopefully better determine the most appropriate level of complexity for the solution. When that opportunity isn't available, I try to clearly set the expectations that the solution should be "boring". Despite best efforts, over engineering still happens. For those cases, a strong culture of refactoring early and often is your best solution.

tags: management