Кому лень читать статью, предлагаю посмотреть видеозапись доклада:
Ну а любителям текста добро пожаловать под кат:
Вступление
Несмотря на то, что мой доклад находится в секции «Мотивация, лидерство и личная эффективность», я прежде всего разработчик 1С, как минимум половину своего рабочего дня я программирую. Делаю это я в компании «ФТО». И мы занимаемся внедрением и поддержкой информационных систем.
Когда я пришел в компанию почти 6 лет назад, в команде «1С-ников» было около 10-15 разработчиков и, примерно 20 консультантов. Сейчас у нас только разработчиков 1С более 70 человек. То есть за это время через нас прошло большое количество программистов, и большинство из них пришли с какими-то совсем небольшими, и, я бы сказал так, хаотическими знаниями в 1С (какие были у меня, например). Либо вообще студентами без какого-то либо существенного опыта.
И, за это время, развиваясь сами и обучая других мы постепенно сформировали некоторую программу обучения разработчиков 1С. Как мне кажется, у нас в этом деле есть некоторые успехи. Название текущей конференции – Education, и в данном докладе я как раз и хотел бы поделиться с вами нашим опытом в этой сфере.
Но прежде всего, я хотел бы сделать небольшой дисклеймер: дело в том, что в рамках моего выступления я буду рассказывать про различные курсы, тренинги. Но я не сотрудничаю ни с какими организациями или учебными центрами (к сожалению). А если я и буду упоминать о каких-то курсах, то только потому, что… Ну, потому, что мы их используем, они нам нравятся, так почему бы про это, в общем-то, и не рассказать!
Дерево развития разработчика 1С
Итак, поехали….
Начнем мы с некоторого дерева развития разработчика 1С.
Представим себе молодого специалиста - выпускника вуза либо студента последних курсов. Если он прошел собеседование, и мы его взяли на должность младшего разработчика, то предполагается, что он:
- умеет программировать в рамках своих университетских задач на любом языке программирования (неважно, на каком);
- знает основы баз данных, то есть может написать простенькие запросы или соединить две таблички, построить архитектуру базы данных по техзаданию и так далее.
Прежде всего, мы ему даем наш вводный курс. Специалист занимается обучением все свое время и тратит на это примерно первый месяц работы в компании.
В рамках вводного курса мы учим его писать запросы. Используем для этого замечательный сайт – SQL-EX.RU, где есть много методических материалов и разнообразных заданий разного уровня сложности. Мы предлагаем пройти 80 запросов из учебного курса. После того, как разработчик их проходит, он уже в совершенстве умеет писать разные запросы, умеет использовать вложенные таблицы и временные таблицы, правильно использует операторы HAVING и GROUP BY и так далее. SQL-EX.RU - очень хороший сайт, я его всем рекомендую.
Параллельно мы знакомим человека с 1С. Раньше мы давали, наверное, всем хорошо знакомую книжку Радченко и Хрусталёва «Практическое пособие разработчика». Но в последнее время молодежь все меньше любит читать книги и все лучше усваивает визуальные картинки. Поэтому теперь мы даем бесплатный курс Евгения Гилёва «Программирование 1С за 21 день». Курс пусть и не новый, но он на 8.3, на управляемых формах, в интерфейсе «Такси» и, как понятно из названия, состоит из 21 урока. И прохождение курса как раз и означает просмотр всех видеоматериалов и выполнение всех практических домашних заданий, которые разработчик сдает и обсуждает с опытным наставником.
Далее в качестве закрепления материала, мы предлагаем решить несколько задач из сборника задач для подготовке к Специалисту по платформе. Как правило, это по 2 задачи по оперативному и бухгалтерскому учету. Ну и конечно, в отличие от самого экзамена, во времени мы не ограничиваем, можно и нужно пользоваться любыми материалами. У нас есть видео с разбором некоторых похожих задач. И все решения также сдаются и разбираются с наставником.
Примерно через месяц, когда вводный курс пройден, мы продолжаем обучение, но прежде всего знакомим разработчика с нашими правилами разработки. Они подробно описаны у нас на внутреннем портале. После прочтения разработчик сдает небольшой экзамен, чтобы убедиться, что все прочитано и усвоено.
В случае успешной сдачи мы начинаем подключать его к простеньким, но уже реальным задачам на разработку, и нагрузка по времени здесь распределяется примерно 50 на 50.
А в рамках обучения мы даем следующий учебный курс – «Профессиональная Разработка интерфейсов и форм». Данный курс очень хороший, он достаточно объемный, знакомит с самыми основами разработки в 1С, дает представление о базовых понятиях и состоит из двух частей: работа с обычными и управляемыми формами. Управляемые формы мы даем, понятно, всем без исключения, а вот обычные формы уже в зависимости от того, в какую группу или проект определен разработчик. Понятно, что если разработчик попадает на какой-нибудь большой проект по внедрению ERP, то предлагать изучать обычные формы нет никакого смысла. И у нас уже есть некое поколение разработчиков, которые никогда не видели обычных форм. Счастливые люди.
Кроме того, если вдруг кто видел мое выступление на этой конференции 2 года назад, когда я как раз рассказывал о наших правилах разработки, то быть может помнит, что типовые формы мы редактируем исключительно программным способом. И все практические задания в рамках данного курса мы просим выполнять так, как если бы разработчик разрабатывал в типовой конфигурации, то есть с соблюдением всех наших правил разработки. Здесь разработчик в совершенстве овладевает техникой программного изменения форм, но и вообще втягивается в нашу культуру разработки. Само собой все решения в рамках курса сдаются и разбираются с наставником.
Кроме того и все «боевые» задачи в обязательном порядке проходят рецензирование и разбор. И вот это, наверное, один из самых основных элементов обучения. Очень важно на начальном этапе сформировать привычку «правильной» разработки, раз и навсегда вылечить все глупые ошибки, типа неявных запросов к базе данных, запросов в цикле, использования параметров виртуальных таблицы, вообще оптимального написания запросов ну и т. д.
Вот проходит примерно полгода, и наш младший разработчик немного подрос, он уже:
- Знает все наши методы разработки
- По результатам курса овладел техникой программного изменения форм
- Более-менее ориентируется в типовых конфигурациях
- Делает несложные задачи
- Его код обязательно рецензируется
- Ну а требование только одно – качаться дальше
Начальное обучение пройдено, а мы продолжаем развивать различные навыки разработчика, и как правило, основное умение, которым должен обладать разработчик – это знание системы компоновки данных.
Когда-то мы в вакансиях писали: «хорошее знание СКД». Но потом подумали и данный пункт вообще исключили из описания вакансии, так как умение работать с системой компоновкой данных, это для разработчика 1С требование «по умолчанию» и само собою разумеющееся.
Для обучения СКД у нас есть свой внутренний курс. Ну а вы можете, например, найти на том же «сайты-по-1с.рф» отличный курс «Разработка отчетов в 1С на СКД».
Нагрузка распределяется уже таким образом, что разработчик 80% своего времени работает над боевыми задачами, а 20% занимается обучением. И при таком графике на прохождение курса и изучение СКД может уйти 2-4 месяца.
Все это время и для боевых, и для учебных задач данного разработчика осуществляется обязательное рецензирование и разбор кода.
После этого наш разработчик уже может выполнять несложные и средние задачи, а умение работать с системой компоновки данных позволяет разрабатывать и дорабатывать:
- Различные отчеты
- Работать с динамическими списками
- Таблицами и деревьями на формах
- Разрабатывать печатные формы со сложными макетами
- ну и работать с другими объектами, где используется СКД.
Весь код все также рецензируется.
Мы продолжаем развивать навыки разработчика 1С. Что это может быть?
Ну, например, права доступа и RLS. Здесь есть курс от учебного центра «1С» – «Управление доступом», но он немного не про то. В хорошем курсе «Доработка и адаптация типовых конфигураций», весь 4-ый модуль посвящен работе с правами доступа.
Далее, Конвертация данных. Обменов везде много, есть практически у каждого клиента, на каждом проекте. И большинство обменов строится как раз с написанием правил в конвертации данных. Хороший разработчик, мне кажется, должен уметь пользоваться этим инструментом. Есть 2 отличных курса по конвертации данных, для 2-ой и 3-ей редакции.
Все больше сейчас встречается прочих обменов данными, построенными на web и http-сервисах. Тут я не знаю какого-то единого тренинга. И, если меня вдруг слышат создатели курсов, то мне кажется, что такой курс был бы очень полезен. Но есть довольно много статей, видеозаписей. У нас на канале есть несколько вебинаров, посвященных данным технологиям.
Нагрузка здесь примерно такая же: 20% обучение, 80% работа с боевыми задачами.
И, если все хорошо, то спустя полтора-два года мы получаем полноценного среднего разработчика.
Он сможет сделать большинство задач по имеющемуся тех. заданию, и с большой долей вероятности, можно ожидать что он уложится в плановый срок.
Рецензировать можно уже только большие или какие-то сложные неоднозначные задачи.
Какие еще навыки разработчика необходимо развивать:
Конечно же, это умение правильно использовать библиотеку стандартных подсистем, разрабатывать в типовых конфигурациях. Выполнять обновление релиза. В этом может помочь упомянутый уже мной курс «Доработка и адаптация типовых конфигураций». Ну а что касается обновлений релизов. То тут, наверное, можно посмотреть вебинар с обновлением, в качестве вводного тренинга. Но в целом нужна практика. Первое обновление мы производим, как правило, вместе. Я все наглядно рассказываю и показываю. Начинаем с небольших, не сильно измененных конфигураций, ну а дальше-больше. Обновление релизов типовых конфигураций, хорошо дает прочувствовать, зачем нужны наши правила разработки. До этого мы говорили, надо делать так, конечно, объясняли почему, но вот именно когда разработчик начинает сам делать обновление, происходит некоторое озарение. Ага… так вот оно что…
Кроме того, разрабатывать мы более-менее научили. Но, начиная с какого-то уровня, разработчик должен разбираться и в администрировании системы 1С:Предприятие и SQL-сервера. Он должен быстро найти и устранить причину неработоспособности 1С (особенно, это актуально в поддержке). Уметь устанавливать необходимые службы, разбираться с правами доступа в Windows, устанавливать различные компоненты, уметь там… почистить серверный кэш, например. Разбираться с лицензированием 1С, организовать веб-доступ к базам данных. Уверенно себя чувствовать в SQL Server Management Studio, настраивать планы обслуживания, писать небольшие скрипты и т. д. Для обучения этому у нас есть просто отличнейший внутренний курс по администрированию 1С и SQL. Ну… по крайней мере мне кажется, что он такой замечательный, потому что я его веду…
Ну и, сами знаете где, можно найти также подробный курс на эту тему.
Можно также поставить в цели разработчику получение сертификата 1С:Специалист по платформе. Мне кажется, что в процессе подготовки к данному экзамену формируются правильные, полезные навыки, разработчик начинает уделять внимание таким мелочам как оперативное и неоперативное проведение, работе с блокировками и т. д., что не всегда использует в обычных задачах. В общем, я думаю, что это нужный и полезный экзамен.
Четких сроков здесь уже нет. Все зависит от выбранной программы и текущей ситуации.
На выходе получаем сильного разработчика 1С, который:
- Делает любые задачи, и, как правило, укладывается в срок
- Может решать различные задачи по администрированию, железу
- Может выступать заместителем ведущего разработчика в группе или на проекте
- Рецензирование, как правило, не требуется
Хотя про рецензирование надо сказать отдельно. Я рецензирую абсолютно все задачи, как минимум при первичной передаче задачи в тест. Я знаю, что это довольно дорогая процедура, я сам трачу на нее много своего времени, но это позволяет мне:
- Держать всю картинку в голове, о том, кто, где и что делает на проекте. Благодаря этому я могу более эффективно распределять задачи между разработчиками, избегать дублирования функционала, дублирования кода, написанного разными программистами и т. д.
- Я контролирую общее качество кода на проекте.
- Но главное, это то, что когда разработчик знает, что его код будет просмотрен в обязательном порядке, он априори начинает выдавать более качественный результат. Часто у разработчика есть выбор: сделать быстро и не самыми оптимальным образом, либо правильно, но нужно немного заморочиться. Простой пример – заполнение реквизита по ссылке в табличной части. Предположим, в ТЧ добавлен реквизит «Вид номенклатуры», и его надо заполнить из колонки «Номенклатура». Можно пойти простым путем – просто в цикле по строкам заполнить по ссылке, но это, конечно, не оптимальное решение. А правильно выгрузить все позиции номенклатуры в массив, единым запросом собрать все соответствия «Номенклатура» – «Вид номенклатуры» и уже потом заполнить реквизит табличной части. И если рецензирования нет, то некоторые могут выбрать первый вариант. Таких примеров можно привести множество. А когда у разработчика нет возможности, скажем так, схалтурить, когда он знает, что такой код сразу будет возвращен на доработку, то вынужден сразу делать хорошо, это приводит к выработке привычки писать хороший код. Ну а хорошие привычки, как правило, остаются на всю жизнь.
- Рассказывая другим, как надо правильно писать код, я не могу позволить себе совершать такие ошибки. Мой уровень тоже при этом растет. Вообще, если взять двух одинаковых по уровню разработчиков, и заставить их рецензировать код друг друга, то я лично убежден, что качество кода от каждого из них резко повысится. Они будут с увлечением выискивать ошибки друг друга, и, как следствие, следить и за своим кодом.
- Поэтому, как я уже говорил, рецензирование – чуть ли не самый важный элемент обучения разработчиков. Если вы хотите, чтобы ваши разработчики росли, но вы не рецензируете их код, я рекомендую попробовать. Более того, если вы – разработчик и никто не рецензирует Ваш код, попросите другого разработчика прорецензировать, чтобы развивать в себе полезные привычки и навыки, если, конечно, есть такая возможность.
Идем дальше. Какие еще навыки разработчика необходимы, какие стоит прокачивать?
Мы рассмотрели технические навыки разработчика, именно навыки программирования. Но, начиная с какого-то этапа, разработчик должен хорошо понимать и предметную область. Что это может быть? Ну, например, тот же ЗУП.
В любой поддержке есть ЗУП. В последний год у нас много проектов по ЗУПу (сами знаете почему…). В общем, от ЗУПа, как правило, никуда не деться.
Далее, практически в каждой организации ведутся блоки продаж, складского учета, планирования. И хорошо бы опытному разработчику ориентироваться в соответствующих подсистемах. Тут есть два отличных курса от проекта « »:
- Первый – «Практические задачи по внедрению УТ 11.3, КА 2.2 и ERP 2.2», он такой, не сказать, что бы уж сильно углубленный, но дает основные представления о работе подсистем «Продажи», «Закупки», «Склад», «Планирование» в конфигурации ERP и производных от нее. Как раз то, что надо.
- Сразу после него можно браться за курс «Доработка и адаптация типовых конфигураций», там как раз рассказывается о том, как правильно выполнять модификации по этим же подсистемам.
- Ну а в качестве закрепления материала, можно сдать сертификат «1С:Специалист по внедрению торговых решений». В обоих этих курсах есть блоки по подготовке к сертификации.
Пригодятся разработчику и базовые знания бухучета. Здесь мы попросили наших консультантов подготовить как раз такой тренинг, чтобы восполнить те пробелы в знаниях разработчиков, которых по их мнению необходимы. И у нас появился внутренний курс «Основы бухгалтерского учета для технических специалистов».
Опять-таки, обращаюсь к разработчикам курсов, посмотрите, может быть, какие-то темы вас также заинтересуют.
Вот проходит время, и наш разработчик уже является полноценным ведущим разработчиком в группе или на средних проектах.
- Он самостоятельно делает оценку задач, помогает консультантам, разрабатывает архитектуру решений (насколько это возможно в 1С).
- У него уже есть свои юные падаваны, которых он обучает, развивает, у которых проводит рецензирование кода.
Это – основа любой компании.
Но встает вопрос, куда развиваться дальше? Какие тут есть варианты?
Прежде всего, можно развиваться дальше в конкретной предметной области. Я здесь написал «Компетенции в ERP». ЕРП – здесь в широком смысле слова. В зависимости от потребностей и задач, это может быть:
- Управленческий учет
- Глубокое знание производства
- И связанных с ним проблем расчета себестоимости.
- НДС, налоги и т. д.
Такие специалисты очень востребованы как на конечных предприятиях, так и в компаниях-интеграторах. Из них получаются очень сильные консультанты-внедренцы. Туда тоже есть смысл расти. Но развитие в эту сторону подразумевает близкое общение с пользователями, командировки и т. д. Не всем разработчикам это подходит.
По этой и другим причинам, разработчики больше склонны уходить в другую область. Ну, для тех, конечно, кто вообще хочет дальше развиваться. Т. к. многие, к сожалению, где-то здесь и останавливаются. Ну а что, ты хороший специалист, тебя ценят, зарплата нормальная. Зачем еще что-то делать? Может быть это и нормально, но я не разделяю таких мыслей.
Итак, еще одна область, куда, как правило стремятся разработчики – это область технологических вопросов крупных внедрений. Удивительно, но несмотря на то, что специализация достаточно узкая, здесь есть множество соответствующих курсов: и у учебного центра 1С, и у команды «гилев.ру», и у нас даже свой курс есть. Ну, наверное, это связано с тем, что быть Экспертом это престижно, круто, прибыльно. И это действительно так. Курсы-курсами, но как лично мне кажется, одними теоретическими навыками в этом вопросе не обойтись. Здесь необходимо участие в конкретных реальных проектах по оптимизации. И тут все несколько сложнее, т. к. не во всех организациях, не во всех компаниях есть такие задачи. И это, для многих, может являться существенным сдерживающим фактором. Ну что тут сказать? Если вам эта область близка и интересна, но задач по оптимизации у вас нет, то, наверное, имеет смысл задуматься о смене работы. Не знаю, если честно, что еще тут можно предложить. Ну и как подтверждение статуса, надо конечно получить сам сертификат 1С:Эксперт. Ведь и подготовка к сертификации сама по себе является бесценным опытом.
Ну вот он… 1С:Эксперт по технологическим вопросам
Но и на этом не все.
Еще одна область, в которую можно расти, это область управления. Управление командой, вообще людьми, проектами.
Область очень сложная, абсолютно не похожая на то, чем обычно занимается разработчик 1С.
Представьте ситуацию, что есть хороший руководитель, который вообще не технарь, профильного образования никакого не имеет. И мы по каким-то причинам делаем его разработчиком 1С. Причем делаем это так – вот тебе конфигуратор, иди, программируй. Что он там напрограммирует? Что-то, как-то, методом «тыка». Тут надо обучать с нуля, и я надеюсь, что рассказал вам, как. Но в общем, какая-то абсурдная ситуация, не правда ли?
Но вот в обратную сторону, она встречается повсеместно, не только в разработке, но и во всех других областях и абсурда, почему-то не вызывает. Был у вас хороший специалист, и вы внезапно делаете его руководителем. Как он будет руководить? Ну, скорее всего, также, как тот менеджер будет программировать. Я думаю, что многие из вас встречали подобных руководителей. Причем люди-то могут быть хорошими, и ни в чем невиноватыми, их просто не научили.
Поэтому, тут, также как и в разработке, необходим комплексный подход. И, мне кажется, в этом деле лучше отдаться в руки профессионалам.
Есть несколько различных бизнес-школ. Отнестись к выбору программы необходимо с особенной тщательностью. Есть, скажем так, не очень хорошие программы с громкими названиями. Но хорошие школы тоже есть, обучение в них идет, как правило, около года. И я лично рекомендую школу менеджеров «Стратоплан». Чуть ранее на этой сцене выступал Александр Орлов, один из основателей и учредителей этой школы. Я у них проходил годовую программу обучения, ни разу не пожалел.
Также, в данной сфере написано огромное количество книг: хороших, плохих, средних. Читайте обзоры по книгам, читайте сами книги. Мне кажется, это вот та область, когда ты никогда не будешь чувствовать себя уверенным опытным специалистом. А если вдруг почувствовал, то что-то здесь не так. Ну… это мое личное мнение.
Ну и есть еще одна область, в которую, как мне кажется, надо вкладываться всегда, независимо от вашего уровня, и это «Личная эффективность».
- И прежде всего это управление своим временем. Тут тоже есть множество книг, методик, тренингов. У Максима Дорофеева есть отличный курс «Джедайская техника пустого инбокса». Всем рекомендую.
- Здесь же книги, тренинги по личной мотивации.
- Это участие в различных конференциях, хакатонах. Причем не только в роли слушателей, но и попробуйте выступить.
- В этом вопросе, как раз очень пригодятся навыки публичных выступлений.
- Вообще, то, что называется английским словом – Networking. К сожалению не смог найти русского аналога.
- Обязательно попробуйте поучаствовать в каких-то смежных, open source проектах. Это невероятно расширяет кругозор.
- Это может быть также изучение языков, хотя именно для 1С это не очень актуально.
- Ну и чтение самой разнообразной литературы. В прошлом году, на этой конференции, например, Андрей Макаров делал отличный обзор книг, которые стоит прочитать.
- Может быть что-то еще, вам самим, конечно, виднее.
Не стоит забывать и про эту, как мы говорим, «зеленую» ветку.
Вот такое вот дерево развития навыков разработчика 1С у нас получилось.
Я подробно рассказывал о каждой из веток этого дерева. Причем делал это последовательно. Но надо понимать, что порядок здесь не имеет существенного значения.
Программа развития каждого разработчика подбирается, конечно же, в индивидуальном порядке, в зависимости от текущих знаний, желаний самого разработчика, тех задач, которые есть в настоящий момент или планируются и т. д.
Но если вы разработали программу, определили направление, это половина дела. Хочется еще понимать, а развивается ли сотрудник в этом направлении, получается ли двигаться в эту сторону, в потоке других, навалившихся задач?
И я в свое время предложил своим сотрудникам провести такой небольшой эксперимент. Я сделал несколько неких карточек опыта:
Для каждого, в зависимости от его опыта и задач. Ну и себе тоже, конечно. И предложил каждый вечер делать некую ретроспективу своего рабочего дня. Вспомнить те задачи, которые приходилось решать, и если в результате этого человек узнал что-то новое, то ставить отметку в соответствующий прямоугольник. Не «я сделал очередной отчет на СКД, вот плюсик». Это и так видно из учетной системы, например. А, я сделал отчет, и при разработке задействовал новый метод, который ранее не использовал, сделал какую-то особенную схему, нагуглил и применил какое-то новое решение. Вот в этом случае делать отметку. Здесь абсолютно субъективная оценка.
Вы тоже можете попробовать. Выпишите те направления, в которых вы хотели бы расти и развиваться. Это может быть все, что угодно: от вопросов производительности до вышивания крестиком. Все, что вас интересует. И делаете отметки, если по вашему мнению вы продвинулись по данном пути. А по прошествии какого-то времени сделайте обзор. Если отметок много, значит все в порядке, вы двигаетесь в правильном направлении. Если их мало или нет совсем, то надо, наверное, или поменять приоритеты или изменить что-то в своей жизни. Вам уже виднее что.
В своем докладе, я хотел также рассказать еще много о чем. Рассказать о том, как мотивировать, поддерживать, контролировать сотрудников. Какие приемы, средства и методы мы для этого используем и другое.
Но доклад получился и без этого довольно объемным. И если эта тема для вас актуальна, если то, о чем я рассказывал кому-то интересно, то я позволю оставить подробный разбор этого всего на следующий раз.
А самое главное, что я пытался донести своим докладом сегодня, это то, что какими бы навыками и опытом обладали вы и ваши сотрудники, помните, что никогда не надо останавливаться.
На какой бы лесенке или этапе своей карьеры вы не находились, всегда знайте, что есть куда расти.
Дальше… дальше… и дальше…
Кстати, такой вот человек у нас тоже есть. Это наш руководитель, который нами… повелевает. И кто знаком с этой историей, те знают, что его самым коварным образом предал и убил его лучший ученик. Но это уже наш, внутренний юмор…
А у меня все. Всем спасибо за внимание. Надеюсь, что «до встречи». Мои контакты на экране, пишите, если захотите задать вопрос или поделиться своим опытом.
Данная статья написана по итогам доклада, прочитанного на конференции INFOSTART EVENT 2018 EDUCATION.