This is Part 1 of the series of articles "Why go Agile?"
This new series of posts tries to explore a question that clients often ask us… Why develop their software using Agile methodologies? Many clients, even many software development practitioners, have heard about SCRUM or XP. But, as with many trends, it is difficult for them to tease how much of Agile software development is a fad, and how much is truly useful to develop more relevant software in less time and with less money. The following blog posts touch upon the experience of more than 6 years our company has had moving from the more traditional RUP world, to the Agile software development world in dozens of projects large and small, ranging from IT offshore initiatives to large IT outsourcing service deployments for our clients. To understand Agile software development it is first necessary to understand the context amongst which it surged, so we will remount to a short history of software engineering as a practice, or science. Software development is a young science in comparison to its engineering peers.
Take civil engineering, for example. In practice, humanity has engaged in civil engineering for thousands of years. Academically –i.e. in a formal classroom setting—it has been taught for over 300 years. Although advances in civil engineering still occur as structures become more creative, or larger, or ecologically friendly, it could be said civil engineering works, is reliable and is a mature science. Nothing close to this occurs with software engineering, which came into existence with the appearance of the first computers in the 1940s. But computers were mostly the realm of defense departments of some highly sophisticated nations plus a cadre of select universities. Few people were exposed to them initially, so the science developed rather slowly at first. With time, of course, computers and software have become ubiquitous.
However, software engineering still remains a young discipline, as is still far from reaching a stage where one could say that the way it is taught and practiced is standardized. From our own experience as a software nearshoring firm, the way each software company manages complex developments is different from the next. Yes, a language, say Java or C# (.NET) is always the same and has a basic syntax. In this sense, everybody codes in the same manner. However, the complexities of software development are not only about coding –they involve the way a group of engineers interrelate to one another and to the client, coordinate each other, estimate their work, execute their tasks in an orchestrated fashion, and finally deliver a finished product. This set of blog posts will focus on the process of software development –or the software development methodology—rather than on technical aspects of engineering. We believe a project's method and coordination is what truly makes it successful, or sinks it.
Many are the software development groups that can get the architecture right, that manage to recruit great coders, yet fail miserable when it comes to deploying a software development project that is delivered with a high quality standard, on time, with the right functionality, that is easy to maintain –all this done under a reasonable cost (continued in our next post...)
Go to part 2 of this article.
Regarding Perficient Latin America: Best in class software development company Perficient Latin America is an outsourcing SCRUM shop with offices in Colombia, Mexico and the US. We are focused on high quality and mature processes combined with Agile methodologies.