Wednesday, 4 July, 2012 — software business
My wife and decided on dinner out Tuesday night. We picked Olive Garden.
It's an easy option to nitpick. It's a chain. It isn't authentic Italian. The portions are ginormous. The pasta's overcooked. All true. We went anyway because we typically enjoy the heck out of the salad and salty breadsticks.
Now, we're both aware of the chain's ordinary course of business, but in many restaurants, minor customizations to the menu aren't problematic. So, we ordered two entrees. Capellini pomodoro for me, eggplant parmesan for Robin. Knowing what we would otherwise get, we specified al dente. Our server confirmed that as she put the orders into the system.
When the plates arrived roughly 15 minutes after our order was put in, it was evident by sight that the pasta was overcooked, entirely contrary to what we and our server understood we wanted.
How did this happen?
When we've gone to Olive Garden before and I've made a point of asking for al dente, the response I got from the server was effectively, “What's that?” So, when my order arrived overcooked, I assumed the server didn't relay my request to the kitchen. This time was entirely different. Our server made the specific point of confirming detail — acceptance criteria, if you will — as she put the order in.
My wife and I began speculation about why. We didn't get very far when our server returned a couple of minutes later and asked if the pasta was correct. We both said no. That's when we learned from our server that Olive Garden precooks pasta in the morning as part of the preparation process. When a dish is ordered, the pasta is warmed up for a minute or two in hot water.
We stopped. We both understand that running a restaurant means preparing the kitchen before opening. My expectation of early preparation is getting sauces made, vegetables cleaned and broken down, cooking stations prepped for use. I could understand making the lasagna early, then finishing in the oven when ordered. But precooking all of the pasta? Unbelievable. We were told it was in the interest of time. The kitchen is incredibly busy.
Here's what I understand about pasta. It's best fresh, but good pasta from dried is very doable. It's best served with some resistance in the noodle, that's the “to the tooth” of al dente. You can keep a boiling pot of water going in the kitchen and drop pasta a few minutes before the order needs to go into the window for service. The water's boiling, seasoned and ready and you can keep using that boiling pot of water all night. The actual noodle cooking doesn't take that long. What's key is knowing when to pull it.
John Siracusa, best known for exceptionally comprehensive reviews of Mac OS X releases on Ars Technica, wrote the following about cooking pasta:
As you gain experience, you’ll be able to tell when pasta is ready by “feel” (with a pair of tongs or a stirring spoon). But the old fashioned way is still the most reliable: taste a piece. Drop the pasta in the boiling water (see the next section for more on that), set a timer for 1-2 minutes less than the time on the box of your trusted dried pasta brand, and start tasting when it goes off.
There’s an old saying about cooking eggs: done in the pan, overdone on the plate. The same goes for pasta. It will continue to cook after you remove it from the pot, and even more so when you put it directly into another hot pan or combine it with other hot, moist ingredients.
Even setting aside the fact that, in the usual course of business, Olive Garden intentionally overcooks pasta, cooking a batch to customer taste shouldn't wreck the kitchen's timing. Might it take longer to order a fresh batch of pasta? With thinner pastas like the capellini I ordered, they're probably doubling the time they need to cook the dish by handling it twice. Two minutes in water might be over doing it. Capellini pomodoro is dead easy to make.
Strictly for sake of argument in this paragraph alone, let's accept precooking pasta as beneficial to the business overall. Is it then unreasonable to expect the kitchen to set-up a pot to boil water to accomodate variance? No. We've already established they already have water boiling to reheat previously cooked pasta.
Restaurants can't offer every variation of ingredients and cuisine. You're unlikely to get grilled cheese at a teriyaki house. Software also can't be all things to all people. At the same time, a smart business understands and embraces adaptation to meet customer needs. Restaurants handle this frequently to work with dietary restriction, food allergies or, as offered at Olive Garden, cooking a steak to order off of a standard of medium.
The desire to optimize is strong. Businesses have it with operating process. Chipotle precooks some of their meat in a central commissary, then ships it. Chain fast casual restaurants have plate plans, showing how every dish should be assembled at every restaurant, every time. Similarly software engineering focuses on optimizing process and development through use of automation, frameworks, higher-level languages and so on.
Just as there are known optimizations and patterns, there are also antipatterns, such as premature optimization. Premature optimization is a potential fit for my Olive Garden experience. But, what slays me isn't precooking the pasta. It's the fact that it somehow precluded me from getting what I asked for, even after it was implied I could have it. Smart, mature businesses don't screw that up.
Don't “save time” to deliver the exact wrong thing.