Как включить новичков в свой проект?

9

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

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

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

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

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

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

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

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

Юджи Томита
источник
3
«Общее / программирование на уровне любителей», на мой взгляд, очень отличается от «программистов младшего уровня». Первый из них звучит как кто-то, кто играет с shell / batch-скриптами в неделю, чтобы настроить свою систему. Последний звучит как кто-то, кто только что закончил степень CS. Обработка этих двух типов будет очень разной. Просто скажи ...
FrustratedWithFormsDesigner
@FrustratedWithFormsDesigner Спасибо! Я не знаком с терминологией. Любитель, которого я имел в виду, самостоятельно преподавал несколько языков программирования, создал одну или две программы, веб-сайт. Младший уровень Я думал, что это тот, кто обладает достаточными знаниями в области программирования, чтобы получить работу в софтверной компании, но теперь мне кажется, что эти два могут быть довольно похожи (по моим определениям)?
Юджи Томита
3
Молодые ребята с формальным образованием в области CS и без опыта - наивны, но часто талантливы, быстро учатся чему-то новому и адаптируются к своей работе. «Ветеринары-хобби» гораздо более опасны, так как они часто являются рабами своих привычек, поэтому они могут неохотно меняться и иметь проблемы, вписывающиеся в вашу экосистему. Но тем не менее - только предоставив им свободу, вы сможете увидеть их глупость или сообразительность. Если вы дадите им примитивные мирские задачи, ни они ничего не узнают о работе, ни вы ничего о них не узнаете.
с69
@ c69 Спасибо! Мой вопрос заключается в том, как облегчить новичка в нашей кодовой базе? Цель не в том, чтобы их проколоть, а делать только мирские задачи. Просто опасно давать кому-то доступ к нашей базе кода и заставлять его создавать свой самый первый проект django / программирование как часть нашей системы (или это то, что вы имеете в виду? Позвольте им попробовать и посмотреть?). PS: должным образом отметил о ветеринарах хобби
Юджи Томита

Ответы:

5

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

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

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

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

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

Я думаю, вы будете удивлены, насколько способны некоторые из них.

maple_shaft
источник
1
Следует также сказать, что, если вы делегируете новичка на роль, где он не чувствует себя полезным, им понадобится небольшой опыт, который он приобретает, чтобы найти лучшую работу. Даже новичок должен быть в состоянии следовать указаниям, задачи по обслуживанию в порядке, но если вы не готовы помочь им расти, всегда ждите новичка.
Ramhound
Спасибо за ваш вклад - это очень ценится. Мы должны с чего-то начать, так как мы рассматриваем людей, которые буквально не имеют опыта. Введение в python 101, учебник по django, bash-скрипты, как использовать контроль версий и т. Д., Я прислушаюсь к вашему предупреждению о не-микро-управлении. И да! Я считаю, что наши люди вполне способны.
Юджи Томита
5

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

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

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

Удачи!

louisgab
источник
1
Частые обзоры кода были только тем, что я собирался предложить. Это займет час вашего рабочего дня и окупится, если вы научите их, что не так, они должны это исправить, и их навыки улучшатся. Через некоторое время вам не нужно будет тратить столько времени на проверку кода, как первые несколько недель. Также убедитесь, что они знают, как использовать (и действительно используют) систему контроля версий. Тогда любые ошибки можно откатить довольно легко.
HLGEM
1
@isgab - Эффективного дизайна пользовательского интерфейса трудно достичь даже с 30-летним опытом. Я имею в виду, посмотрите на Microsoft и Apple, они оба имеют разные идеи о том, как должен работать пользовательский интерфейс.
Ramhound
Мне нравится, что вы говорите о ядре против пользовательского интерфейса. Я думал, что есть плюсы и минусы для обоих (новобранец на бэкэнд, новобранец на фронтэнд). С одной стороны, HTML часто связан с опытом - знание того, что не работает. Это также "безопасно" в том, что проекты изолированы. Backend работает точно так же, как и должен, но созданный сейчас код должен быть сохранен и проработан в будущем.
Юджи Томита
2

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

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

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

Дэн Рэй
источник
1
«Убедитесь, что вы продолжаете кормить их задачами, которые являются лишь небольшим шагом по сравнению с их текущими возможностями». - Если этого не сделать, вы можете обнаружить, что эти люди передают свои знания в другую компанию. Если вы не будете кормить, тренировать и выгуливать новичка, они убегут так же, как ваша собака.
Ramhound
Другие варианты: предоставьте им уже (хорошо) функцию орудия, чтобы они могли сравнивать результаты
Etsitpab Nioliv
1

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

Единственное, что я когда-либо делал в этой области, - это учил людей, как использовать программу составления отчетов или какой-нибудь VBA / Macro-код для Excel. Я обычно даю наборы данных для повторного использования. Заставить их изучать SQL довольно сложно, но я видел, как это было сделано (заплатили за то, что они прошли внешнее обучение). Большинство из этих людей были финансовыми аналитиками, у которых была возможность научиться кодировать, но, возможно, не нашли время. Попытка сделать это с некоторыми людьми в операциях - это длинный путь.

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

JeffO
источник
Я упоминал, что мы говорим о людях с нулевым предыдущим опытом (или очень небольшим количеством), поэтому мы не говорим о размерах заработной платы, необходимых для найма профессионального программиста.
Юджи Томита
Ах, и наша компания немного похожа на семью: нам нравится делать все самим и заставлять людей подниматься в ряды. Мне было в основном любопытно, как структурировать рабочий процесс новичка в мой.
Юджи Томита
0

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

HLGEM
источник