автор Франческо Чезарини

Это отрывок из книги Франческо Чезарини и Майка Уильямса Путь к успешному внедрению неосновных языков программирования.

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

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

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

Если вы небольшая компания, минимальная команда должна состоять из 4–5 человек.

Если вы крупная компания, 10–12 разработчиков и выше.

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

Переносимые навыки

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

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

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

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

Команда, которая растет вместе с вами

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

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

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

Избавьтесь от вредных привычек

Изучить Erlang / OTP легко, так как это очень компактный язык и фреймворк. Труднее всего отучиться от других моделей языков программирования и избавиться от вредных привычек, которые они приносят с собой.

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

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

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

В конце 90-х Эрикссон провел исследование, посвященное продуктивности выпускников и опытных разработчиков в крупных проектах после того, как они прошли обучение Erlang и OTP. Они пришли к выводу, что выпускник, сразу окончивший университет, стал продуктивным примерно через месяц, так как мог легко освоить новые модели программирования и внести изменения.

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

Инвестируйте в обучение

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

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

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

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

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

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

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

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

Планируйте и действуйте с учетом долгосрочного усыновления

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

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

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

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

Присоединяйтесь к сообществу

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

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

† Бесстыдный плагин - я являюсь соавтором двух книг по Erlang - Erlang Programming и Designing for Scalability with Erlang / OTP.

Это отрывок из книги Франческо Чезарини и Майка Уильямса Путь к успешному внедрению неосновных языков программирования.

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

Первоначально опубликовано на www.erlang-solutions.com.