Писать, не видя в глаза устройства? Да запросто — это наши будни. Видел, не видел — разница небольшая. На одном большом северном заводе устройство у меня было. На отладку отводилось аж три часа в месяц. Велика ли разница с «не видел»?
Это не прихоть заказчиков. Устройство (стан непрерывной оцинковки стали длиной 500 м) работает круглосуточно, раз в месяц останавливаясь для планового обслуживания. Во время этой остановки есть три часа, когда стан уже запустили, но он ещё не вошёл в рабочий режим. При этом цена продукции такова, что минутная остановка из-за ошибки при отладке приводит к 40 тысячам долларов убытка. Цена всей разработки системы — три остановки, так что отладку в неположенное время делать очень страшно. Пикатности ситуации придаёт то, что рабочее место на заводе находится аккурат над печью, работающей на водороде. При сильном баге хоронить будет вообще нечего — и не только от тебя.
Ничего, отладили и запустились. За три года, что я отслеживал систему, не было ни минуты простоя. Хорошо, что документации на все части всех устройств было море — по ней и писали.
Проблема в другом (это уже по другому проекту). Гады электронщики — хуже бухгалтеров. Программисты вначале придумывают интерфейс, а уж потом его реализовывают. Электронщики же на голубом глазу утверждают, что они не могут описать интерфейс до того, как реализуют устройство в железе. В результате сначала приходит железка, и лишь через несколько недель — какое-то подобие документации. И при этом они полностью уверены, что железки со схемой программерам хватит. Мол, зачем им дока — пусть методом проб и ошибок работают!
Честное слово, разбираться в железе без документации хуже, чем писать, не видя в глаза железа.