Back to resources

Principles of Successful Software Engineering Teams

Scaling Team
Deadlines
Internal Communication
Productivity
Team Processes

15 January, 2019

Bruno Miranda
Bruno Miranda

VP Engineering at Doximity

Bruno provides a list of items highlighting important principles of a successful team's philosophy.

Problem

No team is created equal. Establishing tenets to guide software engineering teams is vital to their success.

Lessons Learned

1. Shared Code Ownership There's is no "my code" or "your code", it's our code and we are responsible and accountable, in bad and good decisions. 2. Open Discussion Forum No question is off the table, no question is a bad question. Be it via email, async chat or any other medium, we strive to make everyone's voice heard. Never hesitate to ask questions. 3. Work/Life Balance The environment is fast paced, but we choose to be responsible about limiting work hours to 40 hours per week. Burnout is a serious issue — with deep and long-lasting ramifications — we must avoid it. 4. Write Reusable Tools And Re-use Writing reusable code takes more effort, more thought and more time. This is precisely why it is worth doing. One-off tasks are easily thrown together, which makes them easy targets for sloppy and dangerous code. 5. Document, Document, Document If you have to say something twice, it should be documented. We advocate using the Wiki religiously. When in doubt, search the wiki, the answer is probably there. If it's not, find the answer and make sure to document it there. 6. Prototypes are Not MVPs Be wary when building a prototype, if you have good reason to believe it will become an MVP ensure it is built as such. MVPs are well-planned, estimated, tested and designed from the ground up with a strong foundation for expansion. Prototypes are basic proof-of-concepts. 7. Leave Things Better Than You Found Them Challenge the status-quo, just because something was that way when you first saw it, does not mean it should remain that way. Software is constantly evolving, and so should we. Strive to not only clean up after yourself, but to leave things in a better state than first encountered. Over time, software builds technical debt, it's our duty to tackle the debt little by little, as we stumble upon it and pay it back. 8. Learn New Tools But Choose Wisely When To Use Them Be wary of shiny toys. Understand that when building production level software we must be cautious of untested new technologies. Although we are eager to stay ahead of the curve and find the best tool for the job, we must choose to adopt new technologies carefully. 9. Teach What You Learn Don't hoard knowledge. Share what you learn, even if you only think a few will be interested. We provide several channels for knowledge to be passed around, use them generously. Lunch & Learns are a great forum for knowledge sharing. Ensure you're following best practices and practicing what you preach. By teaching others, you empower them to make their own decisions and solve problems on their own. Be mindful that people learn at different paces. 10. Learn From Mistakes and Adapt Retrospectives allow us to look back, learn from our mistakes and improve things going forward. These honest sessions allow for positive and negative feedback to flow thru the team in a respectful manner. Issues are then addressed as action items shortly thereafter.

Discover Plato

Scale your coaching effort for your engineering and product teams
Develop yourself to become a stronger engineering / product leader


Related stories

Building and Maintaining Company Culture: How to Scale Teams Accordingly

26 May

Elwin Lau, Director of Software at Jana, advocates the importance of maintaining culture within a company when scaling teams.

Mission / Vision / Charter
Scaling Team
Building A Team
Company Culture
Collaboration
Onboarding
Sharing The Vision
Elwin Lau

Elwin Lau

Director of Software at JANA Corporation

Building and Maintaining Company Culture: How to Scale Teams Accordingly

26 May

Elwin Lau, Director of Software at Jana, advocates the importance of maintaining culture within a company when scaling teams.

Mission / Vision / Charter
Scaling Team
Building A Team
Company Culture
Collaboration
Onboarding
Sharing The Vision
Elwin Lau

Elwin Lau

Director of Software at JANA Corporation

How to Streamline Your Recruitment Process for Quick and Effective Hiring

26 May

Philip Gollucci, Director of Cloud Engineering at CareRev, describes a new method for hiring in a market climate that favors candidates instead of recruiters.

Scaling Team
Building A Team
Hiring
Philip Gollucci

Philip Gollucci

CEO/Founder at P6M7G8 Inc.

Managing Different Time Zones: Inclusive Collaboration Methods

19 May

Jonathan Belcher, Engineering Manager at Curative, shares an unknown side of synchronous communication tools and advises managers on how to handle a team that’s spread across the globe.

Remote
Internal Communication
Collaboration
Cross-Functional Collaboration
Jonathan Belcher

Jonathan Belcher

Engineering Manager - Patient Experience at Curative

Managing Remotely: Balancing Team Cohesion and Focus Time

26 May

Jonathan Belcher, Engineering Manager at Curative, explains how to balance team cohesion and individual focus time, tapping into his experiences of working remotely for seven years.

Remote
Micromanagement
Meetings
Internal Communication
Productivity
Psychological Safety
Performance
Jonathan Belcher

Jonathan Belcher

Engineering Manager - Patient Experience at Curative

You're a great engineer.
Become a great engineering leader.

Plato (platohq.com) is the world's biggest mentorship platform for engineering managers & product managers. We've curated a community of mentors who are the tech industry's best engineering & product leaders from companies like Facebook, Lyft, Slack, Airbnb, Gusto, and more.