С Днём программиста!

Когда программисты говорят на тему своей работы, непосвящённым кажется, что они общаются на «птичьем» языке. Краткий перевод на примере своей специализации сегодня делает начальник группы разработки WEB-приложений Евгений Косс.


ЗНАКОМЬТЕСЬ

Евгений Косс

Начальник группы разработки WEB-приложений отдела прикладных систем «Парка информационных технологий – Сатка»

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

В 2012 году после службы в армии был принят инженером-программистом в центр автоматизированных систем и информационных технологий (ЦАСиИТ) «Магнезита». В 2015 году заочно окончил институт информационных технологий ЧелГУ по специальности «Фундаментальная информатика и информационные технологии». Тогда же стал ведущим инженером-программистом. В настоящей должности – с 2019 года.

Увлекался лёгкой атлетикой, успешно выступал на соревнованиях по спринту.


Шаг за шагом

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


– Алгоритмизация изучается на первых курсах колледжей. В блок-схемах студенты рисуют порядок действий. Все шаги надо уметь записывать кодом на языке программирования. Мы на «Магнезите» делаем это на C#. Вполне удобный язык. Его выбрали, и все пишут на нем, чтоб не было путаницы. Хотя подошёл бы и другой. Каждый язык хорош по-своему. Чем английский лучше русского, да ничем, – считает Евгений. – Сейчас мега популярен Рhyton («Питон»), он довольно быстро команды выполняет. Но у нас нет в нём необходимости. А в WEB-портале, на котором специализируется наша группа, используется мультипарадигменный язык программирования JavaScript («ДжаваСкрипт»).


Есть система, есть портал

Все магнезитовцы знают, а многие активно пользуются автоматизированной системой управления производством «Магнезиус». А ещё есть WEB-портал с тем же названием. Система – это версия для компьютеров, подключённых к корпоративной сети «Магнезита», а на WEB-портал, введя логин и пароль, можно зайти с телефона и любого мобильного устройства, находясь в любой точке мира. Разумеется, портал доступен не каждому, а только человеку, обладающему конкретной компетенцией, да и то – по служебному запросу на имя руководителя отдела прикладных систем Юлии Выломовой. На WEB-портале содержатся сотни различных модулей (а в «Магнезиусе» их более 1000), соответствующих какой-либо узкой специализации на производстве. Программы для этих модулей пишут инженеры-программисты группы, которой руководит Евгений Косс.


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


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

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


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

Даже мой отец не знал, что я разрабатывал программу учёта рабочего времени. Он устроился водителем в «Магсити». И рассказывает мне: раньше мы работу сделали и пораньше ушли, а теперь какую-то программу поставили, и надо в конце рабочего дня пропуском «пикнуть». Я ответил, что эту программу делал я, причём, уже давно, но руководство его предприятия решило её применить только сейчас. Если есть потребность, исполнитель всегда найдётся.


Сервис – отлично!

А ещё группа, которой руководит Евгений Косс, пишет автоматизированные сервисы – программы-посредники для других программ, которые служат для «отсеивания лишнего» и передачи данных. Как пример – рассылка сообщений.


Основная программа генерирует текст сообщения, а сервис перехватывает и рассылает их адресатам. Такая рассылка используется, например, в группе управления персоналом (УП), где заведены очные совещания, и требуются оповещения.


– Есть сервис для системы «PERCO». Она большое количество подключений не очень хорошо переживает, – добавляет собеседник. – Поэтому я создал свою программу, которая копирует все необходимые данные к нам – в базу данных «Магнезиуса». Мои пользователи уже из нашей базы данные берут. Делали похожий сервис для прессов Laeis в ЦМИ-2. Этот сервис «вытаскивает» только поля, необходимые в пользовании, а остальные данные не показывает. Показания каких-то датчиков в отчётах нужны, а какие-то не требуются. 10-15 полей нужны, а остальное неинтересно. Конечные данные, которые загружаются пользователю из базы, получаются гораздо меньше изначальных, поэтому и работает все быстрее.


Погружение в тему

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


– Берём часть данных из одной базы, часть из другой и переносим их в систему «Магнезиус». Чтобы вывести данные в программу, надо знать всевозможные профессиональные нюансы. К примеру, запрашивали у управления персонала формулы, как считать часы, как учитывать время, если человек на работу не явился. Или заказчик просит: сделайте отчёт. Начинаешь копать, что нужно человеку, и всё гораздо сложнее, чем предполагалось. На словах всегда две-три цифры посчитать, а с учётом нюансов, задача усложняется.


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


Чтоб удобно было всем

– Чтоб писать программы, достаточно обычной среднебюджетной техники, – рассказывает Евгений. – Если написать супер-тяжёлую программу, кто ей сможет пользоваться? Мы даже занижаем мощности, параллельно загружая что-то тяжёлое, или разрешение экрана меняем, чтобы понять, как это будет выглядеть у других. Надо ведь, чтоб таблицы на мониторе поместились, чтоб колонка не была в сантиметр шириной. Бывает, к человеку заходишь, а у него ничего не помещается на мониторе. Начинаешь программу дорабатывать, чтоб пользователь не страдал. В последнее время «Магнезит» обновил много компьютеров. Ещё лет 5-6 назад встречалась оргтехника старого образца, а сейчас это редкое исключение. С месяц назад звонит девушка, которая работает в сопровождаемой мной сметной программе, и жалуется, что программа не работает. Подключился к ней, а у нее жесткий диск на 40 Гигабайт, и все занято, соответственно программе просто некуда распаковывать свои файлы. Что такое 40 Гигабайт? Даже в телефоне сейчас больше! Говорю: пожалуйтесь начальству. И вскоре её программу перенесли на новый компьютер. Этот случай – редкое исключение. В целом вся техника на «Магнезите» новая, современная.


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


Код, да не тот

– Прикинули требуемые элементы на форме для данной задачи – куда кнопки, куда поля поставить. Интерфейс готов, затем сам код пишем, чтоб всё работало без ошибок, – переводит Евгений с «птичьего» на разговорный. – Но есть 10 человек, и все по-разному мыслят. Один дату выберет неверную, другой поле перепутает. Порядок действий простейший, но пользователи непредсказуемы. Всего сразу невозможно учесть. Есть такое понятие, как «человеческий фактор». Часто бывают ошибки на АРМ с ручным вводом данных. Ты и предположить не мог, что рабочий при заполнении поля «Дата» поставит 1700 год. В связи с этим рождается ограничение по датам, чтоб можно было только сегодняшнее число поставить или недельной давности. Так и в других случаях: сидишь, просчитываешь варианты, как эти 10 человек могут действовать. Здесь сообщение об ошибке вывести, здесь предупредить о неверном шаге. Но всегда найдётся человек, который введёт систему в заблуждение. Чем сложнее программный продукт, тем труднее его поддерживать в рабочем состоянии, тем больше будет исправлений. На каждое – своё решение.


Бывает, решение есть, а как объяснить его компьютеру, ещё не придумал. Если с вечера продумаешь задачу, загружаешь данные в голову, с утра на работе сразу пишешь код. А если этого не сделаешь, с утра собираешься с мыслями часа полтора, а то и больше. Если много времени пройдёт впустую, приезжаешь домой и начинаешь писать. У нас, программистов, ненормированный рабочий день. Никогда не знаешь, когда придёт решение. Но сроки на выполнение проекта у нас всегда ограничены. Поэтому решение иногда приходится просто вымучивать. Даже про свой профессиональный праздник мы не вспоминаем, он проходит в работе. Разве что Гугл напомнит.


Полное взаимодействие

Евгений Косс не относится к категории программистов «не от мира сего», погружённых исключительно в виртуальный труд. Он может и руками поработать. Вырос он в посёлке Рудничном Саткинского района, так что ему знаком и огород, который надо копать, полоть и поливать, и домашний скот, за которым надо ухаживать. Были в хозяйства коровы, козы, гуси, кролики.


– Оттуда повелось, что всё надо делать своими руками. Это выгоднее, чем нанять кого-то, – считает Евгений. – Во-первых, дешевле обходится, а во-вторых, никто не сделает работу так, как ты задумал. Сейчас вместе с Марией мы делаем ремонт в нашей квартире. Она, как дизайнер, планирует, как пространство выглядеть будет, а я по функционалу специализируюсь. Я бы не додумался, как цвета подобрать, а она это делает талантливо. Но могу возразить: дверную ручку нельзя так ставить, мы об неё будем стукаться. Так что у нас полное взаимодействие.


Стены отделывать научился – обоями и гипсокартонном. Электрику всю сам перетянул. Помогал мне дядя по маминой линии – начальник службы технологической диспетчеризации управления информационных технологий Сергей Геннадьевич Трегубенков. Приезжал, показывал, вместе делали. Так что навыки имеются. Другой родственник, тоже дядя, только уже по отцовской линии – Евгений Иванович Косс – специалист по «деревяшкам». Он нам половину мебели сделал. Мария проектировала, заказывали распил из листов по деталям, а дядька собирал. Шкаф-купе собрали, родственники такой же заказали, и у них вышло в два раза дороже.


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


Благодарим за фото Василия Максимова

Программирование — это процесс создания компьютерных программ. По выражению одного из основателей языков программирования Никлауса Вирта, «Программы = алгоритмы + структуры данных». Этот процесс основывается на использовании языков программирования, на которых записываются исходные тексты программ. В узком смысле, под программированием (так называемым кодированием) понимают написание инструкций (программ) на конкретном языке программирования (часто по уже имеющемуся алгоритму – плану, методу решения поставленной задачи). Соответственно, люди, которые этим занимаются, называются программистами, на профессиональном языке – кодерами. А те, кто разрабатывает алгоритмы – алгоритмистами, специалистами предметной области математики. В более широком смысле под программированием понимают весь спектр деятельности, связанный с созданием и поддержанием в рабочем состоянии программ – программного обеспечения ЭВМ. Иначе это называется «программная инженерия». Программирование, в широком смысле, можно разбить на несколько стадий: анализ, проектирование – разработка комплекса алгоритмов, кодирование и компиляцию – написание исходного текста программы и преобразование его в исполнительный код с помощью компилятора. Затем следует тестирование и отладка, выявление и устранение ошибок в программах. Заключительный этап – испытания и сдача программ.