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