Software development is hard for a host of reasons. Sadly, many writings about software development provide advice for simple situations, glossing over the real challenges that we face in practice. This is sticking our heads in the sand -- it is time to raise our heads up and recognize the complexity of the situation that we face.
In early 2014, we ran a "State of the IT Union" survey to help identify the range of situations currently faced by software development teams. The survey had 231 respondents: 70% had 10 or more years of experience in the software development field. Forty-two percent worked in North America, 47% in Europe. A bit more than half (52%) worked on teams following a primarily agile approach, 19% on iterative teams, 13% on ad-hoc teams, 8% on traditional teams, and 7% on lean teams.
Not surprisingly, the survey found that software development teams are working in a wide range of situations. There are small teams, medium-size teams, and large teams. Some teams are co-located, but even more teams are geographically distributed in some manner. Some teams face relatively straightforward development challenges, but in most cases, teams face significant technical and domain complexities. Some teams face regulatory situations. All these factors -- team size, geographic distribution, organizational distribution, domain complexity, technical complexity, and regulatory concerns -- have a great impact on how teams work and how they organize themselves.
Read the rest of this article on Dr. Dobb's.