star12 Agile Principles

Can be categorized in 4 categories. (The PPPP, the 4 P's)

Project principles

Agile principle #1

Our highest priority is to satisfy the customer through early and continuous delivery of valuable software (or Valuable working tangible product).

Can be summarized with these two acronyms:

IKIWISI -> I know it when i see it

  • The only way to get valuable feedback from the customer, and learn the best path to success, is by delivering valuable products that the customer can use and have an authentic experience with the product. YAGNI -> You ain't gonna need it

  • Is about eliminating waste, and maybe finding a shortcut.

  • Because studies have shown that most features of a product are never used.

  • And only 20% of the features bring 80% of the revenue.

Agile principle #2

Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.

Changes are what lead to success in complex environments. It is part of the process of learning more about the problem.

Related to the #1 principle, since changes might have been originated from the customer's feedback.

Agile principle #3

Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.

Because we need to inspect what have been done, and adapt fast.

Agile principle #8

Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.

Sustainable means that:

  • Working long hours, over night, or on weekends IS NOT THE WAY to go.

  • Complex problems, usually requires knowledge workers need to make tough decisions.

    • This means that working overtime, might show good results in the short term, but on the long term, will lead to issues, stress, overload and lack of motivation.

So in practice this principle, is followed by giving the team alternative to negotiate with business as equals, such as having the developers select the amount of work.

Agile principle #7

Working software is the primary measure of progress.

Agile is about learning and adapting to maximize the value delivery. But value delivery is only achieved by working products. So plans, proposals, or design documents, is usually not considered as progress.

Product principles

Agile principle #10

Simplicity - the art of maximizing the amount of work not done - is essential.

We have two perspectives:

  • Business

    • Think about YAGNI, there is no value delivering things that no one will use. (Lean Thinking)

  • Technical

    • Make the solution simple too.

    • You should only document what is necessary.

      • Making the doc, simple, short and concise.

    • Can you automate something, and make your daily routine simpler.

    • No re-inventing the wheel.

    • Don't overthink ahead. (By designing all future possible scenarios)

Agile principle #9

Continuous attention to technical excellence and good design enhances agility.

Here we have 3 word.

  • Quality

  • Quality

  • Quality

We don't want to do just one big delivery, but a chain of quick deliveries. Develop only the necessary and let the team what they can do. Give them autonomy.

Stressed out people do crappy stuff. Whenever possible automate your quality assurance and control processes. For instance, use modern DevOps and testing automation practices.

People principles

Agile principle #4

Business people and developers must work together daily throughout the project.

Usually in traditional or waterfall projects, the customers are heavily involved at the beginning and end of a project.

Though in agile, we need the customers available throughout the entire cycle, to help the developers to adapt the project. During the development, the technical people will have business related questions, and 80%-95% of these questions should be answered in under 5 minutes. This required availability is a massive mind shift for some business people.

Agile principle #5

Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.

Since agile is based on bottom-up intelligence and self organized teams, what is the role of management?

They must give the team the necessary support and trust them as responsible and capable of doing their best.

The key concept is having serving leaders or leaders who serve, giving the team necessary coaching, mentoring, training and support to be as effective as possible.

Agile principle #6

The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.

Communication is one of the significant causes of project failures.

But sometimes there is need for persistence in the communication, because people are in different timezones, or for other reasons.

Agile principle #11

The best architectures, requirements, and designs emerge from self-organizing teams.

Achieving optimal solutions falls from giving the developers the necessary autonomy to make decisions.

This principle conflicts with the traditional top-down control management, where a single manager concentrates the decision making power.

However, for complex problems it is most likely that the people doing the work, who are immersed in the problems context are better informed than a manager. So we need bottom-up intelligence, and senior management gives the team autonomy to manage and assume responsibility for their own tasks.

Process principles

Agile principle #12

At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

While agile focus on building the right product, it also focus on building it right. In other word, just as the team learn more about the product, they also learn on how to be more effective developing it.

Agile culture is based on proactively, finding what works well, and what does not work well, continually improving.

Last updated