Nurturing High Performance Teams: Programmers, F1™ Pit Crews & Rugby Legends
#Note 1: Originally published via LinkedIn Pulse here
#Note 2: Feel free to connect with me on LinkedIn here.
Most programmers may in the early stages of their career, have had a comfortable working pattern where — at the most bare of minimums — solving for instance, data-driven problems, became a function of choosing the right:
- Data Sources
- Data Structures & Algorithms (that’s right Uni kids.. those CS/Eng classes may bore you to oblivion now, but they’ll eventually catch up to remind you one day that bunking them for beers wasn’t such a great idea after all..)
- Programming Language for Prototyping (usually straight through to Production)
- Stack Overflow for everything else and in between
That same working pattern would likely prioritize “make things work” over:
- “make things resource-efficient”, and
“beware of technical debt”
why do this:
when you can get away with doing this:
If you’ve graduated from those times, then you’re probably thinking this:
You may be wondering what all of this has to do with nurturing high performance teams.. keep reading💡
You see, the ‘bare minimum’ reference above is important for two reasons:
- Rarely if ever, will those bullet-points be so straightforward in industry (subject for another day warranting a post of its own I suppose).
- But more importantly, it’s this ‘bare minimum’ mentality that defines the professional character of such individuals over time (the real focus of this post).
Good programmers f.i. are often hard-wired for:
- Aggressively independent problem-solving; by necessity, not design (I need to fit 100 million integers into memory.. but I’ve only got 1 gig of memory!)
- Making the best use of available resources (god I hate those stack overflows, and what’s the deal with CPython’s GIL anyway.. I’m going Stackless.)
- Building new frameworks and tooling to bridge regressive voids (if it doesn’t work or doesn’t exist, I’ll just make my own.. no pasa nada)
- Having the tenacity to see difficult challenges through (bring on the Red Bull.. it’s going to be an all-nighter again folks!)
- Having the audacity to challenge the status quo (your ideas are great, but they’re so O(n) boss.. here they are in O(1), way better! *please don’t fire me 🙏*)
- Having the ability to codify, test and communicate positive change (we’ve been doing a, b and c.. but our findings suggest x, y and z drivers are neglected)
The traits above describe a high performance persona; welcome but free of any obligation, to code in any programming language.
For a good programmer (or any other professional), demonstrating high performance throughput is only one side of the coin: how it impacts their team’s throughput is what defines their prospects for scale 💡
Let’s crystallize that further below.
Take the example of an F1™ Pit Crew:
To the best of my knowledge, the team is composed of 6 key roles:
- Wheel Gunners
- Tyre Carriers
- Front Wing Men
- Front & Rear Jack Men, and
- Fire Extinguishers
Each of these individuals is highly trained in their craft, likely accumulated over years of intense training, field and track operations, assessments and constant reevaluation.
They are confident, ambitious, independent thinkers and thrive on enabling success.
They’re all also intimately familiar with the breadth and scope of their comrades’ roles, relying on them to execute efficiently so as not to compromise their own efficiency.
As such, they are trusted by their leadership to execute their craft to its fullest potential, working together towards the same target objective:
bringing the best of their combined selves to the car when it rolls into the pit.
They have strict directives to follow, but they can only do so if they’re given the trust, autonomy and resources they need to comply with those directives.
The Race Engineer is privileged to work with a team of such battle-tested skill; but he/she must do so in a way that doesn’t fracture the team’s morale nor effective throughput as a unit 💡
Looping back to the programming angle for a second:
Empowering good professionals to bring their best game to the field, will always pay higher dividends than staging the game for them in minute detail.
Publicly bench-marking their game then makes for healthy competition and growth both in the team and the organization.
One member’s performance gains breed gains in those of the others’, organically improving traction: win win for everyone involved.
So what do Good Programmers, F1™ Pit Crews, and the New Zealand All Blacks have in common, you ask? 🤔
They each have a high performance persona, tailored to their respective industries.
And in fact, by our revised definition earlier, Pit Crews and the New Zealand All Blacks are also programmers themselves, extremely good ones at that, living and breathing throughput.
The challenge for their respective managers, is to:
- Instill (not dictate) discipline, so as not to fracture team throughput
- Emphasize respect for the team’s individual and combined abilities
- Never micro-manage, but encourage a culture of throughput accounting
- Dance that tight rope between critical evaluation and much-deserved praise
- Never underestimate your team’s ability to help you evolve into a better Manager
Here’s what I’ve learned so far in my time on both sides of the aisle — about mining performance while maintaining team unity:
1) Balance Creativity with Discipline
- Always encourage (and actively challenge) your team to think outside the box.
- Fuel their tenacity and audacity. Always be open to sensible experimentation: don’t let your personal opinion on any matter guide the entire team’s efforts (a one way ticket to fractures in morale and effectiveness).
- It’s only when you empower their ability to do things differently, that you’ll have any shot at seeing excess returns towards set goals.
- Instill discipline, not by enforcement, but by cultivating a progressive culture where the team’s creativity is always in service to the organization’s vision, mission, strategic goals and objectives.
You’d be surprised how much you can learn from the very people you lead 💡
2) Balance Deadlines with Flexible Delivery
- High performance teams thrive in environments where they can bring the best of their existing selves to the table.
- Your job as a Manager, is to cultivate this environment such that the team feels a sense of ownership and autonomy, both in terms of creative expression and execution.
- Creativity requires time and breathing room. Depending on the initiatives in question, always agree scope and associated deadlines in consultation with the team, never on your own and/or in response to your own personal take.
- Make delivery flexible within reason. If you’ve done your job well in cultivating disciplined throughput accounting, your team will almost never come to you without evidence to support any delays or early delivery.
3) Instill values of Empathy, Compassion and Cohesiveness
- Actively exercising empathy is critical for maintaining team morale.
- It allows you as a Manager to understand performance bottlenecks (and even outright failures) from the team’s perspective, surgically evaluate the path to the why rather than dwell on the why itself.
- For instance, if you see technical disparity between programmers in the same team (e.g. some more performant than others), address it by organizing a workshop where the more performant educate the less performant on how to be more performant *mouthful*
- It replaces anxiety and stress with a culture of taking remedial next steps more effectively.
- Your team’s success is determined largely by how well it can come together for both its own, and the good of the organization. Part of your job as a Manager therefore, is to make sure that you place the right team member in the right position, doing the right things, at the right time.
- This doesn’t happen overnight, but it absolutely needs to happen — for it is this that will ultimately reflect considerably on team throughput, and your ability to leverage the team as a whole for the benefit of the entire organization.
4) Recognize and Pay Tribute for Accolades & Achievements
- Regularly recognizing achievements and paying tribute to the individuals concerned in a way that makes it evident that it’s a win for the team, is also critical for team morale.
- Always remember that the team is composed of human beings with hearts, minds and souls.
- One of your most important jobs as a Manager is to extend respect to your team mates for their contributions, regardless of whether said contributions were successes or failures.
- Make your team feel respected and valued — they’re here for a reason, make that known.
- Always check your tone of voice: never come across as dictatorial, dismissive or irritated — there is simply no excuse for it, and will never take you nor your team anywhere.
- When it’s time to rejoice, go out of your way to make them feel special — because if you’ve done your job right in cultivating the environment they need to perform, they are special if they’re still here and weren’t fired along the way 💡
- Lastly, in times of failure, remember that you’re not the only one witness to it — they likely experienced it before you. So pick them up when you see them on the ground, make them feel you’re approachable, help them understand what happened, and take it from there.
So if you’re still with me..
What do Programmers, F1™ Pit Crew and the New Zealand All Blacks have in common? 🙂
If this fragmented narration of experiences made a positive contribution to your day..