§ 1 — The Standard Team Practices
Purpose
Every engineering team is responsible for defining and clarifying their purpose. A purpose for every team is the compass that guides the team and ensures they stay on track. Engineering teams should not identify their purposes as means. For instance, making profits is not a purpose in and of itself. But rather means to achieve higher aspects and bigger goals. The ultimate purpose for every engineering team is to contribute to the survival of the humankind, its evolution and fulfillment. A team of engineers that keeps this purpose as their north star is destined to create the highest impact in their lifetimes and after. But the purposing process requires intentional, systematic and deliberate efforts to define the material purpose. For instance, a team of engineers working on a restaurant software have to incorporate the fact that building efficient software falls directly into warding off someone’s hunger. The human impact is what connects us at the end of the day. Purposing requires chasing the human impact regardless of whether it’s direct or indirect. For instance, building software for the turbo-machinery industry requires thinking about the people the software impacts. Building a simple human-machine-interface (HMI) will result in saving the workers who are going to be using the software’s time. Making their work environment safer. Expediting the production process therefore these workers become more productive. Any software out there built to cause humans harm in terms of destruction, spreading misinformation, scamming people or replacing their daily jobs with automated processes without offering an alternative is a software that aims to the destruction of the humankind, its devolution and depression. As software engineers we must always consider the human aspect of what we build. How does it largely impact beyond our immediate family but looking beyond that horizon and ensuring we are building healthy, productive software.
The purposing process requires these main aspects to be considered.
- Overall Purpose
- Scenarios
- Features
- User Stories
- Tasks
- Defects
The Standard Team is to clearly understand and define each and every aspect of the aforementioned points.
The Overall Purpose
The overall purpose of every project is what defines the boundaries of the project. For instance, if we are building a Bakery system, we need to define the following aspects:
- Nature of the business
- Goals of the business
- Future considerations
Business Nature
The nature of the business is what defines what the business is. Our Bakery system would define its nature as follows: A bakery is an establishment that produces and sells flour-based food baked in an oven such as bread, cookies, cakes, pastries, and pies.
Business Goals
Deliver the highest quality of bakeries to as many customers as possible.
Future Considerations
Expanding to become a nation-wide bakery business selling across the country.
These above three aspects should help the engineering team understand the nature, goals and potential growth of the business to ensure they build software that can support that expansion. For instance, knowing that one of the goals of the business is that it will be nation-wide will help engineers determine whether to build a simple POS system running as a desktop application or a web application with mobile app capability to help customers order on-the-go as fast and as simple as possible.
This chapter lives on GitHub, where it is written in the open. Read the source or suggest a change.