Под «костылем» я имею в виду легкое, быстрое, не очень корректное решение, которое либо чинит симптом, но не решает причину, либо решает причину, но ненадежно, в угоду скорости и простоте.
В ИТ, да и в жизни по мере приобретения профессионализма и житейской мудрости часто люди проходят путь от неприятия костылей до нормального к ним отношения. Хотелось бы немного подумать, а как же так получается, что костыли можно и ценить? И почему некоторые перегибают и получается печальный результат?
Костыль? Ни в жисть, я же ПРОФЕССИОНАЛ!
Начинающие специалисты, которым интересна и близка сердцу их работа, ни за что не хотят костылить. Их не убедишь никакими доводами. Они хотят сделать хорошо, надежно, канонично. Делают это для блага дела на много лет вперед и для самого себя, чтобы немножко подкрепить свое кредо профессионала.
Сам через это проходил, не могу их упрекать и считаю нормальным, что многие через это проходят.
Костыль? А давай жахнем, щас так надо
По мере роста профессионализма, опыта и хождения по граблям, люди начинают более спокойно воспринимать костыли. Уже становится понятнее, что где-то идеально и не обязательно, где-то надо лишь бы побыстрее, а где-то дальше проект не будет развиваться, поэтому допустимо вставить костыль за день, и проект на нем проедет еще 3 года, а сэкономить можно месяц на тотальной переделке.
И это тоже мне знакомо. Не знаю точно, как именно этому научиться.
Как-то начинаешь думать не только про себя, а про выгоду для команды и компании в целом. Ну и еще конечно, если после того, как несколько раз хорошенечко закатаешь рукава, поработаешь много и добросовестно, бизнес выкинет это в мусорку, потому что концепция изменилась, новый ветер подул, предупредить забыли и так далее.
Со временем приходит чутье, где грань тонкая и можно костыльнуть, а если чутье обмануло, то потом переделать. Даже учишься ставить костыли именно так, чтобы проще было их потом поменять.
Костыль? Давай вставлять везде, я же просветлился!
А бывает такая категория граждан, которая думает, что уже достаточно просветлились и начинают костылять при любом подходящем случае, совершенно не разбирая, подходит ли для этой проблемы костылизация или нет.
Это касается и разработчиков, и менеджеров.
Сколько мы видели разрабов, которые хардкодят, копипастят, не думают над архитектурой, лишь бы побыстрее задачу закрыть, а потом приходится все переделывать?
А сколько менеджеров, которые, продавливая костыльные решения, говорят «ну это щас так надо, ты потерпи, а вот потом…», а это «потом» никогда не наступает, и команда разваливается, и проект проваливается?
В чем разница?
Буду рад, если вы в комментариях предложите свой взгляд на то, когда вставлять костыль – это мудрое решение, а когда провальное. На мой взгляд, хороший ориентир того, надо костылить или нет – это частота изменений в накостыленном месте.
Если у вас есть проект или уголок проекта, где редко что-то меняется, а если и меняется, то очень слабо, то можно костыльнуть и пожить пока так, посмотреть, насколько идея неплоха.
А если у вас система живая, команда живая, и постоянно всё бурлит, а вы туда костылей подбрасываете, то это заявка на провал. И костыли держать нормально не будут, и разломаются быстро под напором, прихватив с собой то, и тех, кто рядом стоял.
Итог
Хорошенечко подумайте, где, как и зачем вы костылите. Постарайтесь хотя бы по имеющимся у вас данным спрогнозировать, что будет послезавтра с этим костылем, зачем он вам нужен, и почему бы лучше сразу не сделать нормально.
Крепких и редких вам костылей!)