Lean Coffee Porto Community!

Today’s post is related with the beginning of Lean Coffee Porto Community.

logo-color

The story begins 3 months ago, when a group of people with the same objectives and dreams started to discuss what they could do to share knowledge and create discussions of ideas regarding different areas like Agile, Lean and Tech.

Well, we discovered that more people had the same objective and dream, but in different parts of the world.

How? With the creation of the LeannCoffee.org

Just to give you more context, Lean Coffee is a non-profit world community whose main objective is the development, sharing and discussion of ideas among stakeholders in different areas of knowledge within the Technological, Agile and Lean themes.

As a result from our discussions, we agree to create Lean Coffee Porto and voluntarily organize (in cooperation with LeanCoffee.org and and Tuga) meetups and events in order to drive Portugal into a world reference in Agile, Lean and Technology.

Saying this, Lean Coffee Porto is already in-progress and we have our first meetup schedule for 14th of January 2015.

Join us at UPTEC for our first event and share your experience and knowledge! We will follow the Lean Coffee format presented at http://leancoffee.org/

Register at Eventbrite.

values-color

Nevertheless, I would like to share with you that Lean Coffee Braga is also already in-progress. Soon, we will be sharing further details regarding the first meetup.

“How” to go beyond Scrum and use Lean in Software Development Teams?

Once more I would like to share my thoughts/opinion with everyone about this new subject – “How” to go beyond Scrum and use Lean in Software Development Teams?

In order to give you some context, I will start by explaining ShuHaRi concept, as well who introduced this concept in Software Development.

ShuHaRi as some of you might know is a Japanese martial art concept, this concept describes the different stages of learning to mastery. [1]

Aikido Master Endō Seishirō Shihan stated that “It is known that, when we learn or train in something, we pass through the stages of Shu, Ha, and Ri.” [1]

shu-ha-ri

Where:

  • Stage of Shu, we repeat the forms and discipline ourselves so that our bodies absorb the forms that our forebears created. We remain faithful to these forms with no deviation. [2]
  • Stage of Ha, once we have disciplined ourselves to acquire the forms and movements, we make innovations. In this process the forms may be broken and discarded. [2]
  • Stage of Ri, is the last stage where we completely depart from the forms, open the door to creative technique, and arrive in a place where we act in accordance with what our heart/mind desires, unhindered while not overstepping laws. [2]

But who introduced this concept in Software Development?

This learning technique and methodology in software development was introduced by Alister Cockburn.

His idea is that every person go through the three ShuHaRi stages in order to obtain knowledge.

Meaning that:

  • In the Shu stage since it’s the first one, the student follows the teachings of one master precisely. He concentrates on how to do the task, without worrying too much about the underlying theory. If there are multiple variations on how to do the task, he concentrates on just the one way his master teaches him.
  • Next stage is Ha, at this point the student begins to branch out. With the basic practices working, he now starts to learn the underlying principles and theory behind the technique. He also starts learning from other masters and integrates that learning into his practice.
  • Finally in the Ri stage, Now the student isn’t learning from other people, but from his own practice. He creates his own approaches and adapts what he’s learned to his own particular circumstances.

The fundamental idea here is that when teaching a concept, you have to tailor the style of teaching to where the learner is in their understanding and that progression follows a common pattern. Early stages of learning focus on concrete steps to imitate, the focus then shifts to understanding principles and finally into self-directed innovation.

In my opinion it’s very important to understand the ShuHaRi concept and technic before anything, because we can understand the variation of do agile or being agile by understanding first the level of agile and lean knowledge. 

So, how should everyone see and believe in these eleven principles after blending with Lean. Well in my opinion I truly believe that should be like this:

  • Satisfy the customer… -> Delight the customer.
  • Welcome change… -> Seek change.
  • Deliver frequently… -> Deliver continuously
  • Work as a team… -> Live as a team
  • Talk, face to face… -> Talk, face to face & heart to Heart
  • Mesure working product… -> Measure value delivered
  • Maintain pace… -> Maintain pace and rhythm
  • Exceed at quality… -> Exceed at quality and get stuff done
  • Keep it simple… -> Keep it simple stupid
  • Envolve Team… -> Envolve everyone
  • Reflect regularly… -> Reflect continuously 

Quoting Voltaire “Common sense is not so common.”.

Saying this, I’ve been taking a shot on what it would take to “How” to go beyond Scrum and use Lean in Software Development Teams. In order words how we can learn, apply and practice Lean Principles to what we currently do well using Agile Scrum in Software development Teams trough the different stages of ShuHaRi in order to keep improving.

  • First stage Shu:
    • In order to start the Lean teaching/coaching, we need to have the team in a high maturity level (Ha stage in what Agile Scum regards). This will avoid any confusion and issues with the team mind set regarding what they currently do (how and why).
    • Next step is teach and coach them on what Lean concerns. Explain what is Lean, what are the principles, techniques and why everyone should be. We can achive this by trainings and workshops.
    • Now is the moment were we help them to achieve some conclusions on what they can do to keep improving. We can review what they already do using the Value Stream Map technic (Development, Testing, Scrum Ceremonies, Communication, Process,etc.) in order to raise performance by achieving more results, with less resources,  by the continuous and relentless elimination of activities (waste) that do not add value to the service or product. Its important to make them understand that Lean applies to any organisation and follows the pursuit of perfection, thus is a never-ending activity.
    • Nevertheless, during this stage we need to make them understand that this a critical period were they need to follow and practice each point without any variation. Also, that during this time they will have all the support to help them growth in maturity and knowledge.
    • Why keep the team for a period of time in this stage? Tin order to answerer that I will quote Leonardo da Vinci,  “Simplicity is the ultimate sophistication” so lets stick to this for the time being.
  • Second stage Ha:
    • In this stage they already follow the principles, meaning that we can start stepping back and give them space to be Lean. This means that they are using and combining the Agile Scrum and Lean Principles by themselves. This will empower them to transform the principles in values to follow. Act as self-organising that they are. Nevertheless, we will keep observation and coaching when its needed.
  • Last stage Ri:
    • This is the final stage and they are already confident and with maturity to follow the path by them selfs. For me this a great achievement because as we speak they don’t see the principles as principles but as values and their believe in them is high. This is the moment that they pass from students to masters. Meaning that they will start inspiring others teams , converting them to go beyond Scrum and use Lean.

After this moment they will act as master like you in order to start converting a full organisation. Thus, we need the managers support in other to achieve this faster than was expected.

I truly believe that this is the best way to change (Convert a full) Organisation.

References:

[1] Wikipedia | ShuHaRi

[2] Aiki News | An Interview with Endô Seishirô Shihan

Alistair Cockburn | Agile Software Development

My thoughts and opinion about Lean Software Development

This is my first post about Lean Software Development. The reason why I’m writing this is to share my thoughts and opinion. Also, due to the request of several families 😉

First things first:

  • This is NOT an Anti-Scrum campaign!
  • I am NOT “selling” Lean!
  • I am NOT a Lean expert!
  • What you currently do is NOT wrong!

To start I would like to say that for me Lean is a “ Thinking” as described in many books. Nevertheless, besides that, for me is a Philosophy something that you are or not. Like one of my work colleagues said is a group of common values. I agree with him but we really need to believe in them in order to follow and apply them. In other words be Lean.

In my opinion we can say that Agile Software Development is a great example of Lean thinking in action. Why? Lets dig a little more 😉

But, in order to start we really need to know what are the key seven principles: [1]

  • Eliminate Waste
  • Amplify Learning
  • Decide as late as possible
  • Deliver as fast as possible
  • Empower the team
  • Build integrity in
  • See the whole

Lean Software Development is the application of the Lean Principles (Lean Toyota Productive System) to software development. So, once more what is Lean? [2]

The National Institute of Standards and Technology Manufacturing Extensions Partnership’s Lean Network describe Lean as:

“A systematic approach to identifying and eliminating waste through continuous improvement, flowing the product at the pull of the customer in pursuit of perfection.” [3]

“Lean Software Development reduces defects and cycle times while delivering a steady stream of incremental business value.” [4]

In other words we can say that Lean Software Development is more focused than other Agile Methodology in order to develop software in less time, using less budget and with a lower defect rate. [5]

Lean Software Development give us principles and tools that are easily used in any environment to improve software development. [6]

There are seven Lean Principles as described above, but lets understand and learn more about them:

  • Eliminate Waste: Some exemples in software development are any implementation that doesn’t improve the quality of code or doesn’t deliver business value to the customer. But we also have examples of process that doesn’t bring any value to the business and the customer.
    • Tools: Seeing Waste, Value Stream Mapping.
  • Amplify Learning: Developers implementing features that delivers business value, they will have to learn about many things. Some are technical, such as the advantages and disadvantages regarding different tech approaches. Others are requirements related, such as understanding what the customer needs versus what the developer think that the customer needs.
    • Tools: Feedback, Iterations, Synchronisation, Set-based Development.
  • Decide as late as possible: Software development is always associated with some uncertainty, better results should be achieved with an options-based approach, delaying decisions as much as possible until they can be made based on facts and not on uncertain assumptions and predictions. The more complex a feature or system is, the more capacity for change should be built into it, thus enabling the delay of important and crucial commitments. The iterative approach promotes this principle. In order words the ability to adapt to changes and correct mistakes, which might be very costly if discovered after the release of the feature or system.
    • Tools: Options Thinking, The Last Responsible Moment, Making Decisions.
  • Deliver as fast as possible: This is the foundation of iterative development. Why? Because allow us to Reduced risk, have an Earlier ROI/Value, Increased visibility of progress, Increased predictability, Increased productivity, Reduced waste. Also, it is much easier to get customers happier by getting their features or systems at the end of each sprint rather than wait for a month or an year.
    • Tools: Pull Systems, Queuing Theory, Cost of Delay.
  • Empower the team: The people factor is the most important element in successfully delivering software. In order to get people motivated, happy and self-organized, they need to be able to take ownership and responsibility for the outcome. In order words authorised to make things happen.
    • Tools: Self Determination, Motivation, Leadership, Expertise.
  • Build integrity in: The Perceived Integrity is the Customer experiance. In order words the overall experience of the Product (Feature or System) how it is being advertised, delivered, deployed, accessed, how intuitive its use is, price and how well it solves problems. The Conceptual Integrity is how well the architecture and system components flow together as a whole with balance between flexibility, maintainability, efficiency, and responsiveness. Obviously testing, unit and integration, is a major part of integrity. [1/6]
    • Tools: Perceived Integrity, Conceptual Integrity, Refactoring, Testing.
  • See the whole: We should to see and understand the system as a whole. Why? Because systems nowadays are not simply the sum of their parts, but the interactions from all parts. Being able to see as a whole, means that we are able to solve problems easily and faster. How? By breaking them them down into their constituent parts and optimize each individual piece.
    • Tools: Measurements, Contracts.

For a second post regarding Lean Software development I will focus the different type of Wastes more in detail.

References:

[1] Wikipedia | Lean Software Development

[2] Wikipedia | Toyota Production System

[3] Kilpatrick, Jerry | Lean Principles

[4] Windholtz, Mark | Lean Software Development

[5] Highsmith, Jim | Agile Software Development Ecosystems

[6] Poppendieck, Mary and Tom | Lean Software Development: An Agile Toolkit

Point to keep in mind…

Last week on the 27th of November during the Agile London meet up, one of the speaker’s said that “Complexity it’s relative for the problem that we are trying to solve.

What is true is that since that day, until today I still didn’t stop thinking about this.

This is a great starting point to make teams understand why we should split user stories to a level that the understanding is acceptable and with this reducing the complexity or hidden complexity and risk associated to the implementation.

 

The beginning…

Many times we hear about Agile and people saying what it is and what is being Agile…

I think that almost everyone knows that Agile in a simple way is one of the Software development methodologies that allow us to be fast, adaptive and ready to change. Nevertheless allow teams to be self organising, self motivated, multi functional and Empowered.

So, what is the meaning of being Agile?

Well, here is my definition of what is being Agile.

It’s an attitude.

It’s a set of personal values about responding to the real world, being open to the information that’s there, and being willing to do something about it.

At the end we just need to embrace and decide if we want to be Agile or not 😉