I have purposely chosen a case study that pertains to a company that is developing a software product. Agile development models are currently the rage, and this is for good reason. For product development, agile methodology is truly amazing. Nevertheless, this methodology has some shortcomings, one being difficulty in adapting it for geographically scattered teams that may be working in different time zones. In such a situation, the most challenging aspect of project management is to be able to communicate effectively. Agile methods demand that all team members be co-located so that high-bandwidth casual communication can take place among them. This makes offshore teams a complete no-no. The other shortcoming of agile methods is lack of documentation. Five years down the line, when the product has grown enormously and most of the original team has moved elsewhere, it will truly be a daunting task for a new member to understand all that code and make required changes. It will be simply impossible! To understand what I mean, look at the codes of some of the largest software products like Linux, which was built as an open source project using some sort of agile methodology. It is indeed extremely difficult to change any code inside the Linux kernel. The third shortcoming of agile methods is their inability to adapt to parallel and concurrent development. This means that if a large product is needed to be developed quickly, it will not be possible to do this with agile methods. So if a product containing one million lines of code is needed to be developed in a short time of 1 year (that is right, 1 year to be exact), then the total effort required for this project will be 500 months for one person to write it if we take productivity figures of 2000 lines of code per month per person (which is quite reasonable). This means about 42 years. Now if we want to do this in 1 year, we will need 42 people to do it. Managing 42 people on an agile project is impossible. At the most any agile methodology permits 20 people. Many projects are even bigger than one million lines of code. Most government, banking, and large corporate software products consist of more than 10 million lines of code.
In these cases, agile methods will not work. You need to adapt some method that will permit parallel development where many teams can work on the project concurrently so that the product can be developed within 1–2 years instead of, say, 10 years.
The case study presented in this book is a good example of how to adapt to given situations and be successful. After all, offshoring provides several benefits and cannot be ignored. Documentation too is a very important aspect of software product development and should be adhered to. This case study provides a good insight as to how to address the challenges of communication management, documentation, and concurrent development even when the development methodology is to take the benefits of agile methods.