Ласкаво просимо назад у software engineering
Хороша новина: ми знову стаємо software-інженерами. А не кодерами.
Software engineering — це про розв’язання задач. Як у математиці: є проблема — її треба розв’язати. Чим ти її розв’яжеш, якою мовою, яким інструментом — за великим рахунком байдуже. Важливий результат: задачу розв’язано чи ні.
Ось це й було цікаво. Сісти й думати. Знайти рішення, якого до тебе не було. Придумати щось нове, змусити це працювати. Інтелектуальна і творча робота — за цим ми в неї і прийшли. А не за тим, щоб півдня воювати з конфігом, тиждень — з фреймворком, місяці — з інфраструктурою.
Як інженери перетворилися на кодерів
А потім, з часом, software engineering непомітно перетворився на кодинг. Не тому що інженери подурнішали — а тому що фреймворків та інфраструктури розвелося до неподобства. Кожну бібліотеку треба знати, кожен сервіс — підключити, кожен пайплайн — налаштувати.
І інженери загрузли. Загрузли в кодингу та в налаштуванні всього підряд: піднімати середовище, морочитися з деплоєм, лагодити збірку, оновлювати залежності, гуглити, чому версія A не стикується з версією B. Загрузли в цьому — а не в розв’язанні інтелектуальних задач, з чим, власне, і пов’язана наша професія. Ні сил, ні уваги на творчість у них не лишилося.
Ось і вийшло, що інженер перетворився на кодера. На людину, яка цілими днями пише код навколо задачі, майже не доходячи до самої задачі. Розв’язання задач стало рідкісним, майже святковим станом — у короткій паузі між двома порціями кодингу.
Брукс назвав це ще в 1986-му
У цього є ім’я. Фредерік Брукс поділив складність софту на два види: сутнісну і привнесену.[1]
Сутнісна — це трудність самої задачі. Її не прибрати: вона і є інженерія, ті самі інтелектуальні задачі. Привнесена — це все, що наросло навколо: мови, фреймворки, інфраструктура, обв’язка, інструменти. Кодинг заради того, щоб усе це стикувати між собою.
Брукс попереджав: срібної кулі немає, привнесену складність можна лише підрізати. Тридцять років її не підрізали — нарощували. Кожен новий фреймворк обіцяв спростити життя і додавав ще один шар коду, який тепер теж треба писати й тримати в голові. Так кодинг і з’їв інженерію.
AI забирає брудну роботу
Уперше той самий кодинг є кому віддати.
AI бере на себе рівно те, що писати нудно: код, бойлерплейт, перекладання даних, склейку, «як тут у цьому фреймворку зробити ось це». Нудну роботу з написання коду — саме кодинг. Брудну роботу, в якій ми загрузли останні десятиліття. Те, що Брукс називав accidental, машина робить швидше і без скигління.
Багатьох це лякає: «AI замінить інженерів». Так ось, лякаються не в той бік. AI замінює не інженера. Він замінює кодера — ту частину нашого дня, яка інженерією ніколи й не була.
З поверненням
А що лишається нам, програмістам? Лишається сутнісне. Вирішити, що ми взагалі будуємо і навіщо. Зрозуміти задачу. Обрати форму. Ухвалити рішення, за які потім відповідати. Те саме важке й цікаве, ті самі інтелектуальні задачі, заради яких ми сюди прийшли.
І ось тепер ми, software-інженери, нарешті можемо повернутися від кодингу до суті software engineering — до розв’язання задач. Від кодера назад до інженера.
Ось це і є справжній software engineering. Не боротьба з інструментами — розв’язання задач. Як у математиці. Як було від самого початку.
Тож ласкаво просимо назад. Кодер у нас тепер машина — а ми знову інженери.
І, чесно кажучи, жити знову стало цікавіше.
Коментарі
Будьте першим, хто залишить коментар.