February 7th, 2020

404

программирование

Один навык, которму нельзя научиться иначе, чем на личном опыте, это способность замечать, когда пишется слишком много кода.

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

Обычно такие ситуации — это ошибка планирования. Хороший продакшен-код всегда локален и скучен, он всегда работает с хорошо известной задачей с хорошо известными решениями. Часто такое возникает при попытке попробовать новый модуль/функцию/приём. Где-то в процесс применения выясняется, что начальные предположения не верны, и надо всё по-другому, а много написано под старые предположения... (заметим, ни слова про agile и изменяющиеся требования — я сейчас про внутреннюю кухню).

Если код оригинальный, дерзкий, глобальный, то это exploratory programming. Важно, нужно, но очень не желательно в продакшене. В exploratory programming программист исследует возможности, и, в какой-то момент, исследует свой код. Т.е. код контролирует что программист может сделать.

Это строгая противоположность того, когда программист владеет кодом.

(Пост написан по мотивам размышления над рабочим кодом, когда я решил не писать «интересный, но сложный» кусочек просто потому, что мне показалось, что после меня останется слишком много кода. Лучше иметь дуболомный код, который я контролирую, чем шаткий табурет тонкой работы).