Обработка моего устаревшего коллеги

28

Я довольно молодой программист и работаю в ИТ-отделе компании среднего размера. У меня есть сотрудник, и он действительно хороший программист Visual Basic 6. И я имею в виду действительно хорошо. Честно. Он может доставлять рабочие приложения, содержащие очень мало ошибок, в то время, когда мне нужно получить первую чашку кофе и загрузить машину. Он просто так хорош.

Дело в том, что мы работаем с командой, и его стиль работы полностью устарел. Он не верит в версию программного обеспечения (если вы просто убедитесь, что ваш код верен, вам не нужна вся эта чепуха). Не верит в развертывание (я могу предоставить работающий исполняемый файл. То, как его развернуть, нужно выяснить системным администраторам). Не верит в абстракцию. («Если вы хотите создать подпрограмму, продолжайте, но не вызывайте подпрограммы из этой подпрограммы. Это мешает, и код трудно следовать. Таким образом, каждый может следовать каждому шагу на своем пути». «или« да, конечно, вы можете использовать эту библиотеку, чтобы сделать это для вас, но таким образом вы не понимаете, что происходит ») и, конечно, не верит в ООП. (мы работаем в VB.net)

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

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

Мартейн
источник
2
«Да, конечно, вы можете использовать эту библиотеку, чтобы сделать это для вас, но таким образом вы действительно не понимаете, что происходит». Он имеет в виду, что он не понимает, что происходит. Мы делаем :) Кажется, он боится учиться чему-то еще, чтобы улучшить свою производительность.
Дэмиен Рош
7
Ваш коллега не устарел, он просто пропустил несколько важных 101 уроков по программированию. Версионирование, абстракция и т. Д. Все это было очень важно 20 лет назад и сегодня.
Jas
7
Термин «устаревший» является довольно загруженным и непросветленным термином. У меня есть человек, с которым я работаю, и который можно описать такими же терминами, как вы использовали. Однако он значительно МОЛОДШЕ, чем я.
Билл
1
Дело о библиотеках вполне обоснованно. Вам действительно нужно понимание того, что они делают - например, вещи в библиотеках, которые создают потоки или генерируют исключения, могут сделать вашу жизнь ОЧЕНЬ несчастной. Быстрый взгляд на их документацию или исходный код обычно достаточен для удовлетворения любопытства. Это НЕ аргумент, чтобы НЕ использовать вещи в библиотеках, это просто аргумент, чтобы знать, что они делают (и затем использовать их счастливо, а не в невежестве).
quick_now

Ответы:

25

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

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

  • Работай вокруг него.
  • Стремитесь создавать свои проекты в столь же сжатые сроки, как и он.
  • И если вы не можете получить лучший результат.
  • Со временем те проверенные концепции, которые он отвергает, начнут окупаться за вас.

С другой стороны, если вы вынуждены работать своим путем, уходите.

Николь
источник
Я согласен с этим так же, как и ответ @pierre 303. Он покинет темное место, когда ему покажутся красивые инструменты, которые есть у хороших парней.
Кортук
3
Ему нужно совсем немного, чтобы его закодировать, но ваш код поддерживается. Ваша выплата будет отображаться при сохранении кода. Хороший отдел отслеживает время, затрачиваемое на такие вещи, как обслуживание, и отслеживает меньшее время, затрачиваемое на ваш код, что делает его более затратным.
Кортук
+1 за демонстрацию, используя хорошие методы командной работы.
Клайм
11

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

Итак, у вас есть два варианта:

  • Адаптируй себя. Может быть, со временем вы сможете убедить его в полезности системы контроля версий? Вам придется увеличить свой круг влияния . Чем более он устойчив к изменениям, тем больше времени вам понадобится.

  • Удалить себя из team. У вас есть много точек, чтобы оправдать это. Может быть, вам следует оставить его в покое, поддерживать свои собственные приложения и посвятить себя новым вещам.

  • Удалить себя из company. Иногда это единственное решение.


источник
4
303, я думаю, что это лучший совет, новый парень, критиковавший очень компетентного опытного сотрудника перед менеджером, приведет к некоторым очень негативным чувствам, со временем, когда вы сможете адаптироваться и помочь другим адаптироваться. У меня были новые сотрудники, начинающие со мной, и они думают, что они знают что-то, что работает лучше и идут к боссу, мой босс будет слушать все, но это меня бесит, поскольку через 3 месяца они выясняют, почему я делал это так, как делал я и жалуются на изменения. Я думаю, что это другой уровень, как у нас SVN и ООП, но основная предпосылка применяется.
Кортук
3
В мире есть 3 вида людей - те, кто понимает двоичный код, и тот, кто не понимает ...
Майкл К
Хитрость заключается в том, чтобы упростить использование и показать, что есть существенные преимущества, когда это действительно важно. Очень похоже на ремни безопасности ...
Я не согласен. Некоторые практики хороши только тогда, когда вы работаете соло, и этот парень, кажется, полон ими.
Борис Янков
Возвращаясь к этому вопросу и этому ответу, спустя более года, вариант 3 оказался правильным решением
Мартейн
6

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

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

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

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

Прежде всего, сделайте все как можно проще для него (Keep It Simple Stupid). Позвольте ему начать следовать этим практикам на своих собственных условиях. Но не позволяйте этому тянуть вас вниз.

Роберт С Чаччо
источник
У меня были неприятные переживания, когда я «пытался сиять»: частный репозиторий мало помогает, когда нет определенного понятия «ревизия» (что меняется от коллеги к интеграции? Часто, с людьми, которые не используют CVS, это похоже на «это» функции, но не те ». То же самое для автоматизированных тестов: что хорошего в сборке, которая не исправляется тем, кто ее ломает? Вы делаете рефакторинг и пишете тесты, он дезактивирует и ломает тесты. еще раз: ваше слово против него, но теперь ваши тесты «провалились», что «доказывает», что они не уловили ничего ценного. Вы не можете преуспеть против своей команды.
Кепла
4

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

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

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

Дэмиен Рош
источник
1
Я могу кодировать намного быстрее, не используя ничего особенного в небольших проектах, но, черт возьми, вы лучше поддерживаете хорошо разработанную кодовую базу. Здесь хороший дизайн окупается. Весь дизайн программного кода основан на том факте, что для исправления ошибок требуется больше времени на обслуживание, чем на кодирование.
Кортук
ключевая часть "на небольших проектах". Я очень сомневаюсь, что мы говорим о небольших проектах здесь (читай: командные усилия).
Дэмиен Рош
совершенно не согласен это ничего не говорит о Уолтере, за исключением того, что он знает, что все эти хорошие практики и как они могут принести пользу команде. RAD не использует эти методы, потому что они замедляют вас.
Росс
4

Я видел это раньше ,

И я почти готов поспорить: этот тип парня появляется только «быстро», потому что у него в голове есть набор проверенных «шаблонов». 99% приложений Line of Business - это CRUD , базовые вещи.

Он, вероятно, использует тонну Copy & Paste из своего собственного кода (в этом нет ничего плохого).

Но..

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

Маленькая проблема ...

Я бы создал сторонний проект, сложный, который действительно выигрывает от ООП и повторного использования кода.

Затем покажите ему этот проект и попросите его реализовать функцию для функции.

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

Темная ночь
источник
да, согласен, но что он может с этим поделать?
Росс
Зачем тратить время на реализацию игрушечного проекта?
@ Андерсен, потому что некоторые программы, которые не хотят слушать причину, принимают свидетельство только после того, как оно выложено перед ними
Темная ночь
@Darknight, возможно, нет, но, тем не менее, почему бы даже подумать о том, чтобы тратить время на реализацию игрушечных проектов, которые не относятся к реальным проблемам в жизни?
3

Посмотрите на это с деловой стороны.

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

Если со временем вы можете изменить это, тогда вы можете полностью изменить это.

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

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

ElGringoGrande
источник
2

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

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

  • Он берет меня х количество времени , больше , потому что он отказывается следовать некоторым довольно основным процессам.

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

MrEdmundo
источник
"восстановление" == откат.
2

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

guiman
источник
5
Поднявшись по цепочке командования, вы становитесь врагами каждого человека, на которого вы наступили, и часто это не дает результата.
Кортук
1

Поговорите с вашим менеджером, просто и ясно, как вы сделали здесь. Здесь есть потенциал для роста - если ваш коллега хорош, как вы говорите, ему не нужно много убеждений, чтобы заставить его начать переходить на использование управления исходным кодом и .Net с надлежащими концепциями ОО.

Otávio Décio
источник
1
Это если он хочет измениться ..
Уолтер
3
Многие менеджеры, которые у меня были в прошлом, не ценят нового парня, меняющего что-то, что, кажется, работает. Они ценят продукт, сделанный быстро, потому что не понимают полностью, что вы делаете. Похоже, у вас есть технический босс, который может нанести серьезный вред вашему отделу.
Кортук
1
Если он этого не делает, то еще важнее, чтобы менеджер (если он есть) знал об этом.
Otávio Décio
@Kortuk - это очень хороший момент, и если это правда, то у ОП большие проблемы.
Otávio Décio
Я думаю, что если ОП попытается действовать, чтобы попытаться внезапно изменить эти вещи и заставить их наступить на пальцы. Это делает врагов и может нанести вред рабочей среде, где он мог бы многому научиться у своего коллеги.
Кортук
1

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

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

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

JB King
источник
1

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

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

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

Если вас не интересует ни малейшее ... он может быть проигранным делом, но опять же, у вас есть инструменты для вашей команды и вы, чтобы превзойти его. Попробуйте использовать программное обеспечение для репозитория, которое показывает / отправляет сообщения о фиксации электронной почты, которые может видеть ваш менеджер, что обеспечит прозрачность для вашего менеджера и оставит вашего коллегу за кадром (у bitbucket.org есть бесплатные частные репозитории с неограниченным пространством, если вы используете mercurial).

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

dukeofgaming
источник
1

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

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

markhahn
источник
Контроль версий также предоставляет историю. Важно, когда людей больше нет рядом.
0

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

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

Мои коллеги ПОСТОЯННО сливаются, постоянно наступая друг другу на ноги. Но хорошая дружеская лекция о ее преимуществах была бы хорошей вещью и стимулировала бы дискуссии.

Ponk
источник
1
постоянное наступление на пальцы друг друга является признаком того, что программное обеспечение плохо спроектировано. Это не имеет никакого отношения к управлению исходным кодом, и может ухудшиться без него.
Deadalnix
@deadlnix Это тоже может быть причиной, но я думаю, что в некоторых случаях это также можно объяснить чрезмерным усердным использованием ветвления, когда это не подходящее решение.
Николь