James Watson
Posts: 2024
Nickname: watson
Registered: Sep, 2005
|
|
Re: Donald Knuth on Multi-Core, Unit Testing, Literate Programming, and XP
|
Posted: May 2, 2008 8:21 AM
|
|
> > > > I'm not sure iterative development is "chaos" as it was > > described but even if it is, in my experience, the > sooner > > the customer sees what you are doing the more likely > you > > are to succeed. And my experience also tells me that > > big-up-front-design is largely a waste of time. > > > Have to agree. On the other hand, I have to believe that > succssful XP'ers are doing more long term design than > they're admitting to. I like the idea that you don't > *code* the cool architecture you have in mind. (If I had a > nickel for every line of code I've poured thought into, > never to see them executed, for which the machines no > longer exist!) But by the same token, it's not as "knee > jerk" a process as it is sometimes portrayed. After all, > the way to get add(2,2) to succeed is to return 4. But to > make it succeed for an arbitrary N,M, you have to work at > a deeper level of abstraction!
I think it's good to have a strategy and a plan. How much that strategy encompasses and how you come to that conclusion is another topic. I think YAGNI can be taken to mean that you must solve each problem in isolation and never look at the big picture. But I definitely think you should never code something if you aren't sure it's going to be used in the very near future.
What I get really annoyed with is putting a lot of time into a really detailed design without any attempt to test any assumptions. A fairly high-level design of how chunks of an application will work with each other can be done very early (and should be IMO) but when you start getting down to designing every class and the methods in each one and detailed sequence diagrams of low-level interactions inside a logical abstraction, almost none of that will be correct at the end. Considering how long it takes to produce that kind of thing, it's extremely inefficient.
Again and again I see a lot of documentation about what the original design for a system was. But I hardly ever find documentation on what was actually implemented. The plans are really only useful up to the point you start implementing them. Knowing what was done is useful for the life of the system. Given this disparity, it seems crazy that, at least in my experience, the amount of effort applied to documenting the plan is so much more than the effort put into documenting the final system.
|
|