Today while waiting in a line for a buffet, I had a thought. I wondered why they always serve a buffet when there are many people to feed.

Here I was in line with a bunch of professors and hungry grad (and potential grad) students. Everyone was getting hungry and impatient fast.

So I thought back to other similar experiences.

I have been doing a fair amount of traveling lately. Some of the hotels I stay at offer a complementary breakfast. And one popular option is to build a custom omelette.

The process goes something like this…

Would you like an omelette?

Sure.

What would you like on it?

What are the options?

Well… (and they read off a list of possible ingredients in an arbitrary order.) (and you have to wait until they finish.) (not to mention memorize the ingredients you want.)

Then you order.

They take the order back to the kitchen on a piece of paper.

The chef prepares the omelette and it brought to your table._

This works great for one or two guests. But what about when you have 100?

That is when this inefficient process breaks down.

This is similar to custom web development. By not having a proper set of guidelines and processes to drive your project workflow can really slow things down.

Let’s flashback to today, the buffet line example.

Here almost all the decisions have been made for you in advance. All you need to do when you get to the front is pick up a plate and go to the first item.

You only have to ask yourself one question. Do I want this item, yes or no?

There is nothing to memorize. You don’t have to wait for something to be prepared. No crazy list of options to memorize.

While standing in line I realized that this is the superior choice.

All I had to decide was what components, er… food, I wanted on my plate.

This is all because someone smart, the chef, spent some time to think about what patterns I would like to consume. Homemade pita chips. A samosa. Chicken Satay. It wasn’t arbitrary–it was a curated experience.

Build a design buffet for your engineers by creating a system of modular components. With this they can work faster, in parallel, plunking down the right components just as they need them. They should have to make ideally zero decisions. Just do they want the component, yes or no.

The next time you find yourself in a queue for food, put yourself in your developer’s shoes (have some empathy), and dream up that perfect design buffet.