<a href="http://www-306.ibm.com/software/rational/bios/ambler.html" target="_blank" rel="nofollow">Scott W. Ambler</a><br />Practice Leader Agile Development, IBM Rational<br /> <br />Now available: <a href="http://www.ambysoft.com/books/refactoringDatabases.html" target="_blank" rel="nofollow">Refactoring Databases: Evolutionary Database Design</a>
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
<a href="http://www-306.ibm.com/software/rational/bios/ambler.html" target="_blank" rel="nofollow">Scott W. Ambler</a><br />Practice Leader Agile Development, IBM Rational<br /> <br />Now available: <a href="http://www.ambysoft.com/books/refactoringDatabases.html" target="_blank" rel="nofollow">Refactoring Databases: Evolutionary Database Design</a>
A good question is never answered. It is not a bolt to be tightened into place but a seed to be planted and to bear more seed toward the hope of greening the landscape of the idea. John Ciardi
Originally posted by Scott Ambler:
Actually, at Agile Cost of Change Curve I argue that the flat curve is really just the left-hand side of the traditional exponential curve.
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
Originally posted by Stan James:
Another significant factor in cost of change is the recent improvement in languages and tools.
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
Originally posted by Gerardo Tasistro:
Ever tried proving this in a mathematical model?
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
From Stan James:
Another significant factor in cost of change is the recent improvement in languages and tools. This week I focused on package dependencies in my Wiki and extracted an interface for a key class in seconds, dragged the interface to another package, ran the test suite and went on my way. Making changes so cheaply enables YAGNI design. It is much less necessary to design all the good ideas up front.
Back in my COBOL days a single change to a copybook could eat up days of impact analysis, code changes, manual builds and testing. Don't miss that a bit!
From Gerardo Tasistro
Ever tried proving this in a mathematical model?
From Ilja Preuss:
In fact, if I remember correctly, the original curve even put *phases* at the x axis - finding a bug in testing was more costly than finding it in coding, than finding it in design etc.
So on the other hand it could be argued that for an approach that doesn't use phases, the curve simply doesn't apply. Using TDD, finding a bug in testing instead of coding simply doesn't make sense...
From Ilja Preuss:
Anyway, talking about the other curve, early feedback alone won't help you keeping the cost of adding features late in the project small - if you allow your code/design to deteriorate over time, no amount of feedback will keep the costs of adding new features even nearly constant.
From Ilja Preuss:
Another important part is reducing the overhead of bureaucracy. There is much less value in finding a problem days instead of months after a feature got discussed with the customer - if once you've identified the problem, you need to spend days to write documents and get them signed (for example) before you can put the new knowledge into code.
<a href="http://www-306.ibm.com/software/rational/bios/ambler.html" target="_blank" rel="nofollow">Scott W. Ambler</a><br />Practice Leader Agile Development, IBM Rational<br /> <br />Now available: <a href="http://www.ambysoft.com/books/refactoringDatabases.html" target="_blank" rel="nofollow">Refactoring Databases: Evolutionary Database Design</a>
Originally posted by Gerardo Tasistro:
Ever tried proving this in a mathematical model? Aka control system. With feedback channels. There should be more than enough data to map and compare systems. Compare an no feedback-little feedback system:
With ones with feedback:
Of course given the discrete nature of a programming environment. Your response might look stepped.
At a short glance this issue compares to the spring, damper and mass problem. The bigger the problem (requirement list-mass) and the bigger the "bureocracy" (prestartup time, design, BRUF) the longer it will take you to get it moving. And once you spend an enormous amout of energy (read money) getting it moving you will undoubtly overshoot (because your feedback system aka management is pressing hard). You overshoot with this big mass (but also take a long time to notice you overshot, because of lack of proper feedback - read fast feedback). And now your spending a lot of energy (read money) in the opposite direction to fix the overshoot. Which will undershoot (due to feedback issues) and on and on it will go.
With proper backing data I'm sure this can be modeled.
Images from http://www.engin.umich.edu/group/ctm/PID/PID.html and
http://www.engin.umich.edu/group/ctm/digital/digital.html
%
Originally posted by Michael Duffy:
(1) Maybe BUFD is verboten, but does that necessarily mean NO DESIGN up front? That feature has always smacked of development without adult supervision to me.
Originally posted by Gerardo Tasistro:
I don't believe in a "NO DESIGN up front" model. I do believe strongly in feedback and constant evaluation of your project.
If asked to define Agile or XP I'd say: "A set of rules and recomendations for the integration and usage of tools and techniques to achieve non-linear software development."
With this I cover the fact that you're still using the same stuff. You don't need to change language or IDE. Your "fixing" the way you work with them in acordance to a set of "good practices" that lead to a non-linear software development. With non-linear I mean to say one which is not deterministic (like watefall for example). One which might seem chaotic at times, but strangely for some (the skeptics) does deliver.
I've been cooking some ideas in my head. I think you can model this well with forces taking effect. I'll work up some graphs to try and explain this, but for the moment being I have to get some breakfast. Tacos are waiting and that barbacoa just smell soo good
Catch y'all in a bit.
%
Well my usage of the term deterministic is NOT in the observed behavior of the waterfall model, but rather in the expected. Waterfall advocates WANT it to be deterministic. That is a "with no randomness well cut out clear objective". That is why it is cut into phases and all this time is spent in the design phase. In the false belief that it will lead to a succesful estimation of needs, costs and time. "We have it all covered, what could go wrong?" Well just about everything.
Non-linear on the other hand expects all sorts of things to go "wrong". It understands that the system is very very sensitive to initial conditions. I'm using the term non-linear in the context of a very complex system (not easily modeled by linear equations). This non-linear (read complex system) requires a lot of quick feedback to keep it on track. But more important that the understanding of the need for feedback is the understanding of the limitations of our predictions. Given the sensitivity to initial conditions we must comprehend that we can NOT see very far into the future and be correct with our estimations.
Now what I find fascinating about this conversation is how much future is "future". And that when you sit down to model this agile and waterfall become the same thing. Except one has different coefficients than the other (and do consider that those coefficients can take the value of cero (0)). A system with 0 on all its feedback channels is effectively a system without feedback.
It is clear that agile doesn't want to look too far into the future while waterfall does. That looks alot like the z^(n) and the whole sample and holding issue with discrete control systems. It is an immediate conclusion that if you don't sample you can't control. So agile already has a head start there and that should ring a bell (read warning) to the waterfall advocates. Agile also samples a lot faster. They're always checking. So no matter how fast the project changes (which we can equate to base/natural frequency of a signal) agile is bound to win since they sample more often and are bound to have a good enough sampling for the "frequency" of the project. This should sound as another warning call for waterfall advocates, but it is usually dismissed as "chaos" or "disorder".
They see agile's short term goals and lack of long term planning as disorder. Without realizing that their own plans have very low long term value given the non-linear nature of the job at hand. Agile's short term planning is a signal of short sampling times (or in other words high sampling frequency). Your systems output control signal can't last longer at a set value than the sample period. Because obviously it will be altered by such sample. In other words next monday's plan will be altered by friday's evaluation. So making a perfectly crisp 2 or 3 week plan last monday was useless.
Now I also used the term "pefectly crisp" to clarify something. That is you can have a look ahead plan for the next month and a todo list for this week. That can also be modeled through filters and more sample and hold or further holding. Your current feedback is not only altered by the previous sample, but by the sample prior to that and the one prior and prior etc. Up to a limit of course.
It would be really interesting to try and plot this in a Zplane or something similar. Make a model of all these feedbacks. Get a system and plot the ceros and poles. That would be key to finding the stability of the system. Got to get back to my digital control books.
Anyway to sum it up there is more than enough evidence to prove agile wins over waterfall. The sampling alone element should sufice. More arguments can be built on a model.
For example why can't the project reach its goals (overdamped system)? Why are we bouncing around our objective and not reaching it (subdamped system)? The first could be a management that ties too much resources to planning so we never quite get there. Too much energy is spent seeing were the target is there is no left to actually go there. The second case could be a case of too little management creating the inability to commit to a goal. Lets go this way, then the other way then this way again. Your object oscillates around "very good ideas".
IMHO life is not linear and project management shouldn't be either.[/QB]
%
Originally posted by Michael Duffy:
If that were true, agile would be far more widespread.
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
Originally posted by Gerardo Tasistro:
It is clear that agile doesn't want to look too far into the future while waterfall does.
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
Originally posted by Ilja Preuss:
In my experience, resistance to Agility has much more to do with culture and not wanting to leave ones comfort zone, than with rational reasons.
%
Originally posted by Michael Duffy:
Certainly emotional, but it might still be rational. I don't think that agile success is always so cut & dried.
I can see where a team might have tried to adopt it in the early enthusiasm, have a project fail for any number of reasons, and have that failure become part of cultural dogma: "We tried that once. Remember what a mess project X was? We won't make that mistake again."
I think that agility does require some enlightened leadership. Agility implies a democracy of equals, but I'd argue that the level of even the worst developer on those teams is relatively high. It's not the right place for coders who want nothing more than to put their heads down and be told what to do all day long. Agility implies a certain passion and introspection, a desire to always be better. Unfortunatly, all those qualities vary where I am.
%
Originally posted by Michael Duffy:
I think that agility does require some enlightened leadership.
Agility implies a democracy of equals
It's not the right place for coders who want nothing more than to put their heads down and be told what to do all day long. Agility implies a certain passion and introspection, a desire to always be better. Unfortunatly, all those qualities vary where I am.
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
Originally posted by Michael Duffy:
Your agile team is in good shape if you've got Martin Fowler or Scott Ambler or Kent Beck leading it. But what about all those places where strong leadership like that isn't available?
When you have a democracy of equals, who breaks the ties?
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
Originally posted by Michael Duffy:
There's the larger question of team size. I thought agility has been demonstrated with smaller teams ("the lunch table criterion") physically located in the same place, preferrably co-resident with their business partners. What about larger teams with off-shore components?
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
Originally posted by Ilja Preuss:
If I remember correctly, Thoughtworks has a case study online for an Agile project that was (partially?) outsourced to India.
And regarding "big" projects, Jutta Eckstein has coached some Agile projects in Germany with hundreds of developers; she has also written a book about it: http://www.jeckstein.de/agilebook/index.html
%
I think that Agility also *induces* passion for the work - or rather that most developers would have it anyway, if it weren't actively suppressed by the working environment.
Of course that doesn't mean that every developer will instantly become passionate about working in an Agile team. It needs a very sensitive coach to lead such a team to more self organization and responsibility.
%
Originally posted by Michael Duffy:
I love talking about these things, but I fear that I'll never be able to change the organization. "If you can't change your organization, change your organization."
(1) Maybe BUFD is verboten, but does that necessarily mean NO DESIGN up front?
That feature has always smacked of development without adult supervision to me.
What does one do about team members who don't go along? Agility always seems to require a team with a common mindset and ability.
I think it breaks down when there's too wide a gap in abilities.
What does agility do about "oil canning" of code? Programmer A writes something and checks it in. Programmer B sees it, decides to refactor since all code is held in common, and checks it in. Ad nauseum. (I've heard a story from a colleague where this actually happened.)
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
This doesn't sound right to me, but I'm not sure I understand what you are getting at. Care to elaborate?
%
Originally posted by Michael Duffy:
In spite of numerous attempts to praise the virtue of test first and JUnit, has anyone else written a single unit test? No. We all use it, but others aren't following.
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
I don't even think NO DESIGN is *possible*. I *need* to have some idea about a rough possible design to be able to even estimate a feature.
%
Originally posted by Ilja Preuss:
In my experience, praise doesn't work. What works is action.
Are you ever asked to help a coworker debug some of his code? That might be a good opportunity to write some unit tests with him.
%
Originally posted by Michael Duffy:
Let's say A believes in DAOs, and B thinks that results in an anemic domain model. Both are strong-willed individuals, both are considered capable by the team. Their debate is played out during the design sessions, without a unanimous decision from the rest of the team.
Who decides? Must it be unanimous? Or will the project be compromised by hurt feelings or half-hearted support?
Agility and XP has always impled that confederation of equals to me. Everyone participates in the design, and anyone can refactor anyone else's code. It's collective ownership and responsibility, which means collective decisions and equal responsibility.
Agreed?
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
Originally posted by Michael Duffy:
But it's been slow going.
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
Originally posted by Michael Duffy:
Can large, enterprise systems be designed organically like this? I have no experience with it. My efforts have been smaller scale.
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
Originally posted by Ilja Preuss:
I actually think that's the only way they can be designed.
"Every big successful system started as a small successful system" - who said that again?
%
By the way, how would a non-Agile team solve that dilemma - while avoiding "half-hearted support"?
%
Originally posted by Michael Duffy:
Good question, because it's not specific to agile teams.
Where I work, the technical people might be overruled by the PM or the business people (note: non-technical people making technical decisions). The hurt feelings amongst technical people remain unresolved.
Sometimes technical people can resolve it. Our last project had an argument about DTOs that was decided in favor of NOT using them. It made for one heated design session, but the rest was smooth.
%
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
(1) Maybe BUFD is verboten, but does that necessarily mean NO DESIGN up front? That feature has always smacked of development without adult supervision to me.
There's the larger question of team size. I thought agility has been demonstrated with smaller teams ("the lunch table criterion") physically located in the same place, preferrably co-resident with their business partners. What about larger teams with off-shore components?
If that were true, agile would be far more widespread. My experience that it's not either says that I need to change my situation or your data needs updating. It's not widespread from my vantage point.
I think that agility does require some enlightened leadership. Agility implies a democracy of equals, but I'd argue that the level of even the worst developer on those teams is relatively high. It's not the right place for coders who want nothing more than to put their heads down and be told what to do all day long. Agility implies a certain passion and introspection, a desire to always be better. Unfortunatly, all those qualities vary where I am.
<a href="http://www-306.ibm.com/software/rational/bios/ambler.html" target="_blank" rel="nofollow">Scott W. Ambler</a><br />Practice Leader Agile Development, IBM Rational<br /> <br />Now available: <a href="http://www.ambysoft.com/books/refactoringDatabases.html" target="_blank" rel="nofollow">Refactoring Databases: Evolutionary Database Design</a>
Originally posted by Scott Ambler:
Addressing several issues at once, sorry for any confusion.
Right now it requires enlightened leadership because we're somewhere around the chasm.
You're right, agile developers do seem to be amongst the better folks out there. One issue is that agile requires generalizing specialists, and by their very nature those are the better people out there. Coincidently, my June column is going to address how traditional folks, typically specialists, can be useful on agile projects. It might not be what some people want to hear, but hopefully it'll be a wake up call for others.
- Scott
%
Don Morgan, Founder
www.DeveloperAdvantage.com - FREE Audiobooks for Software Developers
Originally posted by Michael Duffy:
Agility and XP has always impled that confederation of equals to me. Everyone participates in the design, and anyone can refactor anyone else's code. It's collective ownership and responsibility, which means collective decisions and equal responsibility.
The average group of 15 or 16 people can't reach consensus on where to go for lunch -- let alone how to run a factory. How to organize a production line, whether to hire someone, how to assess someone's skills for promotion, even how to pick who will work over the weekend -- those kinds of issues inspire strong disagreement. "Everybody doesn't see things in the same way," says Williams. "But we've had training on how to reach consensus. We've had training on how to live with ideas that we might not necessarily agree with." And the team members always have the power to change things that don't work out. Says Williams: "All the things you normally fuss and moan about to yourself and your buddies -- well, we have a chance to do something about them. I can't say, 'They' don't know what's going on, or, 'They' made a bad decision. I am 'they.' "
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
One of several reasons why agile techniques are so effective, in my opinion, is that they reduce the feedback cycle between the generation of an idea (perhaps a requirement or a design strategy) and the realization of that idea. This not only minimizes the risk of misunderstanding, it also reduces the cost of addressing any mistakes. In this article I explore this idea in detail.
Don Morgan, Founder
www.DeveloperAdvantage.com - FREE Audiobooks for Software Developers
My pie came with a little toothpic holding up this tiny ad:
We need your help - Coderanch server fundraiser
https://coderanch.com/wiki/782867/Coderanch-server-fundraiser
|