Современную жизнь нельзя представить без цифровых технологий. Они сопровождают каждый наш день, облегчая и упрощая многие процессы. 12 сентября отмечают свой профессиональный праздник те, кто разрабатывает, обновляет и поддерживает все эти технологии, – программисты. Леонид Соколинский, заведующий кафедрой системного программирования ЮУрГУ, доктор физико-математических наук, профессор, подробнее рассказал об этой профессии, ее особенностях и ситуации в индустрии.
– Леонид Борисович, как вы считаете, кого можно назвать хорошим программистом? Какими качествами он должен обладать?
– Из личностных качеств я бы выделил упорство, настойчивость, умение добиваться поставленных задач именно в том отношении, что современное программирование – это очень сложная профессия, потому что нельзя написать большую программу без ошибок, это просто невозможно. Часть этих ошибок исправляют, часть остается и может жить десятилетиями и всплыть при каких-либо обстоятельствах эксплуатации программы. Поэтому одно из основных качеств программиста – уметь эти ошибки локализовать, находить и исправлять.
Конечно, нужно стараться программировать так, чтобы этих ошибок делать как можно меньше, это уже так называемые технологии программирования – целая наука, которой учат в университетах.
Еще одно качество – владение современными языками программирования. Есть языки, которые были разработаны десятилетия назад, например, язык C и C++, которые стабильно всегда входят в первую десятку по популярности.
Следующее основное качество: я бы назвал хорошее понимание теоретических основ, это теория алгоритмов, теория структур данных и, безусловно, высококлассный программист должен иметь хорошую математическую подготовку.
– Несколько лет назад профессия программиста не была настолько популярной, а сейчас по итогам даже приемной кампании можно сказать, что актуальность данного направления только возрастает. Как вы считаете, с чем это связано?
– Это связано с тем, что мы вошли в эпоху широкого распространения информационных технологий, и среди них на первый план выходят технологии искусственного интеллекта. То государство, которое владеет ими и умеет эффективно применять во всех сферах человеческой жизнедеятельности, — оно будет лидером. А кто эти технологии в жизнь будет воплощать? Люди по профессии программисты. Поэтому спрос на программистов последние, я бы сказал, лет 15 растет большими темпами.
Несмотря на то, что количество мест в вузах на данные специальности очень большое и увеличивается год от года, все равно потребность растет быстрее, и, соответственно, дефицит кадров в области информационных технологий движется быстрее, чем вузы удовлетворяют этот спрос.
При этом обращаю внимание, что современные технологии — это не просто, что человек прошел какие-то курсы или самостоятельно по книжке за неделю изучил какой-то язык программирования. Нет. Требуются люди с высшим образованием, которые имеют фундаментальную подготовку в области информационных технологий и математических дисциплин. Именно такие люди сегодня нужны предприятиям, и наш университет готовит специалистов такого класса, которые работают в больших лидирующих компаниях не только в России, но и за рубежом.
– Раз уж речь зашла про нейросети. Сейчас говорят, что они заменят многие профессии. Как вы считаете, коснется ли это программистов?
– Действительно, искусственные нейронные сети начинают заменять людей в различных профессиях. Что касается программистов, последний год этот вопрос активно обсуждается, и связано это с тем, что появился класс нейронных сетей, так называемые трансформеры, которые на основе огромных массивов данных уже разработанных программ просматривают, и когда неопытный программист или тот, кто хочет ускорить свою работу, может обратиться к одной из таких программ, он пишет комментарий на естественном языке, и вот эта нейронная сеть очень быстро находит похожие программы с таким же комментарием и просто копирует код.
Это серьезное подспорье, и часть программистов действительно исчезнет, а именно так называемые невысокой квалификации, которые занимаются созданием шаблонных программ, например, сайтов или приложений баз данных. Таких программистов нейронные сети со временем могут заменить для разработки типовых программ. Постановщик задач будет писать, что нужно, и отдавать нейросети, которая быстро сделает код, сама его протестирует, исправит ошибки и сдаст заказчику.
Что касается творческих задач, а это в первую очередь связанные с разработкой систем искусственного интеллекта, там нет готовых шаблонов, и, я думаю, спрос на них будет расти, но без высококлассного программиста там не обойтись. Эта проблема может быть решена, если будет создан сильный искусственный интеллект, но до этого еще очень далеко.
– С чего начинают изучать программирование первокурсники?
– Я должен сказать, что к нам приходят достаточно подготовленные ребята, которые имеют определенное базовое образование, потому что в школах сейчас очень неплохой уровень информатики, и они имеют уже определенный багаж, а именно многие из них уже умеют программировать на каком-то языке. Тем не менее у нас все-таки дается язык программирования, мы не уделяем очень много часов этому, поскольку студенты либо уже его знают, либо изучали другой. Мы даем язык Python, который твердо входит в десятку самых распространенных, и его используют в большинстве мировых университетов. Помимо этого, обучаем курсу по другим языкам программирования и также даем важный курс по алгоритмам и структурам данных. Это достаточно сложная программа, где изучаются теория современных алгоритмов и теория сложных структур данных, которые используются в современном программировании.
– Какие советы вы можете дать будущим специалистам?
– Я бы посоветовал активно заниматься самообразованием, в первую очередь по работе с новыми программными продуктами, библиотеками и т. д. Это очень важный навык, и университет не может научить всем программным продуктам, потому что эта индустрия сейчас развивается бешенными темпами, все очень быстро развивается, и пока профессор разрабатывает курс лекций по определённой библиотеке, делает задания, она уже устареет. Соответственно, мы особый акцент делаем именно на фундаментальные основы, на то, что должен программист понимать в глубине информационных систем, чтобы грамотно их строить и они эффективно работали. Это не значит, что мы не работаем с современными пакетами – на практике мы это делаем, но также стимулируем студентов к тому, чтобы они по большей части сами их осваивали и изучали. Я бы пожелал учиться и не бояться осваивать новые программные продукты, воспитывайте в себе ключевой навык – способность к обучению и освоению новых эффективных программных продуктов.