 |
Rhythms in Software Development
Posted by johnm on December 05, 2004 at 03:13 PM | Comments (12)
In Fartlek - Increasing your Sustainable Pace, Erik Meade uses the fartlek concept to talk about sustainable pace in software development. However, the notion of fartlek comes from training e.g., runners. That is, the combination of short, intense work interspersed with longer, lower intensity work increases an athlete's ability to perform both in terms of their base level and their peak performance.
So, in terms of training software developers to become more proficient, there is some validity in intensive learning situations so as to point out the need to improve our ways of doing things. However, the fartlek metaphor doesn't really work in the software development world because the stress of high pressure work doesn't e.g, make us more capable of sustaining a faster base pace or increase our peak performance. The facts are clear that the stress induces worse results and more work (due to the need to e.g., fix the bugs introduced as a consequence of trying to ameliorate the stress) both in the short term and over time.
A more appropriate metaphor for what Erik is talking about is the notion of rhythm. Humans, both individuals and groups, function in rhythms. The rhythms come in various granularities such as daily, weekly, seasonally, etc. and various types such as mental, physical, emotional, and spiritual. In my experience, software developers and managers (and the myriad, inhumane "methodologies" that are used) not only tend to ignore the rhythms in our lives but actively fight against them.
For example, one key aspect in the perennial war between computer "languages for dumb people" and "languages for smart people" is how the language designers choose to either put various kinds of straitjackets on people or give folks plenty of rope to hang themselves with. :-)
The key manifestation of rhythm in agile practices is, IMHO, actually the notion of (very) short cycles, both individually in terms of individual task management (via, e.g., TDD) and group project management (i.e., XP's "iterations" and Scrum's "sprints"). The rapid cycling provides the hooks, if you will, of perceiving the reality of what's been accomplished (or not) and choosing how to adjust moving forward.
I leave it, for now, as an exercise for the reader to delve into how the notion of rhythm fits into the software itself and the systems that we create with that software.
Bookmark blog post: del.icio.us Digg DZone Furl Reddit
Comments
Comments are listed in date ascending order (oldest first) | Post Comment
-
Back when I used to fartlek, I was increasing the rhythm of my footfalls and breathing for short periods of time, which leaves me seeing rhythm in Sustainable Pace and even in fartleking, put not what I was attempting to describe. What kinds of rhythms have you seen being surpressed?
Posted by: emeade on December 05, 2004 at 10:29 PM
-
Rhythm is everywhere.
The XP notion of "Sustainable Pace" is trying to help people realize that software development is something done over time and, since we are human, we have to fit in the realities of being human into the process. In strictly business terms, the purpose of "Sustainable Pace" is to increase the total amount of useful software.
As I mentioned, the purpose of fartlek training is to increase the ability to perform at both the base level (i.e., the long term rate that can be sustained for long periods of time) and peak performance. That sort of managed-stress-based improvement process doesn't work the same way in software development because the kind of work that is done isn't physical, it's mental.
In terms of software development dysfunctions, the whole notion of the geek machismo is a supression of the reality of human rhythms. I.e., the confusion of time spent with actual results. One of the selling points of agile methodologies is that the reduction of time spent will increase the usable results. The different agile methodologies approach this differently in terms of specifics but they basically come at this from two directions: reduce wasted time/energy (bad meetings, rework, etc.) and increase developer focus (pair programming, TDD, etc.).
Posted by: johnm on December 06, 2004 at 09:06 AM
-
I think there are similarities between the physical vs. mental aspect. When I "try to do more" at work, I pay attention to what hurts, what slows me down, and during my recovery attempt I try to address some of those issues enough so that next time I can find something different that hurts or slows me down.
Posted by: emeade on December 06, 2004 at 09:25 AM
-
Indeed, doing mentally focused training stints is certainly a useful learning tool for our mental business. [And, of course, taking care of ourselves physically is an important base from which to (be able to) work.] However, you brought in a very physically oriented metaphor ("fartlek") into a subject ("Sustainable Pace") that has both mental and physical components.
Posted by: johnm on December 06, 2004 at 09:40 AM
-
I don’t see how the physical and mental don’t sort themselves out, unless you are in a place that the only way you can go faster is to think better or faster.
Posted by: emeade on December 06, 2004 at 05:38 PM
-
Ugh. At this point, about the only thing I can recommend is to learn more about (developer) psychology. The kind of mental stress that you're talking about in work creates and exacerbates many kinds of dysfunctions (individually and group) whereas, as you learned, such training works great on a physical basis. The kind of benefit from varying speed in terms of "training" is actually about breaking people out of ruts as much as e.g., learning new skills/ideas/etc.. Of course, without a decent environment, no lasting improvements will be made -- just transient Hawthorne Effects.
Posted by: johnm on December 06, 2004 at 09:35 PM
-
Oh no thats not the kind of stress I am talking about at all, thats why I posted all those links to the bad things that kind of stress leads too. Why did you think I posted those?
Posted by: emeade on December 06, 2004 at 11:04 PM
-
Of course you are -- that's what sustainable pace is about. Of course, that now seems pretty clear that's not what you intended. Alas.
Note that Kent's new version of the XP bible changes from "Sustainable Pace" to talk about energy instead.
Posted by: johnm on December 06, 2004 at 11:11 PM
-
That sounds more like "speed-work" than "speed-play" to me, who would want to do that?
One of the things I intended is most of us shouldn't be worried about going faster because we are already at an unsustainable pace.
Another was if you try to go faster you then have to recover.
I would be surprised if Kent disagreed with either of those statements.
Posted by: emeade on December 06, 2004 at 11:50 PM
-
I'm certainly not arguing about your intentions -- those are yours. :-) But I don't see any way around the fact that the purpose of fartlek is to increase both the basal and peak performance and so it's your use of that as a metaphor for software development that I must take issue with.
Posted by: johnm on December 07, 2004 at 07:57 AM
-
For those following along, Eugene Wallingford has also written about this notion of Speed Play.
Posted by: johnm on December 07, 2004 at 08:09 AM
-
hye, i need ur help here.. currently, i was instructed to do a project (related to Software Architecture and Patterns).. my first task was finding the definitions of these jargons:
1. software component
2. software connector
3. software system
4. software architecture
5. architectural model
6. architectural style
7. application domain
8. middleware
these are related to software engineering subject, so i hope u guys can help me finding a very simple clear definition.. some diagram might be helpful in explaining these jargons.. any related websites that u can recommend i am very appreciated..
pls email me if u have something that are useful (acapawn7@gmail.com).. thank u so much
Posted by: acapawn7 on March 17, 2006 at 12:21 AM
|