Gregorian | 2024-09-17 |
Khayyamian | 976/06/27 |
Shamsi | 1403/06/27 |
Believing programmers to be primarily self-managing, we have come to value:
Flat organizations over hierarchical ones
Decentralized decision-making over centralized control
Equity and/or profit sharing over salary or hourly pay
Choice and self-direction over standardization and central planning
A marketplace of ideas over forced consistency
Voluntary and free collaboration over assigned interactions
Persuasion and natural authority over compulsion and formal positions
Roles and responsibilities over assigned tasks
Direct customer interaction over product organizations
Transparency of corporate information over permission-based visibility
Ad hoc demos of working software over sprints and/or fixed milestones
We recognize that every organization must deploy some of the methods on the right, but we assert that their use should be reduced to a minimum.
Consider, for example, a study with male mice divided into groups: some were subjected to involuntary running periods, while others had the autonomy to control their own exercise. Even though both groups ran the same distance (the amount of running was distance-matched), the mice that were forced to run exhibited distinct signs of stress, fear, and discomfort (poor little fellas!).
If you are charged with getting a task done, what proportion of your time ought to be dedicated to actually doing the task? Not 100 percent. There ought to be some provision for brainstorming, investigating new methods, figuring out how to avoid doing some of the subtasks, reading, training, and just goofing off.
Sprints are problematic for the simple fact that they never let up. Sprints are not simply shorter deadlines, encountered sporadically as you move along. They are forever repeating, back-to-back deadlines. Waterfall was structured around genuine deadlines and real-world events that demanded focused attention. You worked hard to get something working, then you were done. High pressure was followed by low pressure. Sprints, on the other hand, are fake deadlines, invented for the sake of a process. Since they are contrived, they have no natural breaks or resting periods. There is no time to breathe, no time to collect yourself.
With sprints, there are no breaks, little autonomy, and insufficient time to prepare. No wonder developers today seem more stressed! The process is ill-suited to the nature of their work, and they are powerless to change it. The only remedy is to restore autonomy and professionalism to software development. Let developers control both their craft and their process. Treat them as respected peers, not replaceable cogs in a machine.