В эволюции программиста можно выделить три этапа. На первом этапе программа меняется, пока она не начнет правильно работать. На втором — пока код не станет хорошо читаемым. На третьем — пока не достигнет такого состояния, когда дальнейшие изменения только ухудшают выразительность кода.

Первый этап сродни обучению. Второй — оттачивание мастерства. Третий этап похож на исскусство японской каллиграфии, когда важно уже не что пишется, но как пишется.