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