Tuesday, June 19, 2018

leftovers #2: mythical man month --some more thoughts on growing a system or team

The complexity of modern software is driven by three factors – almost all parts are unique (if they share properties, they generally become subroutines), it is often asked to conform to existing institutions, and it is often forced to change by new users or hardware. Considered as a group, these factors suggest no two software projects will be the same. To meet such unpredictable challenges over and over again, a manager must lead with some basic principles in mind.

First is to design the team’s work process in a way to encourage rather than inhibit creativity. A sure approach is to encourage growing a system one component at a time rather than trying to build a complex system in one major push. The key is to always have working code that the team can add to and build on.

A modular approach helps teams grow systems and products. If each section exists independently, the team can isolate maintenance issues so long as they work within the specifications ensuring the front and back end of each module fits into the neighboring pieces of the larger system.

Teams that become used to solving problems will develop an element of hustle. They will chase after lost causes and not be afraid of trying new things. A hustling team moves a little faster than necessary and creates the cushions needed to handle unforeseen events in their work process. When work is defined in small chunks that lead to frequent success, teams will become accustomed to victories and work a little harder in pursuit of the next win.