Год делаю терминал самообслуживания для АЗС: выбор топлива, безналичная оплата, отпуск, фискальный чек. Самое полезное, что я там написал - не бизнес-логику, а эмуляторы. Колонка общается по протоколу АЗТ 2.0 поверх RS-485, стенд с реальным железом один на всю команду, и отлаживать на нём аварийные сценарии почти невозможно: недолив, ошибка колонки, обрыв связи, зависший терминал. Сделал эмулятор колонки и эмулятор watchdog-устройства - вся отладка переехала на ноутбук. Вывод, который я для себя вынес: если бэкенд разговаривает с железом, эмулятор железа - это не побочная задача, а часть проекта. И делать его надо на первой неделе, а не когда припечёт.
Бэкенд на Go и Python. Сейчас рассматриваю предложения. Код: github.com/Sh1chi