Обвинение сегодняшних бед в техническом долге вчера


38

Удивительное количество проблем с качеством, масштабируемостью и нагрузкой возникло в приложении, которое я в настоящее время поддерживаю и которое я изначально не писал. К счастью, у меня есть новые проекты, которые я делал с нуля, чтобы сохранить некоторое подобие моего здравомыслия.

Первоначальная команда состояла из 20 разработчиков (большинство из них с устаревшими наборами навыков), без документов о требованиях к бизнесу или с тестерами по обеспечению качества, и с самого начала плохо управлялась водопадным способом. Первые дни производства были неловким кошмаром, который включал исправление хрупкого процедурного кода с еще более хрупкими исправлениями. Позже были добавлены функции, которые были забиты кувалдой в модель данных, которая никогда не предназначалась для их поддержки, и нередко можно увидеть, как один и тот же код дублируется 10 раз, и увидеть, как ресурсы не закрываются безопасным образом, и запросы ORM, которые выбирают десятки тысяч объектов, просто выбросить все, кроме горстки.

Теперь только я, и каждый раз, когда возникает новая проблема, я переписываю модуль в соответствии с более высокими стандартами и делаю его НАМНОГО более стабильным, но руководству необходимо надлежащее объяснение того, почему все это происходит.

Они кажутся шокированными и озадаченными тем, что это приложение некачественное и затягивает технические долги. К счастью, они понимают концепцию технического долга и поддерживают меня в моем стремлении искоренить его, и они очень меня поддерживают и благодарят, но мне кажется, что я просто продолжаю обвинять оригинальную команду (которая все оставила, чтобы разрушить другой проект в другом проекте). деление).

Суть в том, что я не хочу быть «тем парнем», который всегда жалуется на разработчиков проекта до него. Я видел такое отношение раньше от людей в моей карьере, которые лично я чувствовал, что они неосведомлены и не учитывают обстоятельства и влияние дизайна, которые побуждают вещи быть такими, какими они были.

Обычно я вижу такую ​​позицию обвинения предыдущей команды в плохом дизайне и реализации со стороны идеалистических младших разработчиков, у которых не было жизненного опыта, который был у более старших членов и которые были им полезны.

Считаете ли вы, что есть лучший способ, возможно, более мягкий способ сообщения о таких проблемах руководству без ущерба для репутации человека / команды до вас?


17
Забавно, что в вопросе о том, чтобы не играть в игру с обвинениями, вы потратили 3 полных абзаца, составляющих около 50% вашего вопроса о предыдущей команде. И пометил вопрос [плохой код] и [плохой программист].
Ааронаут

8
@Aaronaught, хорошо, я укушу, я назвал это, bad-codeпотому что код действительно вызывает ошибки и проблемы. Я назвал это, bad-programmerпотому что я боюсь, что я становлюсь единым целым, обвиняя предыдущую команду, усталое и штампованное оправдание, которое мы все слышали раньше. Что касается первых трех абзацев, возможно, мне не нужно было описывать это, но я хотел нарисовать точную картину моей непосредственной ситуации и рассказать историю того, что я собрал до сих пор.
maple_shaft

2
... Так есть ли там элемент разглагольствования ? Да, наверное, но мне надоело быть няней в приложении, которое работает как ребенок с СДВГ с желанием смерти.
maple_shaft

2
Я сочувствую тебе. Я делаю. Но у нас есть система чата, если вы хотите разглагольствовать или выпустить пар. Конструктивные вопросы должны иметь нейтральный тон и опускать такие ненужные детали.
Ааронау

История моей жизни
Юлиан Онофрей

Ответы:


46

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

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

Объясните это руководству, и вместо того, чтобы постоянно «обвинять» предыдущую команду, вы можете представить это как «обычный бизнес».


4
+1 за действительно хорошее, не обвиняющее объяснение того, как проект мог выбрать (правильно!) Получить технический долг.
Йорис Тиммерманс

1
@Nemi: Одно важное различие между техническим долгом и финансовым долгом состоит в том, что количественно определить последний намного проще. Гораздо проще узнать, сколько финансового долга вам осталось погасить (даже с учетом накопления процентов и повторяющихся финансовых обязательств), чем сделать это с техническим долгом. Я отмечаю это только потому, что это усугубляет проблему maple_shaft.
Бен Хокинг

2
@ Бен - ты абсолютно прав. Как и во всех аналогиях, этот ломается под микроскопом. Тем не менее, сравнение по-прежнему на высоком уровне. По сути, он обходится без деталей и разговаривает с руководством на их уровне - как бизнес-проблема, а не техническая проблема. По сути, любой долгосрочный проект накапливает определенную сумму технического долга, и, как таковой, это означает, что с течением времени затраты на развитие возрастают. Поскольку это скрыто (и даже не совсем понятно), в интересах всех, чтобы об этом говорили.
Неми

2
+1 к «это правда, даже если вы правильно пишете свое заявление».
Маурисио Шеффер

1
@radarbob Я не согласен - точно так же как финансовый долг, не имеет значения, было ли это сделано намеренно, из-за неудачи или глупости - кто-то должен заплатить за это в будущем. Термин по своей сути нейтральный в отношении причины.
Халк

23

ИМО, вы уже в большинстве случаев делаете это правильно: вы не предлагаете переписывание, потому что «старый код отстой», но исправляете одну вещь за раз.

Чтобы не чувствовать, что вы обвиняете старую команду, просто представьте, что им, вероятно, пришлось создавать этот код под большим давлением времени. Руководство в то время, вероятно, не очень понимало это только потому, что код «более или менее работает» не означает, что любое обслуживание возможно без большой боли и переделок.

Цените старую команду за то, что удалось создать продукт, который действительно приносит некоторую ценность для бизнеса - он больше не будет использоваться, если не будет. Вы можете быть удивлены тем, как часто проект не приносит коммерческой ценности, даже если он прекрасно написан.


3
+1: обвинить старое руководство, которое не смогло предоставить качественный продукт, тогда (надеюсь) новое руководство получит сообщение (или избавится от вас, оба случая являются победой, насколько вы обеспокоены)
gbjbaanb

15
@gbjbaanb - не вините никого! Выйди из своего пути, чтобы никого не обвинять. Просто установите текущую ситуацию и желаемую ситуацию, и приведите логический аргумент о том, как и почему вам нужно туда добраться.
Йорис Тиммерманс

Эх, убедитесь, что есть новое руководство. Тот же босс все еще может быть там. И даже если он двинется дальше, он где-то там. Удостоверьтесь, что вы узнаете, прежде чем идти, бросая людей под автобус.
Филипп

Хотелось бы, чтобы это было так просто, чтобы никого не обвинять. Руководство настаивает на том, чтобы на кого-то / на что-то указывали. Если я не указываю на человека или группу людей, на которых я указываю?
maple_shaft

4
@maple_shaft - так что приведите аргумент, который я привел в своем ответе руководству, и, если они все еще настаивают на «обвинении», опубликуйте свое резюме на как можно большем количестве сайтов, потому что когда они решите начать обвинять вас в отсутствии кого-либо, на кого можно было бы указать пальцем.
Йорис Тиммерманс

7

Когда меня просят прокомментировать текущее состояние проблемного продукта, я всегда возвращаюсь к теме «это то, что есть», а затем начинаю говорить о планах по его улучшению.

Вы не знаете всех факторов, которые повлияли на решение, которое создало эту проблему - возможно, они были даже разумными в то время. Все, что вы можете сделать, это двигаться вперед и делать вещи завтра лучше. И звучит так, будто вы делаете хорошую работу - у вас правильное отношение к этой ситуации.

Сосредоточьтесь на том, чтобы просто сообщать факты, когда их спрашивают. Вам не нужно добавлять рассказ или комментарий; просто скажите «система отказывает в случае X» или «отчеты неверны для случая Y». Затем быстро добавьте, как вы планируете улучшить текущую ситуацию.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.