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


Вторым программистом в моей жизни была Анжелика. В свои 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 для взрослых.

Ну что ж, у биологической эволюции тоже бывают тупиковые ветви (кстати, это тоже не научное биологическое понятие, а публицистический оборот). 

А нормальная эволюция уже продолжается: времена (и нравы, между прочим) подкидывают нам задачи с двумя звёздочками в сфере безопасности, защиты данных, компьютерного зрения, искусственного интеллекта и т. д. На следующей эволюционной ступени программист будет одинаково хорошо владеть двумя-тремя смежными дисциплинами, системно подходить даже к самому незначительному вопросу, работать быстро и точно. Теперь он не сотрудничает с компьютером, он его обучает. Собственно, мы уже здесь.

С Днём программиста! Лучшее время — сейчас, лучшие программисты — вы. Преобразуйте современность, чтобы настало лучшее будущее.

Telegram-канал с розыгрышами призов, новостями IT и постами о ретроиграх ????️

Комментарии (17)


  1. 18741878
    13.09.2023 09:10
    +14

    В «кровавом энтерпрайзе» господствовали Haskell, Delphi

    Ну, насчет Delphi - соглашусь. В 90-е и первое десятилетие 2000-х он (или она) были повсеместно. Но Haskell?!?!? Он появился как исследовательский академический проект в 1990 году (https://ru.wikipedia.org/wiki/Haskell). Язык мощнючий и очень интересный, но для "кровавого энтерпрайза" тех лет абсолютно не характерный. Я вроде немало чего повидал, но не могу вспомнить ни одного случая использования Haskell в таком качестве в те годы


    1. leshabirukov
      13.09.2023 09:10
      +2

      За автором уже выехали. Первое правило кровавого энтерпрайза рептилоидов никому не расскаАААа кхе кхе


    1. HemulGM
      13.09.2023 09:10

      Если что, то Delphi появился в 1995


      1. Merkulog
        13.09.2023 09:10
        +2

        Тхы, а с 1986 Object Pascal пахал по полной - по сути та же Дельфя.


        1. HemulGM
          13.09.2023 09:10
          -1

          Но только с 1995 появилась среда, которая и позволила штамповать софт с GUI)


    1. programmerguru Автор
      13.09.2023 09:10

      Это не ошибка :) На наукоёмких производствах он вовсю был.


  1. zuek
    13.09.2023 09:10
    +4

    Забавно было прочитать вступление и попытаться наложить его на личный опыт... моё первое знакомство с компьютером произошло где-то в 84-м, это были ПК, купленные после олимпиады-80 у финской компании Noptel для тренировки стрелковой сборной СССР, но по факту, 90% времени на них играли в компьютерные игры (нет, для тренировок они тоже использовались, но периферия была достаточно капризной, и кажется, рабочих комплектов периферии всегда было сильно меньше, чем рабочих ПК). И да, в них были 3.5" дисководы на 720КБ. Не могу вспомнить семейство тех компьютеров - помню только, что это были достаточно компактные "всё-в-одном" (клавиатура+системный блок+блок питания), подключаемые "тюльпаном" к цветному монитору, а игры имели расширение ".GM" (видимо, для удобства - по сути, это были лаунчеры, кажется, на Бэйсике, т.к. иногда вываливалось "Syntax error. Unexpected "," at line 10", или что-то подобное, что иногда более-менее успешно лечилось слепым тыканьем по телу лаунчера, без малейшего понимания не то, что синтаксиса языка, на котором он был написан, но даже без знания английского, только имея представление о "латинском алфавите")... да... задорные были времена... ну, а 1С, ещё когда она занимала 2 дискеты 1.44МБ, я уже помогал устанавливать на возмездной основе, попутно получая на УПК квалификацию "оператор-программист ЭВМ"...


    1. MaFrance351
      13.09.2023 09:10

      А что за периферия была?


      1. zuek
        13.09.2023 09:10

        За давностью могу напутать, да и вместо "Ноптелей" довольно скоро (в начале 90-х, если склероз не изменяет) "Скаты" пришли, но типичный набор - излучатель на ствол (то ли под ствол, то ли в дуло - не помню), рамка с датчиками вокруг мишени и контроллер, подключаемый к ПК. Для хранения данных тренировок использовалось забавное устройство - электронный накопитель на пару десятков мегабайт, хранящий всё не на "флэш-памяти", а в "обычной оперативке", для чего он был оснащён стандартным аккумулятором, которые сейчас можно повсеместно встретить в ИБП (что-то типа 12В/7Ач). Что именно там сбоило, я по малолетству не знал, но сбоило часто...


  1. MinimumLaw
    13.09.2023 09:10
    +4

    Это ваше "программист должен" как-то сильно напоминает "настоящий мужчина должен", и так и сводит все к извечному "ты-ж-программист". А так ли оно на самом деле? И что значит каждый из тезисов в отдельности? Потому исключительно последний пункт и важен, но и с ним не все так гладко - "не должен".

    Настоящий программист должен писать востребованный код. Остальное вторично.


    1. IvanPetrof
      13.09.2023 09:10
      +6

      Рано или поздно это должно здесь появиться:

      Программист должен обладать способностью первоклассного математика к абстракции и логическому мышлению в сочетании с эдисоновским талантом сооружать все, что угодно, из нуля и единиц. Он должен сочетать аккуратность бухгалтера с проницательностью разведчика, фантазию автора детективных романов с трезвой практичностью экономиста.


  1. semennikov
    13.09.2023 09:10
    +5

    Мда, лично у меня самое яркое впечатление это вступительное слово преподавателя в школе на уроке программирования: " В этой машине собраны все недостатки как существующих, так и будущих машин, справитесь с ней, справитесь и с любой другой". Это был ламповый "Урал-1" в 1973 году. С тех пор прошло уже пятьдесят лет, но до сих пор справляюсь!

    И да, мне пришлось (и приходится) использовать математику, физику, бухгалтерию и финансы, фантазию и практичность, без этого хорошую программу не написать!


  1. Gradiens
    13.09.2023 09:10

    Долгое время программисты были «операторами ЭВМ» в том смысле, что в паре человек-машина главным был умный железный компьютер, а человек его обслуживал.

    Компьютер был главным, потому что стоил как чугунный мост. Компьютерное время было сильно дороже времени человеческого.

    А вот насчет умный... я бы не согласился. Умными были человеки, способные раскурить, какая лампа у компьютера глючит. Которые на бумажке дебажили, прежде чем запихнуть в компьютер свои перфокарты.


    1. IvanPetrof
      13.09.2023 09:10

      На самом деле ничего особенного. Я сам был таким. Дебажил ассемблер на бумажке. Программы были меньше. Абстракции проще. Не было мегабайтов кода.


  1. kekoz
    13.09.2023 09:10
    +2

    — Вась, ты же программист?
    — Да.
    — Установи мне винду.

    К чему я вспомнил этот анекдот? Да к тому, что если коллеги копаются в “DevOps, Kubernetes, микросервисах и максимально мощном железе”, то они скорее всего не программисты.

    Долгое время программисты были «операторами ЭВМ»

    Долгое время программисты были программистами, а операторами ЭВМ были операторы ЭВМ (зачастую ничего в программировании не понимающие). Программисты физического доступа к ЭВМ вообще не имели. Моё практическое программирование начиналось с того, что мы — программисты — писали (ручкой!) код на специальных бланках, потом их несли в отдел подготовки данных, где девушки прожигали годы своей жизни на пробивание дырок в наших перфокартах (переводили человеко-читаемый код с упомянутых бланков в машиночитаемый код на холлеритовых картонках), мы тащили эти свои колоды уже к операторам ЭВМ, передавая их через амбразуру в гермозону, где и находились собственно ЭВМ. Они объединяли эти колоды в ещё более толстые колоды для пакетного “прогона”, а по окончании возвращали нам распечатки либо результатов исполнения, либо нашего кода с диагностикой, из которой в очередной раз можно было понять, как важно отчётливо прорисовывать на бланке “точку с запятой”, чтобы девочка в отделе подготовки данных не проковыряла тебе “двоеточие” или “запятую”. У девочек, кстати, была очень жёсткая установка в должностной инструкции — даже если она уже давно знает язык, и видит явную синтаксическую ошибку в коде, она всё равно не имеет права её исправить.

    В последнее время появилась интересная формула: «Программирование сейчас должно стать для всех таким же базовым навыком, как знание английского языка».

    В последнее время появилось очень много тех, кто литерально воспринял старейшее, более 40 лет, метафорическое (метафорическое!!!) высказывание академика Андрея Ершова, сделанное им ещё то ли в 80-м, то ли 81-м году. «Программирование — вторая грамотность». Да, если воспринимать это литерально, то получится “интересная формула” про базовые навыки и английский язык. Только вот метафоры обычно не подразумевают литерального прочтения. Во-первых, тот же Ершов весьма отчётливо пояснял: «Даже обучение, то есть приобретение знаний или, скорее, способности что-то сделать – это программирование», что совсем не о том программировании, которое про Haskell или Delphi. Во-вторых, один из соратников Ершова (не помню, к сожалению, кто именно) говорил «Если хотите получать пользу от компьютеров, не становясь профессиональными программистами — не программируйте!»


    1. sepulkary
      13.09.2023 09:10

      У девочек, кстати, была очень жёсткая установка в должностной инструкции — даже если она уже давно знает язык, и видит явную синтаксическую ошибку в коде, она всё равно не имеет права её исправить.

      Логично было бы дополнить какой-никакой обратной связью, типа предупреждающей записи на распечатке получившихся результатов.

      Есть, кстати, некоторая аналогия из мира фармацевтики. По советским правилам оформления рецептов, в случае, если доза лекарства превышает максимально допустимую, в рецепте надо было прописать цифры прописью (например, "двести мг" вместо "200 мг") и подчеркнуть написанное, иначе сотрудник аптеки (который, вполне возможно, по уровню знаний стоял гораздо ниже выписавшего лекарство врача) не принимал рецепт. Такая своеобразная "контрольная сумма".


  1. gev
    13.09.2023 09:10

    +1 за Haskell =)