Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Many of my co-workers take pride in writing complex algorithms and programs, ones which take significant time to completely grok. I (strongly) tend towards the opposite end.

I'm proud when I write a program which a novice (or client) can trivially see is correct, by reading my source code. I'll often take time to mercilessly re-factor, rewrite a given piece of code over, and over, and over, again, until I'm sure that it can be read quickly, requires as little knowledge of specialized APIs (or even references to an English dictionary) to parse as possible, and is as close to natural language as I can make it.

This leads to some problems, though, when it comes to convincing (non-technical) clients and employers that my work is worth the money invested. Surprisingly, few people are willing to pay the extra money it takes to obtain code that they can verify for themselves is working as they think it works.

In this context:

I'm wondering if there are any good tools for displaying refactoring work.

I usually use git as a code repository, and have an almost nervous tick around committing even the smallest changes to my local repo.

I'm fairly sure that most of the information required to show the re-factoring effort is recorded in my git history.

share|improve this question

closed as off-topic by GlenH7, MichaelT, gnat, Kilian Foth, Bart van Ingen Schenau Feb 2 at 16:04

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions asking us to recommend a tool, library or favorite off-site resource are off-topic for Programmers as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it." – GlenH7, MichaelT, gnat, Kilian Foth, Bart van Ingen Schenau
If this question can be reworded to fit the rules in the help center, please edit the question.

What is your goal? Do you want the satisfaction of a job well done? do you want customers to pay you for refactoring? Do you want to demonstrate productivity increases? Do you just want to draw pretty pictures (fun, but not always helpful)? –  Alex Feinman Aug 31 '11 at 16:41
I want to be able to quickly and efficiently communicate the extra effort that has gone into code, resulting in it being cleanly written and nicely refactored –  blueberryfields Aug 31 '11 at 16:52
Okay. Communicate to who, and why do you need them to care? –  Alex Feinman Aug 31 '11 at 16:54

2 Answers 2

few people are willing to pay the extra money it takes to obtain code that they can verify for themselves is working as they think it works.

That's because non-technical people can't, no matter how clean and well-designed the code is. The only way your efforts provide any value to them is by enabling them to have your code be maintained by someone else. Simply telling them so may go some length towards justifying the expense - or justify their refusal to pay because they need the software quickly and don't plan to have it extended in the future.

One thing that might help you convince them is providing code metrics like cyclomatic complexity, average method length, etc. before and after refactoring (ideally as a graph over time). They won't understand the meaning of the metrics, but many people will trust numbers and graphs they don't understand more than abstract statements they don't understand.

share|improve this answer

Customers don't care about the 'quality' of code. They care about value for money.

Are you slower to deliver working code than your colleagues? I usually find that cleaner code can be delivered faster. Are your colleagues shipping buggy code quickly, getting credit for fast work but no penalty for the subsequent bug fixes? Then track it yourself, and take credit for your high-quality work.

If you are working more slowly, incurring extra expense, to save work in the future, does the future ever arrive? If it does arrive, then you can track the cost of changes. Customers and managers have a tendency to assume that if something was done quickly, it was easy. You have to point out that it was easy because you took the time earlier to make it easy.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.