Вторым программистом в моей жизни была Анжелика. В свои 13 лет я с восторгом смотрела на новую сотрудницу в бабушкиной бухгалтерии: она сидела за бело-кремовым монитором, звонко щёлкала механическими клавишами и работала с каким-то странным текстом. Девушка была программистом 1С, обслуживала и поддерживала строительную компанию, обучала возрастных бухгалтеров, некоторые из которых предпочитали калькулятору счёты. Перфокарт уже не было, мне достались красивая жёлтая дискета, дискета с «Гарантом» (которая дожила аж до моего личного ПК в мои 20 лет!) и блокнот. Интереса к программированию не досталось, паче что в школе были совершенно жуткие уроки ОИВТ на бумажке в клеточку, а позже и вуз с программированием связан не был.
Но судьба решает за нас, и с 2008 года моя жизнь тесно связана с разработкой, тестированием, программированием, проектированием и внедрением ПО. И всё это не на минималках. Я часто думала о том, что между той женщиной-программистом с перфокартами и моими коллегами, вооружёнными DevOps, Kubernetes, микросервисами и максимально мощным железом пропасть — даже больше той, чем пропасть между ней и Адой Лавлейс, хотя временной промежуток значительно меньше. И пропасть во всём: начиная от уровня дохода, заканчивая возможностями и качеством проектов. А потом пришло понимание: это не пропасть, это самая настоящая эволюция.
▍ Эволюция отношений
Долгое время программисты были «операторами ЭВМ» в том смысле, что в паре человек-машина главным был умный железный компьютер, а человек его обслуживал. Притом, что компьютер сам ничего не придумывал, все алгоритмы создавались человеком. Но такова природа любой инновации: новой, сложной, необычной технике всегда больше внимания, чем живому человеческому интеллекту. Компьютеры, в то время огромные машины иногда величиной с целый зал, были залогом ускорения и маркером прогресса: они быстро считали, обрабатывали сложные алгоритмы, работали на науку и промышленность. И почему-то часто забывалось, что за ними стояли люди, которые писали сложный и объёмный код, обеспечивали корректность работы машины и отвечали за результат.
С уменьшением размера техники и распространением персональных компьютеров человек приручил машину и стал её хозяином. Теперь они совместно решали задачи, писали крутые и не очень программы на Assembler, C, Basic, Pascal, чуть позже — на Python (да-да, он появился в 1991 году). В «кровавом энтерпрайзе» господствовали Haskell, Delphi, упорно не сдавал позиции COBOL. Вообще все 80-е и все 90-е стали решающим периодом, определившим существование программистов в том виде, в каком мы их знаем сейчас. Что тогда произошло?
- Удешевление компьютерной техники, рост доступности ПК привели к популяризации информационных технологий в малом и среднем бизнесе — появился спрос на программное обеспечение для простой и массовой автоматизации. С другой стороны, ПК вошли в дома и привлекли молодых людей: кто-то играл в простые игры, а кто-то их создавал, кто-то экспериментировал с разными типами программ и писал свой блокнот, свой калькулятор, свой примитивный текстовый редактор, свою модель решения физической задачи. То, что нам сейчас кажется простой учебной задачкой, лежало в основе формирования поколений разработчиков (и это без пафоса).
- Активно развивались языки программирования, стали появляться новые синтаксисы, приемлемые (а по тем временам — божественные) средства разработки, в «малую» разработку ворвались большие корпорации.
- Корпорации стали активно поддерживать программистов, предлагая работу, средства разработки, гранты, учебные материалы (а позже учебные центры и крутые звания вроде MVP). Появились форумы, конференции, вендорские комьюнити.
- Опенсорс, существовавший и ранее, в 1995-1997-е стал обретать формальные черты, превращаться в мощнейшее профессиональное сообщество в мире. Обучаться и работать стало легче, можно было изучать код, входить в проекты, предлагать что-то своё.
- К программистам повернулось лицом высшее образование: вузы по всему миру стали вкладываться в компьютерные специальности, создавать школы и факультеты. Теперь программирование не только входит в учебный план каждого направления, но и становится самостоятельной учебной программой.
К началу 2000-х «гонка» программистов на рынке начинает набирать обороты: разработчики создают большие и маленькие компании, появляется аутсорс, самые продвинутые корпорации осмеливаются набирать удалённых специалистов по всеми миру и открывают филиалы и представительства. Больше не нужно мечтать о Кремниевой (тогда ещё Силиконовой) долине — она сама приходит к специалистам. Программисты появляются в штате вроде бы совсем не айтишных компаний: они занимаются проектированием базы знаний, внедряют и развивают CRM/ERP, работают с биллингом, создают отделы АСУ для интенсивного развития бизнеса на безопасных данных и аналитике.
Мир покоряется вебу, а следом и мобильным гаджетам. Универсальные фулстеки теперь делятся на бэкендеров, фронтендеров и фулстеков, «десктопщики» переучиваются или уходят в глубокий энтерпрайз и финтех. Кстати, о финтехе. К концу 2010-х всё становится ИТ-компанией: банки, страховщики, брокеры, крупные дистрибьюторы, маркетплейсы, редакции, рекламщики. Всё, окончательно life is digital. Рынок невероятно разогревается, создавая рабочие места, высокие заработные платы, миллионы новых проектов и приложений, стартапы, школы программирования и проч. Индустрия не припомнит такого масштаба со времён кризиса доткомов. Да что там: доткомовские времена и события уже кажутся детским приключением по сравнению с тем, что мы имеем ко дню программиста в 2023 году. ИТ-сфера намешала в себе нейронные сети, машинное обучение, искусственный интеллект, лингвистику, инженерию, системное администрирование и многое другое.
▍ Каким стал программист сегодня?
Точнее, каким он должен быть, чтобы оставаться востребованным и конкурентоспособным.
- Это человек Т-формации знаний: узкий специалист, отлично разбирающийся в определённом стеке, и одновременно охватный универсал, который прекрасно знает не только код, но и всё рабочее окружение от проектирования до тестирования и даже продаж.
- Программист должен (просто обязан) постоянно учиться, осваивать новый стек, быть в курсе новых библиотек, изменений в языке программирования, а также в администрировании, управлении разработкой и даже в законодательстве. Такой срез знаний позволяет экономить время, быть эффективнее и контролировать все стороны процесса разработки. Да, это нужно даже если вы «всего лишь» бэкендер или фронтендер со своей зоной ответственности
- Программист должен быть коммуникабельным. Прошли времена упорного хождения легенд об интроверсии. Если программист хочет сделать карьеру и достичь высокого грейда, ему стоит развивать навыки самопрезентации и софт скилы (даже если это словосочетание вам категорически не нравится).
- Программист должен действовать в системе человек-машина-человек, уметь собирать требования и понимать логику бизнес-процессов.
- Программист должен уметь проектировать и работать с интерфейсами. Совсем не обязательно кропотливо работать над UX/UI (оставьте это дизайнерам, они справятся), важно понимать, что лучше и удобнее для пользователя, как он нажимает кнопки и где спотыкается. Прошли времена, когда софт не выбирали — огромная конкуренция практически в любой узкой сфере выводит вперёд и дизайн продукта, и простоту его освоения.
- Программист не должен зацикливаться на всяких там «должен» из статей на Хабре :-) Хороший разработчик всегда наблюдатель, экспериментатор и исследователь. Он готов выйти за рамки общепринятого и пробовать новое, находить лучшие «ленивые» решения, оптимизировать работу. Если бы каждый делал, что должен и не прорывался хотя бы на треть шага вперёд, наши дети до сих пор писали бы шпаргалки на новых перфокартах.
▍ Продолжится ли эволюция?
В последнее время появилась интересная формула: «Программирование сейчас должно стать для всех таким же базовым навыком, как знание английского языка». Правда, красиво звучит? Да и суть, в общем-то, передана верно: программированию учат все и везде, учиться пытаются многие, некоторые пафосно ставят IDE, кто-то может по памяти написать «hello, world», кто-то работает посредственно со словарём с гуглом, а вот виртуозно владеет навыками совсем небольшая даже относительно всей отрасли прослойка. Так что да, программирование — это новый английский: всем интересно, до конца доходят немногие.
Но и эту ситуацию рынок (да-да, чисто рыночные приёмы) умудряется усугубить: сейчас не надо знать алгоритмы, структуры данных, синтаксис языков, работать с производительностью, разбираться в паттернах и принципах ООП. Добро пожаловать в nocode или, по-нашему, в зерокодинг! Увы, это не программирование и даже не визуальное программирование (этот аргумент предъявляют адепты старой новой технологии) — это ещё один способ дать лёгкий путь в ИТ. Примерно такой же лёгкий путь, как лечение близорукости в -6,5 диоптрий мантрами про унитазики на лице (это про очки). Зерокодинг может существовать только в руках человека, который понимает, что там, внутри и как оно там работает. Увы, в остальном это просто игрушка, которая, возможно, кого-то влюбит в логику процессов и сподвигнет погрузиться в настоящее программирование. Эдакий упрощённый Scratch для взрослых.
Ну что ж, у биологической эволюции тоже бывают тупиковые ветви (кстати, это тоже не научное биологическое понятие, а публицистический оборот).
А нормальная эволюция уже продолжается: времена (и нравы, между прочим) подкидывают нам задачи с двумя звёздочками в сфере безопасности, защиты данных, компьютерного зрения, искусственного интеллекта и т. д. На следующей эволюционной ступени программист будет одинаково хорошо владеть двумя-тремя смежными дисциплинами, системно подходить даже к самому незначительному вопросу, работать быстро и точно. Теперь он не сотрудничает с компьютером, он его обучает. Собственно, мы уже здесь.
С Днём программиста! Лучшее время — сейчас, лучшие программисты — вы. Преобразуйте современность, чтобы настало лучшее будущее.
Автор:
programmerguru