Kishore
SCJP, blog
Author of Test Driven (2007) and Effective Unit Testing (2013) [Blog] [HowToAskQuestionsOnJavaRanch]
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
Books: Pragmatic Unit Testing in Java, Agile Java, Modern C++ Programming with TDD, Essential Java Style, Agile in a Flash. Contributor, Clean Code.
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 point is that you are working together, not under surveillance. If the attitude is to "pick at each other for every error you make when typing", you've got to solve that problem before you can even think about improving your team's performance.Originally posted by xp here:
I don't like the rule of pair programming, in fact, it is the most strange practice rule in XP. Who would like to be gazed at when he's at work? Peer review is good enough.
Author of Test Driven (2007) and Effective Unit Testing (2013) [Blog] [HowToAskQuestionsOnJavaRanch]
Thanks.Sorry, I didn't notice the naming policy, I corrected already.
![]()
Well, pair programming also helps in design and spreads knowledge and skills among the project team (reduces project risk).In XP, pair programming seems to be considered as an effective method for error checking, this is what I don't agree with.
In fact, pair programming has been around for decades and there has been some research on it. Google for Laurie Williams and you should find a lot of papers that show how pair programming (or pair whatever) has in fact improved overall performance. The problem is that typical bosses are too busy thinking about next week's golf game that they can't be bothered to read about what's happening in their profession.I don't think pair programming could be adopted as a formal development method, firstly, boss don't agree to have persons doing the same work while they occupy two positons in the payroll. Secondly, how can you ensure pair programming will improve the performance rather than reduce it?
Yes, it takes a conscious effort to learn to pair effectively. And yes, it's true that Senior System Architects (with capital S's and A's) might not like to be "disturbed". This is exactly why one of the rules an XP team must obey is "leave your ego on the door"...Except special situation, generally people doing creative design - especially skillfull designers - don't like to be disturbed during his thinking, it's very hard to have two persons haveing the same work style, rhythm and thinking, so it's very hard to forsee the result after you force two guys with different experiences and skills sit together doing a same task.
Author of Test Driven (2007) and Effective Unit Testing (2013) [Blog] [HowToAskQuestionsOnJavaRanch]
Originally posted by Lasse Koskela:
And yes, it's true that Senior System Architects (with capital S's and A's) might not like to be "disturbed". This is exactly why one of the rules an XP team must obey is "leave your ego on the door"...
Author of Test Driven (2007) and Effective Unit Testing (2013) [Blog] [HowToAskQuestionsOnJavaRanch]
Author of Test Driven (2007) and Effective Unit Testing (2013) [Blog] [HowToAskQuestionsOnJavaRanch]
Originally posted by Warren Dew:
Actually, if they are purely Senior Systems Architects and not Senior Systems Engineers, they shouldn't be pair programming because they shouldn't be programming at all.
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 alex ross:
In XP, pair programming seems to be considered as an effective method for error checking, this is what I don't agree with.
I don't think pair programming could be adopted as a formal development method,
firstly, boss don't agree to have persons doing the same work while they occupy two positons in the payroll.
Secondly, how can you ensure pair programming will improve the performance rather than reduce it?
Except special situation, generally people doing creative design - especially skillfull designers - don't like to be disturbed during his thinking, it's very hard to have two persons haveing the same work style, rhythm and thinking, so it's very hard to forsee the result after you force two guys with different experiences and skills sit together doing a same task.
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 architects aren't involved in implementing and using the architecture, how do they know that their architecture is a good one???
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
programming may include: knowledge distribution, fewer error prone. The questions about PP include:
1. Does it really need so many continual communications in coding?
2. Does the partner can always grasp the meaning of each line or function of another guy in time?
3. Can we ensure while one guy is busy in typing, another guy is not in idle?
I think these questions may reflect that at least the form of PP is not yet clearlly defined.
Could you explain this dilemma to me? Are you referring to iterative methods losing out in early cost estimation due to deferred detail discovering?1. How does iterative method solve the dellimma of early cost estimation and defered detail dicovering?
Can't provide any references although I'm pretty sure Google would find you a nice bunch of conference papers...2. Are there some experiences to prove refactorying could lower the cost of defered modification?
By sharing it often, in small pieces, and by communicating what you're doing. "I'm moving all this XML parsing stuff into a new package" takes about 2 seconds to say out loud in the room and saves more than that in terms of "hey, where's all that parsing code I wrote yesterday?" type of questions (which don't take too many seconds to answer, either, assuming everyone are nearby)...3. How to share sorce code in XP without some guys mess it up?
Author of Test Driven (2007) and Effective Unit Testing (2013) [Blog] [HowToAskQuestionsOnJavaRanch]
Originally posted by alex ross:
By 'dellimma of early cost estimation and defered details discovering' I mean without sufficient details of design, how do we estimate the cost and plan the resource usage for development, both these plans should be made before development begins, and both customers and managers need buget plan based on them. But with interative process, many details are defered, so it may not easy to control the scope. This is a dellimma.
Originally posted by alex ross:
Besides, here are some amusing pictures I got from www.pairprogramming.com, the left side are pics drawn by solo, pics on the right side are drawn by paired guys. I don't know what pairprogramming want to say by that, maybe it's not suit for art design![]()
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 Warren Dew:
My impression of strict XP, which admittedly is more from reading and using a few of the techniques than from using them all at once, is that an XP team solves the cost estimation 'dilemma' by turning it around: if the client needs a budget, simply agree on a budget, and when you've spent it, you're done.
Originally posted by Ilja Preuss :
Well, the right ones certainly look less boring and more creative, don't they? They might even get mistaken as picassos...
Originally posted by alex ross:
By 'dellimma of early cost estimation and defered details discovering' I mean without sufficient details of design, how do we estimate the cost and plan the resource usage for development
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 alex ross:
The questions about PP include:
1. Does it really need so many continual communications in coding?
2. Does the partner can always grasp the meaning of each line or function of another guy in time?
3. Can we ensure while one guy is busy in typing, another guy is not in idle?
I think these questions may reflect that at least the form of PP is not yet clearlly defined.
Under an extreme condition, frankly to say, when good experienced and inexperienced guys pairing, the PP would rather work as a process of training instead of cooperation.
Even this may be a benefit of pair programming, but we can't say this is the only way of training.
In most projects, we do need guys with good knowledges and sufficient experiences to be responsible for decision-making and hold a global view of the system.
Personally, I'm not proficient in XP, so I think PP may be one of the natural method derived from XP, but I just suspect it's the only or most efficient method.
2. Are there some experiences to prove refactorying could lower the cost of defered modification?
3. How to share sorce code in XP without some guys mess it up?
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 Warren Dew:
It's to be noted that object oriented software engineering has done much to blur the distinction between architecture and implementation. In Java, for example, any well documented class has an explicit architecture - for example, the JavaDoc for java.util.List provides the architecture for java.util.ArrayList and java.util.LinkedList.
Object oriented languages, by partitioning code into classes and making interfaces enforceable by the compiler
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:
Here you seem to be saying architecture = contract? That seems to be qutie different from Brook's architecture = UI specification, doesn't it?
That would be statically typed languages. Dynamically typed ones, like Smalltalk or Ruby, don't enforce interfaces at compile time.
Originally posted by Warren Dew:
When I write code that uses a java.util.ArrayList, I'm not an implementor of the List, I'm a user of it. For me, the Javadoc for java.util.List is a user interface specification - a specification of the interface for the benefit of users like me.
It only becomes a contract for me if I'm implementing a List subclass - only then am I bound by the Javadoc to write the List in a way that might differ from how I would otherwise write it.
As for Martin Fowler's take, I think Brooks' definition is entirely consistent with the IEEE definition that he quotes, though phrased very differently.
While Fowler obviously doesn't like the IEEE definition, I think that's because he doesn't really understand that definition
In fact, the main reason I prefer statically typed languages for systems of moderate complexity and above is exactly that they allow more of the architecture/UI specification/contract/whatever-term-you-want-to-use to be enforced as early as possible.
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:
That's a usage of the term "user interface" I wasn't previously aware of. To me, a user interface is the interface between the system and its end user.
Anyway, the cited IEEE definition seems to speak about the interfaces the internal components communicate through each other, not the interface to the user.
Regarding enforcing the "whatever", I feel that type safety only plays a rather small role in ensuring correctness of a program. And the increased compile times actually *defer* other important checks, such as the running of unit tests.
Originally posted by Warren Dew:
It seems to me that type binding has to be done either at compile time or at run time, so the total for compilation and running unit tests has to include it in whether it's done early or late. Am I missing something?
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:
There is economic value in manufacturing identical wheels. There is no economic value in reinventing the wheel. With manufacturing, variation is bad. With design activities such as software, variation (i.e. differences from previous systems) is what we're selling. -- Hubert Matthews
Associate Instructor - Hofstra University
Amazon Top 750 reviewer - Blog - Unresolved References - Book Review Blog
Originally posted by Thomas Paul:
I just wanted to comment on this quote.
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