Agile manufacturing : a mix of XP, scrum & object-oriented
eXtreme Manufacturing (or XM) is an agile method that was applied by Joe Justice and Marcin Jakubowski to hardware design. The XM refers to "XP", or extreme programming. It finds its source at the crossroads of the Agile approach, engineering and knowledge management.
The application of the XM requires to change our way of designing. To make our hardware or construction projects closer to the expectation of users, and reduce the time to have a prototype and a working version.
Discover the mechanisms of Agile manufacturing and how they can help you in your work. And discover the benefits of Agile construction in reducing time and how it can help you to be closer to user expectations.
3 principles of eXtreme Manufacturing (XM)
Agile manufacturing is inspired by three methods: eXtreme Programming, Scrum, and Object-oriented architecture. They combine in one adapted to hardware design. Let’s look at these 3 components of Agile for Hardware.
Systematization of Pair working is one of the technics of extrem programming/manufacturing
eXtreme Programming (XP), for the way of working
EXtreme Programming is an agile method that focus on efficiency and rapidity of execution for the design team using different strategies.
It empowers the team as a whole and rely on automatic tests to make rapid progress without sacrificing quality.
Pair programming, manufacturing, designing
Pair programming is the practice of two of coworkers working together on the same work. It could be applied to many tasks like coding, the design of a part in hardware, design of a building, ....
The advantage of working in pairs is first to allow continuous control over the quality of work. The two team members have distinct roles. One starts to work on the computer, while the other is watching with more distance and help his pair. Then they swap their roles.
It is also a good occasion to share the knowledge and good practices. It reduces the feedback loop as one can know some elements of the project that the other would have discovered too late otherwise.
Usually a pair of coworkers control themselves once a week, but they also can do a continuous control for hardware projects. At the end it is a great way to improve motivation and generally boost people attention.
Swarming could solves the most important and difficult problems encountered during the project. The solution is to solve them together and collaboratively, in the same way, that ants do. When a problem is simple, they work independently, but they unite to pass the harder obstacles. In extreme programming the answer is similar: the team unites to unblock the major problems.
We could make a graph with the difficulty of the tasks in the abscissa and the importance they have in order. The more difficult the task is and the more important the whole team has to work together. On the contrary, the less difficult and important it is, the more each member of the team can work independently.
Thus, if the team face a complex problem, all the members have to unite their efforts until they fix the problem or until they reduce it to simplest tasks.
Before starting to develop the project, it is necessary to define how to evaluate it. You must first establish how to test and which performance are expected.
The project can then be improved, to become simpler and more efficient until it pass the automatic tests. The test guarantee also that any changes in the design will not impact the previous performance and that at any stage of the iteration goal will be met.
Iterative process in the design of wikispeed car
Scrum, for the organization
Scrum is an Agile method that promotes iterations and attention to the user's needs. The major contribution of the Scrum is in the field of organization of the team.
Within the team, there is no more hierarchy nor works in silos. The team uses Scrum-specific roles and ceremonies. The group is multidisciplinary, and everyone works together on the same phase of the project. The exchanges and communication are very important as well as the visibility of the work done by each other inside the team.
The work organization is based on “sprints”. Sprints are short periods of time to reach a functional prototype. These successive sprints are repeated and constitute some cycles where the project can be refined.
The Scrum method correspond to several ceremonies that aim to improve teamwork. Chronologically, we find the sprint planning at the beginning of each sprint which is a meeting of all the actors to organize the sprint to come.
Every day, a stand-up meeting takes place. The design team makes a quick meeting (standing up helps it do not drag on) for a few minutes to set the day's goals and communicate around potential difficulties.
And at the end of each sprint, a retrospective takes place for the team to talk about what has worked or not. The purpose of this meeting is to take stock of the method in order to improve it for the next sprint and make team progress.
To sum up, using Scrum methodology in Agile Hardware projects means:
Work in short iterations called sprint
Use scrum ceremonies like standup meetings, sprint planning, retrospective
Say bye bye to work in a silo and invite all disciplines on the same board
Object oriented design means splitting in modules the whole object with clear interfaces connection
An object-oriented architecture for project modularity
eXtreme Manufacturing relies on object-oriented architecture to enable regular iterations between independent teams. It permit interoperability between part of the project.
One of the current problems in hardware design is that objects are designed too monolithically as a whole. Often, you can not edit a part without having to modify the entire project.
To allow the modification of a part without impacting the whole object, it is necessary to think about the project in a modular way. The more complex the object is, the more it must be subdivided into modules, that can be worked independently. This division is one of the pillars of the XM because it facilitates iterations.
As the components can be designed independently, it is necessary to set up clear interfaces between each module. The interfaces define the connections between parts. They are ideally defined from the beginning of the project. They are designed when the different modules that make the full object are defined. Having clear interfaces between modules, allow them to be assembled together, regardless of their independent evolution and even if they are developed by independent agile teams.
Finally, it promotes the use of a more efficient module design. Indeed if the object is simple, you can work with shorter cycles and make several prototypes in a week. If it is more complex on the contrary the cycles of sprints will be much longer and connection problems will arise quickly. That does not mean that the product can’t be complex.
To sum up Object Oriented Architecture in Agile Hardware promote to :
Split a complex project into smaller parts called module
Define a clear connection between modules called interface
Promotes the use of a more efficient module design
Work optionally with independent Agile teams in parallel on each module
Synthesis of the three approaches
eXtreme Manufacturing is a proposal to use agile methods in hardware. It makes it possible to design a hardware product more adapted to the users in a much faster time. It is combining and adapting 3 methods and principles: eXtreme Programming, Scrum, and object-oriented architecture.
The XM method proposes to work in short cycles called sprint to get each time a functional product which is tested and then improved during the following iterations. To facilitate this process, the project is divided into several independent components. The work organization of the team is transversal and aims to facilitate exchanges and visibility.
There are still many professionals to convince and educate to change their approach. However, it is important to know that design times are reduced by using Agile manufacturing. This saving of time allows savings of means and compensates the costs due to the successive iterations. A more important benefice is that this method allows you to build projects that are closer to user expectations.