Андрей Школьников: От кодинга к шкодингу и колдовству
На фоне сдувающегося пузыря сверх ожиданий и сверх оптимизма от прихода в мир «Искусственного интеллекта», также известного как алгоритмы Т9++, имеет смысл рассмотреть, почему результаты его применения некорректно называть «программированием на естественных языках», что может стать одним из элементов 7-го технологического уклада. К сожалению, последние события и высказывания показали, что различия между терминами «программирование» и «кодинг» не понятно очень многим даже в IT- отрасли.
Если говорить просто, то разница примерно такая, как между врачом и медсестрой, в отдельных случаях врачом и фельдшером. Врач тоже умеет ставить уколы и оказывать первую помощь по протоколу, но лечить и ставить сложные диагнозы в неоднозначных ситуациях может только он. Говорим не об образе Доктора Хауса, а о хороших диагностах и профессионалах, которые работают по принципам советской медицины.
Программирование является поиском оптимального решения бизнес-задачи (не абстрактной и выхолощенной, а реальной задачи), вытекающей из требований, нужд и потребностей заказчика, значимую часть которых он даже не осознаёт. Программист находит множество вариантов решений и выбирает лучшее из них. Кодинг – перевод на машинный язык одного из решений, т.е. лечение конкретной однозначно идентифицированной и выявленной болезни по протоколу. Даже если диагноз ошибочен, лечение будет идти до конца.
Есть ещё особый, редкий класс – системные программисты, которые формируют правила, по которым все остальные живут годы и десятилетия. Они создают базовые принципы для среды, собственно, наука кибернетика нужна для создания фундамента, основы для появления системных программистов и архитекторов. Мы живём на базисе, ядре, написанном в конце прошлого века, начале 5-го технологического уклада, которое спустя несколько десятилетий дошло до заложенного предела. Эти талантливые и даже гениальные создатели (столько времени это работало) неспособны к работе в силу возраста, а многих нет в живых. Костыли и заплаты, наложенные на их работы перестают спасать, масштабы и объёмы давно вышли за пределы.
Решить сложную задачу наращивая вычислительную мощность и ресурсы, большого таланта не нужно, а вот сделать это максимально лаконично, в условиях жёстких ограничений, оптимизировав на порядок, нужна кибернетика. Таких профессионалов и раньше было мало, а теперь практически нет. Последствия использования "Искусственного интеллекта" – произойдёт уменьшение ещё и обычных программистов. Перевод бизнес-задач с «птичьего языка» на машинный кое-как будут делать специально обученные менеджеры, не понимающие ограничений.
Технические задания полностью перестанут ориентироваться на возможности и оптимальность, средняя доработка по сложности станет стремиться к созданию нового продукта с нуля. Если раньше проблема решалась заплатами или костылями, теперь будут переделывать полностью. Условно говоря, строили магистральный газопровод с двух сторон без проектной документации, по рабочей документации, вышли к берегам реки с разницей в несколько сот метров. Подумали, соединили, запретили строить без утвержденной проектной документации. Трубопровод лет пятнадцать работает. Если бы делали "кодеры", выкопали трубу и перекладывали бы несколько десятков километров по новой, по тайге и сопкам.
Расслабленный подход был возможен, когда менее года требовалось на удвоение доступной вычислительной мощности за те же деньги, но современная микроэлектроника приблизилась к пределу, ещё 1-2 шага вниз и начнутся квантовые эффекты, а массовые, универсальные квантовые компьютеры вопрос за пределами отраслевого планирования. Всё. По очень многим IT задачам и вопросам давно достигнут предел, человечеству необходимо множество системных программистов и создание нового фундамента, но вместо этого приходит «Искусственный интеллект», что делает в разы хуже, убивая среду для выращивания даже обычных программистов, поощряя становиться кодерами и «эффективными менеджерами», пишущими ТЗ.
Актёрами не рождаются, актёрами становятся, так и с программистами. Нужно фундаментальное кибернетическое (формальная наука, если кто забыл) образование, а не несколько месяцев курсов и инструментальной практики. Теоретические знания через практику становятся умениями, а через большую практику, наработку и опыт – навыками. Хороший программист должен пройти стадию кодинга, написания руками, совершения ошибок и набивания шишек. Одна хранимая процедура убивает половину тестовой базы, некорректно отработавшая функция на полдня вышибает работу федерального агентства и т.д., – это надо пройти. У каждого талантливого хирурга за спиной своё кладбище.
И, да, кодинг на естественных языках, не является программированием и не сможет им стать, а молодое поколение будет даже не кодить, а шкодить и колдовать, не умея находить логическую ошибку даже в нескольких строках с парой циклов…
Андрей Школьников
Комментарий редакции
Тезисы статьи
1. Автор разграничивает понятия "программирование" и "кодинг": программирование – это поиск оптимального решения реальной бизнес-задачи, а кодинг – просто перевод готового решения на машинный язык.
2. Проводится аналогия между программистом и врачом (способным ставить сложные диагнозы), а кодером и медсестрой (выполняющей процедуры по протоколу).
3. Выделяется особый класс системных программистов, которые создают фундаментальные правила и принципы для всей отрасли.
4. Современные системы построены на основе кода, созданного в конце прошлого века, который достигает своих пределов, а создателей этих систем уже нет.
5. Искусственный интеллект (названный автором "алгоритмы Т9++") негативно влияет на отрасль, уменьшая количество настоящих программистов.
6. Технические задания перестают учитывать возможности и оптимальность, что приводит к полной переделке продуктов вместо точечных доработок.
7. Вычислительная мощность приближается к физическим пределам, что делает невозможным прежний "расслабленный подход".
8. Вместо выращивания системных программистов и создания нового фундамента, индустрия поощряет становиться кодерами и менеджерами.
9. Для становления хорошим программистом необходимо фундаментальное кибернетическое образование и опыт обычного кодинга, включая совершение ошибок.
10. Генерация кода с помощью ИИ на естественных языках не является настоящим программированием и приведёт к "шкодингу и колдовству" – неспособности находить даже простые логические ошибки.
Вывод
Автор выражает обеспокоенность тем, что современная тенденция к упрощению программирования через ИИ и замена настоящих программистов "кодерами" ведет отрасль к деградации. Отсутствие фундаментального кибернетического образования и опыта решения сложных задач в условиях ограничений приводит к тому, что новое поколение IT-специалистов не способно создавать оптимальные и устойчивые решения. В то время как индустрия нуждается в системных программистах для создания нового фундамента, она движется в противоположном направлении, что грозит серьезными проблемами в будущем, особенно учитывая, что вычислительные мощности приближаются к своему физическому пределу.
Дополнительный вывод
Действительно, статья подчеркивает важность фундаментального образования в программировании, как и в любой другой профессии. Как врач не может стать хорошим диагностом без глубоких знаний анатомии и физиологии, так и программист не может создавать эффективные системы без понимания принципов кибернетики и алгоритмического мышления.
Искусственный интеллект может и должен выполнять роль помощника, снимая с программиста часть рутинных и простых задач, автоматизируя повторяющиеся процессы. Однако концептуальное мышление, проектирование архитектуры, понимание бизнес-потребностей и создание "сердца системы" останутся прерогативой человека.
Программист, обладающий фундаментальными знаниями, способен использовать ИИ как инструмент, а не зависеть от него. Такой специалист видит ограничения технологий, понимает компромиссы и может предвидеть долгосрочные последствия принимаемых решений. В отличие от "кодеров" и "шкодеров", настоящие программисты не просто применяют готовые решения, а создают новые парадигмы, учитывая контекст задачи и технологические тренды.
Таким образом, развитие ИИ не должно приводить к деградации программирования как профессии, а скорее, должно стимулировать повышение уровня специалистов, которые смогут эффективно взаимодействовать с новыми технологиями, сохраняя контроль над критически важными аспектами разработки.
Наверное Китай по старой дружбе продаст нам готовые решения, думаю со стратегическим програмированием у них всё нормально.