Заметки из Зазеркалья

10.02.2014

Профессия 1С:Программист сегодня

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

Затрудняюсь сказать, что является первичным: развитие системы или развитие специалистов. Наверное, тут нет однозначного ответа. Система развивает специалистов, специалисты во многом развивают систему, ставя перед ней новые задачи. Кстати, под системой я понимаю здесь и платформу «1С:Предприятие», и набор библиотек, и набор прикладных решений, и всю инфраструктуру (информационные ресурсы и т. д.).

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

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

Итак, по моему мнению, 1С:Программист – это разработчик бизнес-приложений и специалист по автоматизации деятельности людей и предприятий. Немного оговорюсь. Здесь я пишу «бизнеса» и «предприятий», подразумевая, конечно, и работу бюджетных учреждений.

Конечно, есть специалисты, работающие и на других языках программирования. Но их просто не объединяют в обсуждениях, в форумах и в HR-ресурсах в единую профессию. Платформа «1С:Предприятие» создает определенный уровень абстракции, позволяющий максимально сосредоточиться на задачах именно бизнес-логики.

1С:Программист – это специалист, который, прежде всего, оперирует задачами бизнес-логики. Он должен понимать, как устроена деятельность предприятия, как устроены основные и вспомогательные бизнес-процессы. Должен уметь оперировать составом сущностей, отражающих предметную область. Должен понимать, как система должна взаимодействовать с пользователем.

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

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

В какой-то мере можно сказать, что «1С:Предприятие» позволяет кристаллизовать профессию специалиста по бизнес-приложениям.

Кстати, при подборе на разработку типовых конфигураций мы охотно берем специалиста, если он обладает желаемыми качествами, но не владеет «1С:Предприятием». Инструменту обучить гораздо быстрее, чем пониманию проектирования бизнес-логики.

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

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

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

Еще момент, который часто является источником заблуждений, – это попытка оценивать в каких-либо системах исключительно язык программирования. В «1С», как и во многих современных системах, язык программирования – это только маленькая часть инструмента. В «1С:Предприятии» достаточно простой язык, но он является только связующим звеном. Платформа (framework) представляет собой сумму используемых технологий. Соответственно, разработчик ведет разработку не с помощью языка программирования, а на основе набора предоставляемых инструментом моделей и технологий. Именно в них сосредоточен уровень инструмента.

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

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

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

Можно рассматривать здесь разработку и на «1С:Предприятии», и на любом другом инструменте, например, универсальном языке программирования. Прежде всего, задача будет заключаться в том, чтобы построить модель (в виде состава сущностей и процессов), отражающую предметную область настолько адекватно, чтобы потом успешно развивать систему. Потом нужно проработать ролевую модель пользователей и систему прав доступа (на уровне сущностей и на уровне записей) и, возможно, внести изменения в модель сущностей. Далее – реализация эффективных алгоритмов обработки (возможно, денормализация…). Потом создание удобного (как минимум в наиболее частотных процессах) пользовательского интерфейса. Потом обкатка всего этого на реалистичных данных с имитацией многопользовательской нагрузки.

Конечно, это очень и очень упрощенное изложение порядка разработки. Вы можете легко добавить сюда с десяток пунктов. Вот умение сделать все это, причем так, чтобы это действительно решало задачи бизнеса и было эффективным (по производительности, удобству…), и есть профессионализм 1С:Программистов.

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

Еще одна особенность 1С:Программистов – это повышенные требования к пониманию потребностей бизнеса. Речь не об умении вести переговоры с заказчиком, это, конечно тоже полезно. А о том, чтобы научиться понимать заказчика в самой сути его реальных потребностей и искать с ним вместе оптимальные решения по автоматизации работы, а часто и изменению организации процессов. Здесь, чтобы надолго не уходить в эту область, я бы хотел сослаться на книгу Эрика Эванса «Предметно-ориентированное проектирование (DDD)».

Многие профессии, а особенно в IT, не являются чем-то застывшим.

Для профессии 1С:Программиста, как мне кажется, есть две важные тенденции развития в последнее время: общее развитие и дополнительная специализация.

Общее развитие напрямую отвечает развитию потребностей предприятий и развитию IT.

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

Развитие IT тоже не дает дремать. Например, активный переход к удаленной работе пользователей через Интернет потребовал от 1С:Программистов освоения технологии клиент-серверного программирования. Просто потому, что платформа может упростить и ускорить разработку, но не может (и не должна) исключить необходимость знания основных архитектурных аспектов и парадигм.

Еще один пример – интеграция. Постоянное развитие IT в сторону интегрированных систем потребовало освоения и умения применять различные интеграционные технологии. В общем, тут тенденция такая же, как и в целом в программировании бизнес-приложений. Если раньше разработка практически ограничивалась работой с базой данных и формами, то текущая тенденция требует активной работы с процессами, построения Web-API и т. д.

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

Еще, разумеется, стоит сказать про облачное направление. Тут важно, что это не только работа «1С:Предприятия» в модели публичного сервиса, но и реализация облачного развертывания системы в крупных корпоративных внедрениях.

Иногда специалисты по «1С:Предприятию» сетуют на быстрое развитие технологий. Но ведь мир не стоит на месте. «Приходится бежать со всех ног, чтобы только остаться на том же месте! Если же хочешь попасть в другое место, тогда нужно бежать по меньшей мере вдвое быстрее» (Л. Кэрролл, «Алиса в Зазеркалье»).

Хочется отдельно отметить еще одну тенденцию из общего развития, не столь прямолинейно прослеживаемую. Это увеличение веса моделирования. Всю разработку (не только в «1С:Предприятии») можно условно разделить на разработку на основе моделей и непосредственно написание кода.

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

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

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

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

Еще один аспект специализации – ориентация на малый, средний и крупный бизнес. Система «1С:Предприятие» используется на всех трех уровнях, но особенности работы системы отличаются. Причем здесь важно далеко не только техническое отличие. Для работы на каждом из этих направлений нужно понимать устройство и практику работы компаний и людей в этих компаниях. С точки зрения крупного бизнеса идет постоянное увеличение масштаба внедрений. Соответственно, для понимания работы ERP-решений (по крупному, с упором на «P»), работы холдингов с сотнями и тысячами пользователей системы нужны особые знания и особый опыт.

В малом бизнесе развитие тоже идет достаточно активно. Понимание современного малого бизнеса (динамичного, требующего очень удобных решений и быстрых изменений, мобильного во всех смыслах) – это отдельное направление, причем очень интересное и перспективное. Замечу, что, по сути, специалистов, которые могли бы похвастаться, что «Я хорошо знаю современный малый бизнес» или «Я могу автоматизировать работу компании (не просто выписку документов, а финансы, планирование, производство…) на 1000 пользователей» не так много, а ценность и потребность в них будет расти.

Куда расти 1С:Программисту?

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

Здесь еще раз хочется заметить, что «1С:Предприятие» как платформа и набор конфигураций – это инструмент. А вот направление его использования (то есть тот рынок и та экосистема, которая существует) охватывает огромный спектр задач по применению этого инструмента. Соответственно, возможности роста специалиста по «1С:Предприятию» столь же велики, сколь и возможности роста специалиста по созданию и внедрению бизнес-приложений вообще.

Попробую перечислить кратко, кем может стать 1С:Программист.

  • Аналитиком-проектировщиком, понимающим, как устроен бизнес, и способным проектировать решения со сложными бизнес-процессами в таких областях, как управление производством, планирование, бюджетирование и т. д. Это очень и очень непросто, и это действительно редкий дар.
  • Высококлассным программистом бизнес-приложений. Тем, кто способен писать эффективный, надежный и красивый код с использованием всех инструментов моделирования. Особенно если код ориентирован на работу большого количества пользователей. На первый взгляд это кажется банальным. «Какой же это рост?» – скажете вы. Но уверяю, негласный титул «суперпрограммиста» ценится очень высоко и встречается редко. И работа на платформе «1С:Предприятие» тут ничем не отличается от других систем. Такие специалисты очень нужны в сложных и больших проектах.

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

Но ведь это не то! Те, кто имеет опыт подбора и управления разработчиками, отлично знают, что разработчики существенно отличаются по силе (квалификации, способности решать сложные задачи, результативности). По своему уровню разработчики отличаются не на проценты, а в разы и на порядки. Это не гипербола!

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

Вернемся к тому, кем может стать 1С:Программист…

  • Экспертом по развертыванию и оптимизации масштабируемых высоконагруженных систем. То есть тем, кто может обеспечить работу отказоустойчивой и производительной системы с тысячами пользователей. Поверьте, это суперквалификация, независимо от используемого инструмента.
  • Гуру по юзабилити. Здесь речь не просто про рисование красивых и удобных форм. Речь про создание интерфейсов, обеспечивающих работу пользователей в сложных workflow, насчитывающих десятки шагов. Таких специалистов очень мало.
  • Есть еще несколько относительно новых направлений, например: «Специалист по интеграции», «Специалист по разработке мобильных приложений», «Специалист по облачному развертыванию».
  • Ну и наконец, классный PM – это всегда классный PM. Сюда же можно отнести и тим-лидов. Это управление людьми и задачами в сложном проекте. Тут, кажется, не требуется особых комментариев. Ну и обычно PM или тим-лид обладает одной или несколькими из перечисленных выше квалификаций.

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

Как представляется, здесь главное – определиться, куда вы лично хотите двигаться, в какую сторону хотите профессионально развиваться. Система «1С:Предприятие» может вам помочь в развитии. Но, конечно, основной труд за вами.

С. Нуралиев

Теги: разработка 

Рассказать друзьям: