Я работаю разработчиком уже более 3 лет, и моя команда уверена в своих способностях к программированию. Недавно моя команда работала в компании, принадлежащей нашим венчурным капиталистам, в которую мы интегрировались и теперь работаем.
У меня нет опыта работы с Java, и хотя я знаю, как писать код на C# и т. д., и знаком с API, недавно я столкнулся с серьезной проблемой при проверке своего кода в нашем исходном репозитории.
Меня бросили в тупик и попросили внести изменения в существующий API (моя команда знает о моих возможностях и способностях). Поняв изменения и проверив среду решения на наличие ссылок на сам API, я внес изменения, протестировал их с помощью модульных тестов и Postman для ответа и т. д.
Все казалось в порядке. Однако мои знания о решении в целом и других вещах не так хороши, как у других внутренних разработчиков этого проекта; Я единственный full-stack разработчик, занимающийся как фронтендом, так и бэкендом. Проблема заключалась в том, что API упоминается в файле рабочего процесса BPMN, который не отображался, когда я искал ссылки или имя API в виде текста в среде IDE.
Это вызвало 4-дневную проблему с двумя-четырьмя бэкенд-разработчиками, пытавшимися выяснить, почему сборка не удалась в любой момент времени в течение рабочего дня. Хотя я признаю свою ошибку и полностью принимаю на себя ответственность за создание такой большой проблемы, теперь я очень разочарован в себе и тем более сомневаюсь, что мне следует продолжать разработку серверной части с таким небольшим знанием Java и структуры решения. . Я также не могу не чувствовать себя виноватым за то, что потратил столько времени и денег на то, что было ошибкой и потребовало много времени для поиска.
Хотя я хотел бы иметь возможность потратить время и сесть с некоторыми бэкенд-разработчиками, чтобы пройти и полностью понять это, у них просто нет времени прямо сейчас. Что еще я могу сделать, чтобы убедиться, что я не совершаю или с гораздо меньшей вероятностью совершаю ошибки, не говоря уже о таких дорогостоящих, в будущем?
Я должен добавить, что мой код изменений также проверил один из разработчиков бэкенда, который, я уверен, спросил, упоминается ли API где-либо еще. Поскольку мой поиск и проверка ничего не показали в среде IDE, поскольку она не проверяет файлы BPMN, я ответил «нет».
Что еще и что еще я должен сделать, чтобы свести к минимуму риск совершения подобных ошибок в будущем?
Дополнительные примечания в ответ на комментарии и ответы:
Проверка кода: я всегда буду сидеть с разработчиком, обсуждать и понимать код с ним, объясняя по ходу дела.
Мы проводим ежедневные скрамы. Я упомянул об этом, когда работал над этим, но никаких опасений не возникло, хотя я уверен, что мы обсудим это на завтрашней схватке или на следующей ретроспективе.
Я должен уточнить, что проблема заключалась в том, что сборка не удалась, и я понимаю, что мне, вероятно, следует перенести все изменения в свою ветку, собрать и выполнить окончательный тест перед фиксацией, этого я не сделал.
Когда несколько разработчиков вносят изменения в одну и ту же кодовую базу (и не всегда обновляются друг с другом), такие вещи случаются. Я сам разработчик; тут нечего зацикливаться, это хоть раз случится с каждым из нас. Однако есть несколько вещей, которые вы можете сделать, чтобы снизить риск повторения этого.
Из контекста кажется, что вы проверили все локально, и все работало нормально. Только позже что-то пошло не так. Это говорит о том, что либо ваша собственная кодовая база немного устарела, либо у кого-то еще был устаревший код, когда они вносили свои собственные изменения. Лучшее, что вы можете сделать непосредственно перед фиксацией своего кода, — это извлечь все последние изменения из вашего репозитория (или как вы его называете), чтобы вы могли быть уверены, что ваши изменения работают с самым последним кодом. Если все ваши тесты пройдены, то вы можете совершить с чистой совестью.
Я бы также посоветовал быть немного более громким с вашими коллегами. Если вы вносите изменения в критически важную систему, сообщите им об этом. Даже если это простой запрос вроде «Я собираюсь изменить этот важный элемент, у вас есть время для проверки кода?» . Таким образом, ваша команда не будет тратить дни на поиск проблемы, если она есть, и вы можете быть спокойны, зная, что вы И ваши коллеги уверены в изменениях. Некоторые команды разработчиков устраивают ежедневные стендапы, рассказывая о том, над чем они работают; это помогает команде быть более осведомленной о том, над чем вы работаете, и есть ли риск конфликта ваших изменений с чьими-либо еще.
Вы будете учиться, делая. Если вы хорошо разбираетесь в таких языках, как C#, вы можете освоить Java быстрее, чем вы думаете!
Такая ситуация случается время от времени — вы делаете что-то, что имеет непредвиденные побочные эффекты, и что-то еще, о чем вы раньше не знали.
Тот факт, что вас не уволили сразу и не поместили в PIP, означает, что компания признает, что ошибки случаются, они разбираются, и жизнь, соответственно, продолжается.
Что вы можете с этим поделать? Узнайте об этом последствии и посмотрите, есть ли что-то еще, что вы должны были принять во внимание, или какая-либо другая команда, которую вы должны были спросить о побочных эффектах вашего изменения API.
Это все часть накопления опыта, и это не должно мешать вам двигаться вперед.
Способ избежать этой проблемы также дает вам возможность внести значительный вклад в вашу новую компанию: корень этой проблемы заключается в неадекватном тестировании, а не в вас (если только вы не проявили небрежность, которая не отражена в вашем посте).
Во всех средах разработки должна быть возможность выяснить, приведет ли внесенное вами изменение к серьезному сбою, до проверки, а также выяснить, не нарушит ли код сборку. Хотя это определенно неловко быть тем, кто нашел такое зияющее целое в процессе компании, теперь вы можете быть лидером в попытке установить такой процесс в вашей новой компании.
Вы можете предложить команде начать писать модульные тесты и приступить к настройке среды непрерывной интеграции, которая будет перестраивать проект и выполнять модульные тесты каждый раз при регистрации кода, и где тесты могут выполняться по отдельности до регистрации. Модульные тесты потребуют обязательств от команды, но базовую среду CI можно настроить довольно быстро из проектов с открытым исходным кодом, если вы можете выделить для нее виртуальную машину или сервер.
Редактировать: обзоры кода — еще одна хорошая практика программирования, которая может свести к минимуму подобные ошибки, а также довольно проста в использовании.
TL;DR используйте эту неловкую возможность, чтобы модернизировать процессы разработки вашей компании. Ты уйдешь, пахнущий розами.
Проблема возникает из-за того, что API упоминается в файле рабочего процесса BPMN, который не отображался, когда я искал ссылки или имя API в виде текста в среде IDE.
Что команды ретроспективно узнали об этом инциденте? Какие ведомственные процедуры можно было бы внедрить, чтобы там это не повторилось? Что, по мнению команды, необходимо при адаптации новых разработчиков? И какие новые процедуры адаптации необходимо разработать?
PS Быть активным в вышеперечисленном — отличный способ учиться и руководить.
Где хранились файлы BPMN, которые не были видны при поиске других потребителей API?
Проблема звучит так, будто вы не знали обо всех потребителях API и не имели доступа к ним.
Если они не являются частью вашего стандартного рабочего набора для разработки и по какой-то причине не могут быть добавлены в него, любые API-интерфейсы, которые затем используются, должны быть задокументированы как таковые в эквивалентных комментариях заголовка вызова метода. В зависимости от того, насколько формальным является ваш процесс проверки, явная проверка того, что они не затронуты, может быть допустимым изменением процесса.
Вопрос о том, что вы не знаете обо всем, что находится за пределами кодовой базы, над которой вы работаете и что необходимо проверить, должен быть поднят вами на следующем стендапе/ретроспективе, если ваши коллеги этого не знают. Что-то подобное должно было быть освещено в рамках вашего участия в проекте.
Вы должны изменить свое мышление.
Вы не сделали "критической ошибки". Вы работали в меру своих способностей; вы были открыты для работы в незнакомой среде; вы были откровенны в своих знаниях и во всем остальном до и после; вы работали вместе с другими парнями, чтобы решить проблему, вы, вероятно, не закатывали истерику в офисе. После фиаско вы выходите сюда и пытаетесь стать еще лучше.
Короче говоря, я бы пальчики оближешь, чтобы таких сотрудников было больше.
Чтобы ответить на ваш вопрос:
Независимо от того, что вы или кто-либо другой делаете, чтобы свести к минимуму ошибки, ошибки случаются .
Есть, конечно, технические «лучшие практики», которые помогут, и да, есть все банальности об обучении на своих ошибках. Но у тебя все это, кажется. Тем не менее, вы все еще чувствуете себя настолько плохо из-за инцидента, что нашли время, чтобы написать об этом на work.stackexchange.com?
Я думаю, что вы можете сделать что-то ощутимое, что поможет вам и другим почувствовать себя лучше во всем этом.
Лучшее, что вы можете сделать, это отметить проявленную к вам доброту и щедрость и выразить за это некоторую благодарность .
Вместо того, чтобы еще громче извиняться и давать скоро забытые обещания «никогда больше», найдите время, чтобы лично ПОБЛАГОДАРИТЬ людей, которые помогли решить проблему, и тех, кому вы доставили неудобства. Если это уместно, принесите коробку пончиков (например) в офис и дополните своих коллег.
И затем, когда в следующий раз что-то случится и кто-то другой совершит ошибку, будьте добры к ним, помогите им и верните доброту, которая была вам оказана . Вот и все. Вы станете лучшей командой из-за таких вещей.
Сделайте ваши коммиты как можно меньше, и если вы можете собирать с сервера сборки после каждого нажатия. (Если сборка происходит нечасто, возможно, вы захотите также выполнить сборку перед пушем!)
Это не поможет вам не совершать ошибок, но сделает их гораздо менее критичными. Если вы знаете, какая фиксация/группа коммитов вызвала сбой сборки, тривиально отменить ее, пока вы работаете над проблемой, а если коммитов будет как можно меньше, то будет легче найти источник проблемы.
Если вы используете git, есть даже команда, которая поможет вам в этом: git-bisect , которая позволит вам выполнить бинарный поиск по группе коммитов, чтобы найти тот, который вызывает проблему.
Человек в маске
Турбьёрн Равн Андерсен
ли х
Алекс
Восстановить Монику
Дж. Крис Комптон
Им-Харрисон
ДжиммиБи
Дж. Крис Комптон