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

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

  • Текущий стек разработки могу поддерживать как я, так и сотрудник.
  • Найм персонала «нового фреймворка» будет стоить дорого, у нас нет бюджета, чтобы нанять этих разработчиков (я знаю, что этот сотрудник все равно хочет уйти).
  • Если мы будем использовать новый фреймворк, мне придется его изучить (у меня нет ни времени, ни интереса).
  • Фреймворк уже имел обновление без обратной совместимости, я обеспокоен, если это произойдет снова.
  • Требования к внешнему аудиту высоки, «бумажная работа» / проверка тяжелы, поэтому я бы предпочел управлять как можно более простой системой / стеком, простым в обслуживании.
  • Даже визуальная тема, я говорю придерживаться нашей 5-летней "бутстраповой" темы, нет смысла добавлять новую.

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

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

Заботится ли разработчик только о себе, а не о команде/проекте? Если они недовольны здесь, должен ли я заставить их уйти?

Под «быстрым» с его точки зрения понимается реализация, ее кодирование и возможность адаптироваться к будущим запросам на изменение — я это понимаю. Но для меня это не просто кодирование, у нас есть тестирование и документация, новые ошибки от перехода на новый стек и т. д. Старый инструментарий/текущий стек, который у нас есть, мы устранили проблемы - он "зрелый". С новым набором нужно будет решить новые проблемы — точно так же, как когда мы впервые перешли к текущему стеку, были проблемы, которые нужно было решить.

Обновление. Этот разработчик сказал мне, что то, что я говорю, это чушь собачья, громко в коридоре, точно так же в общественном месте перед людьми. Я понимаю, что есть конфликт, но это хороший способ иметь дело с вашим менеджером или даже кем-то, кем вы управляете? Было ощущение, что имеешь дело с ребенком/подростком. Если я не согласен с главным операционным директором, я отправил ему несколько ссылок и источников.

Чтобы сделать это рабочим вопросом, каковы ваши профессиональные отношения? Сотрудник, руководитель группы, менеджер, владелец компании?
Вы сказали, что провели анализ рисков и аудит. Тогда разве вы не возложили на бизнесменов расходы и риски, связанные с изменением структуры? Бизнесмены держат деньги, если их слишком много, они не будут продолжать. Если разработчики не смогут провести аудит, чтобы доказать, что это будет стоить дешевле, чем придерживаться текущего решения, в чем я сомневаюсь, если вы сможете поддерживать это с двумя людьми.
Хорошие фреймворки не нарушают обратную совместимость в своих LTS-релизах. Только исправления безопасности/ошибок, которые могут появиться, и, вообще говоря, хороший фреймворк будет иметь LTS не менее 2-3 лет и предлагать рекомендации по устареванию для обновления до следующего выпуска LTS.
@Trevor Вы можете создавать племенные знания с любой структурой. Фреймворки не решают эту проблему.
Возможно, они испытывают давление устаревания. У меня была большая команда, которая подавляющим большинством голосов выбрала новый фреймворк только на том основании, что они не хотели тратить следующее десятилетие на работу над чем-то десятилетним. Дополнительным преимуществом было то, что у нас были кандидаты, стучащие в дверь, чтобы присоединиться к нашей команде, потому что все слышали, что это горячая новинка. Было ли это технически лучшим решением? Может быть. Но было ли это правильным кадровым решением? Да. По иронии судьбы, это снижает вероятность того, что члены команды уйдут, если они чувствуют, что используют новейшие технологии, даже несмотря на то, что это повысило их резюме.
Просто любопытно. Каков ваш текущий стек технологий? Могут быть и другие стеки, более простые и современные, чем Angular (например, vue.js?), которые вы могли бы использовать.

Ответы (6)

Заботится ли разработчик только о себе, а не о команде/проекте?

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

Они лучший разработчик, чем я, и говорят, что «новый фреймворк» позволит «ускорить» разработку.

Вы цитируете здесь «быстрее». Я не уверен, что вы не верите разработчику в этом вопросе или сомневаетесь в его ценности.

Но, с моей точки зрения, надежная доставка и ремонтопригодность важнее.

Это представляет собой ложную дихотомию с быстрее. Разработчик, вероятно, считает эти вещи подразумеваемыми. Другими словами: в настоящее время мы можем обеспечить надежную доставку и ремонтопригодность. Если мы перейдем на новый фреймворк, мы сможем быстрее обеспечить надежную доставку и удобство сопровождения .

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

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

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

Вы пишете: "разработчики заботятся о системе". Да, я согласен. Но особенно у молодых разработчиков могут быть другие приоритеты, чем у более опытных разработчиков. А у руководства и опять другие приоритеты. Думаю, не стоит считать, что у них у всех одинаковые приоритеты.
Я, конечно, знал разработчиков, которые были заинтересованы в изучении нового блестящего решения, потому что оно было новым и блестящим, независимо от того, был ли он на самом деле правильным ответом для компании. Тем не менее, совет спросить о конкретных причинах вождения превосходен.
@BenBarden Мне придется удвоить твои слова. Я видел довольно много разработчиков, которые продвигали новые технологии (и довольно часто очень старые) только потому, что им это нравилось, а не то, что было бы лучше всего для решения проблемы. Изучение новых технологий — это хорошо, а заставлять их решать проблему без надлежащего ухода — нет.
Увидев так много деловых людей, которые не понимают технических последствий чего-то и отвергают разработчика именно в таких терминах, я стал настроен скептически. Когда разработчик говорит о том, чтобы сделать что-то «быстрее», это потому, что текущая ситуация делает его мучительно медленным. Это влияние на бизнес, на которое деловые люди слишком часто не обращают внимания.
Как технический специалист, который в настоящее время наводит порядок у разработчика, который настаивал на использовании сияющих новых вещей, не принимая во внимание их фактическую ценность, я бы сказал, что у этой медали определенно есть две стороны. Некоторые из блестящих новых вещей, которые он представил, на самом деле весьма полезны, но некоторые были пустой тратой времени. Понятно, что он не особо задумывался о реальном бизнесе, поэтому те вещи, которые действительно увенчались успехом, кажутся такой же удачей, как и все остальное...
Есть множество бизнес-кейсов, которые идут в обоих направлениях. Если люди погнались за «NoSQL», а затем заставили его работать с PHP, и их бизнес в значительной степени основан на транзакциях, то это просто глупость. Если вы настаиваете на использовании традиционной СУБД, но затем сохраняете большие двоичные объекты JSON, то это также глупо.

Если вы менеджер по персоналу, то вы принимаете решение. Хорошо, если все согласны, важно, чтобы все уважали решение.

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

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

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

И после того, как это будет сделано, вы можете посмотреть на приоритеты. Т.е. для одного проекта или части проекта, возможно, интерфейс должен выглядеть модно, а может быть, это проще сделать с новым фреймворком. А с другой стороны, возможно, более важно, чтобы все было на 100% стабильно, даже если это займет больше времени и т. д.

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

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

и стоимость переделки систем
Я полностью согласен, за исключением того, что ОП должен поручить разработчику выполнить эту работу. Пусть они взвесят все «за» и «против» и сделают презентацию перед всей командой, пытаясь убедить всех, почему их подход выгоден.
@TheoTiger: Если вы хотите, чтобы этот разработчик выглядел плохо, сделайте это. Если вам нужна счастливая команда, то я уверен, что лучше позволить команде работать вместе и выяснить вместе, что лучше всего.
@Edgar Предоставление команде возможности узнать на самом деле является частью того, что я предлагал: если у этого разработчика есть идея улучшить стратегию развития компании, пусть они сделают предложение и пусть команда обсудит это. Если они смогут убедить всех, почему их подход хорош, прекрасно. Если нет, то они получат обратную связь о том, почему их идея не лучше во всех аспектах, и узнают, как принимаются решения в компании. Оба являются важными уроками, которые они могут извлечь из этой практики.

Заботится ли разработчик только о себе, а не о команде/проекте?

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

Если они недовольны здесь, должен ли я заставить их уйти?

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

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

На самом деле нет — я бы сказал, что как профессионал я всегда беспокоюсь о проекте/команде, и если моя карьера/интересы совпадают с этим, тем лучше.

У вас есть две проблемы, которые могут противоречить друг другу

  1. Управление «техническим стеком»
  2. Управление техническим специалистом

Управление «техническим стеком» — это решение о том, какие языки, инструменты, фреймворки и системы тестирования компания будет использовать, особенно для критически важной производственной работы. Ни одному разработчику не должно быть позволено изменять этот стек. Это решение, которое идет вверх по цепочке инстанций, поскольку оно влияет на соблюдение требований и аудит вашей компании. Многие разработчики не осознают всех связанных с этим затрат. Если ваше высшее руководство не участвовало в этом до этого, я рекомендую сделать для них презентацию того, в чем на самом деле заключаются проблемы — почему у вас текущий стек технологий, какова стоимость внесения любых изменений и как вы будете представлять изменения в их в будущем. Короче говоря, вы тянете всю свою управленческую цепочку, чтобы поддержать вас в вашем выборе. «Разработчик, это технический стек корпорации XYZ.

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

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

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

Например: «Мой нынешний работодатель занимается производством диванов более 85 лет». Когда IBM впервые представила System/36 , они ее купили. Когда «RPG» был лучшим языком выбора, они написали горы кода, используя его ... и они до сих пор продают диваны!» (И: «Эти диваны все еще удобны — уверен, вы знаете кого-то, у кого есть такой».)

Таким образом, существует и всегда будет «дихотомия» между технологиями, которые мы решили использовать, и технологиями, которые сегодня мы предпочли бы использовать, если бы они еще были изобретены. Но мы никогда не можем ожидать, что "новые программисты" поймут это... пока. 🤷‍♂️