Я работаю в организации с очень маленьким отделом разработки, разрабатывая проект только с одним сотрудником. Мы оба младшие, никогда раньше не использовали ASP MVC .NET и не работали над кодом производственного уровня. Остальные в отделе тоже не имеют опыта работы с MVC и никогда не программировали в команде, так что они не помогут.
Я ценю, что у моего коллеги есть сильное стремление что-то делать, но я обнаруживаю, что он недостаточно хорошо их продумывает. Как только он вообразил возможное решение, он тут же приступает к его реализации, не задумываясь: а) подходит ли решение к задаче, б) хорошо ли решение само по себе и 3) как отреагирует его код, если состояние мира не такое, как он ожидал (самый простой пример: он никогда не думает о проверке пользовательского ввода).
Что происходит, так это то, что он прорабатывает функции, штампуя тонны нового кода. Но я думаю, что качество его кода очень низкое. Показательный пример: после возвращения из отпуска я обнаружил, что он создал около 50 новых полужестких маршрутов, большинство из которых можно было бы обработать системой маршрутизации MVC по умолчанию без какой-либо настройки. Я сказал ему, почему считаю это плохой идеей, но он не был убежден, и я не настаивал на том, чтобы он это изменил. Сегодня я потратил часы, пытаясь выяснить, почему моя первая простая попытка использовать фильтр исключений терпит неудачу, пока я не заметил, что один из его лишних маршрутов неверен и перенаправляет мой запрос задолго до того, как вызывается метод, выбрасывающий исключение.
Я уже разговаривал со своим руководителем проекта (он же менеджер, ответственный за нашу рабочую группу) об этой ситуации, но она привыкла к уродливым, неподдерживаемым кодовым базам и не видит проблемы, тем более, что она впечатлена количеством кода, который он доставляет и считает нормальным, что он тратит так много времени, играя в «убей крота» с ошибками, которые мы случайно находим (его тесты не лучше остального кода, если они существуют). Она предложила, чтобы, если он делает что-то не так, я просто научила его, как делать это правильно.
Что касается конкретных реализаций функций, которые нам нужны, я не могу научить его, как это сделать правильно, потому что я не знаю решений, специфичных для MVC. Если я исследую решение какой-то функции из его рабочего списка в течение дня, он потратит этот день на реализацию двух других функций по-своему, а я ничего не добьюсь из своего рабочего списка. А что касается того, чтобы научить его думать о последствиях и побочных эффектах, прежде чем он бросится в действие, это еще сложнее для меня, это кажется слишком глубоко укоренившимся в его личности.
Я не знаю, как мне поступить в этой ситуации. 1) Как мне помочь ему начать писать лучший код? К счастью, он готов слушать то, что я говорю, но я не знаю, что ему сказать. И 2) Что мне делать с написанным им плохим кодом, который явно не содержит ошибок? У меня нет времени исправлять все за него или даже искать для него подходящее решение, но написание собственной части кода становится все более сложным и разочаровывающим. Он ненавидит переделывать то, в чем не видит проблем, и вряд ли придумает лучшее решение во второй раз. Любые идеи?
Я думаю, вам действительно нужно слушать то, что говорит ваш начальник, а что нет. Ее незамедлительный, внезапный и без каких-либо данных, подтверждающих это, ответ был тот факт, что она впечатлена объемом работы, которую он проделал. Может быть, это ее личное предпочтение, или, может быть, это нравится ее боссу и всем остальным.
Вы упомянули количество ошибок и сложность их исправления и/или добавления новых функций. Судя по всему, она не считает это серьезной проблемой и готова пойти на этот риск. Восприятие есть реальность. Быстрое выполнение запроса воспринимается как быстрое его выполнение. Да, пользователям приходится указывать на некоторые ошибки, и их исправление занимает больше времени, чем следовало бы, но никто не учитывает это в своем определении того, сколько времени ушло на исправление.
Вам было дано разрешение попробовать внедрить некоторые из упомянутых вами улучшений, но будьте осторожны, вам не дали разрешения сделать меньше вещей. Возможно, вам придется начать отслеживать текущий процесс, чтобы вам было с чем сравнивать, когда вы начнете вносить изменения. Жалобы на слишком долгое ожидание могут увеличиться, и ваши недавно внедренные стандарты будут выглядеть плохо. Потребуется время и некоторые данные, чтобы показывать меньше ошибок и быстрее обрабатывать запросы в долгосрочной перспективе (например, когда вещи доставляются с меньшим количеством ошибок).
Пожалуйста, внимательно подумайте, действительно ли «делать это правильно» — это то, что нужно проекту.
Я сильно ненавижу и презираю плохой код и хочу делать все «правильно»™, но это не значит, что это всегда лучший подход.
Может быть, это малобюджетный проект, фатальные ошибки допустимы, может быть, у них есть контракт, который привязывает их к строгим временным рамкам, но они могут исправить это позже, может быть, их цель — поддерживать продукт в рабочем состоянии, поэтому подход вашего коллеги может быть лучше. по двум причинам.
Я не одобряю и не оправдываю эти методы, заметьте, но вы должны учитывать, что это может быть причиной некоторых решений.
Установите базовый уровень качества кода и сделайте код-ревью. Вам необходимо согласовать с ним и вашим руководителем Базовый план, какой уровень качества вы хотите. Такие вещи, как проверка ввода, модульные тесты, строгое разделение кода MVC и т. д. и т. д., могут быть частью ваших правил обеспечения качества. Затем просмотрите код друг друга и отклоните код, который не соответствует базовому уровню качества. Отклоненный код, конечно же, не должен попасть в производство.
Что касается не решения каждой проблемы оптимальным способом, вам, возможно, придется немного расслабиться. Иногда достаточно хорошо, если оно работает, а код читабелен, модульно протестирован и решает проблему. Тем не менее, вероятно, потребуется знание наиболее распространенных и основных сценариев используемого фреймворка путем изучения или чтения некоторых примеров.
Джей Би Кинг
Майкл
Эндрю Бартел
счастливый будда
пользователь8365
Серебряная пуля
Турбьёрн Равн Андерсен
Турбьёрн Равн Андерсен
Роджер