Following on from my take on phone interviews, I want to offer an insight into something that i'm pretty passionate about, something that employers should think about before any face to face interview, especially when putting together new teams; I want to take a look at how you build a truly successful software development team.
I've been thinking about an analogy around this for a while and I can't get out of my head the concept of software teams, much like football teams (or any sports teams), have various styles of players, or in our case; various styles of developers.
I came to this conclusions because, my overriding skills lie in leading software projects and getting applications to market. I say this with some modesty, being good at this and focusing on these skills will always come at a detriment to other aspects that may be desirable within a successful team.
So what comprises a good software development team? What compromises a good team in any situation? Well, we could mention collaboration, teamwork, communication, understanding? But all of these things only really come into play once the team is together.
The core basis of any team is balance, each position that's supposed to be filled is filled. No matter how exciting a football team with 11 strikers sounds, you'll never find a team that plays it, and it's obvious why, right? What happens when the other guys head down your end? Your strikers can't tackle, they give away penalties and free kicks get carded and before long you're down to 8 men on the pitch because you've put them into a position that doesn't naturally suit them and invariably they haven't trained for!
So how do we get the balance we need to succeed? Just like a football team we need to fill our positions to provide the balance.
The goalkeeper is the guy that stops the opposition ball hitting the back of the net, the one that stops things going against you, the protector from something as ridiculous as the opposition putting the ball into an empty net.
Ideally your goalkeeper is a preexisting member of the company, someone that has knowledge of how the company works, the intricacies of the system, where people can find the information they need.
They should be at the core of the team supporting and contributing to development, they should ensure that no matter how much brand new shiny work is completed the team don't concede to the intrinsic issues that they wont find through google or their own experiences at other companies, the basic stuff that everyone know except the new guys. You wouldn't play a game of football without a goalkeeper; don't build your software team without one either.
What to look for: An existing member of staff that understands the environment and ecosystem, someone that can realistically dedicate their attention to getting the team up, running and working, this can be more than one person if needs be. If there is no existing members then bring in a lead a month before you hire the rest of the team and fill their brain up with as much information as you can.
The defender generally protects the goalkeeper, he stops the opposition scoring goals, he's hard working, no nonsense, he gets hold of the ball when he needs to and gets gets rid of it safely and effectively.
You need a defender in your software team and he carries much of the same characteristics as the guy on the pitch, he gets on with his work, keeps his head down, asks questions when the times right and answers the ones that's asked of him. He's a grafter, a work horse and rarely complains but speaks up when his opinion is valid. His hard work and dedication will keep the ball out of your own net as he'll see you meet your deadlines with little fuss.
What to look for: Smart developers with a passion for coding but aren't obsessed that they must use and learn the latest frameworks. Developers that can demonstrate a good work ethic and are committed to getting the job done for the team in whatever way the team chooses. They are just happy to be contributing.
The Creative Midfielder
The creative midfielder brings you flare, class and really makes the ball move, the fans love to see him play but don't expect him to be focused on keeping the ball out of the net.
A software creative midfielder will be your driving force when it comes to new technologies, he'll be obsessed with the next big thing and will want to complete the project with 20 new technologies, his passion for whats new will flow through the team and keep your developers engaged and excited, the tech list on their CV's won't look too shabby after working with him either.
It's important that the creative midfielder focuses on the common goal though, if he isn't pulling his weight when it comes to defensive slog or offering too much creativity and no end product then he may as well not be on the pitch.
What to look for: Developers who know about the next big thing before it's even come out, developers who have a genuine passion for software and frameworks. Usually into open source stuff.
Arguably the most important player in the team, a team is a sum of all the parts but without putting the ball in the back of the net you can never win a game.
The striker is goals focused; they get the project over the line. They are focused on the needs of the business and the timelines they should adhere to.
They're looking for the creative midfielders to set them up with the best technology in order for them to take it and put it in the back of the net. Like a good striker these developers are often rare.
They need the stability to come from the defense and goal keeper to ensure that they get the project win without conceding along the way.
What to look for: Developers with a keen business sense, good work ethic, they're personable, have good soft skills and can converse with management and business stakeholders, they're leaders. They have a wealth of experience.
In the world of football you get defenders that score and strikers that are good at defending from the front or when there's corners; the same is true for developers they can be versatile; utility men, that will take on any position.
No developer wants to be the guy slugging away without doing some of the fun tasks, or getting excited about the new technology.
Similarly, you can't have one team member having free rain adding in 50 new technologies, he's got to be a team player, realise that leaves the team exposed and do his part to defend, he needs to realise that sometimes you have to filter down some of the creativity for pragmatism, the striker will be more than happy to tell him this in order to get the project in the back of the net.
In an ideal world your developers will be an equal composition of all the parts and as developers it's what we can aspire to be.