Check out my kickstarter CLICK HERE
My book, my movies, my videos, my podcasts, my events ... the big collection of paul wheaton stuff!
Check out my kickstarter CLICK HERE
My book, my movies, my videos, my podcasts, my events ... the big collection of paul wheaton stuff!
Originally posted by Paul Wheaton:
I was suprised too. But the official word was "you will learn faster through pair programming".
Now that it is several weeks later, I think my opinion is not the same as my boss's opinion
XP is quite good. I see why it is becoming so popular. I might re-review that book sometime soon ...
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 Junilu Lacar:
I'm actually jealous because I have yet to experience it first-hand.
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 think that pair programming is a good thing, but it doesn't have to be 100.00000000000% of the time.
We ended up spending all of our time waxing on about possible directions and people were getting frustrated due to the lack of progress.
It turns out that in the pink book (in the XP series), the driver picks the architecture and the partner suffers somewhat silently. The partner's job is to always support the driver and help improve the drivers productivity.
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
Check out my kickstarter CLICK HERE
My book, my movies, my videos, my podcasts, my events ... the big collection of paul wheaton stuff!
Originally posted by Paul Wheaton:
What do you mean by "official" - who did enforce it?
The dude that signs my checks. Official enough for me.
What were you discussing about?
I remember a discussion about parsing. We get some strings and depending on the string received, we would do different things. I suggested a hashtable with a collection of classes implementing an interface to do the work. Cast the hashtable object to the interface, call the method that does the work.
His approach was simpler. Same sort of thing, no hashtable. Keep a vector. All methods get called and passed in the string. Each method determines if the string is for them. The observer pattern modeled a bit after the JDK 1.0 event model.
His point being that profiling is done later.
There was a good half hour of debate. In the end, I conceded so that we may write something. Later, the code was changed to what I suggested in the beginning.
The funny thing is that XP says something like "write the test before you design the code - this is test driven design" But the tests all make assumtions about the architecture of that which is not yet written.
Chapter 12, pair programming.
The ninth paragraph in my copy.
[...] My mind would sometimes jump to a different solution. They would tell me that I should voice this information, but hey, when you have a plan in your head and a keyboard under your fingers, do you really want the new guy to hold you up?
The solutions fournd in the pink book fixed us right up. All is smooth now.
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
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 Paul Wheaton:
This is not how I understand XP - can you provide a pointer to the chapter of the book, please?
Chapter 12, pair programming.
The ninth paragraph in my copy.
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:
How long did it take you to implement the first solution and to refactor to the second?
...
The funny thing is that XP says something like "write the test before you design the code - this is test driven design" But the tests all make assumtions about the architecture of that which is not yet written.
...
Of course you design *the interface* by writing the test. Why does the interface differ wether you use a hashtable or a list???
This is a fascinating thread, and I'm intrigued that the discussion of methodology/process seems to become more "religious" all the time.
Reid - SCJP2 (April 2002)
Originally posted by Reid M. Pinchback:
I can't claim to be an XP expert, but I have found people use it as an excuse to validate local-optima work. Instead of learning about XP and applying it in a careful manner, and understanding the organizational context they work within, they wander around mumbling "simple is best", no matter the consequences. I've seen some very, very expensive consequences.
That is partly what I mean by saying that methodology and process aren't quite the same thing. Part of architecting a process is to ensure that the outcome of following the process doesn't depend too much on the particular people doing the work. Skilled people will whiz through a process faster than the unskilled or inexperienced, but for a given set of inputs you want to see acceptable outputs in both cases.
One thing that tends to make me nervous about XP is the skill-set of its major proponents. Martin Fowler in particular is a really, really skilled designer and coder. The reason I included the quote about testing is exactly the point. Fowler creates really good tests. They focus on the interface behaviour of an object. Essentially by writing the test he has written the acceptance criteria for the implementation *and* put a state in the ground that says objects should be defined by their behavioural interactions. Not everybody knows how to do this effectively, and can undesirably bias the implementation towards some architecture or idiom.
I'm inclined to think that XP can result in decent development processes when the developers have both breadth of experience and depth of skill. Unfortunately it seems developers tend to dramatically overestimate their knowledge, particularly with respect to breadth. When that happens, I've seem XP mutate into a screw-your-neighbour game. The developer does the minimal work *they* want to do, and somebody else's job downstream is made 100 times harder.
If you had a situation where one member of the pair really wasn't skilled, unless they were approaching the work as a training exercise I can see how you'd run into problems. Its one of my beefs with decisions made by consensus; consensus works best when the participants understand the issues, but it rarely generates knowledge out of ignorance. I think pair programming could face similar challenges.
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've seen some very, very expensive consequences.
...
That sounds interesting. Can you provide some examples, please? Thank you very much!
With all due respect, I find it to be very unreasonable to expect acceptable output from unskilled people.
It seems to me that to expect that, the process had to control the people, freeing them from the responsibility for the output.
Reid - SCJP2 (April 2002)
Reid - SCJP2 (April 2002)
Check out my kickstarter CLICK HERE
My book, my movies, my videos, my podcasts, my events ... the big collection of paul wheaton stuff!
Originally posted by Junilu Lacar:
The cop-out is when people blame the process instead of themselves and their inability to adjust to the process or make adjustments to it to suit their needs.
I can agree to that, with a proviso. If 'the team' includes representation from all those who are materially impacted by the process change, making adjustments is fair game. What I've seen, and object to, is one or two individuals who "adjust" (equals "ignore" or "subvert") a process because they feel it is personally inconvenient, and be damned the impact on everybody else. This is something I see on a daily, and I do mean daily, basis, particularly by some of the staunchest lightweight advocates I know. [humourous aside: no doubt some financial folks at WorldCom once upon a time decided it was very inconvenient to treat expense-related expenditures as expenses for reporting purposes].
How well does any process work when people don't conform to its ideals?
Poorly designed processes only require one person to break it. Properly-designed processes require collusion to circumvent. You definitely can't protect against collusion (particularly if management is part of the problem).
Setting collusion aside, you can easily design processes that have easy, inexpensive checkpoints to catch individual errors or omissions. For example, having a release engineer only release what (1) they pull from a repository based on a label, and (2) passes the automated tests in the build is a perfect example. The engineer doesn't care how a team does their work, only that he/she can produce a build. People who then p*ss and moan about having to put their stuff in a repository aren't doing the job they are paid for, and you don't alter that particular process to validate their behaviour.
What we should ask about any process is "What kind of skills are needed to effectively use this process and how do we ensure everyone on the team has them?"
Definitely agreed!
Reid - SCJP2 (April 2002)
Originally posted by Frank Carver:
I get cynical, I suppose. So many projects I am brought in to work on have no process feedback mechanism at all, and seem condemned to repeat the same expensive and frustrating mistakes forever.
Reid - SCJP2 (April 2002)
Originally posted by Reid M. Pinchback:
The (lack of) quality and quantity output for easy tasks tells you that the process must be completely broken, but there is no way to observe the activities or get at hard data to collect evidence of the problems.
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 Reid M. Pinchback:
What I've seen, and object to, is one or two individuals who "adjust" (equals "ignore" or "subvert") a process because they feel it is personally inconvenient, and be damned the impact on everybody else. This is something I see on a daily, and I do mean daily, basis, particularly by some of the staunchest lightweight advocates I know.
Setting collusion aside, you can easily design processes that have easy, inexpensive checkpoints to catch individual errors or omissions. For example, having a release engineer only release what (1) they pull from a repository based on a label, and (2) passes the automated tests in the build is a perfect example. The engineer doesn't care how a team does their work, only that he/she can produce a build. People who then p*ss and moan about having to put their stuff in a repository aren't doing the job they are paid for, and you don't alter that particular process to validate their behaviour.
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 Paul Wheaton:
Of course you design *the interface* by writing the test. Why does the interface differ wether you use a hashtable or a list???
With the first solution, you set up a listener passing in just a listener. Your listener has a method that take a parameter that will tell you what command was passed.
With the second solution you set up a listener by passing in a string and a listener. Your listener method might not have a parameter.
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 Reid M. Pinchback:
If your people are lacking a necessary skill for effective work, you don't create a process to accomodate their weakness, if the end result is that the work won't meet the needs of the organization.
Project work and process work aren't the same thing, and it doesn't help by lumping them together as an amorphous mass. Both forms of work happen at the same time, each dealing with different issues. The thing that concerns me with lightweight advocates is that they tend to ignore that reality, and the resulting consequences.
It is true that one person can make a big difference, but there are real problems with taking this approach too far. What if a person leaves, gets hit by a bus, or isn't as good as you hoped? All those things happen in the real world.
The business doesn't just shut its doors. Customers and stockholders aren't told "sorry, but we were screwed anyways".
PS: Even Cockburn, who you like to quote, admits that the amount of process oversite required for project work depends on the scale and risks of the project.
That isn't the same thing as saying that processes change in an ad-hoc fashion in all project scenarios. Not to put words in your mouth, but that seems to be the conclusion you've drawn, and it is an invalid conclusion.
It definitely is invalid if you do work (a) on fixed-price contracts
Definitely you change your processes as you learn and improve, but that doesn't mean that processes are inherently unsuitable just because they aren't torqued to accomodate the idiosyncratic behaviour of people working on one particular project. Sometimes it just means that the developers on a particular project didn't give a damn what kind of mess they swept under the carpet before claiming their work was done.
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 Reid M. Pinchback:
My question is simply this: does XP work when people don't conform to a platonic ideal?
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 Junilu Lacar:
Originally posted by Ilja Preuss:
What are you planning to do to get to this point? Serious qestion.
Serious answer (stolen from Martin Fowler): Trying to change my organization. If all else fails, I'll change my organization.
It's tough to do the first one though. I am one of those "consultants" (we self-deprecatingly call ourselves "IT whores" a.k.a. "warm bodies"), who has to do whatever it takes to make the client happy. In this business it's tough to find that rare client who will be willing to take the "risk" of changing the way they do things to try XP (good luck if you get assigned to a government client). I have wanted to try the "make stone soup" approach but it's hard to do even that when you have little control over your development environment.
Meanwhile I must live vicariously from content here and in the various mailing lists. I'm still looking out for good opportunities though. My hope right now is that somebody in Columbus, OH wanders into these JavaRanch forums and becomes familiar with my name. I wish I could be more active in the CoJUG but they meet on Tuesdays and I'm usually "Mr. Mom" then.
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:
OK, lets take a look at XP - there we have
- colocated team, ideally all sitting in one room
...
I think there are even more of the practices relevant, but it seems to me that these already make it hard to hide. What seems to be missing for you?
Reid - SCJP2 (April 2002)
Originally posted by Ilja Preuss:
you don't create a process to accomodate their weakness, if the end result is that the work won't meet the needs of the organization.
...
Mhh, there must be a misunderstanding here, as I don't think that anyone advocated doing that.
Reid - SCJP2 (April 2002)
Originally posted by Ilja Preuss:
OTOH it to easy to see your own project as "very high scale, high risk" - well, it makes it sound good, doesn't it? Nevertheless it might be very worthwhile to think about how to make it more agile.
Reid - SCJP2 (April 2002)
Originally posted by Reid M. Pinchback:
Definitely people shouldn't just assume that their work is of great importance and create a lot of process just out a sense of self-importance. I class things like the Challenger shuttle blowing up as high-scale high risk, or having the FDA pull most of your products from the market and fining you a hundred million dollars. These are the real world challenges in some medium-to-large companies. If all you are working on is a corporate web site to let people subcribe to a mailing list, obviously you don't lose a lot of sleep about the consequences.
In a fixed price contract you have to do the necessary work to get requirements up-front, and convert that into an accurate estimate of the effort required to honour the contract.
If you don't know how to do that, you can't stay in business (as a lot of recently-created consulting firms found out in the last few years).
Maybe its just the people I know, but the lightweight advocates I run into also have a high degree of fear over requirements management.
I know that there are agile processes that handle evolving requirements in a reasonable fashion (e.g. Scrum) from a developer's perspective, but contracts are written by lawyers and executives, not by the developers. The contract trumps the team. Scrum easily adjusts to new requirements, but contracts don't get re-written, and both parties hold each other stringently to the contract when a lot of money is involved.
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 Reid M. Pinchback:
Not all software engineering is project work. Sometimes people get so wrapped up in their personal tasks that they don't step back far enough to see that. Some of the work is process. Configuration management is process work. End-user support is process work. With a bit of care and fore-thought, QA is process work. Project management oversite is largely process work. Materials acquisition for a project is process work. Project approvals against infrastructure constraints is process work. Some development tasks, done often enough, become process work (e.g. do enough web pages with Struts, and you can tell people in seconds how long it will take to the team to create X pages in the web layer, and exactly what steps they'll go through to produce them).
Project work is valuable and necessary, but much more expensive and risky (because of the unknowns in a unique situation) per unit of output than process work.
What I tend to see is lightweight advocates labelling their project work as an example of process work, and claiming that all the other process stuff doesn't matter. Terminology obfuscation seems to be one of the more common debate techniques.
There are clear exceptions. Scrum is definitely a project-oversight process, just one where the amount and kinds of software output per process step is variable; the non-unique outputs (i.e. what you expect to see in a process) that drive it are the information gathered to spec out the next iteration of the process. The choice of process workers matters to productivity, but not to the generation of the information required to allow the process to head into the next iteration.
As to consequences, that is simple. All those other activities I mentioned have people employed trying to do their jobs. When lightweight advocates ignore the existence of those people and their responsibilities, it makes it difficult or impossible for them to do their jobs.
The business doesn't just shut its doors. Customers and stockholders aren't told "sorry, but we were screwed anyways".
...
Well, I have heard of projects that had to.
And you consider that acceptable?
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 Reid M. Pinchback:
If you were talking about a small (e.g. startup) organization with only one development project, then the answer would be nothing. What you describe is fine, particularly if the organization will either stay small or the application lifecycle is short relative to the growth rate of the company. Having one team would be easy. When you are in a moderately large, geographically distributed organization, or you are mixing internally developed and externally-contracted work, the collocated team assumption doesn't cut it. You can't uproot hundreds of people in various states and countries and shove them in a room, particularly when some of those people are customer organizations who aren't accountable to you and need to be physically elsewhere to do their 'real' jobs.
Even worse is what you don't have:
- separate I/T support group per project
- seperate web site per project
- separate database environment per project
- separate data per project
- separate customer base per project
- separate delivery infrastructure per project
- separate networking infrastructure per project
- seperate security infrastructure per project
- separate regulatory context per project
When each project has its own team, and does work in dramatically different ways and ignores the complexities of what is going on around them, it radically increases the cost, frustration, and financial or legal risks borne by the rest of the organization.
It is basically a complexity war. If you put yourself into a everything-touches-everything scenario, your organization has to grind to a halt as it grows. Given that, from a systems standpoint, each activity in an organization can influence many portions of that organization, you have to find a way to minimize the interfaces and monitor what happens in the transition of work across that boundary.
It is the same thing as effective component-based design. Componentization issues are trivial if you assume that there will only ever be one component (the one team with everyone in the room). As soon as you have multiple components, you have to be aware of how effectively you partition the functionality, avoid cyclic dependencies, address scalability, testability, etc. Processes in a medium-to-large (1000's of people and up) organization have similar challenges.
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 don't understand what you try to say...
If you know "agile advocates" suggesting you should ignore what is going on around you, please shoot them.
I still don't understand what that has to do with one of those "components" (a team) using XP as their development process/methodology/philosophy/whatever.
Reid - SCJP2 (April 2002)
Originally posted by Reid M. Pinchback:
The strength of XP and agile processes is that they serve the team.
who deals with the issues and impacts that aren't made the concern of the team?[/QB]
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
catch it before it slithers away! Oh wait, it's a tiny ad:
We need your help - Coderanch server fundraiser
https://coderanch.com/wiki/782867/Coderanch-server-fundraiser
|