betterscientificsoftware / bssw.io

Better Scientific Software Homepage
https://bssw.io
Other
139 stars 88 forks source link

Gathering thoughts for In-n-Out vs. McDonalds as an analogy for software design #1513

Open markcmiller86 opened 1 year ago

markcmiller86 commented 1 year ago

If you've never been to an In-n-Out burger restaurant, you probably won't appreciate the comparison with McDonalds especially as an analogy for software design.

I welcome anyone to add thoughts here about how the analogy may (or may not) work.

However, I've long had some thoughts on an article about software design using this analogy and I am just capturing here a number of thoughts about it.

  1. In-n-Out in just six states, McDonalds is international
  2. In-n-Out menu is 6 items, McD is 145
  3. In-n-Out sources all its own meat with head of cattle per pattie...McD's gets meats from many sources...1000 head of cattle in one pattie
  4. 7.5 mins wait from order to exit vs. ~5 McDs
  5. Real potates vs. potato-like-substance
  6. Hourly wage for in-n-out higher than mcds
  7. in-n-out employees get health benefits
  8. in-n-out privately owned
  9. 358 locations vs 38,000
  10. how often are mistakes made making orders?
  11. whats involved in buy-in to start a location?
  12. what is employee retention?
  13. what is employee training?
  14. what are customer ratings (of service, product quality, etc)

Consumers might be equiv to software users. Locations are like deployments, I guess. What are the ways in which these organizations might (need to) address inclusion? Different menu items and ingredients based on local culture (for McDs). Is product quality related to software quality? What are relative productivity metrics between the two?

All menu items are like software features.

If In-n-Out wants to sell breakfast sandwiches, the right answer is not to ADD those to In-n-Out burger but to instead create In-n-Out Eggs which specializes at selling egg-sandwiches. Instead of having all menu items under one roof, there are many roofs and each specializes in a particular kind of menu item. This latter notion is similar to Linux design philosophy of composible units. Instead of having a road way intersection with 4 restaurants on the 4 corners where every one of the 4 restaurants sells burgers, tacos, egg sandwiches and salads (McDs, Wendys, Burger King, Taco Bell), you have 4 corners where each is an In-Out-X where X is a burger, taco, egg sandwich, or salad. The customer base still gets access to the same menu items...they just need to decide to go to a different restaurant for a different kind of item.

What does performance look like (is that total througput of customers)?

McDs feels more complex than In-n-Out. What are the implications of that for McDs?

What do their "communities" look like?

In-n-Out restaurants are often designed for customers to actually see the food being cooked. In that respect, it might be a little more like open-source (transparent) whereas McD's is more proprietary.

What are all the ways that this analogy either does or does not map well onto software packages?

Some collected refs

JacksonBurns commented 1 year ago

Really interesting and engaging overall analogy! I particularly like the point about menu items as software features. Region-specific menu items could correspond to domain-specific features, seasonal menu items might also have some analogy.

I think the idea of 'performance' raises an interesting question, and the answer depends on priorities. Taking a purely profit driven perspective, McD's is certainly the more performant model. But (subjectively) INO might be producing customers that are more satisfied (albeit fewer of them). This could tie into the various perspectives on software design - a boutique program that solves one type of problem really well vs. a massive program that does a ton of things reasonably well.

rinkug commented 1 year ago

@markcmiller86 , I need to check "in-and-out"!

markcmiller86 commented 1 year ago

FRom a conversation with ChatGPT...

Using In-n-Out Burger vs. McDonalds as a metaphor for building software tools lean, mean and simple vs. building them big, complicated and with many features, can you identify five attributes about these fast food restraunts that inform software development practices?

ChatGPT Certainly! Here are five attributes of In-n-Out Burger and McDonald's that can inform software development practices:

Simplicity vs. Complexity: In-n-Out Burger: In-n-Out has a simple menu with limited options, focusing on core offerings like burgers, fries, and shakes. This reflects a lean and simple approach to delivering a focused product. McDonald's: McDonald's, on the other hand, has a vast and complex menu with numerous options, including burgers, sandwiches, salads, desserts, and more. This reflects a larger and more feature-rich approach. Attribute for Software Development: When building software tools, it's important to consider whether simplicity or complexity is more appropriate for the target audience and use case. In-n-Out's simplicity can represent the benefits of focusing on core features and delivering a streamlined user experience, while McDonald's complexity can represent the advantages of offering a wide range of features to cater to diverse user needs. Speed and Efficiency: In-n-Out Burger: In-n-Out emphasizes fast service and efficiency, with a limited menu and a simple ordering process. The focus is on delivering food quickly without compromising quality. McDonald's: McDonald's is known for its fast-food concept, but it often involves more complex operations due to its extensive menu. It may sometimes sacrifice speed for offering a wide range of choices. Attribute for Software Development: Similarly, when developing software tools, it's crucial to prioritize speed and efficiency. By adopting a lean and mean approach like In-n-Out Burger, developers can streamline the development process, prioritize essential features, and ensure a faster time-to-market. However, if a software tool aims to cater to diverse needs like McDonald's menu, it may require careful balancing of speed and complexity to maintain a satisfactory user experience. Customer Satisfaction: In-n-Out Burger: In-n-Out has developed a loyal customer base by focusing on quality ingredients, fresh food, and a simple yet reliable menu. It aims to deliver a consistently satisfying experience to its customers. McDonald's: McDonald's caters to a broader customer base with its extensive menu and global presence. While customer satisfaction varies, McDonald's invests in brand recognition and consistency across its franchises. Attribute for Software Development: Building software tools with a strong focus on customer satisfaction is vital. Just as In-n-Out Burger prioritizes quality ingredients, software developers should prioritize quality code and a robust user experience. McDonald's emphasis on brand recognition can be analogous to the importance of establishing a strong and consistent brand image for software tools, ensuring customer trust and loyalty. Iterative Improvement: In-n-Out Burger: In-n-Out has maintained a relatively unchanged menu for decades, focusing on perfecting its core offerings rather than introducing frequent changes. McDonald's: McDonald's frequently introduces new menu items, promotional campaigns, and adaptations to cater to changing customer preferences and market trends. Attribute for Software Development: In software development, it's essential to strike a balance between iterative improvements and introducing new features. In-n-Out's approach represents the benefits of refining and optimizing existing tools, while McDonald's represents the advantages of adapting and innovating to meet evolving user needs. Software developers should consider when to introduce incremental improvements to their existing tools and when to invest in new feature development. Scalability: In-n-Out Burger: In-n-Out Burger has limited its expansion to specific regions, ensuring quality control and maintaining consistency across its outlets. McDonald's: McDonald's has achieved global scalability, with a vast number of outlets worldwide, adapting to local tastes and preferences while maintaining brand standards. Attribute for Software Development: Scalability is a crucial consideration in software development. Just as In-n-Out Burger prioritizes quality control, developers should ensure that their software

markcmiller86 commented 1 year ago

More ChatGPT stuff...

Suppose I wanted to produce and sell tacos, burgers, fish-n-chips and sandwiches. Taking the McDonald's approach, I would create one menu and build restraunts that served all those items under the same roof. Customers would go to our one restraunt and decide what type of food they wanted. Taking the In-n-Out approach, I would create four menus and build four restraunts each of which specializes at producing either tacos (In-n-Out tacos), burgers (In-n-Out burgers), fish-n-chips (In-n-Out Fish-n-chips) or sandwiches (In-n-out Sandwiches). Customers would decide which type of food they wanted and then go to the appropriate restraunt. For me, as the owner, I am serving the same number of customers in either case. But, which approach will lead to higher quality experiences for my customers?

ChatGPT Choosing between the McDonald's approach of serving all food types under one roof or the In-n-Out approach of specializing in specific food types depends on various factors and considerations. Each approach has its own advantages and potential impact on the quality of customer experiences. Here are some points to consider:

McDonald's Approach (One Menu, One Restaurant):

Variety and Convenience: Offering a diverse menu at one restaurant allows customers to have multiple options in a single visit. It caters to a broader range of preferences and provides convenience for customers who may have varying food preferences within a group or family. Operational Efficiency: Operating one restaurant with a single menu can potentially lead to streamlined operations, inventory management, and staffing. This approach may allow for economies of scale and lower costs. In-n-Out Approach (Specialized Menus, Multiple Restaurants):

Focused Expertise: Specializing in specific food types allows each restaurant to focus on delivering high-quality and specialized products. With dedicated menus, the staff can become experts in preparing specific items, potentially leading to consistency and mastery in those particular food categories. Customer Experience: By having dedicated restaurants for each food type, customers who specifically desire a particular type of food can expect a focused and tailored experience. It may enhance the perception of quality, as customers associate the brand with expertise in their chosen food category. Ultimately, the approach that leads to higher quality experiences for your customers depends on factors such as your target market, local competition, customer preferences, operational capabilities, and the resources available to you. Conducting market research, analyzing customer preferences, and considering operational feasibility will help inform your decision. Additionally, seeking feedback from potential customers and conducting pilot tests can provide valuable insights into which approach resonates better with your target audience and delivers the desired quality experience.

User Is there a comparison here to, for example, the Linux and Windows operating systems?

ChatGPT Yes, there is a comparison that can be drawn between the approaches to food service and the Linux and Windows operating systems.

Linux and Windows represent two different philosophies in the world of operating systems:

Linux: Linux is an open-source operating system that follows a more modular and customizable approach. It offers various distributions (such as Ubuntu, Fedora, and CentOS) that specialize in different aspects, catering to specific user needs. Each distribution focuses on specific features, functionality, and target audiences, allowing users to choose the one that aligns with their requirements. Windows: Windows, developed by Microsoft, is a proprietary operating system that follows a more unified approach. It provides a single, comprehensive operating system that aims to serve a wide range of users and use cases. Windows offers a broad feature set, including extensive hardware compatibility and software support, providing a consistent experience across different devices. Similar to the In-n-Out and McDonald's comparison, the Linux and Windows approaches offer different trade-offs:

Customizability vs. Consistency: Linux's modular approach allows users to customize their operating system and select components tailored to their specific needs. This flexibility can lead to a higher degree of customization but might require more technical expertise. On the other hand, Windows offers a consistent user experience across a wide range of devices and software applications, but with limited customization options. Specialization vs. Broad Applicability: Linux distributions specialize in different areas, such as servers, embedded systems, scientific computing, or desktop usage. Each distribution aims to excel in its respective niche, providing targeted features and optimizations. Conversely, Windows aims to cater to a broad user base, providing a comprehensive operating system that is suitable for various purposes. Just as the choice between In-n-Out and McDonald's depends on factors like customer preferences and operational considerations, the choice between Linux and Windows depends on user preferences, technical requirements, and the specific use case at hand. It's important to evaluate factors such as customization needs, hardware compatibility, software availability, and support options when deciding between these operating systems, similar to how one would consider menu offerings, customer expectations, operational efficiencies, and target markets in the food service industry.

bernhold commented 1 month ago

Hi @markcmiller86 what are the takeways for scientific software developers? Is one approach better than the other? Do you have to pick one or the other? Are there implications from choosing one or the other approach that you might not immediately anticipate?