Что можно сделать, если «привести пример» не работает? [закрыто]


40

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

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

Чтобы быть более точным, мы имеем:

  • Устаревший инструмент управления исходным кодом (Visual SourceSafe)
  • Простые старые make-файлы, которые поддерживают только полную перестройку
  • .def файлы, которые должны поддерживаться вручную и отдельно для всех существующих архитектур
  • монолитные заголовочные файлы и проекты с очень небольшим количеством разных файлов (но каждый содержит около 3000 строк кода, которые иногда решают очень разные задачи)
  • не использовать "новые" языковые средства (ну, std::stringэто не так уж ново, но никто, кроме меня, не использует его)

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

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

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

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

Вы уже сталкивались с подобной ситуацией? Что можно сделать, если «привести пример» не работает?


10
«Несколько месяцев назад я решил что-то с этим сделать» ... «Я показал результат своему боссу». Похоже, вы ошиблись порядком там.

3
@ ThorbjørnRavnAndersen: Не уверен, что получу это: Как я должен показать то, что я еще не сделал? Или, возможно, вы имели в виду, что я должен был спросить, прежде чем сделать это?
ereOn

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

8
Святая корова, 8000 разработчиков? На кого ты работаешь, Facebook? Google? Microsoft?
Kyralessa

5
@Kyralessa: я не думаю, что Facebook и Google используют VSS.
Джейк Бергер

Ответы:


46

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

Хватайте свежее мясо : легче завоевать сотрудников, которые хотят что-то изменить. Вы замечаете их сразу же, когда видите их.

Избегайте гнилого мяса : некоторые никогда не будут сочувствовать вашим идеям. Оставь их в стороне.

Вырасти до критической массы : найди людей, которые сочувствуют твоим идеям. Выиграйте по одному. В какой-то момент, если будет достигнута критическая масса, все больше и больше людей будут добровольно следовать вашему примеру.

Лексика управления : Менеджеры не заинтересованы в улучшении дизайна. Их язык - деньги и время. Уточните, сколько человеко-часов потрачено на ошибки. Дайте понять, что неудовлетворенные клиенты, которые сталкиваются с ошибками, не приносят прибыли. Продемонстрируйте, насколько быстрее вы сможете реализовать новую функцию. Вам нужно выбрать другой словарь для менеджеров.

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

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


3
Связано с «ростом критической массы»: youtube.com/watch?v=V74AxCqOTvg
back2dos

2
@Farmor, если вы не можете убедить их, не сказав «иди почитайте веб-страницу», возможно, именно вам нужно освежить коммуникативные навыки.

1
Я имею в виду, если они упрямы и не слушают молодых. Вы можете высказать свое мнение, обратившись к документации. Например, если они говорят, что ваши очки не верны, и почти все эксперты по версиям пишут вашу точку зрения, они будут вынуждены представить. И мне нравится дразнить высокомерных. Например, если им нравится Торвальдс, вы можете сказать, что Торвалс говорит: «Если вам нравится SVN, вы глупы и уродливы», как он это сделал в своей речи в Google. Я не понимаю, почему обращение к документации, когда упрямый человек не поверит, что это неправильно. Вы могли бы даже сделать это на своем телефоне и показать их прямо сейчас.
Farmor

6
-1 за эйджизм. Иногда вам нужно внимательно выслушать «эксперта по ископаемым» и позволить себе немного смирения. Тогда с приобретенными знаниями сделайте вашу идею еще лучше. Отстранение от других только потому, что они старые, - верный способ потерять ценные ноу-хау и поддержку влиятельных старших разработчиков.
Дуг Т.

1
@Lundin: Менеджеры должны иметь техническую экспертизу, но чем выше вы поднимаетесь по лестнице, тем больше денег и времени становится важным. В этом нет ничего плохого, потому что кто-то должен отслеживать коммерческие аспекты компании. Жизненно важно дать менеджерам правильные аргументы в их руки, чтобы они могли обосновать свои решения для своих менеджеров. Как разработчик, вы можете одержать победу над менеджером, если подадите ему правильные аргументы.
Тео Ленндорф

30

Вы когда-нибудь задумывались о том, что можете ошибаться?

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

Стадные разработчики - это все равно что пытаться загонять кошек, они по своей природе имеют собственный разум и предпочитают делать что-то, правильное или нет. У меня достаточно трудное время для применения лучших практик и управления командой из 2 разработчиков, но вы работаете в компании с 8000.

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

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

  • Значительная поддержка управления

  • Широкое признание компании

  • Инвестирование часов для всех разработчиков в информирование их о новых инициативах (встречи стоят человеко-часов, человеко-деньги стоят денег)

  • Обучение должно быть запланировано и организовано, чтобы даже самые глупые разработчики знали, что они делают

  • Даже при условии обучения в течение часа, у 8000 разработчиков х 50 евро / час = 400000 евро стоимости обучения. Это больше денег, чем моя команда разработчиков программного обеспечения получает за весь год на зарплату, программное обеспечение и оборудование. Это исключительная инвестиция, которую вы предлагаете.

Но вы говорите: «Подумайте обо всем, что можно сэкономить за счет повышения производительности». Это правильно, но значительные инвестиции - это значительный риск, поэтому я должен быть чертовски уверен, что вы правы в этом, прежде чем я подпишусь на этом. Если никто из старших парней не поддерживает вас, я не могу оправдать расходы. В конечном счете, мы можем быть неэффективными, но мы последовательны, и с 8000 разработчиков по всей компании, последовательность важнее всего.

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


4
Спасибо. Честно говоря, поначалу, когда я приходил, в течение нескольких недель у меня было все: «Какого черта, эти парни понятия не имеют!» потом понял, насколько я ошибался по многим пунктам. Но через два года я почти уверен, что некоторые процессы можно улучшить и решить многие из услышанных мной жалоб. Я понимаю, что это тоже вопрос мнения, но если бы кто-то пришел ко мне с доказательством того, что я делаю что-то неэффективное, я бы хотя бы выслушал парня, потому что он делает мне одолжение. Мой департамент состоит всего из 40 человек, и только мы занимаемся таким развитием.
'15

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

Это не просто «можно ли сделать что-то лучше?». Замена исходного репозитория является огромным изменением. Есть большие затраты на переход, не в последнюю очередь переподготовка всего персонала. Тогда есть риск. Вы на 100% уверены, что не будет какой-то возможности, которая нужна старому репозиторию исходного кода, о которой вы не знаете, и которой у нового не было бы?
DJClayworth

@DJClayworth: репозиторий VSS используется только как базовая система хранения. Никто никогда не смотрит на историю, и они обычно стирают все перед повторным копированием всего каталога.
ereOn

1
@ereOn Пожалуйста, помните, что вы работаете на бизнес, а бизнес - зарабатывать деньги, а не код. Если это не для получения прибыли. В любом случае, ваша главная ценность для ваших клиентов, вероятно, не в том, что «мы предоставим вам код с самой быстрой компиляцией make-файлов в отрасли». Вы должны решить, что важно для вашего босса (например, сократить расходы), а затем решить расходы. Фактор в людях и стоимость инструмента.
Джейсон

7

То, что вы описали, для меня не звучит как «привести пример», похоже, что вы сделали предложение и были отклонены. Чтобы подавать пример, нужно показать людям, что ваш путь лучше. Из перечисленных вами проблем я вижу три, которые вы можете начать использовать самостоятельно.

Обычные старые make-файлы, которые поддерживают только полную перестройку.

Создайте свои собственные make-файлы локально и покажите, насколько эффективнее вы сможете с ними работать.

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

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

не использовать "новые" языковые средства (хорошо, std :: string не так уж нов, но никто, кроме меня, не использует его)

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

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

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


5

В дополнение к Лайонелу Баррету (с которым я в основном согласен), рассмотрим также возможную мотивацию сопротивления.

  • Оценить стоимость самого процесса
  • Оцените стоимость процесса, так как он будет похож на ваш

Но и:

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

У меня есть подозрение: сколько в вашей компании таких людей, как вы, с точки зрения возраста и культуры (я - «школа» и «тип школы»)? Сколько таких людей, как вы, должны быть приняты на работу в ближайшие 2/3 года, и сколько из них выйдут на пенсию или изменят свою роль в организации?

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

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


1
Ваши предположения точны: я действительно один из самых молодых в своем отделе. Некоторые из них, кажется, понимают, что, несмотря на мой юный возраст, у меня есть некоторые ценные знания. Я знаю и понимаю, что мне еще нужно многому научиться (и я верю, что так будет до дня моей смерти), но многие из них кажутся обиженными вещами, которых они не знают. Я не хочу отталкивать их или красть их работу или что-то еще: я просто хочу улучшить вещи, чтобы каждый мог работать / жить лучше. Должен ли я ждать, чтобы стать старше, чтобы набрать вес?
ereOn

1
@ereOn: ваше вождение настолько благородно, что каждый здравомыслящий человек должен хотеть работать с вами.
о0 '.

@ereOn: «Должен ли я ждать, чтобы стать старше, чтобы набрать вес?» Не обязательно. Возраст - это ценность с точки зрения опыта в управлении сложностью. Не имеет значения в понимании новых вещей (они новы для всех, и отсутствие отставания может быть преимуществом). Это не "личная" проблема. Это проблема "критической массы". Пока люди, желающие изменения, не станут менее 20%, они будут задыхаться. Если их больше, лидерство становится видимым (и это не вопрос возраста). Если лидер может достичь 40% населения, у «новой вещи» будет надлежащее гражданство. С 60% изменение происходит спонтанно.
Эмилио Гаравалья

3

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

Стратегия 1 Просто сделай это

Стратегия 2 Использование силы вирусного маркетинга

Стратегия 3 Создать карман совершенства

Стратегия 4 нейтрализует бозос

Стратегия 5 уйти от перерывов

Стратегия 6 стать бесценным

Я бы резюмировал статью как «Изменения должны начинаться с вас».


2
Я нашел GTDWYOG не очень полезным. По моему мнению, по крайней мере, название вводит в заблуждение: тот, кто «вовлечен в наем» или имеет свободу игнорировать остальной мир, работая в кафетерии, не хрюкает. Ворчание - это кто-то, кто должен делать как сказано, практически не контролируя обстоятельства, в которых он находится. По моему опыту, несмотря на идеалистическую картину, нарисованную здесь на stackexchange, это имеет место для большинства разработчиков. И для тех, GTDWYOG - больше рецепт того, чтобы быть уволенным за непослушание.
Keppla

1

К сожалению, люди застревают в колее и развивают менталитет, что «это работает, все используют это хорошо, зачем менять это» И это приводит в бешенство.

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

Покажите своему непосредственному руководителю (или техническому руководителю). Если они не заинтересованы, кто-нибудь отвечает за контроль над изменениями или за инновации?

Тем не менее, потенциально, ваши идеи и работа могут быть проигнорированы, и ситуация останется такой, как есть.


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

1

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

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

Первые деньги, вы должны доказать, что текущая установка стоит ему денег. Какая стоимость / час разработки и на сколько часов ускорит его компиляция? Делать математику. Кроме того, скомпилируйте статьи или свидетельства о рисках текущего конвейера кода и покажите ему страшные цифры: «из-за SourceSafe / Bad Coding Practices наша компания потеряла $ XXXK».

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

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


Спасибо за ваши советы. Дело в том, что ответственному лицу, похоже, очень нравятся все старые разработчики (потому что, в конце концов, они выполняют свою работу и не считают часы). Я чувствую, что у меня очень маленький вес, потому что я молод. Несколько человек в моем отделе приходят, чтобы спросить меня о хороших практиках, но даже когда я объясняю вещи очень скромно, в какой-то момент они не хотят показывать, что они мало знают об этом, и пытаются защитить свои старые способы.
ereOn

1

Работаете ли вы в организации, которая считает, что успешная работа, эффективность и инновации ведут к успеху и прибыльности; или что стремление к доходам и концентрация на поддержании продаж являются залогом успеха?

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

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

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

Совершенство - это отношение и мировоззрение.

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

В следующем интервью задайте вопросы типа «Какие инновации исходят от ваших сотрудников», «Какие изменения произошли от индивидуального творчества?», «Какие индивидуальные таланты я могу привнести в эту команду?», «Что способствует успеху вашей организации? ? "," Как ваша организация постоянно использует технологические инновации? "... Ответы на подобные вопросы чрезвычайно красноречивы. Многие организации не имеют видения, или те, которые создали видение, ушли, и организация управляется бухгалтерами. Если вы проводите собеседование с директором по технологиям - спросите его, считает ли он организацию технологической компанией.


-1

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

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

Мне кажется, ты рыба из воды. Найди свое тело в океане и купайся!

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.