29May

Working the Agile Way: Lean and KanbanIn today’s fast-paced and ever-changing world, optimization reigns supreme: thanks to technological advancements of recent decades, we’ve been able to change the way we approach and develop products. The IT sphere has been the quickest to react and adopt these changes, mirroring the efficiency and speed at which developers push updates and fix bugs — when hiring freelance web developers, agility does play a huge role.

A natural response to the increasing pace of software development was the agile a combination of rules and principles which are woven into a set of best practices, guiding whole companies to better development. Nowadays, agile is far more than just a number of principles; it has created a whole culture around it, with its own gurus, different schools of thought, and so on. However, at the very heart of the agile movement are still the basic principles — and in this article, we’ll explore how they can be used to improve your workflow.

The power of agile systems

Working the Agile Way: Lean and Kanban
Lather, rinse, repeat

Agile manifesto, published in 2001, took the world of project development by storm: was unpredictable, complex, and failing to predict budgets, deadlines, and customer needs — so 17 engineers from Utah figured that there had to be a more efficient way of working. Nowadays, their brainchild has evolved into something overly complex (Deloitte’s infamous “The Agile Landscape” map is a good example), but 18 years ago, things were simpler.

Agile’s original simple principles are based on the “Respond to change” philosophy. Our blog has a series in which we explored Agile software development with Scrum (Part 1, Part 2, Part 3). However, Agile has an interesting counterpart: the Lean method, which takes a different approach.

Lean production

Working the Agile Way: Lean and Kanban
The pillars of manufacturing

Despite the software development focus of this method, it’s always curious to remember that Lean comes from the times when the software didn’t even exist: in post-WWII Japan, Toyota executives were struggling to compete with American car manufacturers (GM and Ford) as the number of American cars were just too large. Toyota then decided to compete in quality (as well as efficiency and variety).

This was an ambitious undertaking — so the company needed to rethink their manufacturing process. Their competitors had the resource advantage and could, therefore, utilize the “push” approach — create a product, push it to the market and hope that it sticks. Toyota didn’t have the capacity for this process, so they utilized the “pull” process instead, effectively pulling information that the market provides: what product do customers want? When do they want it? How much? Where? (The latter 3 questions form the “Just-in-Time” approach)

During this time, Toyota created a new management/production system designed to eliminate waste: this meant that resources like materials, time, talent, inventories, and energy had to be preserved. To do this, the company applied two concepts: Jidoka ensures that no defective products are produced (when a malfunction occurs, work stops immediately and completely), while Just-in-Time is meant to ensure that only what is needed, when it is needed, and in the amount needed is created.

This philosophy is neatly summarized in Eric Ries’ best-selling book, The Lean Startup: every startup is a grand experiment and its goal is to answer questions. The question should not be “Can this product be built?”, but Should this product be built? and Can we build a sustainable business around this set of products and services? instead.

Lean management

Working the Agile Way: Lean and Kanban
Agile indeed!

Even though the Lean system was conceived within the car industry, it proved to be an incredibly effective method which could be: 1) used in various industries and 2) scaled for various sizes and needs. Nowadays, it’s really famous in the IT sphere as Lean management principles were especially successful there.

These principles stemmed from the core concepts, Jidoka and Just-in-Time, and served as a great way of improving the Lean system even further.

  • Identify value: What value can the end user/customer get?
  • Map value stream: In the value stream, which steps actually create value? Which do not?
  • Create flow: How to organize the value-creating steps so that the product will smoothly connect with the customer?
  • Establish pull: How to ensure that the customers pull value from the next upstream activity?
  • Seek perfection: Reiterate the process until the value is perfect and doesn’t entail any waste.

One of Lean’s most important aspects lies in the relationships between the team (e.g. developers) and the management. Citing the It is people who build a process belief, Lean production encourages managers to trust the “product people” as they’re actually the closest people to the product.

Lean pros and cons

Although it boasts a number of advantages, Lean is not suitable for all projects. So how do its pros and cons compare? The pros are:

  • Can address risks quickly and cheaply: when a team decided to implement a new feature (e.g. integrating with a third-party API), it first checks, as early as possible, whether the production is running the risk of making a mistake
  • High focus on creating a successful (i.e. actually demanded by the market) instead of a “right” product (which is typically inspired by the CEO’s “vision” and can be misaligned with the market’s needs)
  • Makes the team empowered and engaged.

Still, there are also limitations as Agile…

  • … Requires responsible and engaged team members: in Lean processes, workers with the “Well, my work here is done and I don’t care how others are faring” mentality (i.e. failing or refusing to view the project from a wider perspective) are useless, if not detrimental.
  • … Requires a certain degree of dogmatism, i.e. sticking to the Lean principles in a strict manner.
  • … Requires flexibility and open-mindedness from both sides: the team and the client.

Kanban & Kanban Board

Working the Agile Way: Lean and Kanban
And now we’ve finally moved this article to “Done”

At its core, the Kanban board system is about dividing everything into “To do”, “Doing”, and “Done” columns. It excels at helping the team visualize its work via cards, columns, color, and so on — this allows team members to track progress,

David Anderson, a prominent figure in the world of agile, popularized the Kanban method: this method successfully borrowed Kanban principles utilized in car manufacturing and applied them to software development. Andreson defined 5 key elements of Kanban boards:

  1. Visual signals: To make information more readable and understandable, kanban boards utilize visual elements — cards, which allow both team members and managers to easily understand current work progress.
  2. Columns: Each of them represents a specific activity in a given stage; stages are also called “workflow”. Workflows signify at which stage any given activity currently is: these are usually “To do”, “Doing”, and “Done”, but can be fine-tuned for the team’s needs.
  3. Work-in-progress limits: These limits prevent too much work tasks from stacking up. Every column is given a WIP limit: for instance, the “Doing” workflow has the limit of three — this means that the team cannot be doing four tasks simultaneously. Instead, team members should focus their resources on the current three tasks and move at least one of them forward, clearing the way for a new task. Thanks to WIP limits, teams can see at a glance whether there’s a bottleneck or too much concurrent work tasks.
  4. Commitment points: The “To do” workflow is preceded by a backlog which contains ideas for future releases. Once the team is ready, they choose an idea and start working on it — this moment is called the commitment point.
  5. Delivery points: Once a feature has been implemented (or the whole product can be used by the customer), it reaches the delivery point.

Now we see that the Kanban board is actually quite complex. The five elements described above are designed for one goal: making the card’s journey from commitment point to delivery point as fast as possible — this time frame is called Lead Time. Kanban teams, therefore, always strive to decrease Lead Time.

The Kanban method insists that work cards cannot go back to previous stages as this can potentially cause a task to be stuck in a loop, preventing work from actually being done. Instead, kanban workers need to swarm a given problem and ensure that the card can go further safely. Curiously enough, online kanban services (Jira and Trello, for instance) don’t adhere to this rule and allow work cards to time-travel back and forth. 🙂

How can kanban benefit your team?

We have a number of remote teams at Soshace: sales managers, HR managers, content managers. Although we’re not reliant on kanban boards per se, kanban principles are actually quite beneficial:

  • Improve visibility: Kanban system tells you at a glance what processes there are (e.g. “Backlog”, “Preparation”, “Communication”, “Execution”) and where each given task/feature is. Various online kanban services also offer color options: for instance, a card with a red highlight is considered “blocked” and signals that its author cannot resolve this problem on their own and needs assistance.
  • Define the rules of the development cycle: Once a card reaches a delivery point, the team has a clear understanding of what steps have been taken to complete this work. To publish this article, for instance, our team discussed whether this topic is interesting and insightful → prepared its plan → did the research and → created the illustrations.
  • Track better: Online kanban boards are especially great at tracking various stats so the team can use these insights to ask “Why is this card taking so long?”

Conclusion

The world of agile systems can be explored forever — there are whole manuscripts with hundreds and hundreds of pages dedicated to all the intricacies of agile management. Hopefully, this article can serve as a neat segway into Lean and Kanban — and how they can make your team even better. 🙂

List of Coding Games to Practice & Improve Your Programming Skills

In this post, we’ll take a look at some of the best online games to learn new programming languages and practice your existing programming skills. Some of those are beginner only, others may seem far advanced at the start, but give it a go, and you’ll thank us later. If we forgot to mention something, or you’re building a cool game of your own, do let us know in the comments! Happy learning!

Leave a Reply