Auch ein schlechtes Design muss erstmal erdacht werden. Man sollte wenigstens grob wissen, was man gerade implementiert und wie man es einigermaßen testen kann. Dazu braucht man eine Vorstellung, was man gerade tut.
Und alles runterimplementieren und erst testen, wenn es komplett fertig ist, können die wenigsten. Fehlerfrei, so behaupte ich, kann es keiner. Erst recht keinen Kernel.
Ich meinte damit kein geschriebenes Pflichtenheft; ein paar Notizen oder bisschen nachdenken reicht gelegentlich auch.