| A Metric Leading to Agility
|
|
25 Sep 04 |
|
[print
link
all
] |
|
(Source: Ron Jeffries) Nearly every metric can be perverted, since up- and
down-ticks in the metric can come from good or bad causes. Teams driven by
metrics often game the metrics rather than deliver useful software. There
is a single metric that demands that a team become both agile and
productive.The result: better projects done in better ways. www.xprogramming.com/xpmag/jatRtsMetric.htm
|
| Test First, by Intention
|
|
25 Sep 04 |
|
[print
link
all
] |
|
A code and culture translation from the original Smalltalk to Ruby Original
by Ronald Jeffries, translation by Aleksi Niemela and Dave Thomas. www.rubycentral.com/articles/pink
In this document we show you the Ruby version of the Smalltalk code
published in the pink book.
|
| screen -x for remote pairprogramming
|
|
25 Sep 04 |
|
[print
link
all
] |
This tiny tool is great to have 2 people look and type into the same shell
window. Works great with vim :-)
- Both ssh or telnet into the same (remote) Unix machine and account.
- One enters screen, then starts vim, then the other enters screen -x.
- ctrl-d to exit screen)
Linux Gazette article about screen
|
| Succinctness is Power!
|
|
25 Sep 04 |
|
[print
link
all
] |
|
(Source: Paul Graham)
"The quantity of meaning compressed into a small space by algebraic
signs, is another circumstance that facilitates the reasonings we are
accustomed to carry on by their aid."
- Charles Babbage, quoted in Iverson’s Turing Award Lecture
paulgraham.com/power.html
The first person to write about these issues, as far as I know, was Fred
Brooks in the Mythical Man Month. He wrote that programmers seemed to
generate about the same amount of code per day regardless of the language.
When I first read this in my early twenties, it was a big surprise to me
and seemed to have huge implications. It meant that (a) the only way to get
software written faster was to use a more succinct language, and (b)
someone who took the trouble to do this could leave competitors who
didn’t in the dust.
Brooks’ hypothesis, if it’s true, seems to be at the very heart
of hacking. In the years since, I’ve paid close attention to any
evidence I could get on the question, from formal studies to anecdotes
about individual projects. I have seen nothing to contradict him.
|
| Software for your head by Jim and Michelle McCarthy
|
|
25 Sep 04 |
|
[print
link
all
] |
What Ron Jeffries says: if you read this book, really study and consider
it, you will think thoughts you haven’t thought before, and you will
likely learn something about yourself, your colleagues, and your projects.
I read a lot of books and recommend a lot of books. This one is special. Do
yourself a favor: buy it, read it, and give it deep consideration.
|
| fit
|
|
25 Sep 04 |
|
[print
link
all
] |
|
Ward Cunningham has released an acceptance testing tool called fit fit is about tests that people can read.
The Cook’s Tour
offers an excellent howto to get yourself and your customers into the
test-writing mode.
An intro
article by Bill Wake.
|
| Game Design & Engineering Theory
|
|
25 Sep 04 |
|
[print
link
all
] |
|
(Source: Miyamoto’s Tokyo Univ. Lecture Today (July 3), at the Komaba
campus of Tokyo University, a lecture was held by Shigeru Miyamoto,
director and head of information development at Nintendo Co., Ltd.
I’ll write out the main points of the lecture here. I’ve
deliberately left some parts out; my apologies for this.
…I arrived at the classroom ten minutes before the lecture began. I
was worried that there wouldn’t be any seats left, but I discovered
one at the fourth row from the front so I hurried over and sat down. The
classroom, which can hold around 200 people, filled up almost instantly. By
the time I entered the room, Mr. Miyamoto was already sitting in a chair
next to the blackboard.
Since Miyamoto was apparently too busy to make any special preparations for
the event, it was decided to move from a traditional lecture format to a
more informal discussion. To start off things, the instructor in charge
discussed CERO [the Japanese game rating system], age restrictions, GTA,
Kakuto Chojin, and other topics related to game regulation.
And then Miyamoto stepped up to the mike. Applause…
www.video-fenky.com/features/miyamoto.html
|
| I've never been a Project Manager before
|
|
25 Sep 04 |
|
[print
link
all
] |
|
Check out the excellent Dilbert
|
| IT WON'T WORK HERE doesn't work here
|
|
25 Sep 04 |
|
[print
link
all
] |
(Source: Kent Beck posted this to the XP mailinglist) This came up in a
discussion of how to handle long-lead-time materials. The OP basically
said,
"I can't do all that stuff you say I should do, but how do I handle the situation ..."
The response:
-- IT WON'T WORK HERE doesn't work here.
|
| Re: [agile-testing] Agile documents?
|
|
25 Sep 04 |
|
[print
link
all
] |
(Source Ward Cunningham, agile-testing@yahoogroups)
>Documents work
>> because you can use them early (models that build knowledge),
>> because they persist (you're not crippled by your imperfect memory),
>> because they're efficient (you don't have to keep repeating the same
>> conversation with perfect fidelity), because they can capture
>> details (not just vague impressions), because they can be reviewed,
>> critiqued, and corrected (unlike your trembling thoughts), because
>> they remain (unlike you, you job-hopper!), etc.
Excellent points. Extreme programming demands this of the code as well as
any documents the customer may require.
|
| Hackers and Painters
|
|
25 Sep 04 |
|
[print
link
all
] |
|
(Source: Paul Graham) When I finished grad school in computer science I
went to art school to study painting. A lot of people seemed surprised that
someone interested in computers would also be interested in painting. They
seemed to think that hacking and painting were very different kinds of
work— that hacking was cold, precise, and methodical, and that
painting was the frenzied expression of some primal urge.
Both of these images are wrong. Hacking and painting have a lot in common.
In fact, of all the different types of people I’ve known, hackers and
painters are among the most alike. www.paulgraham.com/hp.html
|
| Wine-Migration
|
|
25 Sep 04 |
|
[print
link
all
] |
|
At Linuxtag in Karlsruhe I met during lunch one of the authors of ganymede. I am the last person in the
world to promote the use of the Win32-API, but it can come in handy, when
you have to use some legacy software on Linux and do not want to pay
license fees for the usual suspects like vmware. Having to maintain only
one code-base is sexy, too.
I asked David Guembel, one of the fathers of the software to email me a
short describtion:
On an abstract level, the idea behind our ganymede system is simple: To make
an application run under Wine (a free Win32-API layer and Windows
executable loader), it is neccessary to know what parts of the Windows API
are actually required by that particular piece of software. Software has a
modular structure - in this context, a module is a Windows executable
(.DLL, .EXE, .OCX etc.) - and every module provides (exports) certain
functionality and requires (imports) functionality from other modules.
Thus, ganymede internally creates a dependency graph of an application's
binaries. This method is static and does not require anything but a fresh
installation of the software to be analyzed.
Before x-raying a Windows application, ganymede parses and stores an
analysis of the soure code of one or more Wine versions. It automagically
determines the implementation state of the APIs provided by Wine. During a
software analysis, the functionality required by the Windows application is
compared to what Wine provides, and missing or incomplete APIs are
reported. By storing Wine versions and the dependency structure of the
analyzed applications in a database, automatic or manual re-analysis with
different Wine versions is possible. Via the API ganymede itself provides,
the collected data is accessible in several ways. One application of that
API is our tool named sysiphus, which uses ganymede and a GUI-based
approach to semi-automatically determine the best possible Wine
configuration while providing for the possibility to re-use already
licensed Windows DLLs to fill the gaps Wine still leaves.
|
| Story cards are like poker |
|
25 Sep 04 |
|
[print
link
all
] |
(Source: Brad Appleton, XP-ML) How cool would it be actually to /use/ poker chips in the Planning Game?
Interesting - I interpreted the above statement to be talking about having the planning game include both cards and chips (just like poker). The chips would correspond to story points, and would be attached to a story card with the appropriate number of chips. And when a story was "split" the corresponding chips would be split between the resulting new card(s).
- The dealer gives the customer all the chips for this iteration
- Then the customer "shuffles" the cards and lays them down
- As each one is laid down, development uses a different color of chips and places the number of chips that story costs.
- If the customer is okay with it, they then take an equivalent number of chips from their "stack" and place it to the "bet" pile.
- If the customer isn't okay with it, the story can be split (kind of like "double down" in blackjack) and/or cards can be "reshuffled"
- At any time, the customer may "reshuffle"
- When the customer is out of chips and is okay with the current "bets" and card order, the planning session is adjourned
|
| screen -x for remote pairprogramming
|
|
25 Sep 04 |
|
[print
link
all
] |
This tiny tool is great to have 2 people look and type into the same shell
window. Works great with vim :-)
- Both ssh or telnet into the same (remote) Unix machine and account.
- One enters screen, [space], vim, then the other enters screen -x.
- ctrl-d to exit screen)
|
| Test-Driven Writing
|
|
25 Sep 04 |
|
[print
link
all
] |
(Source: Stefan Schmiedl)
>An activity that I /do/ still have trouble with, however, is writing.
> When faced with having to compse anything more substantial than an
> email response, I feel the fear start to creep in and I get myself all
> tied in knots. Even after I start to put some words down, I often
> find myself getting stuck because the thing isn't flowing and the task
> of finishing seems overwhelming.
Yup, writers block definitively, as John Roth diagnosed already. But if
you’re able to describe it in such flowering detail as above,
there’s no need to have it.
> So on my way home last night (after another frustrating couple of
> hours trying to get some thoughts on paper), I was thinking about how
> I could make my prose writing come as easily as my code writing. I
> started wondering if I couldn't somehow employ a TDD-like cycle in my
> writing process.
I am often writing articles with my business partner,
who’s<br>especially good at collecting lots of nice stuff on
the web. The first thing I have do with the "drafts" I get from
him, is to find the<br>structure fitting best to the available data.
This is currently donein a Mindmap using freemind (freely available at
sf.net, IIRC). For some<br>time I also tried vimoutliner (www.vimoutliner.org) for this, but
found that for this process, the two-dimensional display of a mindmap is
better suited to my brain.
When the outline is finished, I start to grow the flesh on the bones.
That’s relatively easy, as I confine my work strictly to the current
paragraph.>
The next step is easy, if I have the time: I let the stuff settle for a few
days, then go over it once more and clean up the unbelievable mess I
created then. If I don’t have the time, I need to play about two
hours nethack, which erases my brain just as well…
So the steps are:
- data collection
- gradually by experience
- by force (coauthor delivery)
- data organization
- mindmap
- outline
- draft
- follow the map
- work local
- refactor or polish
- grammar, spelling, rhetoric
- present line of thought more clearly
I think that there’s a difference between code and prose showing
here. You expect your code to give certain results for a given input, and
you are free to not care about the implementation at all. With prose,
implementation is almost everything. So the cost of providing a
"working release" is higher with prose than with code. At least
for me.
>find myself getting stuck because the thing isn't flowing and the task
>of finishing seems overwhelming.
Writing is like every other kind of art. It is never finished.
Feeling better now?
Writing is like dealing with animals. Don’t be afraid of it, and it
won’t hurt you.
Your fellow author in pain, S.
|
| Don't do code reviews. Do pair programming
|
|
25 Sep 04 |
|
[print
link
all
] |
|
(Source: Ron Jeffries in the XP-mailinglist) Well, Don't do Code Reviews, do Pair Programming. Frankly, code reviews are /so/ much worse than pair programming that a dose of them would make me fly to pair. Let's see if we can replicate my experience.
Here's one path through a network of a million decision points:
To do code reviews, everyone has to read the code beforehand, unless you're doing a walkthrough, see below. I'd ask everyone to come together physically to the review. Then I'd ask them to report truthfully how much time they spent reviewing the code. Early on, I would report truthfully that I had spent zero or very little time, in hopes of getting others to admit the truth. When they admit the truth, I'd dismiss the meeting and reschedule it.
Then, after a while, the only alternative is a walkthrough, since no one is preparing effectively for the review. So we do walkthroughs for a while. They are intensely boring, and few people stay involved. Note in your mind the people who are present but not involved. At the end of the session, say, holding your hand up, "Who else had a real problem staying engaged with this walkthrough?" If there's honesty in the room, hands will go up. Prompting may be necessary. Then: "Any ideas?"
Surely someone will think of "doing this in smaller groups or one on one". Try it. Ask the team whether "we should empower the one-on-one folks to change the code, and under what circumstances." Don't mention that this is pair programming.
Try an experiment. You're "interested in collaborative programming". Interested parties should come to the room to help. On the screen, start writing a program. Ask for help with it, get the room to pair with you. Get stuck (no need to fake this if you are me). Someone will start telling you what to do. Don't get it (no need to fake this either). Get them to come up and do it ... grabbing the chair that is accidentally beside you, while you move over.
Note that reviews often find things. Observe how many of them are resisted by the original programmer, or are "too much trouble to fix now". Build a few BVCs relating to time spent prepping, in the meetings, number of useful suggestions (by person if you can do it without problems), number of changes made in response to suggestions, ...
Code reviews are intensely painful, in my experience, and we were trained by Freedman himself. There will be no need to set them up to be perceived that way, though it will take honesty among the group to express it. After doing enough code reviews, which take way more than half the groups' time by the way, a team who has heard of pair programming should be begging to pair. About all you have to do is make sure that no one treats the review session as nap time, and that you are /early/ in recognizing the people who think it's a waste of time. Because they're right.
|
| Hang the code, and hang the rules
|
|
25 Sep 04 |
|
[print
link
all
] |
Douglas Seelinger posted this in the XP-list:
A quote from "Pirates of the Caribbean: The Curse of the Black Pearl":
--You're pirates. Hang the code, and hang the rules. They're more like
guidelines anyway.
|
| Unit Tests -- just do it!
|
|
25 Sep 04 |
|
[print
link
all
] |
|
Been coding a lot these days on SmallWorld.
I try to be disciplined and continue adding unit tests to the hundreds of
unit tests wherever sth. could go wrong, but ever again I go off the track
and code several methods and even entire classes without any tests.
It’s simple stuff and hey, this is ruby :-).
Then I sit here for 3 hours trying to understand why the dammed computer
does not do what it should. It’s that feeling I hate most. You waste
time .. I mean I could as well go skiing or drink a bottle of vodka ..
would be about the same productivity progress on my code and at least I
would enjoy the sun.
After hitting my head long enough and starting to isolate the stuff .. I
found it .. I had forgotten one return in a most trivial three line long
method. Shame on me. Now I will go back to being test-infected. test-first
is even better. Dammit .. sorry for the rant, but I doubt there are many
systems like computers where one comma at the wrong place can make
everything go boom. Oh well, try to modify the DNA and do not know what you
are doing. :-).
|
| Just Ship, Baby
|
|
25 Sep 04 |
|
[print
link
all
] |
|
(Source: Kent Beck) Short two page essay: The focus on shipping is not an
excuse for cutting corners, but perfect adherence to the practices is no
excuse for not shipping. groups.yahoo.com/group/extremeprogramming/files/just%20ship.pdf
|
| When Should We Test?
|
|
25 Sep 04 |
|
[print
link
all
] |
|
Kent Beck, one of the people that invented extreme programming (XP) offers
an economic model. The financial risk management community and the software
development community can learn a lot from each other. Think of this
article as: When should you put Risk Management into place?
Amongst other things this article tells you when best to have children :-).
[groups.yahoo.com/group/extremeprogramming/files/when%20should%20we%20test.pdf]
|
|
|