Почему робототехника делает вас лучшим инженером-программистом

Много лет преподавания робототехники в HKDI изменили мой взгляд на софт. Вот чему планирование движения научило меня в системном дизайне.


Дисциплина ограничений

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

В софте мы часто можем позволить себе небрежность. Добавить памяти, поднять ещё сервер или просто перехватить исключение. Робототехника так не прощает.

Чему меня научило преподавание в HKDI

Когда я преподавал в Hong Kong Design Institute, я замечал, что студенты, которым тяжело давались абстрактные программные концепции, внезапно начинали понимать их, как только мы связывали задачу с физической системой. Когда робот-манипулятор ломается из-за ошибки в state machine, state machine сразу становится чем-то реальным.

Как я применяю это в коде

Теперь, проектируя софт, я думаю о трёх вещах:

  • Сроки: что произойдёт, если эта часть будет медленной?
  • Состояние: как система выглядит в любой момент?
  • Режимы отказа: если что-то сломается, то как именно?

Эти вопросы естественно приходят из робототехники. И они делают софт лучше.