> For the complete documentation index, see [llms.txt](https://petozoltan.gitbook.io/simplecode/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://petozoltan.gitbook.io/simplecode/clean-code/clean-code-outline/specification-and-design.md).

# Specification & Design

Everything starts with this. But if it is not understood well, the clean coding is worth for nothing.

### Specification

* Specification must be clear, complete and consistent
* Specification must be well understood by the developers
* Avoid implementing a poorly specified features - *they will ruin the code*

### Design

#### Do not underdesign

* The design should be a correct and complete solution for the given problem
* Draw examples to see every possible cases and to find the good solution

#### Do not overdesign

* Do not design for assumptions
* Do not design solutions which will be used much later - *"They will be good in the future"*
* YAGNI - *You Ain't Gonna Need It*
