Customer collaboration over contract negotiation

Customer collaboration needs to be constant and open to ensure the delivery is validated.

Software is needed by customers, for a specific reason. The success of a development project is measured against this. How does the software match the original customer need?

Good customer collaboration with the team, calibrates their common goal. The customer collaboration also involves negotiating the features, instead of using a contract. The changes in development are done in increments. This allows the team to break the goal into smaller pieces, which are easier to understand.

A method called INVEST, can for instance be used to specify the needs of the customer. Methods such as SCRUM has a foundation, which relies on customer collaboration. SCRUM is applied best when the developers and customer are in the same room. Teams are kept small and self-manage. Most meetings are short and frequent. This allows the team to keep focus. Each team member plays a part and improves efficiency.

The target for the project team is to work closely with the customer. The development team focusses on software development. Business people focus on explaining the need. The project is managed by a scrum master. The role of the scrum master, is to manage customer collaboration. The methods are either formal or casual. Tools such as a SCRUM or KANBAN boards are used. Additional tools can include e-mail, conferencing software or any combination of tools.

Customer collaboration has become essential for success. Business owners have come to realise, the critical impact of weak collaboration. Failed communication translates directly into project failure. We have also entered an age of faster delivery speed. Failures are seen faster than before. Our margin for error has become much smaller than before.

Healthy customer collaboration is more critical than ever before. The teams who quickly collaborate well, will make the needed gains.

Working software over comprehensive documentation

How does working software decrease the need for documentation?

Documenting a system is a challenge. It may for instance be due to a lack of time or system complexity. The need for documentation has not changed and working software is becoming more important than before.

It is not an easy task to understand a system, without having information. The rules and process of a system are not always obvious. System development speed is also increasing each day. This has resulted in a greater need for documentation.

It seems that in reality we have not been able to align development and documentation. Time is limited and should be spent well. Creating documents which are not used or are outdated is a waste of time.

We have also seen an increase in more UX being done in teams. Good UX design limits the need for documentation.

The agile manifesto describes how we can find a balance between working software and documentation. Balance is not found by doing more documentation. It is also not found in not doing documentation. It describes a creative way to combine the two. The manifesto rely on good development practices.

The practices involves writing readable code which is modular and reusable. The manifesto is again not trying to replace existing ways of work. We need to write good software, which makes it managable. Simple code is also reused with more ease.

Reading well written code saves time and allows us to develop more code. UX being done correctly, is also needed for working software. Software needs to be usable, to be considered working software.

The agile manifesto addresses the idea, that we need to develop software in a smart way. We need to spend time to plan and consider how people will use the software. This approach will improve the quality of the software and less documentation is needed.

Purpose of Agile Manifesto Principles

The agile manifesto principles focus on the customer.

The agile manifesto principles serves as a compass, which keeps our focus on what matters. It is a good idea to keep them in mind, when applying agile.

It is fun to develop software, since you create something new. It used to be enough in the early days to produce any software that worked. You wrote great code and people loved you for it. The internet has changed the way we view software and developers. It continues to change the software and the way we think. Business people think different, developers think different and our customers think different.

This change can be scary to most. Change often takes away our comfort. People enjoy comfort, since we feel secure. Comfort also does not require much from us. We can repeat what we had done before and stay happy.

Change however is needed to improve and become better. It is needed to have new software and improve quality. It is of no use for us to avoid change or delay it. Sooner or later change comes to us all. We are left with a choice to make. Do we embrace change or hide until it is too late? Prevention is better than cure. The best approach is to face the change and make decision early. This way we manage the impact of change carefully and find a way to grow out of it.

Developers are also important and the agile manifesto principles assist them. It reminds us of important points, to keep in mind while we develop. We need to reflect on how to become effective. Architecture and systems design is kept in mind constantly.

The agile manifesto principles remind us, that we write software for a reason. We have customers, who will use our software. They expect quality and speed from us. We should consider applying the agile manifesto principles carefully.

Individuals and interactions over processes and tools

Individuals should be valued more than a process or tool

Agile has given us the promise of less processes. The promise was further to focus on the individual. It happens often, that people in the team I work with do not like to hear about process. One of the reasons why Agile became popular, was that people wanted to break free from the process driven business world.

Could it have been an act of rebellion? Or was it simply the idea that we can do more with less? The truth may be found somewhere in the middle. We prefer to have as little rules as possible. Rules can keep us from doing what we really want. Rules can also slow us down and makes us less effective.

Each individual finds a time in his career, when he feels he could be valued more. We want to be appreciated. Only receiving a salary each month, is not enough. People should see our value. We should encourage each other and give hope where we can.

Being a professional is important and needed. We need to consider others and learn how to be efficient. Each individual should grow in his career. New skills needs to be practiced. There is however another side which people do not speak about.

Interactions between individuals are also important. We need to be able to speak to each other. How well do we know the people sitting next to us? Most of the day is spent with people at work. It is those people we sit with, who affects us most during the day.

Agile uses this often overlooked part of work. It states that the interaction between individuals we work with, are more important than a process or tool.

Why is this? It is rather simple. No process or tool can provide the result that speaking with each other gives. The sum of the parts are greater that the whole.

Agile and chaos are not cousins or are they?

What do you mean with agile not having a cousin?

People sometimes think agile is the same thing as chaos. The truth is they are not even distant cousins. We know that agile is a dynamic idea and keeps changing. We did not imagine how big its impact would be. We are today exposed to this strange and wonderful idea on a daily basis.

It seems at times like we are playing with ideas. Almost like trial and error. We try to make a good change, while using little effort. It is about getting quality results, without wasting your time. How well have we done with this target?

The idea of Agile is changing so quickly and you have to keep in touch with it. You can easily get lost with the amount of daily events, ideas and changes. The beauty of all things agile is also found in the many views and opinions of people trying to be agile. Each new opinion adds flavour. The risk of chaos also increases with each new thought or method we think of.

It is said that variety is the spice of life. I often think of agile as a workshop tool which can be used by a craftsmen to produce art. It can also be lead to a catastrophic event … You must be carefull to keep your focus, when you try to be more flexible.

People’s idea to change to a more agile way, sometimes leads to conflict. In the worst cases it leads to fighting between people or teams. We have a word for this, right? It is called FUD, which we need to guard against constantly. Sharing these new and “weird” ideas is great, but we must be careful.

My hope for this blog is to discuss personal change in people’s lives and find ways to improve on the journey we call life. So welcome to my journey and I hope we have fun together.

Guideline – 3Bs

3Bs is a guideline which I use to balance my effort within a project

Using agile can often be frustrating, since we do not have a set of defined processes as we find in the Prince2 or PMI frameworks. There is a good reason for this, since we rely people to implement the process individually. The topic is discussed in my previous article which does an overview of Individuals/Interactions over Process/Tools. Using a formal guideline or rule, will be against the spirit of agile development.

Applying agile gives you the opportunity to be creative. It is much easier to implement a personal guideline to achieve goals, than prescribed formal rules. The guideline can in some cases still use information from formal frameworks. Agile thinking gives you freedom, which can be used to be more effective in a practical way.

I have developed a personal guideline, to keep me focussed. I call it the 3Bs which stands for Boundaries, Balance and Brains.

Boundaries is a guideline, which reminds me to understand the boundaries in each situation. There are boundaries imposed which one cannot change. In addition there are boundaries you can change. The Serenity Prayer goes a long way to have peace, when you encounter boundaries you cannot change. Finding the boundaries is key, since we need to know from the start where the limitations are.

Balance is the next guideline I use, to ensure my efforts are managed. This can be applied to time, scope of the project, people’s involvement and costs. It is important to deliver the project, but you should ensure it is within your abilities.

The final and key guideline is Brains, which reminds me to think things through. It is good to have boundaries and balance. It is however not a fail-safe way to manage a project. At some stage the specifics of each task, needs to be taken into account. The decisions within the boundaries or keeping the balance should always make sense.

I have found that keeping each guideline in mind, helps me to focus during the project.

Applying agile in software development using lean

The purpose of applying agile techniques, can be understood by looking at what influence agile

Look into applying agile and you will read about the Toyota lean process. People manage their work, thinking about the current task. They concentrate on the current task and move to the next task once it is done. The agile manifesto describes a lean way of software development. The agile manifesto explains how to stop waste in a few simple lines.

To say work is a waste, may sound wrong. Stopping waste is to focus on the right task. Work smart and not hard, as the old saying goes. Removing waste is to focus value and not all tasks. Tasks which are not needed is a waste of time.

Agile focus on working people to make decisions. Decisions are made for each task. Project teams do not rely on a project plan. Limited planning is done by people, who do the work and not someone else. Applying agile is to consider people and how they work.

People managing tasks in applying agile, may look like people without training should managing teams. It is easy to see in the workplace how this view is created. Applying agile, includes good communication. Each person should know what to do and what is excpected from them. Each task should also have an owner.

Applying agile is not about new ways of working. It is also not an excuse to not do planning. The current way of working should be adapted, to find easier ways to achieve goals. It is team effort and each person decides on his own work.

Agile is a natural step in development to work in a more lean way. It is applied to stop waste, improve learning, decide late, deliver fast and give the team a voice. Applying it should also be done in an lean way. Small constant changes and checking if the change works.