The Artima Developer Community
Sponsored Link

Web Buzz Forum
How to Convince Your Non-Technical Manager to Spend Resources on Refactoring

0 replies on 1 page.

Welcome Guest
  Sign In

Go back to the topic listing  Back to Topic List Click to reply to this topic  Reply to this Topic Click to search messages in this forum  Search Forum Click for a threaded view of the topic  Threaded View   
Previous Topic   Next Topic
Flat View: This topic has 0 replies on 1 page
John Wilger

Posts: 151
Nickname: killalldas
Registered: Sep, 2004

John Wilger is a professional web applications developer for SchoolOutfitters.com
How to Convince Your Non-Technical Manager to Spend Resources on Refactoring Posted: Feb 3, 2005 9:24 AM
Reply to this message Reply

This post originated from an RSS feed registered with Web Buzz by John Wilger.
Original Post: How to Convince Your Non-Technical Manager to Spend Resources on Refactoring
Feed Title: ThatWebThing: Weblog
Feed URL: http://thatwebthing.com/rss.php?category=2_Weblog&version=1.0
Feed Description: Design, Usability and Programming for the Web Weblog entries.
Latest Web Buzz Posts
Latest Web Buzz Posts by John Wilger
Latest Posts From ThatWebThing: Weblog

Advertisement

I particularly enjoyed this excerpt from the online example chapter of Joshua Kerievsky’s book, Refactoring to Patterns:

Design Debt

If you ask your manager to let you spend time continuously refactoring your code to “improve its design,” what do you think the response will be? Probably “No” or an extended outburst of laughter or a harsh look. Keeping up with an endless stream of feature requests and defect reports is hard enough! Who has time for design improvements? What planet are you living on?

The technical language of refactoring doesn’t communicate effectively with the vast majority of management. Instead, Ward Cunningham’s financial metaphor of design debt [F, 66] works infinitely better. Design debt occurs when you don’t consistently do three things.

1. Remove duplication.

2. Simplify your code.

3. Clarify you code’s intent.

Few systems remain completely free of design debt. Wired as we are, humans just don’t write perfect code the first time around. We naturally accumulate design debt. So the question becomes, “When do you pay it down?”

Due to ignorance or a commitment to “not fix what ain’t broken,” many programmers and teams spend little time paying down design debt. As a result, they create a Big Ball of Mud [Foote and Yoder]. In financial terms, if you don’t pay off a debt, you incur late fees. If you don’t pay your late fees, you incur higher late fees. The more you don’t pay, the worse your fees and payments become. Compound interest kicks in, and as time goes on, getting out of debt becomes an impossible dream. So it is with design debt.

Discussing technical problems using the financial metaphor of design debt is a proven way to get through to management. I routinely take out a credit card and show it to managers when I’m speaking about design debt. I ask them, “How many months in a row do you not pay down your debt?” While some don’t always pay off their debt in full each month, nearly all don’t let debt accumulate for long. Discussions like this help managers acknowledge the wisdom of continuously paying down design debt.

Once management accepts the importance of continuous refactoring, the organization’s entire way of building software can change. Suddenly, everyone from executives to managers to programmers agrees that going too fast hurts everyone. Programmers now have management’s blessing to refactor. Over time, the small, hygienic acts of refactoring accumulate to make systems easier and easier to extend and maintain. When that happens, everyone benefits, including the makers, managers, and users of the software.

Read: How to Convince Your Non-Technical Manager to Spend Resources on Refactoring

Topic: TextPress or, WordPattern? Previous Topic   Next Topic Topic: A man who gets it

Sponsored Links



Google
  Web Artima.com   

Copyright © 1996-2019 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use