Make it work, make it right, make it fast

I’ve recently come to appreciate

Make it work, make it right, make it fast.
— Kent Beck

Applied to an individual development task, it means to distinctly separate each of these phases of development and to only transition from to the next task when the previous one is complete;

  1. Get the feature to work as fast as possible. The goal here is only to understand the problem and find solution(s). Nothing more. Be prepared to discard any/all of the code you write.
  2. Refactor; Deduplicate code, clarify interfaces, sole responsibility, SOLID etc. This might mean a rewrite of any code written in step one. Or choosing a different solution.
  3. If there are any obvious performance bottlenecks with easy solutions, implement them now. But be careful to avoid premature optimisation.

Make it work, make it right, make it fast. — Kent Beck

Some people apply this to a whole project. This sounds like a good idea, but I don’t think it works in practice. Here are some one else's thoughts on that.

Comments

Post new comment

Warning
Please refrain from adding URLs to unrelated or commercial websites. This site is moderated and comments with inappropriate links are rejected. Thank you for your understanding.
The content of this field is kept private and will not be shown publicly.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.
  • Web page addresses and e-mail addresses turn into links automatically.

More information about formatting options