And so we come to the last chapter of Restuarants at the end of the Web. As I stated in the first post, the intent is to provide a framework for talking about the differences between the "factory" approach and how we do things today in the software biz.
I'll follow this up with a recap and forward looking view in a few days but for now... Welcome to Factorio Softwario!
Scenario: You’re hungry so you go to a DOMAIN SPECIFIC restaurant that advertises they serve the EXACTLY the kind of food you want to eat.
Let's look at the process we observe at Factorio Softwareio.
Going to Factorio Softwareio is like something with which you are mostly likely very familiar, but unlike the way almost everyone develops software: your favorite fancy restaurant.
They cook (mostly) one style of food and they offer predictable, consistent service, consistent product and you go away happy.
Factorio Softwario’s Motto: We offer the finest cuisine prepared to order from our world-famous recipes
- You are hungry for a particular kind of meal
- The waiter brings you a list of what they offer (a menu) and then gives the you time to review them.
- You then order from the menu (perhaps with some minor customization (unless you’re a rock star in which case you don’t read the menu, but hey an analogy can't cover every case, right? J))
- The waiter returns to kitchen and gives the order, in mutually understood kitchen jargon (aka a Domain Specific Language), to cook who:
- Selects the ingredients which are needed (he probably knows them by heart because the recipes were pre-determined after menu was created)
- Uses standard tools with well-known process to build meal.
- May delegate preparation of side-dishes to assistant chef #2
- May use prepared sauces or mixes (if it’s a mid-scale restaurant) from downstream members of the supply chain
- Applies customization as necessary: Each meal is still unique but built from items that for which the chef has extensive experience (aka Domain Specific Knowledge)
- Uses customer-honed experience to prepare final meal in appetizing ways (taste, smell, visual presentation)
- The waiter brings food from kitchen to you
- Generally, with few exceptions, if the chef is good and the menu specific (aka filled with domain experience) the your reaction is one of delight
- Occasionally, you may request customization, add-on items (condiments) and in the rare case completely reject the order but this is very rare
- BOTTOM LINE: You are much happier than if you had made the meal for yourself!