Вторым программистом в моей жизни была Анжелика. В свои 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)
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МБ, я уже помогал устанавливать на возмездной основе, попутно получая на УПК квалификацию "оператор-программист ЭВМ"...
MaFrance351
13.09.2023 09:10А что за периферия была?
zuek
13.09.2023 09:10За давностью могу напутать, да и вместо "Ноптелей" довольно скоро (в начале 90-х, если склероз не изменяет) "Скаты" пришли, но типичный набор - излучатель на ствол (то ли под ствол, то ли в дуло - не помню), рамка с датчиками вокруг мишени и контроллер, подключаемый к ПК. Для хранения данных тренировок использовалось забавное устройство - электронный накопитель на пару десятков мегабайт, хранящий всё не на "флэш-памяти", а в "обычной оперативке", для чего он был оснащён стандартным аккумулятором, которые сейчас можно повсеместно встретить в ИБП (что-то типа 12В/7Ач). Что именно там сбоило, я по малолетству не знал, но сбоило часто...
MinimumLaw
13.09.2023 09:10+4Это ваше "программист должен" как-то сильно напоминает "настоящий мужчина должен", и так и сводит все к извечному "ты-ж-программист". А так ли оно на самом деле? И что значит каждый из тезисов в отдельности? Потому исключительно последний пункт и важен, но и с ним не все так гладко - "не должен".
Настоящий программист должен писать востребованный код. Остальное вторично.
IvanPetrof
13.09.2023 09:10+6Рано или поздно это должно здесь появиться:
Программист должен обладать способностью первоклассного математика к абстракции и логическому мышлению в сочетании с эдисоновским талантом сооружать все, что угодно, из нуля и единиц. Он должен сочетать аккуратность бухгалтера с проницательностью разведчика, фантазию автора детективных романов с трезвой практичностью экономиста.
semennikov
13.09.2023 09:10+5Мда, лично у меня самое яркое впечатление это вступительное слово преподавателя в школе на уроке программирования: " В этой машине собраны все недостатки как существующих, так и будущих машин, справитесь с ней, справитесь и с любой другой". Это был ламповый "Урал-1" в 1973 году. С тех пор прошло уже пятьдесят лет, но до сих пор справляюсь!
И да, мне пришлось (и приходится) использовать математику, физику, бухгалтерию и финансы, фантазию и практичность, без этого хорошую программу не написать!
Gradiens
13.09.2023 09:10Долгое время программисты были «операторами ЭВМ» в том смысле, что в паре человек-машина главным был умный железный компьютер, а человек его обслуживал.
Компьютер был главным, потому что стоил как чугунный мост. Компьютерное время было сильно дороже времени человеческого.
А вот насчет умный... я бы не согласился. Умными были человеки, способные раскурить, какая лампа у компьютера глючит. Которые на бумажке дебажили, прежде чем запихнуть в компьютер свои перфокарты.
IvanPetrof
13.09.2023 09:10На самом деле ничего особенного. Я сам был таким. Дебажил ассемблер на бумажке. Программы были меньше. Абстракции проще. Не было мегабайтов кода.
kekoz
13.09.2023 09:10+2— Вась, ты же программист?
— Да.
— Установи мне винду.К чему я вспомнил этот анекдот? Да к тому, что если коллеги копаются в “DevOps, Kubernetes, микросервисах и максимально мощном железе”, то они скорее всего не программисты.
Долгое время программисты были «операторами ЭВМ»
Долгое время программисты были программистами, а операторами ЭВМ были операторы ЭВМ (зачастую ничего в программировании не понимающие). Программисты физического доступа к ЭВМ вообще не имели. Моё практическое программирование начиналось с того, что мы — программисты — писали (ручкой!) код на специальных бланках, потом их несли в отдел подготовки данных, где девушки прожигали годы своей жизни на пробивание дырок в наших перфокартах (переводили человеко-читаемый код с упомянутых бланков в машиночитаемый код на холлеритовых картонках), мы тащили эти свои колоды уже к операторам ЭВМ, передавая их через амбразуру в гермозону, где и находились собственно ЭВМ. Они объединяли эти колоды в ещё более толстые колоды для пакетного “прогона”, а по окончании возвращали нам распечатки либо результатов исполнения, либо нашего кода с диагностикой, из которой в очередной раз можно было понять, как важно отчётливо прорисовывать на бланке “точку с запятой”, чтобы девочка в отделе подготовки данных не проковыряла тебе “двоеточие” или “запятую”. У девочек, кстати, была очень жёсткая установка в должностной инструкции — даже если она уже давно знает язык, и видит явную синтаксическую ошибку в коде, она всё равно не имеет права её исправить.
В последнее время появилась интересная формула: «Программирование сейчас должно стать для всех таким же базовым навыком, как знание английского языка».
В последнее время появилось очень много тех, кто литерально воспринял старейшее, более 40 лет, метафорическое (метафорическое!!!) высказывание академика Андрея Ершова, сделанное им ещё то ли в 80-м, то ли 81-м году. «Программирование — вторая грамотность». Да, если воспринимать это литерально, то получится “интересная формула” про базовые навыки и английский язык. Только вот метафоры обычно не подразумевают литерального прочтения. Во-первых, тот же Ершов весьма отчётливо пояснял: «Даже обучение, то есть приобретение знаний или, скорее, способности что-то сделать – это программирование», что совсем не о том программировании, которое про Haskell или Delphi. Во-вторых, один из соратников Ершова (не помню, к сожалению, кто именно) говорил «Если хотите получать пользу от компьютеров, не становясь профессиональными программистами — не программируйте!»
sepulkary
13.09.2023 09:10У девочек, кстати, была очень жёсткая установка в должностной инструкции — даже если она уже давно знает язык, и видит явную синтаксическую ошибку в коде, она всё равно не имеет права её исправить.
Логично было бы дополнить какой-никакой обратной связью, типа предупреждающей записи на распечатке получившихся результатов.
Есть, кстати, некоторая аналогия из мира фармацевтики. По советским правилам оформления рецептов, в случае, если доза лекарства превышает максимально допустимую, в рецепте надо было прописать цифры прописью (например, "двести мг" вместо "200 мг") и подчеркнуть написанное, иначе сотрудник аптеки (который, вполне возможно, по уровню знаний стоял гораздо ниже выписавшего лекарство врача) не принимал рецепт. Такая своеобразная "контрольная сумма".
18741878
Ну, насчет Delphi - соглашусь. В 90-е и первое десятилетие 2000-х он (или она) были повсеместно. Но Haskell?!?!? Он появился как исследовательский академический проект в 1990 году (https://ru.wikipedia.org/wiki/Haskell). Язык мощнючий и очень интересный, но для "кровавого энтерпрайза" тех лет абсолютно не характерный. Я вроде немало чего повидал, но не могу вспомнить ни одного случая использования Haskell в таком качестве в те годы
leshabirukov
За автором уже выехали. Первое правило кровавого энтерпрайза рептилоидов никому не расскаАААа кхе кхе
HemulGM
Если что, то Delphi появился в 1995
Merkulog
Тхы, а с 1986 Object Pascal пахал по полной - по сути та же Дельфя.
HemulGM
Но только с 1995 появилась среда, которая и позволила штамповать софт с GUI)
programmerguru Автор
Это не ошибка :) На наукоёмких производствах он вовсю был.