I've written down some guidelines on how to be a good team of software engineers that I've learned over a decade, and I welcome your feedback.
1. The Mission of the Development Team
"As product engineers, we gain the trust of both internal and external customers by solving their problems with the right tools at the right time."
- External customers: Users of the service
- Internal customers: All company members who need the development team
- The emphasis is on the 'right timing' over the choice of the 'right tools'.
- Some problems require immediate resolution, while others do not.
It's crucial to judge when a customer's problem should be resolved and then choose the most appropriate tool for that timing. Through this, we aim to earn the trust of both internal and external customers.
Just as actors need an audience, product engineers need customers. We must focus on solving customer problems.
2. Values Pursued by the Development Team
To achieve the above mission, we uphold four core values:
- Respect
- This goes beyond just polite behavior. It means genuinely respecting each team member as a professional and a colleague.
- Avoid an implicit culture of "Anything goes as long as the goals are met" or "Rudeness is okay if you're technically skilled."
- Excellence
- Team members strive for high standards, not settling for mediocrity.
- Excellence means consistently choosing better solutions and striving for the best possible outcomes.
- Trust
- Building a relationship of trust within the team and with external/internal customers is vital.
- A lack of trust leads to distraction and inability to focus on the work.
- Execution
- Avoid overthinking and move swiftly into action, adjusting strategies as needed.
- An organization that executes well can thrive even with imperfect strategies.
3. Working Methods
The four values guide our approach to work:
- Acknowledging Others
- Everyone has passed technical and cultural interviews by the CTO & CEO. Assume that others are not less competent.
- Avoid phrases like "Don't you know this?" Promote psychological safety for honest discussions.
- Building Trust Capital
- Collaboration in a company context often requires building trust, not just winning arguments.
- Implement strategies, even if imperfect, and adjust together to strengthen trust.
- Spreading Positive Culture
- Be a good example so that others want to emulate you.
- Change is not about preaching but about spreading positive influence.
- Fact-based Reporting
- Avoid distortion of facts. Clear, fact-based communication aids in decision-making.
- Report what you see and hear accurately and distinguish between facts and opinions.
- Separating Mood from Work
- Don’t let personal feelings dictate your professional behavior.
- Maintain professionalism, irrespective of personal emotions.
- Not Being Fixated on Roles
- In a professional environment, addressing ambiguous areas is crucial.
- Take initiative to identify and solve problems, regardless of whether it's "your job."
- Choosing Appropriate Solutions
- Like a doctor, don't rush to solutions without understanding the problem.
- Assess whether an issue needs to be addressed and how, considering the time frame and necessity.
- Pursuing Technical Expertise
- Broaden your range of technical skills to choose the most appropriate solutions.
- Strive for continuous professional development and skill enhancement.
- Seeking Higher Productivity
- Continuously look for more efficient methods to solve recurring problems.
- Focus on improving skills, like writing test codes, to enhance productivity.