Re: So let's build a router
From: Robert C. Martin (unclebob_at_objectmentor.com)
Date: 09/21/04
- Next message: Universe: "Re: Why Software Is Bad and What We Can Do to Fix It"
- Previous message: Universe: "Re: dip Notions 2 Major Errors"
- In reply to: Jackson: "So let's build a router"
- Next in thread: Universe: "Re: So let's build a router"
- Reply: Universe: "Re: So let's build a router"
- Reply: Phlip: "Re: So let's build a router"
- Reply: Jackson: "Re: So let's build a router"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Date: Mon, 20 Sep 2004 18:55:17 -0500
On Mon, 20 Sep 2004 14:12:47 -0700, Jackson <spam@spam.com> wrote:
>Let's say you are in a startup that is making a router.
>You have a small hardware, software, and marketing group.
>What do you do now?
Good! Building conjoined hardware and software systems is something I
know a *lot* about. I did it for nearly twenty years.
>
>You just sit down and start coding?
Code what?
>Do you come up with a product requirements document?
At least a product vision statement. Something like: "This router is
for home use, it will handle DHCP, NAT, etc, etc, and should cost less
than $50. The incoming pipe will be no faster than T1. etc. etc."
>Do you do some sort of analysis?
That depends on what you mean be analysis. I think we want to do
enough to write that initial vision statement.
>Do you research your competition?
Yes, that would also be input into the vision statement.
>Do you investigate existing stacks and OSs?
Probably, though that needn't happen right away. We could decide on
those things a bit later. We could actually defer the OS decision for
several iterations, and the ISO stack could probably wait a while too.
>Do you try and size the amount of memory?
Memory is pretty cheap. It seems obvious that we could fit it in a
single RAM chip. The only variable is the size of the chip. So we'll
be careful as we write the code, and we'll let everybody know how big
the code is getting.
>Do you come up with a real time budget?
Not until we understand the real-time structure of the system. We
probably won't know that for several iterations.
>Do you think about the processor?
It'd be nice to know what the processor is. I think we should pick
one that's fast and cheap.
>Do you work with the hardware group?
Sure.
>Do you even
>have a hardware group until somebody has a story
>that says put a packet over an interface?
Of course. The hardware and software groups will work very closely
together. At first the H/W team will be prototyping boards and
devices that the software team will be using. Later they'll formalize
the hardware a bit more and get it ready for production.
>Do you look at security issues and standards?
Of course, though that can wait for awhile. Let's get the initial
functionality working first.
>
>Do you actually think about the million things
>you need to think about before even having a
>real place to start?
We have a real place to start. We can think about the million things
one at a time, in the order of their importance.
>
>I imagine you'll say all this stuff is
>done by the customer, so it isn't the
>concern of developers.
No it's the concern of the whole team.
>Part of the cursed BFUD process is often
>just this kind of creative work.
The creative work is fine. Doing it all up front is a fools errand.
>Someone has to do it
>and that someone is very often developers along
>with marketing (etc) because marketing can't possibly
>specify enough detail to create a router, for
>example.
Granted. I agree that the developers, (how & swab) must get deeply
involved with the specification.
>Often the developers in the project are domain
>experts and are the ones with the most technical
>capabilities to figure out what can be built.
True.
>Certainly at a high level this is negotiated
>with marketing, but many times only the developers
>can provide enough detail to provide meaningful
>input into any planning game.
True.
>And if there isn't enough quality input it may
>take a lot of work to figure out what needs to be
>done.
True.
>This work may feedback and change the higher
>levels which may flow back down again as potentially
>large changes elsewhere. It will be impossible to BFUD
>the stories.
True.
>It seems stuff is still just getting throw over the
>wall with no communication, it's just at the customer
>level, not with the analysts or architects. It's BFUD
>all over again, just at a different level.
I don't understand this statement. I've worked on lots of projects
like this before. You are right, the engineers always have
significant input to the requirements. However, it's still one team,
working to deliver a product.
>
>I think a lot of confusion comes from how
>restricted the role of the developer has become in
>XP.
People can play more than one role. There's no rule in XP that says
developers cannot also be part of the customer team. Often they are.
>Very often we developers have a lot more input and
>responsibility for the entire system.
True.
>In many industries
>it would be rare to get fed enough detail that could be
>used in a planning game. Developers often have responsibility
>for creating that level of detail as well.
True. But we can play multiple roles.
>So it may end up looking a little BFUDy, but really
>it's just reassociating developers with the part of that
>process that XP has dissociated.
I suppose you can look at it that way if you want. XP sets up a
simple symmetry between the role of the developer and the role of the
customer. This symmetry has to do with which role is responsible for
what. Customers are responsible for specification, evaluating
business value, and scheduling stories into iterations. Developers
are responsible for design, implementation, and estimation. This
division is useful, but does not restrict the individuals themselves
from playing multiple roles.
>You can't move complexity
>to another group, decrease communication about the product,
>and then declare victory. It's not really.
Granted. It's also not the XP way.
-----
Robert C. Martin (Uncle Bob) | email: unclebob@objectmentor.com
Object Mentor Inc. | blog: www.butunclebob.com
The Agile Transition Experts | web: www.objectmentor.com
800-338-6716
"The aim of science is not to open the door to infinite wisdom,
but to set a limit to infinite error."
-- Bertolt Brecht, Life of Galileo
- Next message: Universe: "Re: Why Software Is Bad and What We Can Do to Fix It"
- Previous message: Universe: "Re: dip Notions 2 Major Errors"
- In reply to: Jackson: "So let's build a router"
- Next in thread: Universe: "Re: So let's build a router"
- Reply: Universe: "Re: So let's build a router"
- Reply: Phlip: "Re: So let's build a router"
- Reply: Jackson: "Re: So let's build a router"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Relevant Pages
|