There is a certain almost mythical image of the lone programmer burning the midnight oil in front of a computer screen coding the next great thing in software.
Having come of age in the technology community as a programmer, I can attest to working many a late night to meet a client deadline, figure out the details of a complex algorithm, or track down an elusive and frustrating bug. And while the passage of time may somehow reshape those memories into something more than just the caffeine addled work marathons they were, it is still clear that those late nights were not the world changing, defining aspects of my programming career – and certainly not the peak of my creative energies.
Despite the solitary mythos of the profession, my best programming came when I was part of a great team of programmers, designers, and creatives. When the mix of people is right, there is a collaborative aspect to this type of environment that seems to produce extraordinary results. I think this is probably true for everyone in this field, and it happens for a variety of reasons:
- Teams increase the “surface area” of knowledge acquisition – The best programming efforts tend to push things to the edge. They look for the best algorithms, tools, design elements, and user experiences. Some of those elements will fully originate from within the team, but most will be inspired, synthesized and expanded from work happening in other technical communities people are connected to. For the individual, that exposure to the outside will be limited. But for a team, it can open up an expansive vista of thought provoking ideas and approaches.
- Interactions stimulate creative thinking – I am a big believer in brainstorming. Creativity ultimately comes from interactions like that, even if there isn’t a linear path between the two. Even casual conversations about one topic can be sometimes be reprocessed into the solution for something seemingly unrelated. Creative people continuously disassemble and reassemble the world around them – often at a subconscious level – trying to find out how to make things fit together in a better or more efficient way. That process seems to be accelerated when you’re surrounded by other talented, creative individuals.
- Teams allow specialists to develop and flourish – It is extremely rare for a single individual to excel at every aspect that goes into making a product great. I’ve had the privilege of working with some incredibly talented people, but none of them had every based covered. It’s very different with a team. As a team starts to gel and mature, different individuals within it will naturally emerge as the main drivers of specific aspects of a development project. Some of that may be planned, but a lot of it will happen organically. This dynamic allows the collective talents of the group to shine through in the final effort despite limitations each person may have as an individual. I have seen far too many promising solo efforts fail when mediocracy in one area simply masked pure brilliance in another.
- Groups provide a sanity check on direction and decisions – Every development project is made up of a continuous stream of individual decisions. And even in a team environment, most of those decisions will end up getting made by individual people in the day to day course of their efforts. What make a team environment different from an individual effort is that the inevitable bad decisions that will be made seem to surface sooner and get resolved quicker. I also feel that the decisions that are made in this type of environment often reflect a greater appreciation for the broader impact they can have on other parts of a project. People on a team are more likely to solicit input from others in areas they are less proficient in. That said, a “well adjusted” team environment should NEVER promote ‘group think’ – the death knell of so many ‘large company’ development initiatives. At it’s best, the team environment helps each individual apply the right amount of critical perspective to the decisions they need to make, while still encouraging the creative leaps that are so important producing something great.
- Teams challenge everyone to reach that next level – There is a healthy competitiveness that exists inside any talented group of individuals. It pushes people beyond their comfort zones, and helps them refine and grow the skill sets they bring to the table. This same force also motivates everyone to put in that extra effort to get things done right – nobody wants to be the one that lets the team down or causes a release to fail. This interplay between the members of a team makes the overall success of a project something personal for each of them. And that creates the right environment for people – both collectively and individually – to excel.
It is important to remember that a team isn’t just a random collection of people with various skill sets. And a great team isn’t just a collection of individual superstars put together. In fact, the best teams I’ve worked with tended to form naturally over time. They had a mix of skill sets and proficiencies, with natural leaders and contented followers. But what every member of these teams had in common – at least on the most successful teams I’ve been a part of – was a shared passion for what we were working on, and the desire to deliver something really great at the end.
