Visual Basic

Understanding Software Development by Dining Out

You know, it's a privilege to watch these people work-in fact the whole organization at work is amazing to watch-but the chef's bar is something special. Many a time I've sat there wishing that I could get a software team to work together half as well as the chefs do, or even that I could put together applications from readily prepared components quite so easily.

You see, I reason that I should be able to do this because the two industries have some very strong similarities. Think about it. A restaurant has a development team: an architect who plans the way it's going to be (the head chef); a technical lead-cum-project manager (whoever is the main chef for the evening); and a whole bunch of developers in the guise of sous chefs. The junior developers are the general helpers and dishwashers. In the front office are customer service representatives at the reception desk and perhaps the sales reps are the waiters and waitresses-all working on commission, mostly. Of course, a management team is trying to keep up the quality, running the whole operation and trying to make a profit. (The Brooklyn has about 50 staff in all.)

Outside the organization are a whole bunch of suppliers bringing in myriad raw and cooked components ("constituents" might be a better term), all of which have well-defined interfaces and some of which must be prepared further before they can be assembled properly to form the end product. And they do it so well, too! At every lunch and dinner they take orders from customers and rapidly create meals, using what appears to be a true Rapid Application Development (RAD) approach, They also change the menu monthly, so it wouldn't be true to say, "Well, that's fine for them because they're always producing the same thing," because they're not. So, I ask myself, why can't our industry do its thing just as easily and efficiently?

On one visit I got to chatting with Tony Cunio (head chef and co-owner). I wanted him to explain to me all the hows and whys of his trade, to explain how they consistently manage to produce the goods and yet maintain such high quality. I told him I'd like to be able to do the same. It was an interesting conversation because we each had a very strong domain vocabulary that didn't necessarily "port" too well. (For me, port is a process; for Tony, it's a drink.) It was frustrating at times-you ought to try explaining object-oriented software construction to a chef sometime!

About people, Tony says to look for people with a strong team spirit and build a strong team around you. For him, staff selection is where the quality starts. He also says that the staff have to work well under pressure and constantly stepping on each other's feet, because they practice "full-contact cooking" at The Brooklyn. Another of Tony's passions, aside from food and cooking, is his commitment to a coaching style of management. Now coaching is a subject that I'm not going to get into deeply here, except by way of trying to define it for you.

Coaching is all about a supportive relationship between the coach and the player and a way of communication between the same. The coach doesn't pass on facts but instead helps the player discover the facts, from the inside and for himself or herself. Of course, the objective is to better the performance of the player. With coaching, perhaps, how this is achieved is what's different from the normal, more traditional style of management. You know the adage-teach me and I will listen, show me and I will learn, let me do and I will understand. Well, coaching is a bit like that, except we'd probably replace that last piece with something like, "Counsel me, guide me, and trust me, but overall, let me discover, for then I will understand and grow." At TMS, we try to coach instead of manage, but I'd say that we're still learning the techniques. So far, though, the indications are good.

What else does Tony have to offer by way of advice to an industry that is still, relatively speaking, in its start-up phase? Well, Tony always makes sure that all his staff have the right tools for the job. After all, they can't give 100 percent without the right tools, so if they need a new filleting knife, they get one. Sounds reasonable, of course, but drawing the analogy back to the software industry, how many developers can say that they are provided with the right tools for the job? Not the majority, that's for sure. Tony says that everyone needs to be fast and technically good. Again, ask yourself how skillful and fast your average developer is-this comes straight back to your hiring practices. Tony also recommends giving people responsibility, accountability, and in making them "excuse-free," meaning there are no obstacles to being successful.

Tony is very clear about the procurement of constituents."[The suppliers] are here for us, we're not here for them. I expect a faultless delivery, on time and to standard." And if he has a substandard component delivered to his kitchen? "It would go straight back-no question, garbage in, garbage out." (See? Some terms span whole industries!) "I'd also have words with the supplier to ensure that it didn't ever happen again." And what if it did? "Easy. We'd never use that supplier again." How many of you have worked with, or are working with, substandard components-and, I might add, regularly paying for what are little more than bug fixes just to discover new bugs in the upgrade? When I told Tony about the way the software industry procures components that are inevitably buggy, he was simply dumbstruck!

I asked Tony how he goes about the assembly of an entity from its components. Funnily enough, Tony recommends using a methodology, a recipe, or a plan from which people learn-not too restrictive as to limit creativity and not so unencumbered that it lacks proper rigor and guidance. Could this be what we might call a coding standard? Combined with the coaching idea, this is surely a productive and enjoyable way to learn.

It seems to me that the fundamental differences between a cooking team and a software team are that

  1. We don't practice "full-contact development" <g>, and
  2. We take what we're given, accept it for what it is (most of the time, which is inappropriate and unsuitable), and nevertheless try and come up with the goods, on time and to budget! (See Chapter 17 for the hiring perspective.)

Yup, The Brooklyn has certainly taught me a thing or two about software development over the years. Talking to Tony reminded me of a saying that I first saw in Fred Brooks' Mythical Man-Month (usually called MMM), which came out in 1972. (The latest edition is ISBN 0-201-83595-9.) It's actually a quote from the menu of Antoine's Restaurant, which is at 713-717 Rue St. Louis, New Orleans, in case you're ever there.

"Faire de la bonne cuisine demande un certain temps. Si on vous fait attendre, c'est pour mieux vous servir, et vous plaire."

which means

"To cook well requires a certain amount of time. If you must wait it is only to serve you better and please you more."

Go visit The Brooklyn and Tony next time you're in Seattle, and see if you can figure out just how they "can" and we "can't." Maybe I'll see you there, or maybe you'll bump into Michael Jordan or some other famous regular. Perhaps you'll meet some notable Microsoft "foodies" there-who knows? Anyway, enjoy your meal!

To give you an idea of what's on on the menu and to round up this chapter, here's Tony's recipe for The Brooklyn's signature dish: Alder-Planked Salmon with Smoked Tomato and Butter Sauce. (By the way, the plank is made up of blocks of alderwood secured together using steel rods and nuts. A shallow depression is then formed in the block to hold the salmon during cooking.)

Northwest Alder-Planked Salmon with Smoked Tomato Butter Sauce

Ingredients:

  • Four 8 oz. salmon fillets (skinless)
  • Salt and pepper to taste
  • One seasoned alder plank (see below)
  • 8 oz. smoked tomato butter sauce (recipe follows)
  • oz. snipped chives
  • 1 oz. Brunoise Roma tomato skin

Preparation:

  • Make smoked tomato butter sauce according to recipe. Set aside in warm area.
  • Oven cook alder plank salmon fillets.
  • Serve 2 oz. smoked tomato butter with each salmon fillet.
  • Garnish sauce with snipped chives and Brunoise Roma tomato.
  • Serve!

Ingredients for Smoked Tomato Butter (yield 3 cups):

  • 1 oz. garlic, minced
  • Two smoked tomatoes (whole)
  • 1c. white wine
  • 2 tbsp. lemon juice
  • c. cream
  • 1 lb. Butter
  • tsp. seasoning salt (20 parts salt to 1 part white pepper)

Preparation:

Saute garlic in oil. Deglaze pan with wine and lemon juice. Add tomatoes and reduce to almost dry (approximately two tablespoons liquid). Add cream and reduce by half. Slowly incorporate cold butter. Season and strain. Hold in warm area until ready to serve.

Plank tips

This intriguing section might inspire you to build or buy your own wood plank!

About the wood Wood, when heated, can crack, but don't be alarmed-the steel rods and nuts are designed to prevent the plank from splitting. Make sure the nuts are screwed tightly against the wood, especially when your plank is new. The wood will slowly contract as you use it and any small cracks that develop will soon disappear.

It is especially important to season the plank when it is new. Pour one to two tablespoons of olive or vegetable oil in the hollowed oval of the plank and use a paper towel to rub the entire top of the plank, until it is lightly coated. Do not put oil on the bottom of the plank. After using your plank eight to ten times it will become well seasoned and it will be necessary to season it only on occasion.

To rekindle a stronger wood flavor after repeated use, lightly sand the plank inside the oval with fine sandpaper. Once the plank has been sanded, it should be treated like a new plank and oiled before each use until it becomes well seasoned. The bottom of the plank can also be sanded if you want to lighten the darkened wood.

Baking on wood Cooking on wood is a unique, natural, and healthy way of cooking. The wood breathes, allowing most of the juices to stay in the food, resulting in added moisture and flavor. You will find that fewer additives, sauces, or liquids will be needed. We use the plank as a beautiful serving platter right from the oven.

Preheating your plank is important so that the wood will be warm enough to cook from the bottom as well as the top. Place the plank on the middle rack of a cold oven and set to bake at 350 degrees (do not use the preheat setting). By leaving it in for 10 minutes the plank will be sterilized and ready for use. Enjoy using your plank to cook fish, poultry, meat, vegetables, and even bread.

Cleaning your plank Just use warm running water and a soft-bristled brush to clean your plank. You can use a mild soap if you want. It is easiest to clean the plank within an hour or so after use. Remember, preheating the plank before use will sterilize it.

Be careful! The plank absorbs heat and will be hot when used for cooking, so please use pot holders or oven gloves when handling it. While the plank is designed for baking, it is important to observe cooking times and the recommended temperature of 380 degrees.