При работе над кодом, очень часто повторяется одна и та же ситуация. Я вижу задачу, придумываю супер решение, но делаю не его.
Делаю я хуёвое временное решение.
Потом происходит код-ревью, мне предлагают несколько хороших правок и замечаний. Я их выполняю. и хуёвое решение становится ещё хуже.
Потом проект развивается, и моё хуевое решение обрастает мощью - становится всё хуевее и хуевее.
С ним начинают взаимодействовать новые компоненты системы, которые тоже приходится делать очень хуевыми, потому что хуевость в кодовой базе - это вирусная болезнь, она заражает все вокруг себя.
Потом разрабы в команде такие смотрят, и говорят - ну окей, код у нас все равно немыслимо хуевый, тут и стараться нечего. Когда-нибудь все перепишем. А пока мы будем писать очень, очень хуевый код, у нас нет другого выхода.
Что происходит дальше? Зависит. Если проект очень успешен коммерчески, может и найдутся ресурсы на переписывание, которое снизит градус хуевости в лучшем случае процентов на 20.
Если проект не очень успешен, то его хуевость так и будет стремится к бесконечности.
До тех пор, пока у бизнеса не кончатся деньги на разрабов.
Я слегка утрирую, в том смысле что болезнь обычно начинается не с одного плохого решения, скорее с десятков, может быть сотен.
Хороший вопрос - почему мы вообще принимаем такие решения.
Ну то-есть, ты же блин видишь, что говно делаешь. И знаешь, как сделать не говно. Зачем выбирать хуёвость?
Я обстоятельно покопался в себе - а я ведь действительно часто забиваю на качество - и выяснил, что причины обычно невероятно глупые. По крайней мере у меня.
Чаще всего мне тупо психологически легче сначала решить задачу, а потом уже думать, как решить её хорошо. Синдром самозванца, или что-то такое - но я ненавижу пребывать в состоянии, когда у меня висит таска, а я её ещё не сделал или не уверен, что вообще могу её сделать.
В итоге я делаю хуевое временное решение, а потом начинается вот что. Задача-то решена уже. Ставь пулл реквест, бери другую. Получишь свой кайф от завершенности. Увеличишь KPI. Усовершенствуешь продукт. Или сиди, и еби вола, размышляя, как бы сделать получше.
Гораздо чаще я всё-таки выбираю второе. Но иногда, особенно в периоды не лучшей своей производительности, соблазн решить проблему прямо сейчас побеждает меня.
Менеджер так хочет свою фичу прямо сейчас. Давайте дадим ему это!
Люди, которые меня оценивают, люди. которые мне платят - хуй клали на качество кода, они не умеют его оценивать. Моё умение писать качественный код они давно провалидировали, и никто не придёт ко мне со словами, что я плохой программист.
А вот прямо сейчас я могу комитить говно.
И никто мне за это слова не скажет! Более того, команда и бизнес поплатятся за некачественный код - но совсем нескоро. Я скорее всего буду работать в другом месте. Те, кто делал мне код-ревью - тоже. Как менеджер, который торопил меня с задачей.
Делаю я хуёвое временное решение.
Потом происходит код-ревью, мне предлагают несколько хороших правок и замечаний. Я их выполняю. и хуёвое решение становится ещё хуже.
Потом проект развивается, и моё хуевое решение обрастает мощью - становится всё хуевее и хуевее.
С ним начинают взаимодействовать новые компоненты системы, которые тоже приходится делать очень хуевыми, потому что хуевость в кодовой базе - это вирусная болезнь, она заражает все вокруг себя.
Потом разрабы в команде такие смотрят, и говорят - ну окей, код у нас все равно немыслимо хуевый, тут и стараться нечего. Когда-нибудь все перепишем. А пока мы будем писать очень, очень хуевый код, у нас нет другого выхода.
Что происходит дальше? Зависит. Если проект очень успешен коммерчески, может и найдутся ресурсы на переписывание, которое снизит градус хуевости в лучшем случае процентов на 20.
Если проект не очень успешен, то его хуевость так и будет стремится к бесконечности.
До тех пор, пока у бизнеса не кончатся деньги на разрабов.
Я слегка утрирую, в том смысле что болезнь обычно начинается не с одного плохого решения, скорее с десятков, может быть сотен.
Хороший вопрос - почему мы вообще принимаем такие решения.
Ну то-есть, ты же блин видишь, что говно делаешь. И знаешь, как сделать не говно. Зачем выбирать хуёвость?
Я обстоятельно покопался в себе - а я ведь действительно часто забиваю на качество - и выяснил, что причины обычно невероятно глупые. По крайней мере у меня.
Чаще всего мне тупо психологически легче сначала решить задачу, а потом уже думать, как решить её хорошо. Синдром самозванца, или что-то такое - но я ненавижу пребывать в состоянии, когда у меня висит таска, а я её ещё не сделал или не уверен, что вообще могу её сделать.
В итоге я делаю хуевое временное решение, а потом начинается вот что. Задача-то решена уже. Ставь пулл реквест, бери другую. Получишь свой кайф от завершенности. Увеличишь KPI. Усовершенствуешь продукт. Или сиди, и еби вола, размышляя, как бы сделать получше.
Гораздо чаще я всё-таки выбираю второе. Но иногда, особенно в периоды не лучшей своей производительности, соблазн решить проблему прямо сейчас побеждает меня.
Менеджер так хочет свою фичу прямо сейчас. Давайте дадим ему это!
Люди, которые меня оценивают, люди. которые мне платят - хуй клали на качество кода, они не умеют его оценивать. Моё умение писать качественный код они давно провалидировали, и никто не придёт ко мне со словами, что я плохой программист.
А вот прямо сейчас я могу комитить говно.
И никто мне за это слова не скажет! Более того, команда и бизнес поплатятся за некачественный код - но совсем нескоро. Я скорее всего буду работать в другом месте. Те, кто делал мне код-ревью - тоже. Как менеджер, который торопил меня с задачей.