login


Google Sign inLinkedIn Sign in

Don't have an account? 

Principles of Successful Software Engineering Teams

Team processes
Internal Communication
Productivity
Scaling Team
Deadlines

15 January, 2019

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.


Related stories

What We Learned From Running Open Spaces
30 June

Jeff Foster, Head of Product Engineering, highlights key learnings from his experience of running open spaces and if and how it contributed to an increase in innovation.

Company Culture
Productivity
Impact
Jeff Foster

Jeff Foster

Head of Product Engineering at Redgate

Some Ideas for Breaking Down Silos In Your Organization
30 June

Jeff Foster, Head of Product Engineering, shares how he managed to break down silos in his organization by encouraging their employees to choose their own team.

Team reaction
Managing Expectations
Company Culture
Internal Communication
Collaboration
Productivity
Reorganization
Jeff Foster

Jeff Foster

Head of Product Engineering at Redgate

Prioritizing Tech Work vs. Product Work: The Incomplete Story
30 June

Jose Pettoruti, Director of Engineering at CurrencyCloud, shares some tips on how to prioritize and balance tech work with ever-emerging new features by working closely with the product team.

Collaboration
Internal Communication
Jose Pettoruti

Jose Pettoruti

Director of Engineering at CurrencyCloud

Asynchronous Written Communication: How to Make It Work
30 June

Jose Pettoruti, Director of Engineering at CurrencyCloud, describes how to handle multiple inputs from a number of people in an asynchronous mode.

Remote
Internal Communication
Jose Pettoruti

Jose Pettoruti

Director of Engineering at CurrencyCloud

Why Psychological Safety Is More Important Than Ever During the Covid-19 Pandemic?
30 June

Murali Bala, Director, Software Engineering at Capital One, discusses the importance of psychological safety emphasizing its unparalleled significance during the Covid-19 pandemic.

Remote
Feedback
Team reaction
Feelings aside
Company Culture
Internal Communication
Murali Bala

Murali Bala

Director, Software Engineering at Capital One

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.