What Makes a Great Software Engineering Team?
The people!
A technically strong team; Working on a testable outcomes; With short feedback cycles is the recipe for success in software!
I truly believe in that; though I am not the original author, I heard Uncle Bob say that many times, too, and read it in good books in different forms.
@ThePrimeagen seems to agree with that statement as well partially. The only occasion we have chatted on Twitter seems to have resulted from the conversation.
Since this seems to be an settled matter, maybe the more interesting questions are how can we create strong team?
1. Can we build strong teams from scratch? In fact, I have done this at least once. Around 2013, I led and built a team of junior developers who are now principals, staff, and engineering managers in various companies worldwide.
At that time, we hired talented young people and would battle-test them in challenging situations at a large ERP company (Teknisa), which led to the formation of a great team.
It took three years to assemble that team, hiring about ten people per year and promoting the most passionate and talented individuals. Three characteristics stood out in those individuals other than technical excellence: Ownership, Accountability, and Communication.
Finding that level of patience in today’s industry is hard. There are few opportunities to train individuals, and today’s market (at least the USA market) is only looking to hire senior developers.
2. Can we hire only experienced developers and assemble a strong team? That could be an option; the problem here is the cost. To put part of my 2013 team together again today would cost over 1M USD (for a team of ~5 people) a year only in salary, and to keep all of them excited, the thing we are working at would have to be quite challenging. This is possible, but it does require a multi-million dollar problem to justify the cost.
3. Can we strengthen an existing team of talented individuals and help most of them become top engineers? This may be the way to go. It may be the perfect balance between cost and results. Since I started working for USA companies around 2016, I usually joined already-formed teams or hired senior developers and trained them to master their weaknesses.
Acting as a mentor and as an example, creating a writing culture, attacking the most critical problems documenting the solutions and the process, setting up the right patterns to attack any problem are my strategies for achieving that propose.
My intention in this post is more to document the questions than to propose answers. I documented 3 possibilities to create strong teams. I am always learning and researching new ways to improve my teams and myself You can be sure I will share in this blog what I have learned in the future, thanks!
- What Makes a Great Software Engineering Team?
- Lessons for Software Developers from Ramon Dino's Result and the Arnold Ohio 2024 Event
- Consulting to Fix AI-Created Software May Be Our Next Big Opportunity
- The making of a software engineer (My personal take 16 years into it)
- Secrets for becoming a better developer in 2024
- Nun-db Chaos Testing with Docker and Toxiproxy
- My Thoughts about On-Call Compensation and Scheduling for Small Engineering Teams and Companies
- Turning Failures into Success: How Overcoming Challenges Fuels Software Engineer Growth
- Secrets for becoming a better developer in 2022
- Argo workflow as performance test tool
- How not to burnout when working on hard problems as a developer
- Are you working remotely? You should be ready to hit the road at any time in 2022
- Secrets to becoming a better remote developer 2021 edition
- Secrets I use to becoming a better remote developer
- Are you working remotely? You should be ready to hit the road at any time
- Productivity Trackers I use (as a developer working remote)