Being Agile
By: Mohamad Koteich
Tags: Engineering, Project Management, Software Development, Agile, Business

Being Agile

The digital technology industry has been moving at a very fast pace over the last decades. Companies that are unable to adapt have been left behind (Nokia, Kodak, etc.). Agility is a key skill for a company to remain competitive.

Since the publication of Agile Manifesto for software development in 2001, several software companies have been moving towards this mindset. Some companies went further and adopted the Agile way of development in industries other than software industry.

If your time to you is worth saving

Then you better start swimming, or you’ll sink like a stone

For the times they are a-changing. — Bob Dylan

Is it possible for any company to apply Agile? How about big companies, with complex organizations, top-down policies, rigid processes, over-specialized teams, and other bureaucratic burdens? And above all, what is Agile, and what is not Agile? First, let’s review the life-cycle of a product.

Product life-cycle

A product life-cycle can be broadly divided into 4 phases as shown in the figure above:

The ‘Concept’ phase: in this phase, the product is being defined, we study the market, the competition benchmark (including patents), the customer needs, etc. We study the feasibility and profitability. We define our targets: the product definition, the market, the customers, the price, the cost, and so on. Creativity and Innovation are key in this phase. The ‘Development’ phase: in this phase, the concept is transformed into a validated design ready for mass production. Computer-aided design (CAD) and Model-based design (MBD) are very useful tools for designers and engineers in this phase. The ‘Manufacturing’ phase: this is the mass production phase that transforms the product from design sheets to the customers’ hands. Lean Manufacturing practices and Industry 4.0 revolution help to ensure more efficient industrialization. Time, Quantity, and Quality are key in this phase. The ‘Market’ phase: the product is now available in the market. It needs to be distributed and maintained. The customers need to be assisted. Communication and Availability are key in this phase.

What is Agility? And Why?

In heavy industries (automotive, aerospace, construction, machine-tools, robotics, etc.), one important challenge is the mass production (manufacturing phase), that is, how fast can a company manufacture a high-quality product to deliver to the customers, in time. The recent Tesla Model 3 production hell is an example that illustrates this fact.

Several methods had been proposed and tested to optimize the manufacturing phase (Kanban, Value Stream Mapping, Genchi Genbustsu, Just-in-Time, etc.), with the main goal being to reduce waste (“Muda” in Japanese) in the manufacturing process. These methods can be grouped under the Lean Manufacturing umbrella, which was promoted mainly by the Toyota production system.

In the Software industry, on the other hand, the product has a very short life-cycle. Between having a new concept, and launching it to the market, the main burden is the development: how to release stable software with the minimum number of bugs. Mass production (deployment) is then relatively simple and inexpensive, in comparison with heavy industries. Furthermore, the user requirements evolve continually, as software updates can be done easily and virtually costless (hardware is often impossible to update). This results in an extremely competitive market that drives software companies to adapt their development mindsets and organizational culture to respond quickly to the market changes. Otherwise, they will be left behind.

What is Agile?

Agility, as a term, can be defined as the ability to move quickly and easily.

In industry, it can be simply defined as the ability of an organization to quickly respond to the customer needs, and to a market change (new competition, innovative technologies, evolving customer needs and expectations, etc.). As declared in the software development Agile Manifesto, Agile is a mindset, manifested in 4 values, and based on 12 principles. This set of values and principles need to be shared among teams and hierarchy, to become part of the organization culture. Consequently, leaders, managers, and developers will act and take decisions that reflect this shared mindset. Practices, methods, and tools that claim to be Agile need to embrace the 4 values and 12 principles. Otherwise, they can easily slip into the old-school mindset.

Even though the Agile Manifesto has addressed Software development only, it can be argued that the Agile values and principles remain valid for any product development. Here is the Agile Manifesto formulated for any product development: Agile values

Individuals and interactions over processes and tools

Working Product over comprehensive documentation

Customer Collaboration over contract negotiation

Responding to Change over following a plan

In a nutshell, Agile values the human over the process, and the product over the project. It encourages collaboration with the customer, frequent and early delivery and feedback, welcoming changes even late in the development, accepting mistakes (failing fast to learn fast), letting teams self-organize, etc. To learn more about Agile principles, refer to the Agile Manifesto website. In the sequel, I will highlight two main properties of the Agile way of development:

An iterative and incremental development.

A human-centric mindset.

A Human-centric Mindset

Agility aims to put the human (the customer and the developer) at the heart of the development, using common-sense management, and embracing values such as Trust, Flexibility, Transparency, Dialogue, etc. The following two human-centric aspects are particularly important in the Agile mindset:

The users/customers are much more than a contract; they should be put at the heart of the development so that we can respond better to their needs. Customer satisfaction is the ultimate goal of product/service development.

The people who are involved in the development should be taken care of as individuals and teams. They must be given the autonomy and trust environment they need. They are the best suited to take decisions concerning development issues.

Iterative and Incremental Development

The traditional way of product development often uses waterfall or V-models, where the requirements are gathered at the beginning of the project, and the product is delivered at the end, after being designed, implemented, and tested by the development teams. On the other hand, the Agile way of development recommends delivering frequently (a sort of iterative short V-cycles) and getting feedback on each delivery. But how can we deliver frequently? And what do we deliver?

The complete product cannot be delivered early in the project, instead, a minimum viable product (MVP) must be delivered. An MVP, as its name suggests, is a product with just enough features, the customer can test, to get feedback after each iteration. Customer suggestions and new requirements are welcomed. After each iteration, the team reflects on the previous iterations and plans, and prioritize the tasks for the following ones.

Fail Fast, Learn Fast.

Depending on the industry, the number of people involved in each iteration, the iteration period, and the MVP definition may vary.

Beyond Software Development — Agile at Scale

As mentioned above, the Agile mindset can be applied in several industries. The practices, methods, and tools used in Agile need to be adapted to each industry. For instance, iterations in the Software industry can be 2-weeks-long. This is not feasible in the automotive or aeronautics industry, where the iterations will be of several months period before delivering an MVP. Note that most of today’s industries have embedded systems with embedded software. The iteration cycle of an embedded software MVP can be shorter.

Does Agile work everywhere?

Misconceptions about Agile

They exist some misconceptions about Agility. Here are some of those myths:

Don’t make documentation at all: this may lead to a lot of waste of time. Agile means: focus on the product, don’t obsess about the documents. The measurement of progress is the working product. You don’t need a plan: planning is crucial in Agile practices; we need realistic iterative plans. Every iteration should have a good plan. No management, no discipline: there is a need to project management and discipline in the Agile approach, but with a different mindset than that of the old school approach. Instead of using top-down management, leaders need to delegate at the right level of the hierarchy where decisions can be made. Agile = Scrum: Scrum is only one practice that embraces the Agile mindset. People are often not so comfortable with abstract concepts and prefer more concrete structures. Therefore, Agile is often mistaken for some practices and methods (Scrum, Kanban, etc.). Be careful about that, what matters is the team spirit and mindset, not the methods and tools they use. It works only for Software development: as a mindset, it can be applied to any product development, including heavy and complex industries. It works only for young employees: wrong. Agile is meant to save money: Agile is about adapting to change and satisfying the customer needs. This may reduce development cost. However, in some contexts, Agile might result in re-work, and might require more money to provide an excellent product, rather than saving money to have a mediocre output.

References