Traditionally, the world of software development is comprised of several paradigms, methodologies, and concepts focused on building quality products that are within the three typical restrictions described in the main project management guides: scope, time, and cost.
Software development projects are characterized by high uncertainty, where the schedule projections are almost never met, even though an adequate phase of business case analysis has been carried out. This might be because the applications built are often based on the need of a customer who does not clearly know what he/she wants, or even worse, that knows exactly what he/she wants, but this is not what the business, the process or his/her own colleagues need.
Depending on the nature of the project, it can be executed under a traditional project management approach cataloged as “cascade scheme”, which goes through the phases of software development (i.e. analysis, design, development, testing, and implementation) to get a deliverable, or it can be executed under an agile approach, which seeks to have incremental deliverables of value to the client in short periods of time.
MES Systems Projects
Back to the uncertainty subject, all these variables and situations mentioned above are also materialized in software development projects aimed to build systems that support the process of transforming raw materials into finished products, that is, the called Manufacturing Execution Systems (MES). World-renowned manufacturers focus their products on pre-established pieces of software that are transformed into functional MES applications, through complex relationships and interactions between them.
In MES projects, managers face management risks in order to meet the demand for visible and usable results in a short time, based on the premise of the use of components from other applications (reusability), as well as the use of the company’s “Know-How”. It is at this point where the concept of agile software development becomes relevant in order to accomplish the “on-time” value premise.
The adoption of agile methodologies allows fragmenting the global work into small sets of tasks. These tasks are executed through sprints that generate useful deliverables for the end-users and complement previous deliveries, based on an iterative approach that includes continuous feedback.
When applying an agile paradigm, it is not expected the application to be 100% functional. Modules are delivered and submitted to the interaction with the end-user and, in parallel, they are adjusted according to the requirements to reduce risks of malfunction. This last point is particularly important in the development of MES systems since the malfunction of these applications can stop production plants which can mean thousands (or millions) of dollars in losses for the manufacturers. That is why, by using an agile approach, the risk of the appearance of this type of situation is reduced since the software artifacts are exposed to the timely validation of the customer, giving the opportunity to correct on time the findings that take place.
Like everything, applying agile methodologies in MES projects is not a straitjacket. Again, this depends on the nature of the project. There will be initiatives where the customers do not get any value from having incremental deliverables, so they will prefer to get a “big bang” at the end of the project. Most of these projects are streamlined due to good risk control and the management of the client’s expectations. It all depends, in the end, on the skills of the work team, where the project manager must know in detail the real need of the client, and the development team must be committed to the timely delivery and the quality of value-added applications.