Э! – сказали мы с Петром Ивановичем.
Цитата из классика
Специалист подобен флюсу: полнота его односторонняя.
Тоже из классика
Из каких именно классиков приведенные выше цитаты, я специально не указал. Кто школу не прогуливал, и так знает, а кто не знает, пусть погуглит. Это не займет много времени.
Собственно, о чем статья. Мне вдруг стало интересно, что является источником знаний для программиста 1С. Ну, не считая учебника Радченко и Хрусталевой, синтакс-помощника и форумов с готовыми рецептами. На что он реально опирается, приступая к решению задачи сложнее, чем добавление поля на форму? Понимает ли прикладной программист 1С ход мысли разработчиков платформы?
А задуматься над этими вопросами побудила забавная ситуация, возникшая на прежней работе. Так получилось, что я как программист получал задания от нескольких коллег, очень разных по уровню подготовки. Так вот, взаимодействие по поводу этих заданий, а главное, эффективность совместной работы, сильно зависели от того, в какой мере коллеги были профессионалами в 1С в понимании самой фирмы 1С.
Ну, это ж и так понятно, скажете вы. Если бы… Все получилось как раз наоборот. Именно с коллегами, не претендовавшими на роль гуру, мы переделали кучу работы, получая удовольствие и от процесса, и от результата. А вот с гуру все пошло наперекосяк.
Начнем с действующих лиц. Сперва с меня. Конечно, я и раньше слышал о фирме 1С, но до 2015 г. как раз ее основной продукт меньше всего меня интересовал. Я был знаком с изделиями от 1С, о существовании которых многие программисты, возможно, и не подозревают. Но это уже древняя история.
А в 2015 г. в довольно зрелом возрасте меня сократили на работе, и тут выяснилось, что в качестве сисадмина никто меня всерьез не воспринимает. Молодое поколение поставило на мне крест. Пришлось выбирать между смутной перспективой выучиться на 1С-ника и реальными шансами устроиться охранником, курьером или доставщиком пиццы.
Как вы догадываетесь, я выбрал первый вариант, а знания нашел в трех источниках, перечисленных выше. Ни одного сертификата у меня до сих пор нет. А мое резюме теперь читают только до строчки с возрастом. Она там следующая после фамилии. Так что наличие сертификатов, дипломов и прочих регалий все равно останется незамеченным.
Теперь про бывших коллег. В роли гуру выступает дама, в свое время прошедшая хорошую школу франчайзи. На той работе именно ей присвоено право решать, что хорошо, а что плохо в программировании. Выясняя мой уровень подготовки, она приходила в ужас от того, что я не знал элементарных вещей. И ведь действительно не знал. Да, элементарных вещей.
И речь идет не о каких-то основополагающих принципах. Я не знал простых вещей, с которыми не сталкивался до того. Если бы столкнулся, выяснил бы за полчаса, что там к чему. Но раз повода не было, я и не отвлекался на такие пустяки. Просто знал, что где-то в платформе что-то такое существует. Ну, и пусть подождет, когда очередь дойдет.
А вот образованная дама не имела представления как раз о фундаментальных вещах. Например, упоминание реляционной алгебры Кодда ненадолго вогнало ее в ступор. Ненадолго – не потому что она по-быстрому изучила теорию, а потому что вышла из ситуации традиционным способом – сказала, что она здесь решает, как будет правильно.
Другая часть коллег, не наделенная статусом гуру, отличалась одной общей чертой – им как-то в голову не пришло выяснять, что я знаю, а чего не знаю. Одни искренне верили в мой безграничный профессионализм, другие все же подозревали наличие пробелов. Однако результат был удивительный. Они ставили задачи – я решал. Вот так.
Разумеется, не все шло гладко. Как объяснили задачу, так и понял. Как понял, так и решил. Но в итоге уточняли формулировки, требования, кто что имел в виду, и задача решалась к общему удовольствию. И что характерно, никто из них ни разу не спросил, имею ли я хоть какое-то представление, как подступиться к задаче. Назвался программистом – полезай в конфигуратор.
Вот это все и навело меня на мысль, что здесь что-то не так. Почему незнание каких-то элементарных вещей не препятствует мне в решении реальных задач? Причем задач, сложность которых совершенно несопоставима с прочтением шпаргалок по элементарным вещам, до которых руки не дошли. А главное, задач, с которыми я прежде не сталкивался.
Почему, видя незнакомую задачу по 1С, я нисколько не беспокоюсь из-за отсутствия сертификатов на желтой бумаге и нисколько не сожалею, что не посещал многомесячные курсы и многодневные тренинги? Почему, сталкиваясь с еще незнакомым объектом конфигурации, я не испытываю никакого шока? Почему в 1С можно давать результат и при этом выглядеть дилетантом?
Отчасти ответы на эти вопросы начали складываться, когда я только приступил к изучению программирования в 1С. Авторы учебника терпеливо объясняют, как взяться за это ремесло, и за это им огромное спасибо. Жаль только, что в учебнике не сказано, о чем думали разработчики платформы, придумывая то или иное решение. Так вот, я ловил себя на том, что понимаю ход мысли разработчиков платформы. Не факт, что соглашаюсь с решениями, но что понимаю – это да.
А еще, знакомясь с объектами конфигурации, я то и дело вспоминал первую цитату из эпиграфа. Э, думал я, да где-то я все это уже видел. И про все это когда-то читал. И даже что-то такое писал на C. В смысле, на Си. Лет так двадцать назад. Разумеется, тогда все это не было завернуто в красивые фантики, но суть была та же.
Знакомство с программированием у меня началось в конце 80-х. И одновременно со сборниками программ на Бейсике для вычисления безумных формул я читал таких малоизвестных ныне авторов, как Никлаус Вирт, Дональд Кнут, Бьёрн Страуструп и других. Малоизвестных среди программистов 1С. К сожалению, я уверен в этом.
И теперь, глядя на какой-нибудь мудреный объект в дереве конфигурации, я вижу страницы из Вирта. Просто на те же алгоритмы и структуры данных навешаны хитрые интерфейсы, что и в то время вовсе не было откровением.
Иногда на собеседованиях я даже озвучиваю мысль, что в языке прикладного программирования 1С нет ничего такого, чего не было в программировании 30 лет назад. Возражений пока что-то не встречал. Вот и не пойму, то ли с другой стороны стола действительно согласны со мной, то ли думают, что я не видал 1С новее, чем 7.7.
Во всяком случае, с багажом книг, прочитанных в начале 90-х, я берусь за 1С в ее современном виде и особо не комплексую. Фундамент у нее все тот же. Просто возникает иллюзия, будто для решения задач бухучета нужны какие-то уникальные программные средства с волшебными свойствами. На самом деле ничего сверхъестественного в них нет.
Поскольку 1С по своей сути заточена под конкретную область деятельности, в платформе реализованы необходимые типовые решения, причем в универсальном исполнении, насколько это возможно. Программисту предлагается лишь грамотно воспользоваться ими и правильно настроить свойства соответствующих объектов. Точнее, надстроек над все теми же алгоритмами и структурами данных. И это здорово экономит время и силы.
В результате умение настроить готовые механизмы для решения типовых задач стало считаться профессиональной подготовкой программиста 1С. Как в таких случаях принято говорить, это не хорошо и не плохо, это реальность. По этому пути движется все промышленное производство. То, что программирование в 1С порой отдает кустарщиной, вовсе не значит, что оно пытается выпасть из общего потока. Просто наш конвейер малость кривоват.
Ну, а теперь возвращаемся к эпиграфу и читаем вторую цитату. Мне всегда было интересно, догадываются ли однобокие профессионалы, на каком фундаменте они стоят? Сдается мне, они даже не подозревают, что от них скрыто за декором.