Recently a coworker of mine mentioned how they saw everyone on a team as family.
I nodded and acknowledged their statement but the comparison really bothered me. It irked me enough that I spent 3 weeks thinking about how a technical team can be equated to a family.
Then I decided to write this post you’re reading.
My main problem with the metaphor is that everyone has a perspective on what a family consists of. I started to think of both positive and negative adjectives associated to the word family like:
There’s nothing in either of those sets of adjectives, perhaps with the exception of trustworthy that I’d want in a team. Then I started to think - well what’s a concrete example of a good team?
Hollywood has presented us with a gamut of fictional teams but the one that most resembles a software development team to me is that of Christopher Nolan’s 2010 summer blockbuster Inception.
If you haven’t seen Inception then do yourself a favor and rent the movie, otherwise you’ve been forewarned that this post may or may not touch on various thematic elements that may be deemed spoilers. Additionally many of the references made to the movie won’t make any sense.
In short the film is about a fictional world in which information can be extracted or inserted via dreams. The specifics of how this is done isn’t really delved into - but beyond the myriad of comparisons to software development (e.g. dreams with dreams operating like a call stack) the makeup of the core Inception team really fascinates me.
The team is made up of the following :
- Cobb - The team lead or manager
- Arthur - An old school yet reliable engineer
- Eames - Another engineer - easily the most creative on the team
- Mr. Saito - The product manager/stakeholder
- Yusuf - A specialist
- Ariadne - A junior engineer concerned for safety of the team
- Mal - Cobb’s wife and while she isn’t exactly on the team, represents time in the form of scope creep or technical debt
Cobb is a complex character. As the team lead he’s clearly very experienced in what he does but often times puts the entire team at risk of losing their lives. While Cobb isn’t entirely forthcoming in nature he has a number of character traits that I think are critical in any technical manager.
- Readily accepts suggestions from their team
- Does NOT micromamage
- Delegates tasks accordingly
- Pulls the team together in times of difficulty or strife
- Admits when they’re wrong
When the team enters the first dream level and things go awry, various team members start to panic but Cobb rallies everyone together reminding them of the tasks ahead of them and that moving forward is the only way to get through the challenge ahead of them.
Cobb: “We have a way out. The kick. We just have to push on, do the job as fast as possible and get out using the kick.”
Eames: “Forget it. We go any deeper, we just raise the stakes. I’m sitting it out on this level.”
Cobb: “Downwards is the only way forwards. We have to carry on. And we have to do it fast.”
Technical teams often go through ups and down and I think a manager really shines when they can get their team to rally behind coming together and getting the job done in spite of the odds. I especially like that while Cobb is not readily willing to divulge the guilt associated with Mal to everyone on the team - he confides in Ariadne and accepts a healthy dose of real talk from her.
Managers need to be able to solicit feedback from everyone on the team regardless of their seniority. Cobb is a fantastic example of that.
Arthur strikes me as one of those old school engineers who basically do everything by the book. He’s the type of software developer that firmly believes you can’t mix object oriented and functional programming languages into one.
Saito: “Inception. Is it possible?
Arthur: “Of course not.”
Saito: “If you can steal an idea from someone’s mind, why can’t you plant one there instead?”
Arthur: “Okay, here’s me planting an idea in your head. I say to you, don’t think about elephants. What are you thinking about?”
He’s reliable, trustworthy and gets straight to the point. These are all fantastic qualities in a senior engineer. Where Arthur lacks in imagination - he definetely makes up for in reliability. While there is a bit of a rivalry between him and Eames he never lets it affect his judgement or get in the way of team work. I also like that he was willing to stick around in the second dream level as the manual “kick” for everyone on the team.
The point here is not to overlook someone who may appear to be boring and thorough. While they aren’t the ones developing the most amazing feature sets they are the ones that provide sustainability of the software developed by your team.
Eames is like an incredibly talented engineer that combines creativity with a healthy dose of pragmatism. He’s like a hipster when it comes to software development; someone who would implement a backend in Clojure and a frontend in React because all those other development stacks are too boring to deal with. He deals with the rivalry between himself and Arthur in a rather comical (albeit passive aggresive) manner but at the end of the day still respects what Arthur brings to the table.
Eames: Arthur? You’re still working with that stick-in-the-mud?
Cobb: He’s a good point man.
Eames: The best. But he has no imagination. If you’re going to perform inception, you need imagination.
Eames is that software engineer that will carry a vision or an idea and make it work. They’re the individual that will make a product owners dream come to fruition. The lesson here is that while it’s good to have creative engineers on the team - they need to understand that the world doesn’t revolve around them. Mutual respect is key here.
Mr. Saito is like a product owner that has a dream or vision and will spare no expense at reaching their goals. Initially both Cobb and Arthur are working a job to steal information from Mr. Saito and in spite of this, he still brushes this aside and hires Cobb to perform inception.
While I’m not suggesting you go out and steal trade secrets from your competitors - there’s something to be said about a stakeholder that is willing to work with engineers that worked on a competing product.
As I mentioned Saito will spare no expense in accomplishing his goals. Cobb discovers the most opportune time and location to perform inception on their target ; a 12 hour flight from Sydney to Los Angeles. Initially this presents a fairly glaring impediment - wherein in order to perform inception successfully the team would need 10 hours uninterrupted so as not to alert the rest of the flight crew and passengers to their activities.
Arthur: “It would have to be a 747.”
Cobb: “Why is that?”
Arthur: “Because in a 747, the pilot’s up top, and the first class cabin’s in the nose, so no one would walk through. But you’d have to buy out the entire cabin. And the first class flight attendant…”
Saito: “I bought the airline. It seemed neater.”
How many product owners do you know who remove a fairly massive blocker like that?
Yusuf (yes we share the same name) is basically the specialist or consultant providing some sort of hardware or software that acts as a force multiplier to the team. Cobb has access to the chemicals needed to induce a solid dream state but on Eames’s suggestion solicits a stronger solution from Yusuf.
Cobb: “As good as the real thing?”
Yusuf: “Better. Binds the dreamers tight. Let’s them dream as one. Makes it real.”
While Yusuf is the most inexperienced shared dreamer on the team his background as a dream inducing chemist is unparalleled. Herein lies an interesting point - sometimes a development team might need a subject matter expert that isn’t a developer.
Ariadne - I left the best for last. Out of all the characters, my most favorite. While Ariadne represents a junior engineer on the team - without her there would be no team - quite literally. After learning about Cobb’s guilt and inability to filter Mal from shared dreams she not only confronts Cobb but reminds him of the responsibility he has towards the rest of the team.
Ariadne: “Cobb, you might have convinced the rest of this team to carry on with the job. But they don’t know the truth.”
Cobb: “What truth?”
Ariadne: “The truth that at any minute, you might bring a freight train through the wall. The truth that Mal is bursting through your subconscious. And the truth that as we go deeper into Fischer, we’re also going deeper into you. And I’m not sure we’re going to like what we find.”
Ariadne: “This is not just about Fischer, it’s about you. Tell me what happened to you and Mal.”
Cobb: “You don’t have to do this for me …”
Ariadne: “I’m doing it for the others. They don’t know the risk they’ve taken coming in here with you.”
It’s interesting to note here that in spite of her being a junior member on the team, she not only agrees to help Cobb but also stands up to him purely for the safety and well being of her other team members.
Oh and lest we forget she’s also the architect of the three main dream levels. Selfless,courageous,outspoken and patently brilliant - who wouldn’t want someone like Ariadne on their team. Case in point - don’t underestimate what a junior engineer can bring to a team.
There are plenty of other fictional teams out that are prime examples of cohesive technical teams. The inception team just happens to be one of my favorite. While the team does end up in some fairly dicey situations each team member readily embodies core team values like, reliability, pragmatism, candor, dependability and mutual respect for what each individual brings to the team.