Agile: The promise & common pitfalls with Standard Enterprise Software
Agile often leads to inefficiency
An agile approach during the implementation of standard enterprise software such as Maximo often results in unwanted ineffectiveness and inefficiency. Under the pressure from the market or from its own management, new trends like “Agile” and “DevOps” are often only used as a label for work processes that are far from being “agile” or “lean”. Agile is not a goal in itself, but an approach that can help you to build faster and better solutions for your customers. Continue reading if you like to know how to avoid common pitfalls by adapting some basic principles.
Why does Agile not always work?
The Agile approach is mainly aimed at software development teams where developers create software solutions in cooperation with a product owner. However, the implementation of a standard enterprise system such as Maximo, where all functionalities are commercially available off-the-shelf, differs in many ways from a software development process. To configure Maximo, you need in-depth knowledge of the functionalities of the product and you need a lot of experience (= failures & successes) to know how you should configure these functions to solve a business case.
With the agile approach, and the pressure on scrum teams to achieve a result within short iterations, called sprints, you may get straight-to-the-target solutions in which the impact on the overall system integrity is given less attention and where commercial off-the-shelf functions become unusable, often unintentionally (and unseen).
Product owners are usually delegated from an IT department where they lack current and detailed business knowledge and as a result you risk IT-oriented solutions that are far away from the needs of the actual business. Sometimes product owners are representatives of only one single department and cross-departmental interests are not taken into account and you get isolated solutions.
Working agile means that you frequently deliver working software and this requires scrum teams to apply adequate version control to all changes. Because the majority of these changes in Maximo consist of setting up processes, forms and/or integration points that do not involve any source code, standard solutions for version management and/or source control which are used in the software engineering industry are not applicable. As a result, managing changes becomes a challenge which frequently results in undesirable outcomes and an increased risk of regression.
How to successfully apply Agile?
The agile approach may be aimed at software development, but if you take into account a few principles, it can be successfully used in the implementation of standard enterprise software such as Maximo. Below is a summary of some of these principles:
- Product Owner
The role of a product owner must be represented by someone from the business because the business sets the requirements and, therefore, is the only one who can validate these requirements. The product owner has end-2-end responsibility for the definition of the requirement up to and including the acceptance of the system implementation.
- One Decision Maker
Often with a Maximo implementation you will have to deal with multiple product owners, with each product owner representing the interests of one business unit. In some situations, the interests of different business units may conflict. For example: reliability engineers like to see every evident and hidden defect detailed to a minute level, while maintenance managers want to limit the failure reporting to the most common failures to reduce the administrative work for technicians. In this context, you need one independent role, for example an Enterprise Architect, who can make decisions that transcend business units in line with the business objectives.
- Architectural Approach
Working under the guidance of an independent architect serves two important purposes: 1) from an application point of view to ensure the overall system integrity 2) from a functional point of view to shape the final solution aligned with the capabilities of the standard product.
When configuring Maximo, we want to ensure that design choices made, have no impact on the performance, do not break off-the-shelf functions and allow us to use new versions of the software in the future. To ensure this, we must provide the scrum teams with a series of architectural guidelines that every solution must comply with. The validation of these guidelines is part of the “Definition of Done” (= an agile principle that provides criteria when a change is ready for delivery).
- Design Approach
In contrast to the agile approach in which a developer can create a solution together with a product owner, in the context of a standard enterprise application such as Maximo, it is first needed to understand the requirements of a business and then shape a solution that fits the contours of the standard product. This is why deep experience in Maximo is so important. You then create design documents which describe the expected behavior of the devised solution. A behavior driven design gives a scrum team sufficient guidelines to configure the solution in the system. It also enables architects, reviewers, product owners and testers to unambiguously validate the end result and it can also form part of the acceptance criteria.
- Change Packages
In Maximo you use migration packages to share and transport changes between environments. The challenge when using migration packages is how you can prevent scrum teams from working on the same object and overwriting each other’s work. In practice this means that you coordinate beforehand who will work on which component, for example by using a central lock board which in fact, is a check-in/check-out procedure by convention.
- Version Management
How do you ensure that scrum teams start from a correct version at the start of a change. In practice you guarantee this by introducing a central Maximo system (sprint system) that you keep up-to-date with the migration packages delivered during a sprint. This central system essentially acts as your “development branch” and at the start of each new change a developer starts with the version available on this central system.
Even more agility with Maximo?
You can improve the agility of Maximo scrum teams even more by using a version control system such as GIT. With smart Publish Channels and Enterprise Services you can import and export all your configuration changes in XML-format and manage them as source code in your version control system.
With all changes being managed using a version control system, the road is open for DevOps or Continuous Integration & Continuous Delivery.
Author Danny Bols is passionate on delivering best-in-class asset management solutions with IBM Maximo, by continuously improving the life cycle processes for COTS implementations by applying his experiences from Software Engineering and his involvements in Open Source communities.
Want to know more about working agile with IBM Maximo? Contact us by filling in the contact form.