Brian Button - One Agile Coder

Blogging on all things .Net, C#, and Agile

My Links

Blog Stats

News

Archives

Post Categories

Agile Solutions Group

Blogs I read

Enterprise Library V1 Team

Eating Toast

There are two ways to break down a project (OK, there are probably more than two ways, but work with me here…)

One way is horizontally, meaning to implement an entire application layer at once. This would be like building the entire UI first, then the business layer, then the database, etc. The other way is to implement bits and pieces of all layers over and over, which is like taking a vertical slice through a program — a bit of UI, business logic, persistence, and so on. When people are first learning Agile, it seems to be difficult to get their heads around what taking a vertical slice actually means and why they would want to do it. They need everything built before anyone would possibly want to use their creation, so vertical versus horizontal doesn’t make any practical difference to them. It becomes my job to explain why vertical is superior in most casts. So I’m talking to a manager here, trying to find the right words to allow him to understand what I’m trying to say, and I stumble upon this metaphor, Eating Toast.

Let’s say we’re going to hold a dinner party and we’re responsible for preparing the feast. This act consists of 4 separate activities: Shopping, Cooking, Eating, and Cleaning. If I were to implement this task horizontally, I’d learn how to shop really, really, really well, and fill up my grocery cart as well as anyone else in the entire world. But, who cares? I can’t do anything with the food, so I’m left with this pile of food and no way to make use of it. Ah, so now I need to learn to cook. Now I can take the food I bought and do something with it — I can cook it! But, again, who cares? Having plates full of cooked food is not useful to anyone if you don’t know how to eat it. And the story goes on, through the eating and cleaning phases of our dinner project/party.

Now, an alternative way of looking at this is that, instead of learning how to be the world’s best shopper, cook, eater, and cleaner before I can actually have my party, maybe I can learn how to shop for, prepare, eat, and clean up from a simple meal of a piece of toast. If I want to throw a Toast-Only Dinner Party, I’m now set  I’ve learned how to buy, cook, eat, and clean toast. Next, I can learn how to cook waffles, followed by sandwiches, etc, each time making my potential dinner party more lavish and elegant. Dish by dish, I can learn how to expand my knowledge beyond Eating Toast.

After hearing this metaphor, the idea of vertical versus horizontal made sense. Does it make sense to you?

Yours, with crumbs,

bab

 

 

posted on Tuesday, August 01, 2006 12:30 PM

Feedback

# re: Eating Toast 8/1/2006 2:20 PM Alex Miller

Seems to me that another insight is that when you take a slice :) through the process, you have to trace intention backwards from the end goal. In other words, it doesn't matter how well you can shop if you don't know what you're making. You need to trace backwards from serving toast --> cooking toast --> buying bread.

Similarly, in a vertical slice of a system, you need to trace backwards from story --> acceptance test --> unit test --> code.

Hope that's not a crumby :) extension to the analogy.

# re: Eating Toast 8/2/2006 9:50 AM Sasa

Doesn't vertical partition amounts to partition in observable tasks (from the end user's point of view)?

# re: Eating Toast 8/13/2006 3:50 AM James Zhuo

Good analogy.

Speaking of which, using your so-called vertical approach (if i haven't mistaken the agile approach), how do you go about designing your tiered app, do you still create your data access layer (DAL) and business layer and if so how do you go about doing it?

I believe in agile approach and that it's in fact more efficient if you get the right balancing act. Having said that, i also believe in tiered app, and so recently i've used a different approach to create the DAL in such a way that the DAL can be implemented using the vertical approach, this way multiple developers can add to the DAL as neccessary without affecting each other. The way that the DAL was implemented was to use name space instead of classes to group data access methods. Each data access method is created as single class which have a 1 to 1 mapping to a stored procedure. I've found that this approach works really well in a multi-developer environment working on a business app, primary because it removes a lot of dependency on the DAL which multiple developers might be working on at the same time.

# re: Eating Toast 8/15/2006 7:03 AM Brian Button

Sasa,

Yes, vertical partitions are, by definition, things the user can see. That's a big part of why they're so valuable. Since they can see them, they can almost immediately validate that what you're building matches what they think they're asking for.

If you build internal layers of your application for a long time and don't show the user anything, you're depending on their faith in you to keep funding your project, and you're depending on your luck to ensure that you're actually building the right thing.

bab

# re: Eating Toast 8/15/2006 7:06 AM Brian Button

Yes, I still do create those layers. They generally come about due to refactoring and paying attention to the Single Responsibility Principle.

I like your idea about how to split up the DAL into smaller classes, my only fear about it is that it might be difficult to find the exact method that you need. The reason we put related things into classes is to help us find them when we need them. If we're operating on a customer, then chances are we will need several operations on that same abstraction. By splitting them out, it seems that it might be harder to find the right one at the right time. Or it may not, since I don't see your code.

Also, in a smaller team, this approach may be unnecessary, since you'll all be co-located.

bab

# re: Eating Toast 8/22/2006 2:42 AM Sasa

Brian,
Yes, this is how I understand it. The reason I asked is, because I wandered why is the metaphor needed.

Your explanation in response to my original comment is very clear, simple and non techie. I would expect that someone from the upper management should be able to comprehend and realize such explanation.

Sasa

# A Great Metaphor 8/25/2006 3:16 PM Bryan Corazza BizTalk

I was doing what I typically do in my very small amount of down time I was reading my blog feeds from...

# re: Eating Toast 10/4/2006 5:13 AM depde,dop

http://www.kokoom.com/video-sexy/annonces-femmes-sexy-chatte-rasee-photo.html MNL1 http://www.kokoom.com/video-sexy/annuaire-sexe-gratuit-arabe-beurette.html MNL2 http://www.kokoom.com/video-sexy/blonde-a-forte-poitrine-gros-seins-asiatique.html MNL3 http://www.kokoom.com/video-sexy/charmes-asiatiques-et-video-sexe-de-femme-nue-asiatique.html MNL4 http://www.kokoom.com/video-sexy/chat-rencontre-femme-coquine-sexe-gratuit.html MNL5 http://www.kokoom.com/video-sexy/collegienne-nue-clitoris-vagin-culotte.html MNL6 http://www.kokoom.com/video-sexy/coquine-partouse-suceuse-amateur-amatrice.html MNL7 http://www.kokoom.com/video-sexy/defonce-sodomie-violent-photo-porno-anal.html MNL8 http://www.kokoom.com/video-sexy/domination-feminine-dominatrice-video-masturbation-clitoris.html MNL9 http://www.kokoom.com/video-sexy/double-penetration-anale-sexe-gratuit.html MNL10 http://www.kokoom.com/video-sexy/dvd-lesbienne-cul-de-femme-chatte-de-beurette.html MNL11 http://www.kokoom.com/video-sexy/echangisme-partouze-gang-bang-hard-video.html MNL12 http://www.kokoom.com/video-sexy/extrait-video-penetration-anale-vaginale.html MNL13 http://www.kokoom.com/video-sexy/extrait-video-porno-telechargement-photo-amateur.html MNL14 http://www.kokoom.com/video-sexy/faire-plaisir-sexe-masturbation-teen-dildo.html MNL15 http://www.kokoom.com/video-sexy/female-ejaculation-squirting-video.html MNL16 http://www.kokoom.com/video-sexy/femme-mature-sexy-salope-mere-de-famille.html MNL17 http://www.kokoom.com/video-sexy/femmes-matures-et-videos-gratuites.html MNL18 http://www.kokoom.com/video-sexy/femmes-nues-photos-femmes-gros-seins.html MNL19 http://www.kokoom.com/video-sexy/femme-soumise-gratuit-adultes-amateur.html MNL20 http://www.kokoom.com/video-sexy/femme-super-sexy-et-super-bonne.html MNL21 http://www.kokoom.com/video-sexy/film-porno-amateur-photo-gratuite-sexe.html MNL22 http://www.kokoom.com/video-sexy/films-porno-gratuit-et-photos-salopes.html MNL23 http://www.kokoom.com/video-sexy/free-masturbation-movies-free-female-masturbation.html MNL24 http://www.kokoom.com/video-sexy/galerie-de-lesbienne-et-femme-nue-gros-seins.html MNL25 http://www.kokoom.com/video-sexy/galerie-images-sexe-gratuit-et-video-porno.html MNL26 http://www.kokoom.com/video-sexy/galerie-photo-et-video-de-cul-gratuit.html MNL27 http://www.kokoom.com/video-sexy/galerie-photos-gratuites-gros-culs.html MNL28 http://www.kokoom.com/video-sexy/galeries-photos-sexe-de-jeunes-femmes-nues.html MNL29 http://www.kokoom.com/video-sexy/infirmieres-sexy-lingeries-fille-nue.html MNL30 http://www.kokoom.com/video-sexy/jeune-pucelle-grosse-anus-gratuit-femme-gros-cul.html MNL31 http://www.kokoom.com/video-sexy/jeune-pute-et-lesbienne-sexe-anale-photo-beurette.html MNL32 http://www.kokoom.com/video-sexy/les-plus-beaux-clitoris-gros-plan-vagin.html MNL33 http://www.kokoom.com/video-sexy/live-show-sexe-gratuit-webcam-livecam-liveshow.html MNL34 http://www.kokoom.com/video-sexy/partouze-amateur-nature-gratuit-gang-bang.html MNL35 http://www.kokoom.com/video-sexy/photo-beurette-salope-et-video-porno.html MNL36 http://www.kokoom.com/video-sexy/photo-double-penetration-anale-site-amateur-sexe.html MNL37 http://www.kokoom.com/video-sexy/photo-et-video-porno-et-sexe-chatte-blonde.html MNL38 http://www.kokoom.com/video-sexy/photo-femme-nue-gratuite-sexe-video-gratuite.html MNL39 http://www.kokoom.com/video-sexy/photo-gratuit-suceuses-salope-bites.html MNL40 http://www.kokoom.com/video-sexy/photo-porno-gratuite-sexe-anal-sodomie.html MNL41 http://www.kokoom.com/video-sexy/photos-amateur-sexe-gratuit-et-video-salope.html MNL42 http://www.kokoom.com/video-sexy/photos-belles-femmes-et-video-filles-chaudes.html MNL43 http://www.kokoom.com/video-sexy/photos-chatte-et-vagin-poilu-gratuit.html MNL44 http://www.kokoom.com/video-sexy/photos-de-jeune-femme-chaude-et-video-sexe.html MNL45 http://www.kokoom.com/video-sexy/photos-de-jeunes-femmes-asiatiques-nues.html MNL46 http://www.kokoom.com/video-sexy/photo-sexe-hard-et-video-gratuite-porno.html MNL47 http://www.kokoom.com/video-sexy/photos-femmes-matures-et-porno-vieille-femme.html MNL48 http://www.kokoom.com/video-sexy/photos-fist-fucking-gratuites-videos-bdsm.html MNL49 http://www.kokoom.com/video-sexy/photos-gratuite-fesses-et-femme-nue.html MNL50 http://www.kokoom.com/video-sexy/photos-gratuites-ejaculations-faciales.html MNL51 http://www.kokoom.com/video-sexy/photos-lesbiennes-gratuites-et-videos-lesbienne-gratuit.html MNL52 http://www.kokoom.com/video-sexy/photos-porno-salope-amatrice-sexe-beurette-arabe.html MNL53 http://www.kokoom.com/video-sexy/photo-travestis-annonce-rencontre-transexuels.html MNL54 http://www.kokoom.com/video-sexy/photo-vieille-salope-gratuit-et-jeune-pute.html MNL55 http://www.kokoom.com/video-sexy/porno-amateur-gratuit-et-couple-echangiste-amateur.html MNL56 http://www.kokoom.com/video-sexy/porno-gay-gratuit-et-photo-sexe-hard.html MNL57 http://www.kokoom.com/video-sexy/porno-photo-gratuit-ejac-fellation-mature-sperme.html MNL58 http://www.kokoom.com/video-sexy/recits-histoires-erotiques-dominatrice.html MNL59 http://www.kokoom.com/video-sexy/sexe-asiatique-et-photo-gratuite-sodomie.html MNL60 http://www.kokoom.com/video-sexy/sexe-asiatique-gratuit-arabes-salopes-sexe-anale.html MNL61 http://www.kokoom.com/video-sexy/sexe-beurette-marocaine-video-photo-femme-arabe.html MNL62 http://www.kokoom.com/video-sexy/sexe-blonde-gratuit-video-jeune-hot.html MNL63 http://www.kokoom.com/video-sexy/sexe-cul-anal-fellation-ejaculation.html MNL64 http://www.kokoom.com/video-sexy/sexe-gratuit-sodomie-avec-photo-double-defonce-anale.html MNL65 http://www.kokoom.com/video-sexy/sexe-hard-jeune-chatte-lolita-gratuit.html MNL66 http://www.kokoom.com/video-sexy/sexe-live-baise-direct-photo-et-video.html MNL67 http://www.kokoom.com/video-sexy/sexe-photo-porno-amateur-gratuit-sperme-site-de-cul.html MNL68 http://www.kokoom.com/video-sexy/show-live-gratuit-et-webcam-sexe.html MNL69 http://www.kokoom.com/video-sexy/site-de-sexe-gratuit-et-video-porno.html MNL70 http://www.kokoom.com/video-sexy/site-perso-amatrice-gratuit-cul-black.html MNL71 http://www.kokoom.com/video-sexy/site-perso-galeries-photos-sexe-gratuites.html MNL72 http://www.kokoom.com/video-sexy/site-porno-gay-photos-beaux-mecs-video-homo.html MNL73 http://www.kokoom.com/video-sexy/site-rencontre-homme-femme-amour-humour.html MNL74 http://www.kokoom.com/video-sexy/site-sexe-arabe-gratuit-beurette-arab-girl-arabsex.html MNL75 http://www.kokoom.com/video-sexy/sodomie-sans-douleur-comment-pratiquer-la-sodomie.html MNL76 http://www.kokoom.com/video-sexy/soirees-celibataires-voyage-rencontre-annonce.html MNL77 http://www.kokoom.com/video-sexy/telechargement-manga-video-porno-free-hard.html MNL78 http://www.kokoom.com/video-sexy/telecharger-extrait-video-sexe-gratuit-mpeg.html MNL79 http://www.kokoom.com/video-sexy/video-de-cul-et-photo-gratuite-de-cul.html MNL80 http://www.kokoom.com/video-sexy/video-de-secretaire-en-tenue-sexy.html MNL81 http://www.kokoom.com/video-sexy/video-de-sexe-gratuit-et-photo-porno.html MNL82 http://www.kokoom.com/video-sexy/video-et-galerie-photo-sexe-gratuite.html MNL83 http://www.kokoom.com/video-sexy/video-gratuite-de-suceuse-avaleuse-porno-amateur.html MNL84 http://www.kokoom.com/video-sexy/video-gratuite-fellation-sperme-dans-la-bouche.html MNL85 http://www.kokoom.com/video-sexy/video-masturbation-feminine-de-belle-blonde-et-photo-sexe.html MNL86 http://www.kokoom.com/video-sexy/video-orgasme-photos-gros-penis-en-erection.html MNL87 http://www.kokoom.com/video-sexy/video-sexe-black-arabe-photo-porno-beurette.html MNL88 http://www.kokoom.com/video-sexy/video-sexe-et-photo-porno-dvd.html MNL89 http://www.kokoom.com/video-sexy/video-sexe-gros-seins-naturels-big-tits.html MNL90 http://www.kokoom.com/video-sexy/videos-gratuites-fellations-telecharger.html MNL91 http://www.kokoom.com/video-sexy/video-suceuse-de-vicieuse-et-plaisir-orgasme-photo.html MNL92 http://www.kokoom.com/video-sexy/voyeur-sexe-gratuit-et-photo-voyeurs-amateur.html MNL93 http://www.kokoom.com/video-sexy/webcam-lesbienne-et-video-gode-gratuit.html MNL94 http://www.kokoom.com/video-sexy/webcam-sexe-video-hard-et-photo-porno.html MNL95

Title  
Name  
Url
Spam Protection:
Enter the code you see:
If you can't read it, click your refresh button to get a new image.
Comments