Prior Art

Joseph Sinclair plug-devel@lists.PLUG.phoenix.az.us
Tue Mar 29 18:36:02 2005


Bryan.ONeal@asu.edu wrote:

>Without proper documentation it is very difficult to
>1) Understand what your needs are and develop a solution to fit them:
>        I am not saying we write up a 30page purposely but some built points
>and a implantation map, suggesting some general object and their external
>functions and API names would be Extremely nice...  Especially since we could
>probably knock out the generals of the plane in just a few 1-2 hour meeting.
>  
>
Read the chapter on planning in eXtreme Programming eXplained, what 
you're thinking is what a release planning session is for.  The result 
is a set of story cards (much like CRC cards) that lay out the 
requirements for that release, along with a priority order, so the most 
important requirements can be implemented first, and the mass of 
relatively unimportant (to the customer) requirements are left to any 
"spare" time once the important things are complete and available for 
use.  Note also that lightweight methodologies don't say that we'll 
create no documentation, only that we'll create the least documentation 
that accomplishes the desired end (clear, concise, effective, efficient, 
and appropriately durable team communication).

>2) Utilize code others have developed.
>        Simply knowing what code is in your project and how to tape it will
>ensure you don't have to constantly reinvent the weal.
>  
>
We may have to do so in some cases, particularly where any existing code 
isn't released under a GPL-friendly license.  At other times, the 
existing code may be so poorly implemented that it's a better idea to 
write our own.  That said, We should certainly look into using existing 
code where it makes sense.

>3) Know where you are and where you're going 
>        We are already suffering from scope creep because we don't have a
>clearly defined scope.  If we did we would be able to say TicketMaster does
>not fit within our scope.  We can revisit it after the implementation of
>current phases is done.
>  
>
The release planning session will handle scope creep, in that as 
requests are prioritized, the time available gets consumed until all 
remaining requests fall into a "future release" bucket.  I've done a few 
projects with customers who always wanted to include more stuff at every 
meeting.  This practice of just adding in their requests, then having 
them choose what comes first, handled the issue in almost every case.  
They felt that their requests were heard and included in the project, 
and we were able to ensure that we didn't keep moving the deadline to 
fit more and more in.  The end result also had all of the things they 
felt were really important, without a bunch of stuff they wanted (or 
stuff we wanted), but they didn't need right away.  We don't have to say 
TicketMaster type functionality is out of scope, we just ask the primary 
customer (PLUG/AZOTO) if this is important enough to them to include in 
the next release, I understand that they don't feel that it is at this 
time.  (BTW, that's just an example.  In this case, I do feel 
TicketMaster is completely out of scope, in fact I think, if anyone is 
interested, that is belongs in a completely separate project all it's own).

>You can not just start coding without knowing what your coding!
>  
>
But you can start with limited information, only enough to code the next 
few features, and gather additional information as you progress.  If you 
ever reach a point where there's nobody in your customer base who needs 
more features enough to lay them out for you, then your system is 
feature complete.  You would maintain at that point (mostly bug-fix), 
and add features only when someone is willing to lay out their need.  
That avoids the M$ tactic of adding features just to generate a "reason" 
to upgrade to the latest "enhanced" version of software.

>Since most projects fail due to different operating styles of the volunteers,
>I feel agreement with vision, style, and environment to be extremely
>  
>
I agree completely

>important.  I, however, see defined scope, function maps, and vague class
>diagrams, to be key elements in facilitating a cohesive programming
>  
>
I see strong and effective team communication, coupled with a shared 
commitment to the project, and a unified overall vision of the desired 
results to be key.  Documents don't make good teams, they only record 
the point-in-time state of that team's shared vision.

>environment.  As for documenting your code, you should do it anyway, how else
>will you know what you did six months latter, let alone have some one else
>  
>
Code documentation is required.  Adherence to team development standards 
is required.  These are things that, when followed, support strong and 
effective team communication, and when not followed threaten the 
cohesiveness of the team.  I have a fairly complete coding standards 
document that I've used before for some platforms.  If the coding team 
chooses a platform I don't have standards for, I'll look up and compile 
a standards document for that platform during the first coding iteration.

>know what you did. However, if the rest of the group feels different, then I
>must assume I am a hindrance to the implementation and will gracefully remove
>my name from the development team and quietly watch, with keen interest, from
>the sidelines.  
>  
>
Please don't step aside.  We may not generate as much documentation, or 
in the form you're used to, but we'll generate *enough* documentation, 
and it'll all be useful, since anything not useful gets discarded 
(except for historical copies) at the end of each iteration.

>Although, in truth, we may be disagreeing du to a misunderstanding on what
>documentation is and should be.  Sort of a comparison of Tangerines and
>Oranges ;)
>
>Perhaps we can find a good Tangelo to agree on; perhaps not.
>  
>
I feel that a close reading of the principles of lightweight 
documentation rules would produce that Tangelo for us.  Please take the 
time to look into it, I think you'll like what you find.

>
>On Fri, 25 Mar 2005, Joseph Sinclair wrote:
><<SNIP>>
>