Мне стыдно

Jun 22, 2013 00:11 · 482 words · 3 minute read из жизни

Мне стыдно! Нет, мне реально стыдно за тот код, который приходится писать. Хуки, костыли, заплатки… Чёрт, да я же не понимаю как это работает! Да, я это поправил, как? Чудом, интуицией - не знаю. И я не знаю где и когда оно сломается. Хотите получить гарантии, стабильность, спокойную жизнь - дайте время! Дайте время сделать всё по уму, я хочу сделать это правильно! А, что, дедлайн завтра? В пятницу вечером? Вы смеётесь? ok, сделаю что успею. Хотите выпускать продукт в таком виде - выпускайте, только мне стыдно за него. За глаз на пузе, за ухо в жопе, за мозги, которые так и не успел тебе дать. Извини, тебя у меня отбирают, но мы будем встречаться, я обязательно доделаю всё, что обещал.

Вчера меня обрадовали, что через пару недель дедлайн проекта, который до меня делали 2 года, а ведь я на нём всего месяц. Я не знаю ни фреймворка, на котором он написан, ни архитектуры, ни сторонних компонентов, но есть список задач, которые надо сделать. Вот только что заработала авторизация через твиттер. Что я сделал? Снял not null с одного из полей таблицы. И вот интересно, это действительно решение или я порушил код предыдущего программиста? Заплатки, заплатки, заплатки, которые становятся костылями. Такими милыми сердцу костылями, которые и убирать жалко. Признайтесь, у Вас тоже есть костыли. Ничего постыдного в этом нет, проект же работает! :) Они есть везде: и у Google, и у Microsoft. И ведь знаешь же как правильно сделать, но тебя бьют по рукам со словами “Работает - не трожь”. Что ж, приходится мириться - всё-таки промышленный код, который пишется в угоду Бизнесу. Бизнесу, который платит нам зарплату… Поэтому пойду-ка я ещё один баг превращу в фичу и пришью нос на пятке. :)

А технический долг растёт как снежный ком. Дублирование кода, побочные эффекты и прочая хрень мешают идти дальше. Приходится держать в голове кучу мелких деталей, шаг влево, шаг вправо - exception. И тут наступает Рефакторинг. Он разносит на куски всё тело проекта, пронизывает до самых кончиков. Это долгая мучительная боль, полная ошибок и предупреждений, но она нужна. Она нужна чтобы двигаться дальше - наращивать новый функционал. И дай Бог, чтобы у вас были тесты. Возможно, они спасут :)

Я вот тут заметил, что мой код, за который не стыдно, находится, в основном, в личных проектах. Когда я их делаю, передо мной нет дедлайна, нет Бизнеса, который отбирает болванку со словами “О, круто! Вот это можно продать!". “Стойте, она не доделана!” - кричать бесполезно. Хотя один коммерческий проект (живой!) с более-менее хорошей архитектурой у меня всё-таки есть, но там попался весьма специфичный заказчик, который не ставит сроков. Он получает заказанное. Не сразу, через месяц-два-три, но оно работает, и работает так, как задумано.

Так что же получается? Коммерческий код полон костылей, а открытый нет? Не знаю, наверно, всё зависит от честности программиста. Но если Вы допиливаете код на работе, смиритесь с тем, что он будет далеко не идеален, ибо Бизнес превыше всего!