It’s really hard to build a great team. It can take years of hard work and an enormous amount of patience.
The reality is that there’s only a finite (read: small) number of truly amazing software developers in the world, especially compared to the opportunities and exciting projects available to them.
And yet, great teams are fueled first and foremost by great people. I often liken this to the aphorism “a rising tide lifts all boats.”
The original meaning of the phrase of course had nothing to do with software. It was the notion that focusing on growth of the overall economy’s GDP will necessarily have a positive impact on the incomes of individuals within that economy. Now, of course, it’s not always true, and I’m no theoretical economist, however the basic idea in spirit is an intuitively interesting one.
Applying this thinking to teams, it implies you should always strive to hire better and better people. That by doing so, the overall quality of the team will rise. Hiring better and better people has a nonlinear impact to the culture, because a team is not just a disjoint set of nodes, but is instead a fully connected graph of individuals who have conversations and collaborate together. A greater overall quality of the team means richer connections and more powerful, higher quality innovation and software. It means your chance of truly changing the world has grown nonlinearly as well.
I strive to only hire people who are better than me, and better than people already on the team, in some interesting dimension. As soon as you let your high standards drop even an ounce, the average drops and there is a cumulative snowballing effect. The connections grow weaker, and a nonlinear drop in quality and innovation will occur. This is my nightmare scenario because it can go downhill very quickly.
This applies to an entire company as well as individual teams. Including what can happen should the tides lower. The brain drain begins as a slow drip, and can quickly turn into a torrential downpour in an instant. It often starts from the top, because culture and hiring start from the top.
Now, I will be the first to admit that raising the tide is hard. Damn hard, in fact. I have another phrase which is “always be on.” That incredible engineer you worked with ten years ago just might be the piece missing in the puzzle today, and a good way to lift the boats. Opportunities come and go when you least suspect them, and you want those people to want to join your team. I have several individuals that literally took years of effort to recruit. And the wait was well worth it. This advice applies to individual contributers as much as it does to managers. You never know if in a few years, you’ll be leading a team, kicking off your own startup, or even just helping to make your own team a better place.
And as a leader you owe all of this to your existing team. By lifting the boats, your entire team benefits. They grow, learn new things, and reach new heights in their own careers.
Despite being hard work, this all pays off the end. There is very little I find more satisfying in life than building and growing a great team, seeing the year over year improvements, and creating amazing things together. Perhaps even more than coding. (gasp)