Сфера IT с каждым годом становится все более востребованной. Происходит стремительное развитие технологий, а искусственный интеллект укоренятся в повседневной жизни каждого. Не стоит забывать, что все эти творения — дело рук человека, а не волшебника. Роман Лось — программист с опытом работы более 10-ти лет. В свое время он один из первых предложил использовать в Приморье генератор штрих-кодов для отправки посылок.
Корреспондент ИА PrimaMedia встретилась с ним и выяснила, что ждет человечество с прогрессированием искусственного интеллекта, чем все-таки занимаются программисты, и какое будущее у IT-сферы во Владивостоке.
— Роман, как вы решили прийти в сферу IT? Что больше всего в ней привлекает?
— Первое мое знакомство с компьютером произошло в 11 лет, когда отец купил его. Тогда я начал самостоятельно исследовать его возможности, постепенно начал разбираться в устройстве и железе. В эпоху раннего интернета существовали "браузерные" игры, в которые можно было играть прямо в окне. Один из моих друзей показал мне инструмент, с помощью которого создавались такие игры. Я был в восторге и решил попробовать сам. Он научил меня основам: как создавать сцены, рисовать кадры и делать интересные анимации. Кроме того, появилась возможность добавлять интерактивность — например, нажимая на кнопку, можно было вызвать какое-то действие. Все это программировалось довольно просто, и я написал свою первую игру. Мне это очень понравилось.
— А что это было за игра?
— Мы начали разрабатывать игру про паркур, но она так и не обрела жизни — логика оказалась слишком сложной, а у меня не хватало навыков. Позже я познакомился с другим другом, который предложил создать игру про "Хедкраба" — монстра из вселенной Half-Life (18+). Он хотел, чтобы игрок мог управлять "Хэдкрабом" и прыгать на головы людей. Я был в замешательстве и ответил, что не готов к такому проекту, так как мои навыки были недостаточными. В итоге идея забылась.
В школе у меня с математикой все было хорошо: я посещал подготовительные курсы и участвовал в олимпиадах. И вот в 9 классе пришло время определяться с будущим. Я подумал, что неплохо было бы стать экономистом, ведь математика у меня получалась. Родители посоветовали не идти в эту сферу, так как экономистов и юристов сейчас слишком много. Тогда задумался о языках. Подошел к другу, и он сказал: "Выбирай то, что тебе нравится". Я предложил идею стать программистом, на что он ответил: "Да ты что, программисты — это же те, у кого волосы всегда грязные, они носят дурацкие свитеры и с ними не о чем поговорить".
— Те самые мифы.
— Да, те самые мифы. В то время, возможно, это так и было.
— Какой у вас опыт работы программистом?
— Около 13-ти лет. Все началось в небольшом магазинчике, где мне нужно было дорабатывать сайт, который уже был создан.
Тогда использовался готовый конструктор Joomla. С его помощью я мог вносить изменения и улучшения. Начинал с поддержки сайта, который продавал сувениры, и одновременно работал менеджером по продажам. В то время я учился в институте и решил применить знания. Помню, что стал одним из первых, кто предложил использовать генератор штрих-кодов для отправки посылок. Раньше, чтобы отправить их в другие регионы, нужно было приходить на почту и заполнять накладные вручную. Это занимало много времени, особенно когда нужно было отправить 15 посылок. Мы с коллегами придумали создать генератор штрих-кодов, чтобы упростить процесс. И вот мы принесли лист со сгенерированными штрих-кодами на почту, а сотрудники только развели руками и сказали, что не знают, как с этим работать.
Это было, примерно, в 2013 году. Я тогда задумался, что нужно доучиться, чтобы устроиться в хорошую компанию. В это время у меня появился одногруппник, который очень хотел стать программистом. На 4 курсе нашего специалитета он предложил: "Давай устроимся вместе в одну компанию. Ты просто будешь подсказывать мне, что делать, а получать деньги оба". Я ответил, что не готов к такой авантюре…
Тем не менее, мы пошли на собеседование: меня взяли, а его нет. В итоге я подписался на эту авантюру и начал работать в компании, разрабатывая CRM-систему. Интересный случай произошел с одним из программистов этой компании: он разрабатывал внутренний сайт, но весь код зашифровал. Когда он запросил зарплату в два-три раза выше своей текущей, то ему ответили отказом. Он сказал: "Ну хорошо, тогда я увольняюсь", и вскоре сайт перестал работать вообще.
— Хитрый какой. И как вы вышли из этой ситуации?
— Нас как раз наняли и сказали, что нужно разработать новый сайт. Я, будучи студентом 4 курса, написал систему с нуля. Собрал все возможные компоненты, и в итоге что-то получилось. Но, насколько мне известно, компания разорилась уже после моего увольнения и закрылась.
— С какими еще трудностями сталкивались?
— Основная трудность заключалась в преодолении внутреннего барьера. Для программистов это особенно сложно, поскольку у многих есть склонность думать: "Я еще не готов для этой работы. Наверняка меня отвергнут и скажут, что я недостаточно компетентен". В университете нас обучают решать базовые задачи, а на работе ставят перед необходимостью создать серьезный проект для бизнеса. В такой момент осознаешь, что это уже далеко от факультативных заданий, и ответственность оказывается гораздо выше. Этот страх порой сковывает. В моем случае все изменилось, когда я случайно подписался на одну авантюру, и мне пришлось работать над тем, на что я согласился.
— Как вы думаете, такой страх обоснованный или надуманный?
— Скорее надумано. Проработав в этой сфере, я понимаю, что стоит начинать с небольших задач, а не сразу стремиться к крупным корпорациям. Нужно просто выполнить несколько небольших проектов в программировании, чтобы понять, как это работает. В большинстве случаев задачи схожи, различаются лишь уровнем ответственности. Начинающему разработчику вряд ли предложат руководящую позицию, поэтому и ответственность меньше.
— Поделитесь своим первым опытом трудоустройства. Было ли это связано с той, специальностью, на которую учились?
— Да, мне тогда было 20 лет, я уже учился на математика-программиста. Часто собирались с ребятами, обсуждали увлечения, и на такой встрече я познакомился с директором магазина, который привозил качественные кубики Рубика из Китая. Он и предложил мне работу. Платили 80 рублей в час, я совмещал обязанности программиста и менеджера по продажам. Работал по 4–6 часов в день, иногда даже дольше, что было сложно совмещать с учебой. Проработал там 2 года и ушел, так как времени не хватало из-за поездок на остров Русский.
На второй работе мне поручили сложный проект, где я был единственным разработчиком. Я попросил поднять зарплату до 80 тысяч. На что мне ответили, что как-то многовато и предложили начать с 15 тысяч. Я согласился.
— Вот это компромисс.
— Да. Но будучи студентом, я там до 60 тысяч рублей дошел. Проблема, с которой сталкиваются многие новички, — отсутствие резюме и портфолио. У меня уже было полтора года опыта, хоть и не совсем серьезного. Когда я отправил резюме в два известных в Приморье сайта объявлений, то обе компании заинтересовались мной. В итоге они начали "борьбу" за меня, так как обе откликнулись на мою заявку. На собеседованиях задавали академические задачи, похожие на те, что мы проходили в университете.
— Прям как экзамен?
— Собеседование проходит в несколько этапов: сначала вы общаетесь с кадровиком, затем с техническим специалистом. Он может задавать вопросы по теории, которая больше связана с инженерной культурой — как правильно и неправильно писать код. Затем проверяют ваши технические навыки, например, просят написать калькулятор для дробей. Для программиста это базовая задача, которую можно решить за 10−15 минут. Интервьюер обращает внимание на ваш подход к решению: как учитываете граничные условия, обсуждаете возможные ошибки и насколько аккуратно пишете код.
— Для многих работа в IT сравнима с неким "волшебством". Чем все-таки занимается программист?
— Программист внимательно слушает заказчика, чтобы понять его потребности и решить бизнес-проблему. Эта проблема, обычно, связана с неэффективностью работы людей, и задача заключается во внедрении решений, которые ускорят процессы. Например, в библиотеке поиск нужной книги может занять много времени, особенно если нет удобного каталога. Для решения этой проблемы нужно оцифровать информацию о книгах, создать базу данных, которые были записаны вручную. После этого программист исследует, как пользователи решают свои задачи в реальной жизни, например, как они ищут книги: по алфавиту или по авторам. Эти термины и процессы фиксируются в формальной модели, которая описывает, как все работает. Затем разработанные решения переводятся на язык программирования.
— Сколько существует языков программирования?
— Их много, и каждый предназначен для решения определенных задач. Это инструмент, позволяющий давать компьютеру, то есть исполнителю, команды для выполнения алгоритмов, которые помогают решать различные проблемы. Вся суть программирования основана на концепции алгоритмов.
— Какой из языков самый распространенный?
— Такого ответа не существует. Выбор языка сильно зависит от конкретной области. Если ты планируешь заниматься разработкой игр, возможно, тебе придется работать с "C++", JavaScript или "C#". В редких случаях может использоваться язык Java.
Если же ты заинтересован в веб-разработке, выбор языка будет зависеть от специализации в этой области.
Машинное обучение также актуальная сфера IT, она связанна с обучением компьютеров распознавать изображения или текст. В рамках машинного обучения активно развиваются нейросети, которые играют ключевую роль в этой области.
— И вы владеете всеми языками?
— Я знаком со многими языками программирования, такими как PHP, Golang и JavaScript, но глубина знания варьируется. В основном я работаю с этими языками, но иногда приходится читать чужие программы и изучать другие языки, чтобы понять интересные решения.
— А сейчас появляются новые языки программирования?
— Они появляются постоянно, но, обычно, нацелены на решение конкретных задач. На данный момент нет смысла переходить на новый язык, если только он не поддерживается крупной корпорацией, как TypeScript от Microsoft или Golang от Google, которые стали популярными заменами "C++".
Важен не сам язык, а инструменты, которые его окружают. Например, Python — это старый язык, но вокруг него создано множество инструментов и документации, что делает его очень удобным для работы. Переход на новый может потребовать повторной разработки уже решенных задач, что нецелесообразно, когда есть готовые решения. Зачем писать код заново, если можно использовать уже существующее?
— Мы затронули тему нейросетей. Правда ли, что роботы вскоре смогут сочинить симфонию?
— Да уже сочиняют. Еще 10 лет назад это казалось чем-то невероятным. Я помню одну книгу, где математики собирались 60 лет назад, пытаясь найти способ создать машину, способную мыслить, как человек. Тогда у них не было достаточной вычислительной мощности для реализации своих идей. Сегодня же мы можем вернуться к этим идеям.
Тем не менее, говорить о полноценном искусственном интеллекте пока рано. На данный момент можно создать лишь примитивные модели, которые способны выполнять определенные задачи. Существуют уже программы, которые успешно проходят тест Алана Тьюринга — простой метод для определения, является ли программа искусственным интеллектом или нет. "Капча" — один из примеров этого теста. Ранее суть заключалась в том, чтобы общаться в чате и определить, с кем ты разговариваешь: с человеком или с компьютером. Сегодня различить это становится все сложнее.
— Заменят ли они когда-нибудь человека?
— Этого 100% не будет, поскольку нейросеть связана с определенным устройством, а в юриспруденции такие устройства, как правило, не фиксируются. Законы, которые у нас существуют, не предназначены для машин. Нет четких нормативов, касающихся условных роботов. Если вы создали какую-либо машину, и она причинила вред, то ответственность ляжет на вас. С этим возникает острая проблема внедрения новых технологий в нашу правовую систему так, чтобы это было возможно.
Что касается замены людей роботами, то стоит вспомнить, что когда появились автомобили, то лошади никуда не исчезли. Ранее не было машин, и существовали люди, которые занимались подковыванием лошадей. С появлением автомобилей возникли новые профессии — механики, которые разбирают и ремонтируют машины, а также их производители. С появлением нейронных сетей можно предположить, что программисты эволюционируют в нечто большее. Они будут заниматься поддержкой и доработкой, искать им новые применения и развивать эту область.
— Чем обернется прогрессирование нейросетей? Вспоминается мультфильм WALL-E (0+), где человечество стало совершенно несамостоятельным и во всем полагалось на искусственный интеллект. Ждет ли нас такая же "деградация"?
— Это естественный процесс. Возможно, мы станем менее сообразительными и потеряем навыки базовой математики, как это произошло с появлением Google. Раньше программисты обращались в библиотеки, а теперь ищут информацию в интернете. Многие из них не читают документацию, а просто ищут готовые решения в Google. С нейросетями этот процесс упростился: мы просто задаем вопрос и получаем ответ.
Полная замена людей маловероятна. Как шутил мой преподаватель: "В будущем наш интерфейс будет с 1 кнопкой", но мне кажется, это не так уж и близко. Есть примеры, как долговечные лампочки были запрещены, потому что бизнесу невыгодно производить вечные товары — их же не нужно обновлять. Если технологии вдруг полностью автоматизируют все процессы, то люди останутся без работы. Поэтому рискованно внедрять технологии, которые могут все заменить.
— Можете рассказать о самом интересном проекте, над которым вы работали?
— Сложный вопрос, но я попробую. Один из самых запоминающихся моментов — это работа в приемной комиссии ДВФУ на втором курсе. Я помогал абитуриентам заполнять бланки и фотографировать их. Один из коллег тратил часы на перепечатывание фамилий и переименование фотографий вручную. Я понял, что это не оптимально, и написал свою первую программу на Pascal с использованием Delphi. Она автоматически переименовывала фотографии, что экономило время. Коллега был в восторге от программы.
Если говорить о более крупных проектах, то недавно я разрабатывал обработчик изображений под конкретные устройства. Вместо генерации множества уменьшенных версий картинок, мы создавали их по запросу. Это значительно экономило место на диске, было интересно исследовать форматы изображений и подходящие библиотеки для обработки.
— Были ли неудачи?
— Их называют "баги". Бывает, что мы выпускаем продукт, и неожиданно всплывают непредвиденные проблемы. Это болезненно, особенно когда пользователи не могут загрузить изображение из-за опечатки. Ты проверяешь все, но оказывается, что один из компонентов работает не так, как задумано. Ошибка — это нормальная часть работы программиста. Не допускает ошибок тот программист, который не пишет код. В современных компаниях ошибки не осуждаются: лучше выпустить код, который работает неидеально, чем вовсе не выпустить его.
— Как вы считаете, какая часть вашего образования пригодилась больше: теоретическая или практическая?
— Сфера математики, особенно высшая, очень полезна. Она приучает работать с числами и буквами, что важно для понимания сложных задач. В детстве мы решаем простые примеры, как 7 плюс 5, а на математическом факультете сталкиваемся с выражениями 7 плюс "x" и решаем дифференциальные уравнения. Высшая математика может показаться сложной, но она помогает структурировать мышление и эффективно решать задачи. Например, если нужно отсортировать колоду карт, можно сделать это наугад, а можно применить математические подходы для более эффективного решения. То же самое с поиском нужной страницы в книге: вместо того, чтобы глупо перелистывать по одной странице, мы используем более рациональные методы. Допустим, нам нужна 75-я страница, ты же не будешь листать, а разобьешь промежуток пополам. Этот метод называется бинарным поиском, он основан на делении пополам. Его изучают в математике, и на его основе развиваются алгоритмы. Здесь ты учишься не только писать программы, но и применять подходы для более эффективного решения задач. После освоения алгоритмов можешь использовать их на любом языке программирования.
Что касается теории и практики, то лучше всего их совмещать. Теория помогает решать практические задачи более элегантно и эффективно. Часто специалисты с большим опытом не могут решать базовые задачи, потому что полагаются только на практику. Они могут успешно справляться с бизнес-задачами, но сталкиваются с трудностями в более сложных, требующих креативного подхода. Поэтому лучше начинать с практики и затем углубляться в теорию. Программирование также требует постоянного обновления знаний, так как технологии и методы развиваются.
— Как, на ваш взгляд, можно улучшить систему образования?
— Нужно больше "горящих" преподавателей, потому что в университетах таких очень мало. Многие хорошо знакомы с предметом, но не всегда понимают его в контексте реального мира IT.
Часто встречаются преподаватели, которые обучают по устаревшим материалам.
Нам вот рассказывали о том, как отправлять письма в интернете или работать с Word, что явно не соответствует актуальным требованиям.
Важно сосредоточиться на базовых знаниях информатики, которые помогут студентам понять, как устроены различные программы. Если ты освоил Photoshop, то это даст тебе представление о работе с другими инструментами, такими как Excel, поскольку многие программы имеют схожую структуру.
— Сейчас все чаще встречается реклама онлайн-курсов по IT. Могут ли они заменить высшее образование?
— Онлайн-курсы могут дать начальный толчок, но вряд ли сделают из тебя высококвалифицированного программиста. Они не заменят высшее образование, так как в университете ты изучаешь не только программирование, но и другие важные аспекты. Учеба длится 4 года, за это время ты осваиваешь моделирование предметных систем и изучаешь связи между терминами. Программирование требует не только навыков, но и понимания структуры и подходов, что невозможно достичь за короткий срок.
— Существует легенда, что работодатели ждут молодого специалиста с 20-летнем опытом работы, сталкивались ли вы с таким?
— Есть такая шутка о языке Go: после его выхода компании хотели разработчиков с 8-ми летним опытом работы с ним, хотя языку всего 3 года... Большинство фирм ищут опытных специалистов, но в любом городе можно найти компании, которые готовы обучать новичков. Без опыта устроиться можно. У меня есть знакомый, который 2 года ищет работу, посещает собеседования и нарабатывает портфолио, хотя у него нет профильного образования — он самоучка. Такие ситуации вполне реальны.
— Ощущается ли дефицит кадров в вашей сфере?
— Да, кадровый голод огромен. Разработчиков, программистов и специалистов в области IT катастрофически не хватает на рынке. У нас есть четкие критерии — junior, middle или senior уровень. Но даже если мы ищем разработчика среднего уровня (middle), то зачастую приходится просмотреть 50 резюме, чтобы найти хотя бы одного человека, который будет хоть немного подходить под требования.
— А что насчет заработной платы. В начале карьеры, обычно, она небольшая. Как это было у вас, и хватает ли ее на данный момент?
— В начале своего пути я начинал с 50 тысяч рублей. Сейчас все хорошо, дохода достаточно. Можно позволить себе даже автомобиль, хотя, конечно, не в первый год работы. В целом, зарплата хорошая. Ситуация, когда не хватает денег, была только в университете, когда приходилось жить от зарплаты до зарплаты.
— Какие тенденции в программировании вы наблюдаете сейчас, и как они могут повлиять на работу?
— Это, конечно, нейросети. Они сильно упрощают жизнь. Если ты не разбираешься в какой-то области, то можно быстро погрузиться в нее, задавая правильные вопросы и обращаясь к нейронкам за объяснениями. Но важно иметь базовые знания, о которых я говорил ранее, чтобы понимать, какие вопросы стоит задавать. Иначе есть риск получить не совсем корректные или даже абсурдные ответы.
— Можете дать "инструкцию для чайников" о том, как правильно сформулировать запрос для нейросети?
— Для начала важно правильно мотивировать нейронку. Можно сказать, что если она успешно решит задачу, то получит, условно говоря, 10 золотых монет. Конечно, это своего рода обман, но нейросети на это и рассчитаны. Альтернативный подход — задать контекст. Например, можно сказать: "Ты высококлассный специалист, как бы ты подошел к решению этой проблемы?" При этом не стоит просто требовать от нейронки готовое решение, лучше попытаться понять, почему она предлагает именно такие варианты. В этом плане нейронку можно воспринимать как диалог с маленьким ребенком, который великолепно разбирается в программировании, но нуждается в объяснениях и поддержке.
— Нужно ли благодарить нейросеть за выполненную работу?
— Для контекста нейросети полезно использовать слова благодарности, хотя некоторые из них могут быть менее уместными. Процесс взаимодействия с ней напоминает обучение собаки командам. Если мы не выражаем благодарность, собака может не понять, что именно мы от нее хотим. Но если мы скажем "спасибо", она зафиксирует это как положительный момент и будет стремиться повторить его. Похвала помогает нам направлять ее действия.
Нейросети не мыслят так, как мы. Они просто генерируют текст на основе имеющегося контекста, подбирая наиболее подходящие слова. Например, если мы начнем фразу "Столица России — это...", то в голове у нас сразу возникает ответ. Нейросеть работает, примерно, так же: ей дают начало, и она выбирает слово, которое лучше всего подходит к этому контексту. Это, конечно, очень упрощенное объяснение, но суть остается той же.
— А часто ли пользуетесь ими?
— Почти каждый день возникает необходимость быстро решить какие-то задачи. Условно говоря, есть базовые задания, которые мне было бы интересно выполнить самостоятельно, но на это у меня уходит около 4-х часов. Зачем тратить столько времени? Дело в том, что у программиста мотивация часто заключается в том, чтобы преодолеть сложные задачи. Когда сталкиваешься с чем-то непростым и не знаешь, как решить — это стимулирует. А простые задачи, на которые тратится время, не приносят никакого эмоционального удовлетворения. Проще сказать: "Напиши мне быстро функцию, которая делает то-то и то-то". Конечно, я мог бы написать ее сам, но это заняло бы час-два, а так — пять минут. Правда, потом все равно придется дорабатывать код, потому что он, скорее всего, окажется неидеальным.
— Как вы считаете, чем Владивосток отличается от других городов России с точки зрения IT-сферы?
— Во Владивостоке меньше IT-специалистов, но не забываем, что это лучший город на Земле!
Здесь есть компании с возможностями для роста, и зарплаты вполне приемлемые. В университете учатся талантливые ребята: некоторые остаются здесь, а кто-то уезжает в Москву или за границу. Для старта Владивосток отлично подходит, но если нужно двигаться дальше, вероятно, придется переехать в Москву — там больше возможностей.
— Что, по вашему мнению, необходимо для развития IT-отрасли во Владивостоке?
— Во Владивостоке не хватает мероприятий в сфере IT. Да, иногда проходят форумы в ДВФУ, но таких встреч недостаточно. В отличие от Санкт-Петербурга, где почти ежедневно проходят различные события, здесь мероприятия организуются редко, и попасть на них бывает сложно. Большая активность могла бы привлечь специалистов и повысить интерес к сфере.
— Какой совет можете дать молодым людям, которые хотят стать "айтишниками"?
— Посмотрите несколько видеороликов о профессиях в IT и пройдите курс, чтобы понять, чем они занимаются. Сфера огромная: мобильная разработка, машинное обучение, робототехника, низкоуровневое программирование, веб-разработка, системное администрирование и многое другое. Сначала изучите общую структуру, затем выберите направление и пройдите курс. Попробуйте взять простую задачу на фрилансе и решить ее. Не бойтесь неуверенности — главное пробовать. Как говорится: работайте усерднее, делайте лучше.


