Tuesday, September 23, 2014

Principles of Agile Development

The Agile Manifesto is based around twelve principles, guiding concepts which build upon the four core values of Agile and support project teams in implementing Agile management methods, helping to lead to better project outcomes, better engineering and better customer satisfaction.

Let's review these twelve principles of Agile project management and the relevance that they have to project management, particularly in the context of embedded computing, electronic engineering and product design projects.

The first principle is that it is the highest priority of an Agile project team to satisfy the customer through early and continuous delivery of valuable technology - and this remains true whether the product is software or hardware, embedded firmware, or any type of industrial design or engineering product.

Valuable engineering that is delivered to the customer early and continuously may not be the final product, but it might consist of rapid design iterations, demonstrations of certain subsystems or modules, proof-of-concept engineering, or prototypes constructed for demonstration using rapid manufacturing and rapid prototyping techniques such as 3D printing or digital logic synthesis in an FPGA.

The second of the core principles of Agile project management is that changing requirements should be welcomed, even late in development. This means that the customer should not be expected to provide a complete and concrete specification of all project requirements at the start of the project and never change or add to it.

Change should be welcomed, and Agile processes harness change for the customer's competitive advantage. This principle applies equally for embedded design and hardware projects as it does for the management of software projects, however obviously there can be challenges when incorporating new requirements from the customer into a hardware project late in development.

For example, it may be difficult to incorporate new or different requirements into an existing PCB design and layout, requiring increased time and cost to design and fabricate a new PCB. In some cases, depending on size and mechanical requirements, using multiple modules and interconnected boards within a hardware system can allow for easier changes or the addition of new functionality without "wasting" existing hardware and its embodied time and money if a new iteration is required.

The use of programmable logic devices or FPGAs, or microcontrollers with their functionality reconfigurable in firmware, can also be useful in this regard - although this may increase cost or power consumption compared to a hardware system with application-specific, fixed functionality.

The third of the core principles of Agile management is to deliver working technology frequently, over a timescale of a couple of weeks to a couple of months, with a preference towards keeping this timescale as short as possible.

Like the other principles we have discussed, this principle is also useful and applicable towards hardware projects. Although there may be insurmountable time constraints, such as lead time for components, PCB manufacturing or assembly, the rapid delivery of working iterations of hardware, even if it is just for a subsystem or a prototype that validates part of the overall system design, is a valuable goal and it is practical to achieve in most cases in a typical hardware project.

Another of the twelve principles of Agile is that working engineering that can be demonstrated, even if it is just a subsystem, a component, an experiment or prototype and not the "final" deliverable product, is the primary measure of project progress. Other metrics that might be applied to gauge project progress are of secondary value compared to the actual technology created.

Further core principles of Agile are that business people and customer representatives should work together intimately with developers and engineers throughout the project, with close contact and communication between them during project development, preferably every day, and that project teams should be built around motivated individuals on the development or engineering teams who are given the support and environment that they need to get the job done, as well as given the trust that they will get the job done without micromanagement.

Among the other core principles of Agile project management are the principles that the most efficient and effective method of conveying information to and within a development team is face-to-face conversation, and the belief that Agile processes promote sustainable development and a sustainable use of the human resources of the team, where the sponsors, developers, engineers and users making up a project team should be able to maintain a constant pace of work indefinitely.

The remaining principles are that continuous attention to technical excellence, good engineering and good design enhances agility, that simplicity and the art of maximising the amount of work that does not need to be done is essential, and that the best architectures, requirements and designs emerge from self-organising teams.

Finally, one of the core principles of Agile management is that it values regular adaptation to changing circumstances. Ideally, an agile team reflects on how to become more effective and then tunes and adjusts its behaviour accordingly at regular intervals.

These Agile principles also retain their advantages and their potential usefulness irrespective of the technical nature of the particular project that you're managing - there is no real difference between a software project or a project working with electronic hardware or any other kind of engineering or non-engineering project when it comes to understanding the potential benefits of these Agile values.

With some thought and buy-in by all members of your team, you can use Agile methods on a wide variety of projects. And if you’re looking for a partner in yoru project development, here at the LX Group we have the team, knowledge and experience to bring your ideas to life.

Getting started is easy - join us for an obligation-free and confidential discussion about your ideas and how we can help bring them to life – click here to contact us, or telephone 1800 810 124.

LX is an award-winning electronics design company based in Sydney, Australia. LX services include full turnkey design, electronics, hardware, software and firmware design. LX specialises in embedded systems and wireless technologies design.

Published by LX Pty Ltd for itself and the LX Group of companies, including LX Design House, LX Solutions and LX Consulting, LX Innovations.



No comments:

Post a Comment