Search the web
Sign In
New User? Sign Up
extremeprogramming · Extreme Programming
? Already a member? Sign in to Yahoo!

Yahoo! Groups Tips

Did you know...
Want to share photos of your group with the world? Add a group photo to Flickr.

Best of Y! Groups

   Check them out and nominate your group.
Having problems with message search? Fill out this form to ensure your group is one of the first to be migrated to the new message search system.

Messages

  Messages Help
Advanced
[XP] Re: On Too Much   Message List  
Reply | Forward Message #3497 of 152332 |
(Hi Honey, I'm Hooooooome.)

Folks...

I just read the last month's messages. The following comments
apply both to the many questioners AND the many answerers.

Stop thinking so much. Stop worrying so much. Stop biting off
so much.

I know, I know, we all got to be good at this business precisely
because our overly-buff neo-cortices are good at juggling and
balancing bizarre abstractions. I *know* we all have good
memories, good verbal skills, and the ability to hold multiple
levels of analysis in our heads, not to mention API calls
and argument lists. I know we're the world's greatest
generalizers and that before we even hear the full description of
two ideas we've already abstracted them into a base idea and two
derived ideas. I know. I'm there, too. Nevertheless, stop doing
it.

Try these two chips off the iceberg:
<http://c2.com/cgi/wiki?ToAyoungExtremist>
<http://c2.com/cgi/wiki?AjiKeshi>

Here are some specific comments from my reading...


1. Unbelievably complicated unit testing frameworks: You don't need
them. You need the ability to write a test function, add it to a
list of test functions, and call them. How long will it take you
to write that code? Four hours? Six? Write it. Over time you
may see other things that will be handy, but you don't need them
now.

2. Corner cases you've invented where the XP method seems to
have contradicted itself: You don't need them. If you really
encounter them in the field, which for the most part I seriously
doubt you ever will, here's how you solve them. 1) Pick one
interpretation or the other. 2) Implement it. 3) Try it.
4) If you don't like it, change it until you do. 5) If you can't
change it enough, pick the other interpretation.

3. Unbelievably-difficult-to-unit-test classes you've created:
You don't need them. If it can't be unit-tested, it can't be a
stable central part of your code, so throw it away. Divide one
staggeringly complex object into thirty dead simple ones. Unit
test them.

4. Umpty-nine-levels of inheritance and abstraction with private
inner reverse-schreck semiotic slipsoid sub-class interactivity
devices that make your design impossible to even describe, let
alone debug: You don't need them. I am truly staggered to hear
how many folks are using the arcana of their programming
environments rather than the mainstream.

5. The generic solution to all problems having to do with a
generalized and abstract class representing XXXXX's: You don't
need it. You need a class representing XXXXX's AS SEEN BY YOUR
CUSTOMER'S USER STORIES. Code one. Forget about dividing the
world up into philosophically correct hierarchies. Divide the
*problem* into *pragmatically* correct ones.

6. Unit tests that are designed to prove that your object will
survive a thermonuclear blast: You don't need them. Unit tests
should be renamed object tests, an argument I'll take up later.
Write a unit test to test ONE object, not all that objects that
one talks to. If you cannot find a way to do it, your object is
almost certainly too complicated. Simplify it, and try again.

7. Unit tests that are really functional tests: You don't need
them. The functional tests prove that everything works together
to satisfy the customer's stories. The unit tests do not exist
to prove that your program is correct. They exist to make your
work faster and easier. Pretend your object is floating in a
petri dish, not in a live cell. Test it *without* testing its
neighbors. If you can't, re-write until you can.

8. Paint-scraper programs that capture and test screen output
for form-based apps: You don't need them. De-couple all
program functionality from UI functionality. Unit-test it.
Write generic client-controls that use generic data-servers.
Unit-test them. Derive concrete data-servers connected to your
model. Unit-test them. Build forms by connecting clients to
servers. Unit-test them for tab-order and screen-layout.
Get your functionals to 100%. Ship. Wait for stock options to
mature.


Okay okay, enough already, I know. My apologies in advance for
seeming altogether too cranky. But sheesh...

Good night!
Hill


+----------------------------------------------------------+
|Michael Hill |
|Software-> Developer, Consultant, Teacher, Coach |
|Lifeware-> Egghead, Romantic, Grandpa, Communitarian |
|<uly@...> or <uly56@...> |
+----------------------------------------------------------+




Thu Mar 23, 2000 5:12 am

uly@...
Send Email Send Email

Forward
Message #3497 of 152332 |
Expand Messages Author Sort by Date

(Hi Honey, I'm Hooooooome.) Folks... I just read the last month's messages. The following comments apply both to the many questioners AND the many answerers. ...
Michael D. Hill
uly@...
Send Email
Mar 23, 2000
5:13 am

... Great story! Always having a hard time to keep things so simple that even I understand them myself. ... Some languages (at least Java) support reflection....
Walter van Iterson
walter.van.iterson@...
Send Email
Mar 23, 2000
9:15 am

We recently took a DiSC personality analysis test over here. Aside from the fact that I learned I _really do_ have a personality, it was interesting to see...
Ravi Desai
rdesai@...
Send Email
Mar 23, 2000
2:03 pm

... Hi Mike, Any tips you can offer on GUI unit testing would be very helpful. I've found with Java using the Action class to abstract the function of an...
Andrew Swan
andrews@...
Send Email
Mar 23, 2000
5:24 pm
Advanced

Copyright © 2009 Yahoo! Inc. All rights reserved.
Privacy Policy - Terms of Service - Guidelines - Help