Signed by a human
A pre-AI philosophy of how to build great products
By @jack on
"Make It Work" is the first stage of a three-part coding philosophy popularized by Kent Beck. The framework gives developers a disciplined sequence for building software instead of trying to solve every concern at once.
The Three Stages
1. Make It Work
Get the code functioning first. The aim here is simply to satisfy the acceptance criteria — nothing more. Polish, structure, and performance can wait; what matters is proving the solution actually solves the problem.
2. Make It Right
With working code in hand, shift attention to cleanliness. Refactor for readability and maintainability, tighten up structure, and bring the implementation in line with good coding practices so it's easier for others (or future-you or AI) to work with.
3. Make It Fast
Only now does performance enter the picture. Optimize where it genuinely matters — algorithmic efficiency, resource usage — while being careful not to undo the clarity gained in the previous stage.
Taken together, these stages let developers move from a rough-but-working solution to something both fast and well-structured, without sacrificing functionality along the way.
Signed by a human
A pre-AI philosophy of how to build great products
By @jack on
"Make It Work" is the first stage of a three-part coding philosophy popularized by Kent Beck. The framework gives developers a disciplined sequence for building software instead of trying to solve every concern at once.
The Three Stages
1. Make It Work
Get the code functioning first. The aim here is simply to satisfy the acceptance criteria — nothing more. Polish, structure, and performance can wait; what matters is proving the solution actually solves the problem.
2. Make It Right
With working code in hand, shift attention to cleanliness. Refactor for readability and maintainability, tighten up structure, and bring the implementation in line with good coding practices so it's easier for others (or future-you or AI) to work with.
3. Make It Fast
Only now does performance enter the picture. Optimize where it genuinely matters — algorithmic efficiency, resource usage — while being careful not to undo the clarity gained in the previous stage.
Taken together, these stages let developers move from a rough-but-working solution to something both fast and well-structured, without sacrificing functionality along the way.