Skip to content Перейти к разделу

💻Origins & Evolution

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

Одним взглядом
Лента времени

Вехи по порядку. Это история, не недельная сетка.

1843 Ада Лавлейс публикует первый алгоритм1890 Перфокарты Холлерита составляют таблицу переписи населения.1943–1945 Шесть женщин программируют ENIAC1952 Грейс Хоппер завершает работу над первым компилятором1957 FORTRAN поставляется для IBM 7041968 Конференция НАТО назвала «программную инженерию»1969–1973 Unix и C обретают форму в Bell Labs1981 IBM PC приносит программное обеспечение на каждый стол1991 Linux и Всемирная паутина появляются с разницей в несколько месяцев2021–2023 ИИ перемещается в редактор кода
  1. Ада Лавлейс публикует первый алгоритм
  2. Перфокарты Холлерита составляют таблицу переписи населения.
  3. Шесть женщин программируют ENIAC
  4. Грейс Хоппер завершает работу над первым компилятором
  5. FORTRAN поставляется для IBM 704
  6. Конференция НАТО назвала «программную инженерию»
  7. Unix и C обретают форму в Bell Labs
  8. IBM PC приносит программное обеспечение на каждый стол
  9. Linux и Всемирная паутина появляются с разницей в несколько месяцев
  10. ИИ перемещается в редактор кода
Плотность баллов

Чем темнее клетка, тем выше балл по этому показателю.

Последняя проверка Источники и титрыМедиа-кредитыМетодология

Короткие ответы

Чем на самом деле занимается инженер-программист весь день?

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

Нужна ли мне степень в области компьютерных наук, чтобы стать инженером-программистом?

Нет, но это остается наиболее распространенным и наименее трудным путем. Четырехлетняя степень преподает алгоритмы, структуры данных и системные концепции, изучение которых на работе обходится дорого. Выпускников Bootcamp и инженеров-самоучек нанимают, особенно в небольшие компании, но обычно им требуется сильное портфолио или работа с открытым исходным кодом, чтобы заменить диплом.

Подвержена ли разработка программного обеспечения риску со стороны ИИ?

Частично это уже есть. Инструменты, встроенные в современные редакторы кода, теперь пишут большую часть рутинного кода — шаблонного кода, первых набросков тестов, переводов между языками — для инженеров, которые используют их регулярно. Гораздо сложнее автоматизировать решение, что создавать, почему и как следует сформировать систему, чтобы она выдержала контакт с реальными пользователями и сбои.

Сколько зарабатывают инженеры-программисты?

Это сильно варьируется в зависимости от страны и компании. В Соединенных Штатах медианная сумма составляет около 133 000 долларов в год; в Германии примерно 69 000 евро; в Индии, где в отрасли занято больше всего людей, средний показатель по стране приближается к 900 000 фунтов стерлингов. Старшие и штатные инженеры крупных технологических компаний могут зарабатывать в несколько раз больше среднего показателя по стране, если включить в них вознаграждение за акции.

В чем разница между инженером-программистом, программистом и разработчиком?

На практике мало — названия пересекаются и компании используют их непоследовательно. «Программист» — самый старый термин, в котором особое внимание уделяется написанию кода; «разработчик» часто встречается в веб- и продуктовых компаниях; «Инженер-программист» опирается на идею применения дисциплинированных процессов, тестирования и проектирования, заимствованных из старых инженерных областей, для создания программного обеспечения. Должностные инструкции редко различают их последовательно.

Действительно ли собеседование по программированию необходимо для приема на работу?

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

Начать с этого раздела - Origins & Evolution

Открыть лабораторию сравнения

Share

Программная инженерия — необычайно молодая профессия, носящая старые идеи. Люди разрабатывали пошаговые процедуры для машин с 1840-х годов, но никому не платили за работу «инженера-программиста» вплоть до двадцатого века, а само название должности было предложено — наполовину провокационно — только в 1968 году.

Ее история проходит через графиню, которая никогда не видела, как работает ее алгоритм, женщин, которые вручную перемонтировали компьютер размером с комнату, офицера ВМФ, который хотел, чтобы машины читали по-английски, и конференции в Баварских Альпах, которая дала название этой области, объявив, что она находится в кризисе.

Where it began

1843Лондон, Англия

Ада Лавлейс, переводя статью итальянского инженера о незавершенной аналитической машине Чарльза Бэббиджа, добавляет набор примечаний, длиннее исходного текста. Последняя из них, «Примечание G», шаг за шагом описывает, как машина будет вычислять последовательность чисел — алгоритм, написанный для компьютера, который не будет существовать еще столетие, и момент, который большинство историков отмечают как концептуальное зарождение программирования: идея о том, что инструкции машины могут быть разработаны, записаны и проверены как вещь, отдельная от самой машины.

Timeline

1843Ада Лавлейс публикует первый алгоритм

Переводя итальянскую статью о незавершенной аналитической машине Чарльза Бэббиджа, Лавлейс добавляет примечание, описывающее шаг за шагом, как машина будет вычислять числа Бернулли — обычно называемую первой опубликованной компьютерной программой.

1890Перфокарты Холлерита составляют таблицу переписи населения.

Машины для подсчета перфокарт Германа Холлерита обрабатывают данные переписи населения США примерно за год, а предыдущий подсчет вручную занял почти восемь лет; его компания позже становится частью IBM.

1943–1945Шесть женщин программируют ENIAC

Кей МакНалти, Джин Дженнингс, Бетти Снайдер, Марлин Вескофф, Фрэн Билас и Рут Лихтерман программируют ENIAC размером с комнату в Пенсильванском университете, физически устанавливая переключатели и подключая кабели, без каких-либо инструкций и языков программирования, которые могли бы ими управлять.

1952Грейс Хоппер завершает работу над первым компилятором

Система A-0 Хоппера в Remington Rand автоматически переводит символические математические обозначения в машинный код, заменяя чрезмерную ошибку ручного копирования адресов подпрограмм — прямого предка каждого компилятора с тех пор.

1957FORTRAN поставляется для IBM 704

Команда Джона Бэкуса из IBM выпускает FORTRAN примерно после двух лет работы; Сообщается, что в течение двух лет более половины всего машинного кода в США будет написано на нем.

1968Конференция НАТО назвала «программную инженерию»

На конференции в Гармише (Западная Германия) участники намеренно заимствовали термин «инженерия программного обеспечения», чтобы доказать, что создание крупных программ требует той же дисциплины, что и наведение мостов, называя хронические перерасходы средств в этой области «кризисом программного обеспечения».

1969–1973Unix и C обретают форму в Bell Labs

Кен Томпсон и Деннис Ритчи создают операционную систему Unix на запасном PDP-7, а затем в 1973 году переписывают ее на новом языке C, разработанном Ритчи, чтобы она могла работать более чем на одном типе компьютеров.

1981IBM PC приносит программное обеспечение на каждый стол

ПК IBM запускается с PC-DOS от Microsoft, превращая программное обеспечение в массовый потребительский продукт почти мгновенно и укрепляя молодую компанию, основанную Биллом Гейтсом и Полом Алленом шестью годами ранее на Altair BASIC.

1991Linux и Всемирная паутина появляются с разницей в несколько месяцев

Линус Торвальдс разместил ядро ​​своего хобби в Usenet в августе, назвав его «просто хобби, оно не будет большим и профессиональным»; В том же месяце Всемирная паутина Тима Бернерса-Ли становится публичной, а открытое, свободно распространяемое программное обеспечение становится стандартом Интернета.

2021–2023ИИ перемещается в редактор кода

GitHub Copilot (2021 г.) и ChatGPT (2022 г.) вводят генерацию кода моделей на большом языке в повседневное использование; Через несколько лет GitHub сообщает, что пользователи его собственного инструмента принимают код, предложенный ИИ, для большой и растущей доли строк, которые они сохраняют.

The eras

Консоль оператора мэйнфрейма IBM System/360
ArnoldReinhold · CC BY-SA 3.0 · Wikimedia Commons
1950–1960-е годы

Мэйнфреймы и пакетное программирование

Ранние программы представлялись в виде колод перфокарт и запускались партиями, часто в течение ночи, поэтому одна опечатка могла стоить программисту целого дня ожидания следующего запуска. Математики, и в большом количестве женщины, перешли от ручных вычислений прямо к этой новой работе по «программированию», поскольку она считалась канцелярской и ориентированной на детали, а не престижной. FORTRAN (1957) и COBOL (1959) получили распространение в этом десятилетии, и явная трудность создания надежных больших систем на этом оборудовании привела к «кризису программного обеспечения», которому следующая эпоха попытается дать название и исправить.

Миникомпьютер PDP-11, машина, наиболее ассоциирующаяся с ранними версиями Unix.
Stefan_Kögl · CC BY-SA 3.0 · Wikimedia Commons
1969–1983

Unix, структурное программирование и дисциплина получают имя

После того, как конференция НАТО 1968 года обозначила хронические проблемы с бюджетом и надежностью в этой области, в 1970-е годы были созданы и диагноз, и набор инструментов: структурированное программирование, дисциплинированное тестирование и Unix, операционная система, созданная в Bell Labs и переписанная на новом языке C, чтобы ее можно было запускать более чем на одной машине. Миникомпьютеры, такие как PDP-11, распространили реальную вычислительную мощность за пределы нескольких комнат мэйнфреймов, и «инженерия программного обеспечения» стала восприниматься как самостоятельная университетская степень, а не как подобласть математики или электротехники.

Оригинальный персональный компьютер IBM 1981 года выпуска.
Own work (based on graphics by International Business Machines Corporation) · Public domain · Wikimedia Commons
1975–1990

Персональные компьютеры и программное обеспечение в коробке

Комплект Altair 8800 (1975 г.), а затем Apple II и IBM PC (1981 г.) превратили программное обеспечение из того, с чем столкнулись учреждения, в то, что семья могла купить с полки. Индустрия программного обеспечения для массового потребителя и малого бизнеса возникла вокруг текстовых процессоров, электронных таблиц и игр, которые продавались в термоусадочных коробках с политикой возврата вместо контракта на поддержку. В крупных проектах доминировала тщательно документированная разработка в стиле «водопад», даже несмотря на то, что лидеры отрасли — программисты из спальни, университетские хакеры — работали в чем-то близком к сегодняшнему более быстрому и неформальному стилю.

Тукс, пингвин-талисман операционной системы Linux с открытым исходным кодом.
Larry Ewing , Simon Budig , Garrett LeSage · CC0 · Wikimedia Commons
1991–2005

Интернет, открытый исходный код и цикл доткомов

Всемирная паутина и ядро ​​Linux стали общедоступными с разницей в несколько месяцев в 1991 году, и вместе они доказали, что программное обеспечение, созданное открыто добровольцами, которые никогда не встречались друг с другом, может конкурировать со всем, что поставляет корпорация. Веб-браузер почти за одну ночь создал совершенно новый рынок труда; затем этот рынок процветал, а в 2000–2001 годах резко рухнул, уничтожив целое поколение стартапов, но оставив позади Amazon, Google и инфраструктуру, на которой будет строиться следующая эра. Манифест Agile (2001 г.) формализовал реакцию против тяжелого планирования, основанного на документах, в пользу более коротких и итеративных циклов.

Концептуальная схема инфраструктуры облачных вычислений
Sam Johnston · CC BY-SA 3.0 · Wikimedia Commons
2006 – настоящее время

Облако, DevOps и проектирование с использованием искусственного интеллекта

Почасовая аренда сервера у Amazon Web Services (2006 г.) устранила одну из самых больших фиксированных затрат на эксплуатацию программного обеспечения, а магазины приложений практически одновременно предоставили инженерам второй канал распространения, ориентированный прежде всего на мобильные устройства. Git и GitHub (2005–2008) сделали распределенное сотрудничество над одной и той же базой кода нормальным даже для незнакомцев, а автоматизированные конвейеры развертывания сократили разрыв между завершением изменения и его запуском на глазах у пользователей с месяцев до минут. К началу 2020-х годов помощники по программированию с использованием ИИ, обученные работе с общедоступным кодом, превратились из новинки в повседневный инструмент для значительной части профессиональных инженеров — это самое быстрое распространение нового инструмента в профессии за всю ее историю.

What this job replaced

Neighbouring trades that no longer exist — absorbed, automated or regulated away.

Человек-компьютер

1750–1960-е гг.

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

Оператор клавиатуры

1930–1980-е годы

В основном женщины, операторы клавишных перфокарт, печатали данные и даже исходный код программы на перфокартах на таких машинах, как IBM 026 и 029, по одной карте на строку программы. Интерактивные терминалы и видеоэкраны позволяют программистам вводить код прямо в компьютер, и эта работа исчезает в течение одного поколения.

Веб-мастер

1993–2000-е годы

В первое десятилетие Интернета один «веб-мастер» часто проектировал, кодировал, писал копию и администрировал целый веб-сайт — это слово вошло в словари в 1993 году, а в 1997 году получило собственный зарезервированный адрес электронной почты по интернет-стандарту. По мере того, как сайты становились сложнее, роль разделилась на фронтенд-разработчика, серверного разработчика, DevOps-инженера и редактора контента, а «веб-мастер» исчез из списков вакансий.

Trades that vanished →

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

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

Similar professions

📊

Специалист по данным

Находит закономерности и строит прогнозные модели на основе данных — должность 2008 года, основанная на трех столетиях подсчета, тестирования и визуализации доказательств.

AI-resistant 38
📦

Инженер МЛОпс

Создает системы, которые обучают, развертывают, контролируют и управляют моделями машинного обучения в производстве.

AI-resistant 54
🗺️

Менеджер по продукту

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

AI-resistant 50
🔐

Специалист по кибербезопасности

Защищает системы, данные и людей, обнаруживая, предотвращая и реагируя на цифровые атаки.

AI-resistant 63
🌿

Менеджер по устойчивому развитию

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

AI-resistant 66
🧾

Бухгалтер

Хранитель книг: наследник ремесла, настолько древнего, что оно изобрело само письмо, и теперь ведет переговоры с программным обеспечением, созданным для его автоматизации.

AI-resistant 35

Continue exploring

Keep exploring

More in Engineering & Technology

🤖

Исследователь искусственного интеллекта

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

AI-resistant 50
🛰️

Аэрокосмический инженер

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

AI-resistant 74
🌉

Инженер-строитель

Профессия, превращающая реки, скалы и гравитацию в мосты, дороги и чистую воду — тихая несущая сила цивилизации со времен Имхотепа.

AI-resistant 72
🔌

Инженер-полупроводник

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

AI-resistant 60
🦾

Инженер-робототехника

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

AI-resistant 65
🔐

Специалист по кибербезопасности

Защищает системы, данные и людей, обнаруживая, предотвращая и реагируя на цифровые атаки.

AI-resistant 63
📦

Инженер МЛОпс

Создает системы, которые обучают, развертывают, контролируют и управляют моделями машинного обучения в производстве.

AI-resistant 54
🌬️

Инженер по возобновляемым источникам энергии

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

AI-resistant 72