Refactoring = waste

When Kent Beck published his book on XP his message was clear. Refactor mercilessly.

Refactoring is a form of rework and in lean that is considered waste. So was Kent mistaken about this?

Is there any proof that refactoring and Evolutionary Design (ED) are better than Big Upfront Design (BUD)? Agilist seem to have a strong believe that BUD leads to more waste than ED. The cost of refactoring is considered lower than the cost of building the wrong system.

However, is there any proof to this or is it just beliefs and gut feelings? I have certainly seen absolute poor design coming from ED, but so have I seen this with BUD. The difference? BUD seems to deliver structured crap. ED seems to deliver unstructured spaghetti crap.

“Now hold on”, I hear you saying. That must mean they did not refactor! Maybe… The success of refactoring seems to depend on several things. Skill, experience, motivation, courage, discipline. Discipline is only easy when it has become a habit. As long as we need to think about it, it is doomed to fail. If we are still dependent on willpower, then there is a fair chance we won’t refactor when we know it is needed.

Don’t get me wrong. I much more like the ED way of working, but I am just not sure it can be considered a superior to BUD.

ED is allows earlier feedback. This makes it easier to adjust when you find out you are working in the wrong direction. ED allows responding to change, but this also has it’s limits. If the entire goal of the software system changes, it may mean the whole software must be changed.

Refactor mercilessly. Is that even a good idea? I have seen teams stranding and take forever to deliver the next feature, because they needed to refactor more. When you encounter such a situation, stop them? Refactoring is only allowed on code that is impacted by adding the next feature.

Meetings are toxic

Today’s office space is for many people not more than an interuption factory. When you ask people when they come in early or leave late, a common answer is that these early or late hours are the only hours they get some real work done.

Meetings are the word kind of all interruptions. I am also confronted with this challenge. I hate meetings. Especially the once that fall in the category of pure waste. Pure waste to me is when no customer is willing to pay for that time.

I am always looking for the goal of the meeting and what problem the meeting is supposed to solve. There can be one or more goals for a meeting, but if you need to have one it is best to stick to just a single goal to keep things simple.

Here are some problems I see with meeting:

  • They are regularly about abstract things instead of real things.
  • They typically convey a poor level of information. Either too low, too high or irrelevant.
  • They easily drift off-topic.
  • They either require too much prep-work that people don’t have time for.
  • They regularly have a too vague or no agenda at all. Nobody knows the real goal.
  • They include at least a single moron who gets too much time to waste everyone’s time.
  • The worst of all… they procreate. One meeting leads to another meeting that leads to another meeting etc.

Here are some objectives that may help you to focus and limit the time you spend in meetings.

  1. Information sharing – when the objective is to share specific information
  2. Problem solving – when the objective is to solve a specific problem
  3. Decision making – when the objective is to engage in meaningful dialogue in order to reach a decision
  4. Education – when the objective is to learn new things or acquire new skills
  5. Ideation – when the objective is to generate new ideas and develop new ways of thinking
  6. Network – when the objective is to share ideas or meet new people
  7. Produce – when the objective is to work together to develop a specific output
  8. Promote – when the objective is to introduce a new offering or promote a new message
  9. Celebrate – when the objective is to commemorate a milestone or accomplishment

Keep it short: 15 minutes or 30 minutes and no more. Any longer and you end up wasting time. Prepare to make meetings effective and efficient.