In the early days of computers, creating software was often a solitary activity. I'm always amazed to read the story of how Chris Sawyer designed and developed the first Rollercoaster Tycoon mostly on his own, in Assembly. But today, software development is a much more complex activity that involves multiple different disciplines and their practitioners, who all have to join forces in order to build and evolve products that delight users and bring value to the company. Think about it: any modern software product contains the fingerprints of engineers, infrastructure specialists, quality analysts, product managers, product designers, delivery managers, marketing people, data scientists and engineers, and then the heads and leaders of those areas, executive leadership, and, of course, the users (through discovery, research, interviews, etc.). Each one of these actors comes from a different background, contributes to the product using a different set of skills, and has their own needs, wants and expectations....
-
-
[Cross-posted on ThoughtWorks Insights: http://www.thoughtworks.com/insights/blog/how-to-grow-effective-teams] The advent of the computer era is a major breakthrough in history. Mankind created amazing machines to handle the tasks our brains struggle with. Telling computers how to solve our problems has become a practice called Software Development. Over time, higher level languages have made programming less daunting. We realized the difference between a program and a product [1]. We built frameworks to avoid repetitive tasks. We discovered how important it is to automate tests and deploy as often as possible. In essence, we've made development more efficient, enabling it to tackle heavier, more intricate problems. Moreover, we've turned software into a US$400bi industry. Software is ubiquitous and demand is increasing faster than almost all other industries. Development firms have grown to the level of tens of thousands of employees. Back in the day, programming was a one-person hobby, almost a form of ...
-
People are social beings, and their interactions form the core of agile software development. In order to build software, we tend to organize ourselves in groups we callteams. It's a nice name that evokes a feeling of collaboration and motivation, but are all groups of individuals actually teams? We tend to think that what sets groups apart from teams is the presence of a common goal that guides people's actions. If several people get together to pursue a single goal, that's a team. This is true, but not the whole truth. What ultimately turns a group of people into a team is interdependency. A group of sales representatives working for the same company shares the goal of selling the products from their catalog, but each individual is seeking to sell more than the other, to obtain a bonus. That's not a team. A group of baseball players, on the other hand, is a team not only because they share the goal of winning; they also depend on each other. The third baseman can't win the game unless the pitcher and the...