Home / Posts tagged "Effective Teams"

Effective teams: know your code

This is the seventh post in a series about what makes a team effective. Effective means, the team does the right thing to reach its goal.

I’ve seen several projects that started well, but after about one year into the project problems arose. The developers started to do software archaeology before adding new functionality. They simply weren’t sure any more what happens inside their software. So they went from method to method and from class to class to guess what a change would do (or possibly break).

Their software had become a black box.

Slide47

Once the team cannot predict the impact of a change, estimations are impossible. The change may take one day when everything just works out fine. Or the change may take several weeks because the change results in a cascade of follow-up changes (also known as bugs). If the team can not even roughly estimate what a change costs, the team cannot plan anymore. They cannot say whether a certain feature is worth building (value is bigger than cost). Therefore, they cannot decide anymore what to do to make a profit.

Continue reading

Effective teams: Good ideas take time

This is the sixth post in a series about what makes a team effective. Effective means, the team does the right thing to reach its goal.

A lot of Scrum teams work Sprint per Sprint. They seldom look further ahead than a single Sprint.

While they really tackle problems just in time, define requirements as late as possible to eliminate waste, they still suffer from a big problem: Good ideas take time.

Finding a good solution to a hard problem takes normally more time than a single Sprint.

Continue reading

Effective teams: Always releasable

This is the fifth post in a series about what makes a team effective. Effective means, the team does the right thing to reach its goal.

Your code prevents doing the right thing

I often see teams that want to do the right thing but can’t. Their software won’t let them.

This is caused by lots of loose ends in the source code. Everything is begun but nothing is finished. There are simply too many open tasks. Or there is a lot of technical debt present. Before the team can do what it needs to do, it has to pay back a lot of technical debt. And there is often not the time for that. A third cause is lack of automation. Everything has to be done by hand. This is error prone and slow. And all takes too much time to do it right, so just add a shortcut more to get it done. But this makes things even worse the next time a decision has to be made.

Slide39

Continue reading

Effective teams: Fits in my head

This is the fourth post in a series about what makes a team effective. Effective means, the team does the right thing to reach its goal.

Not even remotely comprehensible

A lot of software is built today by adding feature after feature very quickly without considering understandability and maintainability.

Slide28

The result is that new features find their way into the software slower and slower because understandability drops over time.

Continue reading

Effective teams: Start with minimal solution

This is the third post in a series about what makes a team effective. Effective means, the team does the right thing to reach its goal.

Big steps

When we have a goal in front of us, we tend to think about how we can get there in a single fast step. However, most of the times in software development the goal moves while we are walking towards it. Either because our customer sees our progress and has a better idea, or because we understand the problem a bit clearer and find a better solution.

When the goal moves and we wanted to get there in a single big step, we invested a lot:

  • we designed the whole solution up front and
  • we probably implemented code that is no longer needed and needs to be removed again (resulting in additional costs)

Moving goal

Continue reading

Effective teams: Plan the day

This is the second post in a series about what makes a team effective. Effective means, the team does the right thing to reach its goal.

Bad coordination

Bad coordination within the team is a major reason why teams are not effective. Things are done multiple times (“oh, you already did this? Me, too!”). Unnecessary work is performed because we just assume that this should be done. We miss opportunities to go live early, to add the feature with a simpler, cheaper solution or to act on a good idea. Or we simply build the wrong thing because of a misunderstanding.

Plan the day

In Scrum we have a great opportunity to coordinate within the team on every day at the Daily Scrum.

Plan the day

Continue reading

Effective teams: Free Jazz

This is the first post in a series about what makes a team effective. Effective means, the team does the right thing to reach its goal.

In free jazz, improvisation is an important part. But the musicians don’t just play whatever they like. If the Saxophonist takes over from the Trumpeter, he (normally) takes over a little part of the melody and then starts to modify it.

We should build software the same way in our team. We should build upon what is already there.

Continue reading