Applying the Bear's 'Non Negotiables' in Software Engineering
- 4 minsIn FX’s The Bear, we follow Carmy Berzatto, a talented Chicago chef who takes over his family’s struggling restaurant. Amidst the chaos of the kitchen, Carmy introduces a set of guiding principles known as the “Non-Negotiables.” These principles are not merely rules but are foundational values designed to bring order, discipline, and excellence to a high-pressure environment. Each principle aims to foster a culture of respect, precision, and teamwork, ultimately transforming the restaurant’s chaotic operations into a streamlined, efficient operation.
While The Bear is set in a high-stress kitchen, the underlying principles Carmy outlines are surprisingly applicable beyond the culinary world. For software engineers and development teams, the challenges of maintaining quality, fostering collaboration, and managing complex projects can be just as intense. Whether you’re dealing with tight deadlines, debugging code, or coordinating with multiple team members, the values espoused in Carmy’s Non-Negotiables can provide a valuable framework for improving both team dynamics and project outcomes.
In this blog post, we’ll take a closer look at some of Carmy’s Non-Negotiables and explore how these kitchen-tested principles can be effectively applied to a software engineering context. From the importance of respect and clear communication to the pursuit of excellence and the need for adaptability, we’ll examine how adopting these principles can help software teams achieve greater efficiency, collaboration, and overall success.
-
Respect everyone in the kitchen.
Respect is foundational in any collaborative environment. This means valuing everyone’s contributions, listening to different perspectives, and fostering an inclusive atmosphere. Respect builds trust, encourages open communication, and ultimately leads to better decision-making. Teams often consist of varying hierarchy levels, skill levels, and experience levels, but respect for each other’s work is a fundamental part of a healthy work environment.
-
No shortcuts.
In software development, taking shortcuts often leads to technical debt, bugs, and instability. Adhering to best practices, writing clean code, and thoroughly testing are all critical. Just like in the kitchen, where shortcuts compromise dish quality, in software, they compromise the quality and reliability of the product. While not every cut corner leads to dire situations, a culture where they are the norm is sure to cause issues.
-
Own your mistakes.
Blameless work culture is not a new concept in software or many other industries. Owning up to them, whether it’s a bug introduced in the code or a misjudgment in a project timeline, is crucial. Taking responsibility not only helps in resolving issues quickly but also builds a culture of accountability and continuous improvement. And fostering an environment where people feel safe and encouraged to own up to mistakes is crucial to ensure that they can be learning opportunities.
-
Clear communication is key.
With so much business being global and asynchronous in nature, it has never been more important to be clear when communicating to others. Taking into account different learning styles, language proficiencies, accessibility, and cultures all help to ensure that we are properly conveying our ideas. Especially in technology, while certain words may be synonyms in everyday langauge, similar words can often convey completely different concepts depending on context.
-
Always break down boxes.
If produce boxes are technical debt, then we should strive to always break them down.
-
Take initiative.
Proactive team members drive projects forward. Whether it’s suggesting improvements, volunteering for tasks, or addressing issues before they escalate, taking initiative can make a significant difference in a project’s success.
-
Collaborate effectively.
Collaboration is at the heart of software engineering. Effective collaboration means working well with others, sharing knowledge, and contributing to a shared goal. Code reviews, design feedback, and general Q&A require give and take from the whole team for everyone to succeed.
-
Keep learning.
The tech industry evolves rapidly, so continuous learning is essential. Encouraging a culture of learning, whether through formal training, conferences, or self-study, ensures that the team stays ahead of the curve.
-
Practice humility.
Humility allows for growth. In software engineering, it means being open to feedback, acknowledging mistakes, and being willing to learn from others no matter what title you have. Humility fosters a culture of continuous improvement. We all make bugs, and we all fix them too.
-
Be proactive.
Being proactive means anticipating problems before they arise, taking action to mitigate risks, and continuously improving processes. It’s about not waiting for things to go wrong before making things right. It is almost always better to spend the extra time planning for reliability and supportability than having to deal with issues in production.