Groove
The groove is a function of the pulse; therefore, it’s also a function of the tempo. Musically, a bassist can play a song with a variety of grooves, such as Latin, bluegrass, and funk, with each groove based on a two-beat pulse. Abstractly, a groove is a specific set of essential, fundamental activities that are repeated with respect to the pulse. As an example, the Rational Team Concert development team typically operates with a tempo and form that dictate four-week iterations. The pulse is weekly, with the groove as follows:
Monday |
Integration build (a.m.) |
Meeting of Project Management Committee (90 minutes) |
|
Teams deliver new functionality and fixes for defects |
|
Integration build (p.m.) |
|
Tuesday |
Integration build (a.m.) |
Meeting of all team leads and interested stakeholders (60 minutes) |
|
Teams deliver new functionality and fixes for defects |
|
Integration build (p.m.) |
|
Wednesday |
Integration build (a.m.) |
All-hands testing |
|
Thursday |
Integration build (a.m.) |
Meeting of all team leads and interested stakeholders (30 minutes) |
|
Teams deliver new functionality and fixes for defects |
|
Integration build (p.m.) |
|
Friday |
Integration build (a.m.) |
Teams deliver critical fixes if Thursday p.m. build is not usable (stable) |
|
Optional integration build (p.m. or earlier) to incorporate critical fixes |
|
Distribute build |
In the last (fourth) week of an iteration, which is called a milestone week, the groove varies slightly, with the addition of team leader meetings on Wednesday and Friday. The additional meetings are needed because there is a specific focus on delivering new functionality for the milestone while ensuring a stable build that interested consumers can adopt and the development team can use for self-hosting. Self-hosting is synonymous with dogfooding, a term used in the software industry that comes from the phrase “eating one’s own dog food” and refers to the practice of using the products that you build. Dogfooding is especially effective if you use early builds of your own products as valuable feedback on functionality and defects can be given as new features evolve. Looking at this set of activities in our groove with a little less detail, we have this:
Week 1 |
Week 2 |
Week 3 |
Milestone Week |
|
Monday |
Build |
Build |
Build |
Build |
Code |
Code |
Code |
Code |
|
90-minute PMC meeting |
90-minute PMC meeting |
90-minute PMC meeting |
90-minute PMC meeting |
|
Build |
Build |
Build |
Build |
|
Tuesday |
Build |
Build |
Build |
Build |
Code |
Code |
Code |
Code |
|
60-minute TL meeting |
60-minute TL meeting |
60-minute TL meeting |
60-minute TL meeting |
|
Build |
Build |
Build |
Build |
|
Wednesday |
Build |
Build |
Build |
Build |
Test |
Test |
Test |
30-minute TL meeting |
|
Test |
||||
Thursday |
Build |
Build |
Build |
Build |
Fix |
Fix |
Fix |
Fix |
|
30-minute TL meeting |
30-minute TL meeting |
30-minute TL meeting |
30-minute TL meeting |
|
Build |
Build |
Build |
Build |
|
Friday |
Build |
Build |
Build |
Build |
Fix |
Fix |
Fix |
30-minute TL meeting |
|
Optional build |
Optional build |
Optional build |
Fix |
|
Distribute build |
Distribute build |
Distribute build |
Optional build |
|
Distribute build |
||||
Self-host on build |
Can you see the groove in this table? Let’s try a rhythmic exercise. With your fist or open hand, lightly hit the desk or your thigh, as if you’re simulating a drumbeat. Hit the “drum” at a rate of approximately once per second, and keep it going continuously. Each beat of the “drum” represents a weekly pulse. Now with each pulse, say “BE-bop,” giving equal time to each of the two syllables and stress the first syllable as you hit the drum. Repeat that three times, and then on the fourth pulse, say “BE-bop-bop-bop,” but say that twice as fast to keep in time with the pulse. “BE” corresponds to a 60-minute meeting, and “bop” corresponds to a 30-minute meeting. So you’ve got this:
Lyrics: |
BE-bop |
BE-bop |
BE-bop |
BE-bop-bop-bop |
Pulse: |
Beat |
Beat |
Beat |
Beat |
Repeat the four-week sequence a number of times, and you’ll be feeling the groove of a software development team!
When you listen to music with a pulsating beat and an infectious groove, you enjoy it and feel like joining in. You may find yourself repeating elements of the groove to yourself or improvising little rhythmic or melodic elements that complement the existing parts of the groove while fitting right in alongside them. A groove invites everyone to participate and align their contributions with it. A groove is most effective when it is simple and clear to everyone.