Делиться знаниями спокойно и выдержанно
Сергей Киселёв,
ведущий инженер-программист группы ЕИК/техлид
Сергей Киселёв работает в АСКОН 20 лет, а программированием занимается больше 35. В далёких 80-x он начинал с изучения BASIC, С и FORTRAN. Долгое время работал на Delphi, разрабатывал веб-сайты на PHP. Сегодня его основной язык — С#, а перспектива покажет, что изучать дальше. Для настоящего программиста, по словам Сергея, важна независимость от языка. Профессионала выделяет целый набор инструментов, в котором всегда есть выбор.
Из интервью вы узнаете:

  • как в древние времена проектировали пружины без CAD/CAE систем, и что такое графопостроитель
  • почему лучший код — самый простой
  • где программисту искать вдохновение и как не поддаться выгоранию.
Расскажите, где вы выросли, что формировало ваши интересы и увлечения?

Я родился на Чёрном море, рос в городах-героях, где всё было пропитано духом прошедших боёв. У меня было обычное для тех мест мальчишеское детство: разведка, военные действия с деревянными автоматами, маскировка в кронах деревьев. Еще мы занимались «диверсиями»: подкладывали гвозди и мелочь на трамвайные рельсы. Было весело и немного страшно. Когда повзрослели, это стало несолидно.

В 12 лет появились уже настоящие увлечения — фотография, техника. В то время я любил всё, что можно было разобрать, особенно, велосипеды и магнитофоны. Хотя частенько не мог собрать обратно. В 1980 году мы переехали в Курган, там я начал посещать радиокружок при Дворце пионеров (сейчас — Дворец детского (юношеского) творчества). Понемногу научился делать что-то своими руками. Эта склонность и определила мой путь.

После окончания школы решил получать высшее образование. Когда пришло время выбора вуза, у нас было всего два института — Курганский машиностроительный институт (сейчас Курганский государственный университет) и Курганский педагогический институт (сейчас Педагогический факультет КГУ). Выбор был очевиден — хочу стать инженером. А детские воспоминания помогли выбрать специальность «Гусеничные и колёсные машины»: настоящие танки, БМП, БТР. Можно было посмотреть, как они устроены, потрогать и даже разобрать и собрать. Но самое главное — нас должны были научить конструировать эту технику.

В период моего студенчества у нас был звёздный преподавательский состав: заведующий кафедрой КМИ, заслуженный машиностроитель РСФСР, профессор Лев Борисович Чернов, заслуженный деятель науки и техники РФ, доктор технических наук, генерал-майор инженерно-технической службы, профессор Александр Александрович Благонравов — один из отцов советского танкостроения позднего периода. Мы глубоко изучали теоретическую механику, математику, специальные предметы по части конструирования.

Вы в профессии уже более тридцати лет, что привело вас в программирование?

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

После окончания вуза продолжили работать в этом направлении?

Даже больше. Нашу кафедру курировало СКБМ — Специальное конструкторское бюро машиностроения Курганского машиностроительного завода (ПАО «Курганмашзавод»).

Меня взяли в сектор систем автоматизированного проектирования (САПР) ещё на преддипломной практике. Так я стал инженером-математиком, ведь тогда не было такой специальности как программист. Были крутые математики, которые умели ещё и программировать.

Впрочем, тогда наша работа выглядела для поколения ПК несколько странно. Программы мы писали сидя за столом и обложившись справочниками. На четыре терминала приходилось где-то восемь человек. Поэтому программы вводили по очереди. Потом запускали компиляцию и спокойно шли в курилку минут на десять. А если ошибались при вводе — через десять минут получали ошибку компиляции, распечатывали вывод и снова шли за рабочий стол искать багу.
Советский персональный компьютер серии ДВК. На аналогичном начинал работать Сергей
Фото: Форум сайта «Отечественная радиотехника ХХ века»
Правда, это был самый сложный этап отладки алгоритма. Если программа начинала работать, можно было вывести чертёж на графопостроитель и радостно закричать: «Ура! Работает!».

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

Что за история связана с вашей работой в СКБМ и библиотекой пружин для КОМПАСа?

Была задача от конструкторов — расчёт пружин по нужным параметрам и готовый чертёж на выходе. Пружины строятся по определённым математическим (рабочие параметры) и геометрическим (конструктивным, технологическим) законам, и каждый вид пружины нужно было запрограммировать. Тогда у нас был чудесный графопостроитель: на огромном столе с помощью направляющих ездили две шариковые ручки и рисовали чертёж на основе программы. Конструктор заказывал определённую пружину, я вбивал исходные данные (тип, длину, диаметр, жёсткость и т.д.), нажимал кнопку и вместе с конструктором зачарованно наблюдал, как появляется чертёж.
А в 1991 году у нас появились первые настоящие персональные компьютеры, работа на которых тоже шла поочерёдно. На них установили первую версию КОМПАСа образца 1989 года. В последствии, мой хороший друг-программист сделал огромную работу и конвертировал алгоритмы в библиотеку КОМПАС. Что удивительно, библиотека до сих пор актуальна, продолжает развиваться и входит в поставку системы. Это даёт мне некое основание чувствовать себя немного причастным к становлению АСКОН.

Вы были знакомы с АСКОН в период зарождения компании, а когда пополнили ряды сотрудников?

В 2000 году я увлёкся web-мастерингом, несколько лет программировал сайты. А коллеги из Курганского центра разработки систем управления инженерными данными (сейчас - АСКОН-Курган), появившегося в 1994 году, располагались на Курганмашзаводе, где я начинал работать. И им захотелось сделать web-версию ЛОЦМАН:PLM. Наняли меня по договору, я сделал, результат всем понравился, и я попросился на постоянную работу. И с 2003 года я в АСКОН.

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

В какой-то момент появилась необходимость перенести инсталлятор ЛОЦМАН:PLM на стандартный Windows Installer. Со временем пришло понимание, что весь набор продуктов АСКОН требует единого подхода к развёртыванию и настройке у клиентов. И мы придумали «Единый инсталлятор комплекса»: чтобы установка интегрированных продуктов происходила корректно, нужна была целостность. В процессе работы ко мне стали присоединяться коллеги, и образовалась группа единого инсталлятора комплекса (ЕИК).

Шло время, приходил опыт, у группы стали появляться другие задачи, мы набрали компетенций в разных вопросах и научились решать проблемы массового обслуживания. Написали продукт «Центр обслуживания комплекса» (ЦОК).

Расскажите подробнее, чем занимается ваше подразделение,?

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

С 2015 года вы работаете в Коломенском центре разработки. Что изменилось после переезда?

В Коломне я продолжил свою курганскую работу, но у меня стало больше коммуникаций. Если там я лично общался в основном с разработчиками ЛОЦМАН:PLM, то здесь мой круг расширился до всех подразделений. Большинство программистов — интроверты, а для меня личное общение бесценно. Да и в общении в разы быстрее решаются вопросы. Не каждый человек может донести свою мысль в письменном виде. Сейчас я ведущий программист, и в моём подчинении три человека. При этом, я активно программирую сам, не только руковожу, но и делаю, поэтому часто приходится перераспределять задачи и ресурсы.

Чем так затянуло программирование?

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

Современное программирование зачастую не приносит пользы: программистов стало слишком много, и каждый хочет придумать что-то своё. Одно дело — времена монополистов и проприетарных владельцев, когда правила диктовали только большие фирмы или связанные с ними команды, а open source внёс некий хаос. Достойный проект может начаться на одном языке, а с изменениями в команде его реализаторов код тоже меняется, и это всё тащит за собой такие баги, что потом уже и не вспомнить, где возникла ошибка. Впрочем, это моё личное мнение.

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

Как помогаете влиться в работу новичкам?

Среди тех, кто приходит к нам на должность программиста, мы проводим конкурсный отбор. А после начинаем обучать. Но учит, как правило, сама жизнь, и учатся те, кто хочет учиться. Своим подчинённым я ставлю задачи. Если что-то непонятно, нужно изучить материал, разобраться в нём, попробовать протестировать и написать. Это обычная программистская рутина, но кто не справляется с ней, тот не остаётся в профессии. Если у человека есть желание двигаться, он найдёт силы и возможности. Бывают разные исполнители. Есть те, которые делают всё, о чём их просят, но сам предмет деятельности их не особо интересует. Или, человеку интересен предмет, но у него недостаток воображения и он не может сам поставить себе задачу. Поэтому любой коллектив мы стараемся организовать по принципу баланса: чтобы были хорошие исполнители и те, у кого развито воображение. Иногда это может сочетаться и в одном человеке.

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

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

Что делать, когда пропадает вдохновение?

Придумать что-то новое. Как правило, новое нужно изучить. Например, новую технологию. Нужно уделять обучению или самообучению хотя бы час рабочего времени в день — это всегда возможно. Часто это происходит непроизвольно: появляется задача, которую ты просто не понимаешь. А иногда изучаешь что-то на будущее, потому что можешь столкнуться с этим через некоторое время: лучше разобраться, как это работает заранее, чтобы после сэкономить время.

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

Я сталкивался с людьми, которые долго и уверенно сидели на одной теме. Они — крутые специалисты, но уставали делать одно и то же: например, бесконечное формирование справочников, как за конвейером. Знакомый аналитик формировал лет восемь. Он чудесно знал все ISO и ГОСТы, но я бы сошёл с ума. А программирование классное само по себе. Даже однотипные задачи каждый раз решаются по-разному, поэтому я и говорю, что нужно думать головой. Суть в том, что кроме алгоритма есть ещё и реализация. А реализаций может быть пусть и не бесконечное, но n-ное число.

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

Как успевать при индивидуальном подходе к каждой задаче?

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

Плохая черта — сразу же приступать к полученной задаче, не обдумав. Человек считает, что знает, как нужно делать, у него старые паттерны. А в результате получается, что он просто потратил время, и после начинает переделывать. Хорошо, если будет желание начать заново, потому что переделки гораздо хуже, они — источник багов.

Есть ещё один секрет: я не программирую дома с 2010 года, у меня даже компьютера нет. Потому что взял для себя правило: заниматься работой в личное время — неправильно. Если человек работает в личное время, значит, он не успевает на работе. А если он не справляется на работе, значит, он либо не может правильно распланировать своё рабочее время, либо ошибся в оценке сложности задачи. В АСКОН никто не заставляет сотрудников выбиваться из сил, у нас очень лояльная в этом отношении компания. Но самое сложное — подобрать человека так, чтобы в рабочем режиме он выполнял свои обязанности почти на 100% с учётом форс-мажоров.

На что сейчас направляете основные ресурсы?

Сейчас наша самая большая задача — это переход на Linux. Задача актуальная и для нас, и для предприятий. Каждый день приходится разбираться в новой информации. Для конечного пользователя переход не должен быть болезненным, поэтому мы пишем программы с учётом этой реальности. Сейчас мы не столько генерируем идеи, сколько собираем компетенции, консультируем людей и обучаем их. Беда в том, что многие не понимают, как работать на Linux, что тут другая идеология. Зачастую старая идеология застревает в голове, и попытки сделать так, как раньше, не прокатывают. Нужны новые подходы, новые реалии, следование новым, ранее неизвестным правилам.

Благодаря чему получается расширять горизонты профессии?

Многие думают: сменю работу, стану программистом, войду в IT. Посмотрю курсы на YouTube, быстренько выучусь. На самом деле, чтобы стать настоящим программистом, нужно лет десять. Хотя, как исключения, бывают люди, которые рождаются программистами. Но талант, это половина успеха: нужен опыт, желание и настойчивость. Очень повезёт, если рядом окажутся старшие товарищи, которые смогут помочь: работа в коллективе даёт хорошие результаты.

Когда я пришёл работать на завод, доставал коллег вопросами и часто выводил их этим из себя. Почему? Тогда было тяжело получить информацию: требовалось оперативно, а мы располагали только огромными толстенными распечатками в книгах. Позже я понял, что в этом заключается одно из качеств руководителя: знаниями необходимо правильно делиться. Делать это спокойно и выдержанно, но при этом заставлять думать, наводить на правильный путь решения задачи, вместо того, чтобы демонстрировать готовый пример. Нужно помнить о том, что воспитание нового поколения программистов АСКОН лежит на тех людях, которые обладают знаниями и умениями и готовы вкладываться в последователей.

С какими языками вы работаете?

В основном мы с коллегами пишем на C#. Но всё зависит от поставленной задачи, поэтому с появлением новых задач будет видно, что нужно изучать.

Когда в компанию приходит новичок, важен набор знаний, которыми он владеет. Если есть задача работать с базами данным, а человек умеет писать на C#, это классно. Нормальный программист будет писать на чём угодно, привычка и знание синтаксиса важны, чтобы не тратить время на то, где поставить скобочку.

Вообще, могу дать совет программистам: если можно сделать просто, делайте просто, не нужно искусственного усложнения. Часто замечаю позицию: «делать просто — не по фэн-шую». Человек реализует сто интерфейсов, тысячу абстракций для того, чтобы сложить две цифры. Ещё важно писать понятный код, чтобы он был читаемым и чтобы в нём мог разобраться любой.

Вы трудитесь в АСКОН более 20 лет. Не возникало ли желание попробовать себя на новом месте?

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