Недооценённая профессия.
День программиста отмечается в 256-й день года. Число 256 (28) выбрано потому, что это количество различных кодов, которые можно выразить с помощью восьмиразрядного байта, компьютерного символа. Кроме того, это максимальная целая степень числа 2, которая не превышает количества дней в году. Таким образом, в невисокосный год этот праздник выпадает на 13 сентября, а в високосный - на 12-ое.
Обычные люди знают о программистах не так много. И, к сожалению, стереотипы о том, что это угрюмые, необщительные люди, месяцами не вылезающие из-за компьютеров, всё ещё живы. Эту «теорию» опровергает начальник отдела системного и технического обеспечения ОАО «ШААЗ» Михаил Шохирев, с которым мы сегодня беседуем
- Михаил Васильевич, я вижу у вас на рабочем месте распечатку указа Дмитрия Медведева «О Дне программиста», который он подписал в 2009 году. Значит, к этому празднику относитесь серьёзно?
- Конечно, отмечаем всем коллективом. И очень благодарны бывшему президенту за официальное признание нашего праздника, который, впрочем, мы и раньше не обходили вниманием, как и день системного администратора.
- Обыватели часто называют программистами всех людей, чья работа тем или иным образом связана с компьютерами. А как на самом деле?
- Вообще, часто программистом считается тот, кто называет себя программистом. Этим я хочу сказать, что в нашей профессии довольно много случайных людей. Это было особенно заметно в «смутные времена», когда компьютеры только начали появляться, а специалистов не хватало. К тому же в 90-е годы ещё и образование начало стремительно разрушаться. Сегодня ситуация стабилизировалась, есть вузы, которые дают солидную профессиональную подготовку. Также сейчас есть возможности углублять свои знания, обучаясь дистанционно, в том числе в зарубежных учреждениях. Правда, возникла другая проблема. В советское время образование было более основательным, студентам давали базовые знания, и они, основываясь на них, могли успешно решать возникающие при работе проблемы. А сейчас учат по-западному, выдавая минимальный уровень знаний, с расчётом, что через года три-четыре человек вернётся купить новую «порцию». Поэтому есть много «специалистов», которые даже не понимают, что они недостаточно образованны.
- Что нужно для того, чтобы быть достаточно образованным программистом?
Во-первых, окончить хороший вуз по специальности; во-вторых, получить опыт работы; в-третьих, постоянно учиться. Как и в любой другой профессии. Мне тоже всю жизнь приходится учиться и совершенствоваться. Этот процесс бесконечен и увлекателен.
- Дилетантский вопрос: чем отличается программист от системного администратора?
- Основная работа программистов — разработка новых программ с нуля. Эти люди трудятся в специализированных фирмах, проектируют, разрабатывают и тестируют программы. Их не так много, поскольку сегодня существует большое количество готового софта, который нужно только сопровождать. Сопровождением тоже занимаются программисты, которые настраивают и обновляют программы, иногда что-то дописывают под конкретные задачи, консультируют пользователей и т. д. А чистых разработчиков, как я уже сказал, относительно немного, и они востребованы во всём мире. Последнее время интенсивно развивается веб-программирование и разработка программ для мобильных устройств.
Есть ещё системные программисты, они разрабатывают сложные системы и системные программы, которыми все пользуются, но часто даже не задумываются об этом: операционные системы, электронная почта, веб-браузеры и серверы, драйверы для принтеров и других устройств и т. д. Без них компьютер был бы никому не нужной железякой. Системные программисты приходят на выручку, когда есть полезное оборудование, но к нему нет готовых программ, чтобы оно работало, как надо. В своё время на ШААЗе стояли большие компьютеры, так называемые мейнфреймы, а также привычные теперь персональные компьютеры. И когда возникла необходимость передачи данных между ними, то мы разработали взаимодействующие программы, которые позволили осуществлять эту передачу.
Что касается системных администраторов, то они, сопровождая системные программы, обеспечивают работоспособность всей компьютерной техники, сети и информационных систем на предприятии. Сисадмины тоже частенько программируют, чтобы автоматизировать свою деятельность. Например, у нас на заводе они написали программы подкачки важных данных из сети Интернет, учёта трафика пользователей, отслеживания параметров оборудования и сетевых сервисов.
- Какие у вас любимые языки программирования?
- В настоящее время я очень увлечён Ruby, до него были Java, Modula 2, Pascal... А вообще, один из языков программирования, который я полюбил, это Perl. Его создал Ларри Уолл, одновременно учившийся на лингвиста и программиста, что мне весьма близко, ведь я тоже по первому образованию лингвист. В Perl реализовано много возможностей, которые в затем повлияли на другие языки программирования. Он меня так увлёк, что я даже написал учебник по нему.
- Какова история его написания?
- Всё началось с того, что я начал изучать Perl для нужд системного программирования. А, как известно, лучший способ что-то усвоить — это рассказать кому-то об этом. В результате был написан учебник для Национального Открытого Университета «ИНТУИТ». Требования к материалу были очень жёсткие, сроки — короткие, но принять этот вызов судьбы мне было очень интересно. Книга вышла в 2007 году, люди по ней до сих пор учатся и оставляют хорошие отзывы. Пираты даже выложили учебник на торрент-сайтах, так что он, видимо, действительно нужен.
Однажды студенты-практиканты задали мне довольно наивный вопрос: «Какой язык программирования самый лучший?» На него можно ответить так: программист, который занимается разработкой профессионально, должен знать несколько принципиально разных языков программирования. Во-первых, один классический объектно-ориентированный язык — например, Java или C++ (признанные во всём мире языки, используемые для разработки больших систем). Во-вторых, один динамический язык — например, Ruby, Perl или Python для разработки скриптов. В-третьих, язык SQL для работы с базами данных. Кардинально отличающиеся друг от друга языки дают возможность взглянуть на нашу профессию под разными углами. Ведь Гёте сказал: «Сколько иностранных языков ты знаешь, столько раз ты человек». Применительно к нашей профессии это можно перефразировать так: «Сколько языков программирования ты знаешь, столько раз ты программист».
- Я слышал, что недавно вас пригласили сотрудничать с Техническим университетом УГМК.
- Да, это так. Преподаванием я занимаюсь постоянно — многие годы трудился в Шадринском пединституте, совмещая эту деятельность с основной работой на ШААЗе. Мне повезло, я вёл предметы, которые на тот момент были новы и интересны лично мне — объектно-ориентированное программирование, системы управления базами данных, веб-технологии, Linux, экспертные системы. На заводе веду компьютерные курсы для ветеранов, время от времени проводил здесь техническое обучение программистов. Последний курс был посвящён тестированию программного обеспечения; как раз его мне предложили переработать для Технического университета УГМК.
- Вас устраивает отношение обычных людей к программистам?
- Должен сказать, что наша профессия явно недооценена. Сегодня программы сопровождают нашу жизнь везде — они есть не только в компьютере, но и в телефоне, телевизоре, плеере, стиральной машине, навигаторе, телескопе, автомобиле... Во многом возможности современной техники определяют именно программы. Люди даже не задумываются, что пользуются ими, а ведь в создание программ специалисты вкладывают своё время, труд, знания, ум, любовь к профессии. Многие программисты — это увлечённые люди, которые очень часто работают не ради денег, а потому что им крайне интересно создавать новую цифровую реальность, что нельзя потрогать руками, но которая существует и приносит пользу. Однажды на заре развития компьютерных технологий один эксперт сказал о трудоёмкости создания программ: «Если так будет продолжаться, то скоро всё население Земли будет разрабатывать программы для компьютеров». К счастью, этого не произошло, и каждый может заниматься тем, что ему интересно и что он лучше умеет — сочинять музыку, лечить людей, строить дома или программировать.