# 12 Agile Principles

Can be categorized in 4 categories. (<mark style="background-color:yellow;">The PPPP, the 4 P's</mark>)

## <mark style="background-color:purple;">Project principles</mark>

### **Agile principle #1**

<mark style="background-color:yellow;">Our highest priority is to satisfy the customer through early and continuous delivery of</mark> <mark style="background-color:yellow;"></mark>*<mark style="background-color:yellow;">valuable software</mark>* (or Valuable working tangible product).

Can be summarized with these two acronyms:

<mark style="background-color:yellow;">**IKIWISI**</mark> -> I know it when i see it

* <mark style="background-color:yellow;">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</mark> with the product. YAGNI -> You ain't gonna need it
* Is about <mark style="background-color:yellow;">eliminating waste</mark>, and maybe finding a shortcut.
* Because studies have shown that <mark style="background-color:yellow;">most features of a product are never used</mark>.
* And only <mark style="background-color:yellow;">20% of the features bring 80% of the revenue</mark>.

### **Agile principle #2**

*<mark style="background-color:yellow;">**Welcome changing requirements**</mark>*<mark style="background-color:yellow;">, even late in development</mark>. Agile processes harness change for the customer's competitive advantage.

<mark style="background-color:yellow;">Changes are what lead to success in complex environments</mark>. 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**

*<mark style="background-color:yellow;">**Deliver working**</mark>*<mark style="background-color:yellow;">**&#x20;**</mark><mark style="background-color:yellow;">**software**</mark><mark style="background-color:yellow;">**&#x20;**</mark>*<mark style="background-color:yellow;">**frequently**</mark>*, from a couple of weeks to a couple of months, with a preference to the shorter timescale.

<mark style="background-color:yellow;">Because we need to inspect what have been done, and adapt fast.</mark>

### **Agile principle #8**

<mark style="background-color:yellow;">Agile processes promote</mark> <mark style="background-color:yellow;"></mark>*<mark style="background-color:yellow;">**sustainable development**</mark>*. The sponsors, developers, and users should be able to maintain a <mark style="background-color:yellow;">constant pace</mark> indefinitely.

Sustainable means that:

* <mark style="background-color:yellow;">Working long hours, over night, or on weekends</mark> <mark style="background-color:yellow;"></mark><mark style="background-color:yellow;">**IS NOT THE WAY**</mark> <mark style="background-color:yellow;"></mark><mark style="background-color:yellow;">to go</mark>.
* Complex problems, usually requires knowledge workers need to make tough decisions.
  * This means that <mark style="background-color:yellow;">working overtime</mark>, might show good results in the short term, but on the long term, <mark style="background-color:red;">will lead to issues, stress, overload and lack of motivation</mark>.

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**

*<mark style="background-color:yellow;">**Working**</mark>* <mark style="background-color:yellow;"></mark><mark style="background-color:yellow;">software is the primary measure of</mark> <mark style="background-color:yellow;"></mark>*<mark style="background-color:yellow;">**progress**</mark>*<mark style="background-color:yellow;">.</mark>

Agile is about learning and adapting to <mark style="background-color:yellow;">maximize the value delivery</mark>.\
But value delivery is only achieved by working products.\
So plans, proposals, or design documents, is usually not considered as progress.

## <mark style="background-color:purple;">Product principles</mark>

### **Agile principle #10**

*<mark style="background-color:yellow;">**Simplicity**</mark>* - the art of maximizing the amount of work not done - is essential.

We have two perspectives:

* Business
  * Think about YAGNI, <mark style="background-color:yellow;">there is no value delivering things that no one will use</mark>. (***Lean*** Thinking)
* Technical
  * Make the solution simple too.
  * You should only document what is necessary.
    * Making the doc, simple, short and concise.
  * Can you <mark style="background-color:yellow;">automate</mark> something, and make your daily routine simpler.
  * No re-inventing the wheel.
  * <mark style="background-color:yellow;">Don't overthink</mark> ahead. (By designing all future possible scenarios)

### **Agile principle #9**

<mark style="background-color:yellow;">Continuous attention to</mark> <mark style="background-color:yellow;"></mark>*<mark style="background-color:yellow;">**technical excellence**</mark>* <mark style="background-color:yellow;"></mark><mark style="background-color:yellow;">and good design</mark> 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.\
\&#xNAN;***For instance, use modern DevOps and testing automation practices.***

## <mark style="background-color:purple;">People principles</mark>

### **Agile principle #4**

*<mark style="background-color:yellow;">**Business**</mark>* <mark style="background-color:yellow;"></mark><mark style="background-color:yellow;">people and</mark> <mark style="background-color:yellow;"></mark>*<mark style="background-color:yellow;">**developers**</mark>* <mark style="background-color:yellow;"></mark><mark style="background-color:yellow;">must work</mark> <mark style="background-color:yellow;"></mark>*<mark style="background-color:yellow;">**together**</mark>* 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 <mark style="background-color:yellow;">technical people will have business related questions, and 80%-95% of these questions should be answered in under 5 minutes</mark>.\
This <mark style="background-color:yellow;">required availability</mark> is a massive mind shift for some business people.

### **Agile principle #5**

<mark style="background-color:yellow;">Build projects around</mark> <mark style="background-color:yellow;"></mark>*<mark style="background-color:yellow;">**motivated**</mark>* <mark style="background-color:yellow;"></mark><mark style="background-color:yellow;">individuals.</mark> <mark style="background-color:yellow;"></mark>*<mark style="background-color:yellow;">**Give**</mark>* <mark style="background-color:yellow;"></mark><mark style="background-color:yellow;">them the environment and</mark> <mark style="background-color:yellow;"></mark>*<mark style="background-color:yellow;">**support**</mark>* <mark style="background-color:yellow;"></mark><mark style="background-color:yellow;">they need, and</mark> <mark style="background-color:yellow;"></mark>*<mark style="background-color:yellow;">**trust**</mark>* <mark style="background-color:yellow;"></mark><mark style="background-color:yellow;">them</mark> to get the job done.

Since <mark style="background-color:yellow;">agile is based on bottom-up intelligence and self organized teams</mark>, 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 *<mark style="background-color:yellow;">**face-to-face conversation**</mark>*.

<mark style="background-color:yellow;">Communication is one of the significant causes of project failures.</mark>

<figure><img src="https://3254186584-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FA9AaxvoNFpTEwZ12nTvp%2Fuploads%2Flb4AnyRvsCAxSE28ZU38%2Fagile-principle-1.png?alt=media&#x26;token=ab653882-c78e-4b56-8d1a-8975207d6d61" alt="" width="563"><figcaption></figcaption></figure>

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 *<mark style="background-color:yellow;">**self-organizing teams**</mark>*.

Achieving optimal solutions falls from giving the developers the necessary <mark style="background-color:yellow;">autonomy to make decisions</mark>.

*<mark style="background-color:yellow;">This principle conflicts with the traditional top-down control management</mark>, 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 <mark style="background-color:yellow;">bottom-up intelligence</mark>, and senior management gives the team autonomy to manage and assume responsibility for their own tasks.

## <mark style="background-color:purple;">Process principles</mark>

### **Agile principle #12**

<mark style="background-color:yellow;">At</mark> <mark style="background-color:yellow;"></mark>*<mark style="background-color:yellow;">**regular intervals**</mark>*<mark style="background-color:yellow;">, the team</mark> <mark style="background-color:yellow;"></mark>*<mark style="background-color:yellow;">**reflects**</mark>* <mark style="background-color:yellow;"></mark><mark style="background-color:yellow;">on how to become more effective, then tunes and adjusts its behavior accordingly.</mark>

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 <mark style="background-color:yellow;">proactively, finding what works well, and what does not work well</mark>, continually improving.
