Being Agile with Lean Software Development
By Jason Tee
Trimming the Fat with Lean Software Development
The “Lean” term has only been around in the business world since the 90s, but the underlying concept of lean production goes way back. While Henry Ford wasn’t the father of this approach (lean principles actually have Japanese roots), his strong focus on efficient use of resources is viewed as an important input in the development of this system. Automobile design and manufacture is definitely the industry most people associate with the lean philosophy since Toyota has made a point of marketing around this frugality and value-focused methodology for the last few decades.
Two Ways of Defining Lean
There are a couple of ways businesses achieve leanness. First, they can focus on reducing waste. If you start from the premise that any resource that is used in production has the potential to be wasted, you can begin identifying areas of resource “leakage” and start plugging the holes. This activity aligns well with eco-sustainable initiatives since it can be applied to everything from raw material sourcing to reclamation of byproducts. However, tangibles aren’t the only focus. Activities that aren’t aligned with achieving the final objective for a customer are also viewed as waste in this system. So, management styles and the allocation of human capital may both come under scrutiny when an organization starts going lean.
The second approach to “lean” could be referred to as “mean”. It operates on the principle that wastefulness arises because, to borrow from LOLcat terminology: UR Doin’ it Wrong. This method cuts to the bone by shining a light on every area where poor quality is the root cause of waste. This could entail holding individuals responsible for poor decision making, identifying outdated processes that people are clinging to out of habit, or actually pointing a finger at an end result and admitting that it’s not delivering on its original promise. Think of it like the first step to recovering from addiction – you have to admit that there’s a problem before you can start getting better. It’s impossible to use this version of lean management without stepping on some toes, but the end results may well be worth it.
Lean Concepts Migrate to the Tech Sector
Just like Scrum has wriggled out of the software sector and infiltrated the enterprise project sphere, lean principles are being incorporated into the IT industry. Lean software development is an approach that blends well with other agile methodologies. For example, one of the ways that this technique works to reduce waste is by insisting on a clear set of requirements for software. That’s an area where Scrum is often weak. So, combining the best practices from both methods may lead to a superior outcome.
5 Tips for Going Lean in Your Next Software Project
- Waste elimination comes about by stripping a software product or system to its bare essentials. Find out what the customer actually wants/needs and deliver exactly that. Don’t spend time on the bells and whistles (in this case, extraneous code) since the client won’t appreciate it anyway.
- Keep your options open. Deciding too early exactly HOW to achieve a goal and building your entire approach around that idea can lock you into a non-productive cycle if you aren’t careful. Instead, focus on constructing a process that is open ended enough to allow last minute modifications and improvements. That way, you can deliver a better end product by implementing lessons you learn along the way instead of going back to square one to capture improvements.
- Educate the customer so the customer can educate you. The iterative approach to software development allows you to show the customer what you’ve got so far. That way, the customer has a chance to identify any disconnect between what they thought they told you they wanted and what you actually heard. Since being lean is all about providing value as perceived by the customer, this kind of feedback is essential.
- Being lean only works if everyone is cooperating and taking responsibility for playing an active role in sprinting through each iterative cycle. Speed comes from having a team that is sanctioned to take the initiative and get stuff done. Otherwise, you’re stuck with a bureaucratic, hierarchical system – the most bloated kind of management style known to man.
- Never take your eye off quality. Lean software development requires a holistic approach to ensuring all components deliver as promised. This is easy to miss if you are using agile techniques that may place getting a product finished ahead of getting it right. If you need to spend extra time and resources on testing, do it! That’s how you satisfy your current customer -...and the one after that...and the one after that. Even in the fast moving world of software development, people don’t forget when you deliver a buggy product.
15 Sep 2011