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

Я работаю в корпорации 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, что может стоить компанию сурово, если я должен был сделать ошибку, все с чрезвычайно минимальной подготовкой.

Я начинаю сильно выгорать из-за этого...

Я уже сообщил об этом своему менеджеру , и у него более или менее вид "у меня нет времени... извините". Как я могу сообщить своему руководителю, что это действительно серьезно?

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

компания назвала меня «лучшим X-разработчиком» (что мне кажется забавным... потому что все, что я делаю, это просто пишу простейший возможный код, сохраняя при этом согласованность. У меня также есть небольшая слабость к модульному тестированию и документации) Это ставит вас впереди многих разработчиков, с которыми они работали! :-)
Ваши имена переменных выбраны плохо...
Многие команды, с которыми я работал, были бы намного продуктивнее, если бы все в них «писали максимально простой код, сохраняя согласованность» и «имели слабое место для модульного тестирования и документации».
Если вы руководите проектом, ваша работа заключается в предоставлении, объяснении и защите разумных оценок того, сколько времени это займет. Если вы не знаете язык X, то общее время будет просто time to learn X + time to actually do project + error margin because estimating is harder when you don't even know the language. Им может нравиться или не нравиться это слышать, но они платят вам за то, чтобы вы это сказали .

Ответы (5)

К сожалению, это случай «Добро пожаловать в индустрию программного обеспечения!»

Как сказал мне профессор в колледже: «Если инженеры будут строить здания, как программисты создают программы, цивилизация рухнет ко вторнику…»

Таких вопросов на этом сайте сотни, в том числе...

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

Что делать:

  1. Никогда, никогда, никогда не жалуйтесь, не спрашивайте, не ныйте, не ругайтесь, не спрашивайте, не спрашивайте и не агитируйте. Не говорите ничего , кроме «YES M'AM» (или «Сэр»), а затем ->

  2. Исправить все. Исправьте это в соответствии со стандартами ISO/IEC 9126!!!

  3. Делайте огромные деньги.

  4. Зарабатывайте значительно больше денег каждый год.

  5. Слава богу, что грамотных программистов так мало, отсюда и пункты 3 и 4.

--

Сноски:

  1. Вы подробно упоминаете, «насколько важно» программное обеспечение. (В вашей конкретной ситуации это ссылки или что-то в этом роде, и здесь замешаны деньги.) Зевните. Все программное обеспечение невероятно критично. Подождите, пока вы не начнете писать программы для управления самолетами . Смиритесь и примите это как норму! Это твоя жизнь. Каждый день будет именно такое давление. Каждый день. Наслаждаться!

  2. Вы упомянули «выгорание». Может быть, вы работаете более 40 часов в неделю? Если это так, ПРЕКРАТИТЕ ЭТО. ОСТАНОВИСЬ!

  3. Вы упоминаете «нереалистичные временные ожидания». (A) каждая отдельная вещь во вселенной, которую любой программист сделал, заняла больше времени, чем ожидалось . (B) каждый раз, когда какой-либо программист что-либо делал, все участники жаловались, что это заняло слишком много времени. Это как сказать "вау, сегодня взошло солнце". Полностью игнорируйте это, делайте свою работу, а когда вас попросят оценить время, просто выскажите свое предположение.

Какой-то конкретный язык для этой ситуации:

SystemX — это единый класс Бога, состоящий из более чем 60 функций-членов. Каждая функция-член вызывает другие функции-члены. Некоторые из них имеют длину более 100 строк.

Очень просто, просто отправьте это по электронной почте

«Привет, Стив. Я просмотрел System-X. Это класс God с 63 [КОНКРЕТНЫМИ] функциями-членами, в среднем 138,2 loc. Мне потребуется 2 дня, чтобы правильно переписать каждую из них».

Это так просто.

Примечание: не нойте, что вы «не знаете» языка Y. Вы должны знать все языки. Или изучить их на месте. Это всего лишь алгоритмы и структуры данных — языки меньше, чем ничего. См. пункты 3 и 4!

1. Согласен на 100%. Проблема в том, что я единственный человек, работающий над этим. 2. 60-70 для меня норма. Может быть, пришло время сократить... 3. Достаточно честно. Мне это нравится.
«Проблема в том, что я единственный человек, работающий над этим». Я действительно отсылаю вас к сноске-3. Логика непобедима. НАСТОЯЩЕЕ программное обеспечение - современное надежное программное обеспечение , которое экономит миллионы за счет сокращения затрат на обслуживание, может быть сделано только за то время, которое требуется. Логика неопровержимая. Просто делайте это в своем собственном темпе. Что может случиться? Тебя увольняют? Такой ребенок, как ты, во второй половине дня получит гораздо лучшую работу с гораздо большими деньгами. Наслаждаться!
К вашему редактированию. Мне это нравится. Не ходит вокруг да около.
Мне также нравится это: «НАСТОЯЩЕЕ программное обеспечение — современное надежное программное обеспечение, которое экономит миллионы благодаря сокращению затрат на обслуживание, может быть сделано только в то время, которое требуется. Логика неопровержима». Я думаю, что это хорошее оправдание, если будут еще какие-то жалобы на то, сколько времени требуется, чтобы что-то сделать.
"проблема в том, что я единственный человек, работающий над этим" о боже. Вы новичок в этой отрасли, не так ли! Быть единственным, кто редактирует данную кодовую базу, — это находка. Никто не портит то, что вы делаете, никто не копит мили некомментированного кода и не жалуется, когда вы отказываетесь слить его, а затем отстаете и ставите вас позади, потому что вы должны были выполнять их часть работы за них, а также исправлять все их ошибки... и т. д. и т. д. Быть в ситуации, когда вы можете быть единственным, кто редактирует данную кодовую базу, - это подарок ... дорожите им. 99,9% программистов больше вредят, чем помогают. Лучше быть одному.
И продолжаю: эта своего рода вещь является стандартной инициацией для начинающего программиста, у которого на самом деле есть потенциал быть тем 0,1%, а не 99,9%, что больше вредит, чем помогает. Они могут ворчать... но они знают, что ты лучшее, что у них есть, и они не собираются от тебя избавляться. В худшем случае они нанимают для вас «помощь»… что, судя по вашему описанию, невозможно. Так что просто нужно преодолеть управленческую неадекватность и сделать это. В конце концов, способность делать такие вещи превратит вас в курицу, несущую золотые яйца. Тогда менеджеры оставят тебя в покое, и $$$
Ха-ха, о, поверь мне... Я прекрасно понимаю, что это может быть скрытым благословением, особенно со временем. Больше меня беспокоило то, что я сдерживал этот проект, который сдерживал других разработчиков от работы, которая зависела от этого проекта. Но ответы до сих пор в некотором роде изменили ход моих мыслей. Возможно, я немного пессимистичен
Сноски 1, 2, 3а и 3б в точку. Мне потребовалось, вероятно, десятилетие, чтобы осознать их все. Не тяни десятилетие, @James. Когда вам дадут задание, заранее сообщите, что потребуется, чтобы выполнить его с реалистичным, устойчивым объемом усилий, а затем выполните его. Когда другие стонут из-за того, что вы сделали это нереалистично, признайте, что это стоны, то, что они есть: стоны.
Я был программистом 10 лет, и ровно однажды со мной случилось, что я закончил задачу раньше, чем ожидалось. 2 дня вместо 11. Это казалось таким же ужасным, как описание ОП, и на самом деле было очень легко. В результате меня отругали. Я стоил фирме 9 дней возможности работать, и мой менеджер тоже был отруган.
@PlayerOne и другие спасибо за добрые комментарии
К счастью, инженеры не строят зданий.
Это только я? 60 функций и 100 строк/ф – звучит не так уж и страшно. (В качестве моего вклада, а не в качестве вывода, чтобы избежать недоразумений. ;-))
Я всегда слышал: «Если бы строители строили здания так, как программисты пишут программы, первый появившийся дятел уничтожил бы цивилизацию». Но да, отличный ответ.
у нас, должно быть, был один и тот же профессор компьютерных наук! :)
ISO/IEC 9126 в настоящее время отозван и заменен более новым стандартом.
Хе-хе, я видел это :)

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

Делать вещи как можно более простыми, последовательными и в рабочем состоянии — почему вы думаете, что это свидетельство против того , что вы хороши в этом?

Проект с высокими ставками (назовем его System X) написан на языке программирования X, и это... плохо. Проект состоит из одного класса God, состоящего из >60 функций-членов. В довершение всего каждая функция-член вызывает другие функции-члены, а некоторые функции имеют длину более 100 строк.

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

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

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

Так. Вы не знаете, как работает Система Y. Твой босс хочет, чтобы ты это починил. Итак, вам нужно обучение по Системе Y. Теперь ни у кого в вашей компании нет времени и никто не понимает Y. Но ваш босс хочет, чтобы она работала.

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

Это проблема. Система Y была построена в компании. Без документации. И ни у кого нет времени учить меня, как это работает. Я бы научился сам, учитывая, что он написан на языке Y, но кодовая база состоит из 100 000 строк, а у меня есть только базовое понимание языка Y.
Так что, к сожалению, я не могу просто пройти обучение по Системе Y, следуя какому-то внешнему ресурсу. Мне приходится полагаться на людей внутри компании, которые меня обучают.
Если ни у кого в компании «нет времени» объяснить критический компонент Y, необходимый для исправления X, то исправление X не так важно для компании. Следовательно, вы вынуждены тратить дополнительное время, чтобы изучить его самостоятельно, а компания должна взять на себя дополнительные риски и расходы. Просто объясните руководству, что это их выбор, и вы постараетесь сделать все возможное, чтобы они ни решили.
Да, мысль состоит в том, чтобы объяснить это с точки зрения чего-то, на что руководство действительно может воздействовать. «Если вы хотите, чтобы я занимался системой Y, вам необходимо выделить средства на обучение меня языку Y. Мне также потребуются следующие другие ресурсы…» Может быть трудно объяснить руководству, что «это трудная задача». Возможно, им будет проще объяснить им, что «эта задача будет стоить не менее XXX долларов, мы действительно этого хотим?»

Вы должны сообщить о серьезности этого вашему менеджеру.

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

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

Например:

«Класс HumungousController — это «божественный класс», что означает, что он касается каждой части системы. Любое изменение в нем, вероятно, сломает что-то еще. Это означает, что любое изменение, которое я в него вношу, должно быть тщательно проверено, и обычно перед исправлением многих других проблем он может быть отправлен клиентам.

Помимо этого, придумайте предлагаемый рефакторинг/редизайн, который вы хотели бы сделать, чтобы смягчить проблему. Сделайте это чем-то, что вы можете сделать поэтапно.

На собрании познакомьте вашего руководителя с документом. Убедитесь, что он ушел это сообщение:

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

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

Корпорация ABC расстроена тем, что я долго решаю проблемы с клиентами.

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

Как я могу сообщить своему руководителю, что это действительно серьезно?

Ваш руководитель не считает это достаточно серьезным, чтобы что-то с этим делать. Работайте с этим.

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

Не на тебя подадут в суд, если все пойдет не так. Это проблема компании. Просто занимайтесь своими делами как можно лучше. В худшем случае вам придется перейти к другому работодателю.

Знание языка дает вам преимущество в понимании следующего продукта, с которым вы будете работать и который будет написан на этом языке.

Имея это в виду, это не делает вас экспертом по следующему продукту. Вам все равно придется прочитать продукт (и понять его), чтобы стать экспертом по нему.

Если вашим менеджерам трудно понять это, скажите им, что знание (их языка) не дает им никакого понимания книг, которые они еще не читали. Но, прочитав книги, они могут начать представлять, как можно было бы лучше переписать книги.