Я работаю в корпорации ABC, и это моя первая работа. За последние два года я полностью переработал систему DevOps корпорации ABC, используя язык программирования X, которым я владею. Предыдущая система была «спагетти», что стоило компании часов на отладку и т. д. Новая система соответствует стандартам ISO/IEC 9126 и ускорила усилия компании по развитию.
Из-за этого компания считает меня «лучшим X-разработчиком» (что мне кажется забавным… потому что все, что я делаю, это буквально пишу простейший возможный код, сохраняя согласованность). тестирование и документация) и попросили меня взять на себя проект с высокими ставками.
Проект с высокими ставками (назовем его System X ) написан на языке программирования X, и это... плохо. Проект состоит из одного класса God, состоящего из >60 функций-членов. В довершение всего каждая функция-член вызывает другие функции-члены, а некоторые функции имеют длину более 100 строк.
Становится хуже. Система X синхронизирует события между системами, написанными на языке программирования Y, которым я не владею. Назовем эту систему Y. System Y гораздо сложнее, чем System X , совершенно недокументирована, и ни у кого нет времени «учить меня», как она работает.
Ошибка в паре System X/Y может дорого обойтись корпорации ABC в виде судебного разбирательства.
Проблема
Корпорация ABC расстроена тем, что я долго решаю проблемы с клиентами. Корпорация ABC предполагает, что я просто «волшебным образом» знаю все о Системе X/Y , потому что хорошо разбираюсь в языке программирования X, игнорируя при этом тот факт, что System X плохо написана, и тот факт, что я никогда не обучался тому, как работает Система Y. работает.
Я пришел, ожидая иметь дело с унаследованным кодом... Я думаю, что это справедливое ожидание... чего я не ожидал, так это исправления проблем с унаследованной системой X, которая контролирует недокументированную систему Y, что может стоить компанию сурово, если я должен был сделать ошибку, все с чрезвычайно минимальной подготовкой.
Я начинаю сильно выгорать из-за этого...
Я уже сообщил об этом своему менеджеру , и у него более или менее вид "у меня нет времени... извините". Как я могу сообщить своему руководителю, что это действительно серьезно?
Я также серьезно обеспокоен своими долгосрочными карьерными перспективами, если я совершу серьезную ошибку на столь раннем этапе своей карьеры.
К сожалению, это случай «Добро пожаловать в индустрию программного обеспечения!»
Как сказал мне профессор в колледже: «Если инженеры будут строить здания, как программисты создают программы, цивилизация рухнет ко вторнику…»
Таких вопросов на этом сайте сотни, в том числе...
«Я начинающий программист со своей первой работой. Я потрясен и поражен низким качеством разработки программного обеспечения/управления/кодовых баз. Что делать?»
Никогда, никогда, никогда не жалуйтесь, не спрашивайте, не ныйте, не ругайтесь, не спрашивайте, не спрашивайте и не агитируйте. Не говорите ничего , кроме «YES M'AM» (или «Сэр»), а затем ->
Исправить все. Исправьте это в соответствии со стандартами ISO/IEC 9126!!!
Делайте огромные деньги.
Зарабатывайте значительно больше денег каждый год.
Слава богу, что грамотных программистов так мало, отсюда и пункты 3 и 4.
--
Сноски:
Вы подробно упоминаете, «насколько важно» программное обеспечение. (В вашей конкретной ситуации это ссылки или что-то в этом роде, и здесь замешаны деньги.) Зевните. Все программное обеспечение невероятно критично. Подождите, пока вы не начнете писать программы для управления самолетами . Смиритесь и примите это как норму! Это твоя жизнь. Каждый день будет именно такое давление. Каждый день. Наслаждаться!
Вы упомянули «выгорание». Может быть, вы работаете более 40 часов в неделю? Если это так, ПРЕКРАТИТЕ ЭТО. ОСТАНОВИСЬ!
Вы упоминаете «нереалистичные временные ожидания». (A) каждая отдельная вещь во вселенной, которую любой программист сделал, заняла больше времени, чем ожидалось . (B) каждый раз, когда какой-либо программист что-либо делал, все участники жаловались, что это заняло слишком много времени. Это как сказать "вау, сегодня взошло солнце". Полностью игнорируйте это, делайте свою работу, а когда вас попросят оценить время, просто выскажите свое предположение.
SystemX — это единый класс Бога, состоящий из более чем 60 функций-членов. Каждая функция-член вызывает другие функции-члены. Некоторые из них имеют длину более 100 строк.
Очень просто, просто отправьте это по электронной почте
«Привет, Стив. Я просмотрел System-X. Это класс God с 63 [КОНКРЕТНЫМИ] функциями-членами, в среднем 138,2 loc. Мне потребуется 2 дня, чтобы правильно переписать каждую из них».
Это так просто.
Примечание: не нойте, что вы «не знаете» языка Y. Вы должны знать все языки. Или изучить их на месте. Это всего лишь алгоритмы и структуры данных — языки меньше, чем ничего. См. пункты 3 и 4!
Из-за этого компания считает меня «лучшим X-разработчиком» (что мне кажется забавным… потому что все, что я делаю, это буквально пишу простейший возможный код, сохраняя согласованность). тестирование и документация) и попросили меня взять на себя проект с высокими ставками.
Делать вещи как можно более простыми, последовательными и в рабочем состоянии — почему вы думаете, что это свидетельство против того , что вы хороши в этом?
Проект с высокими ставками (назовем его System X) написан на языке программирования X, и это... плохо. Проект состоит из одного класса God, состоящего из >60 функций-членов. В довершение всего каждая функция-член вызывает другие функции-члены, а некоторые функции имеют длину более 100 строк.
Хорошо, но ваш босс, вероятно, ничего не понимает. Что это значит для менеджера, пытающегося управлять компанией?
Ваша работа заключается не только в том, чтобы объяснить технологию. Поскольку вы единственный, кто участвует в этом проекте, ваша задача также состоит в том, чтобы перевести его на то, с чем может работать менеджмент.
Становится хуже. Система X синхронизирует события между системами, написанными на языке программирования Y, которым я не владею. Назовем это Системой Y. Система Y намного сложнее, чем Система X, полностью недокументирована, и ни у кого нет времени «учить меня», как она работает.
Так. Вы не знаете, как работает Система Y. Твой босс хочет, чтобы ты это починил. Итак, вам нужно обучение по Системе Y. Теперь ни у кого в вашей компании нет времени и никто не понимает Y. Но ваш босс хочет, чтобы она работала.
Так что здесь вы говорите с менеджерами о вещах, понятных менеджерам. «Босс, если вы хотите, чтобы это работало, мне нужен тренинг Z, и вы должны разрешить компании оплатить его. Вот ссылка на веб-сайт фирмы, которая проводит эти тренинги».
Вы должны сообщить о серьезности этого вашему менеджеру.
Запишитесь на встречу с вашим менеджером, сделайте ее продолжительностью в час. Убедитесь, что он понимает, что то, что вы хотите сказать, важно.
Перед встречей просмотрите код, который вы поддерживаете, и составьте список всех структурных проблем и проблем с кодированием. Быть конкретной. Создайте документ, содержащий этот список, и для каждого напишите, почему эта проблема замедляет исправление ошибок.
Например:
«Класс HumungousController — это «божественный класс», что означает, что он касается каждой части системы. Любое изменение в нем, вероятно, сломает что-то еще. Это означает, что любое изменение, которое я в него вношу, должно быть тщательно проверено, и обычно перед исправлением многих других проблем он может быть отправлен клиентам.
Помимо этого, придумайте предлагаемый рефакторинг/редизайн, который вы хотели бы сделать, чтобы смягчить проблему. Сделайте это чем-то, что вы можете сделать поэтапно.
На собрании познакомьте вашего руководителя с документом. Убедитесь, что он ушел это сообщение:
Существующая структура кода мешает мне исправлять ошибки. Если мы оставим все так, то я буду исправлять ошибки с той же скоростью, что и сейчас, то есть очень медленно. В качестве альтернативы компания может внести изменения, которые я рекомендую, что означает, что в конечном итоге мы сможем устранять проблемы намного быстрее и лучше реагировать на запросы клиентов. В качестве третьего варианта мы можем переписать систему с нуля, сделав ее более удобной в сопровождении, и в конечном итоге заменить старую систему новой.
Выбор вашего менеджера, какой из них он выберет. Но вы предоставите ему информацию, необходимую ему для выбора, и тот факт, что вы дали подробную и точную информацию о вариантах выбора, вас устроит, что бы он ни выбрал.
Корпорация ABC расстроена тем, что я долго решаю проблемы с клиентами.
Им просто придется с этим жить. Это занимает столько времени, сколько требуется, особенно если вам нужно все тщательно протестировать, прежде чем называть это «готовым».
Как я могу сообщить своему руководителю, что это действительно серьезно?
Ваш руководитель не считает это достаточно серьезным, чтобы что-то с этим делать. Работайте с этим.
Я также серьезно обеспокоен своими долгосрочными карьерными перспективами, если я совершу серьезную ошибку на столь раннем этапе своей карьеры.
Не на тебя подадут в суд, если все пойдет не так. Это проблема компании. Просто занимайтесь своими делами как можно лучше. В худшем случае вам придется перейти к другому работодателю.
Знание языка дает вам преимущество в понимании следующего продукта, с которым вы будете работать и который будет написан на этом языке.
Имея это в виду, это не делает вас экспертом по следующему продукту. Вам все равно придется прочитать продукт (и понять его), чтобы стать экспертом по нему.
Если вашим менеджерам трудно понять это, скажите им, что знание (их языка) не дает им никакого понимания книг, которые они еще не читали. Но, прочитав книги, они могут начать представлять, как можно было бы лучше переписать книги.
семьдесят восьмой
Доктор Миссис Монарх
DJClayworth
SquiddleXO
time to learn X + time to actually do project + error margin because estimating is harder when you don't even know the language
. Им может нравиться или не нравиться это слышать, но они платят вам за то, чтобы вы это сказали .