Только что закончил читать мемуары инженера артиллерийских систем Василия Гавриловича Грабина. Помимо интересной исторической информации в мемуарах Грабин подробно описывает свой «скоростной метод проектирования«. Конечно проектирование пушек сильно отличается от проектирования программного обеспечения хотя бы потому, что пушки это самое что ни на есть hardware. Но сам подход очень интересен.
В те времена создание пушки, как правило, шло классическим методом waterfall: получение задания от военных с ТТХ будущей пушки, проектирование, изготовление опытных образцов кустарным способом, испытание на заводе, представление пушки на военные испытания, утверждение и прием пушки на вооружение, создание технологической документации, создание по этой документации техпроцессов, инструментов и станков, обучение персонала, развертывание серийного производства.
В лучшем случае на это уходило от года до пяти лет. В лучшем случае пушку браковали на испытаниях, а в худшем — после приемки опытного образца ее вообще не могли изготовить в массовом производстве. Скоростной метод Грабина позволил изготовить пушку от чертежа до массового производства за 45 дней. Каким образом?
Смысл скоростного проектирования по Грабину заключается в том, что все процессы от проектирования до постановки пушки на поток начинаются одновременно. Проектирование пушки начинается одновременно с созданием технологической документации для массового производства пушки. Для тех времен такой подход был очень необычным. Как можно ставить пушку на поток, если она не прошла воинских испытаний? А если она не пройдет, получается все сделано зря? Ответ Грабина: пушка создается так, что она гарантированно пройдет испытания. За счет каких средств эта гарантия достигается?
1. Высококачественное проектирование. Проектировщики систем тесно работают с технологами из цехов. Таким образом детали на ватмане сразу же оцениваются с точки зрения технологичности их изготовления. Деталь проектировщик проектирует так, что она точно может быть изготовлена в металле, нужного качества и в нужное время и за требуемую стоимость. Таким образом исключались ситуации, когда деталь нарисованная на ватмане выглядит красиво, но практически нереализуема, или когда деталь не могут выточить с заданной точностью имеющиеся специалисты цеха. В программировании это называется DevOps: взаимодействие с админами и программирование с учетом специфики развертывания приложения; взаимодействие системных архитекторов с реальными программистами.
2. Использование типовых компонентов. Каждая следующая пушка конструкторского бюро Грабина использовала имеющиеся компоненты от предыдущей пушки. Это позволяло производить одновременно две разные пушки из одних и тех же деталей с незначительными изменениями, упрощало конструкцию, удешевляло производство, в боевых условиях сломавшиеся детали легко было заменить, взяв их из другой пушки. Детали, вылизанные на предыдущих пушках, гарантировали качество работы следующей пушки. В программировании это называется «повторное использование кода», «модульный дизайн».
3. Постоянный контакт конструкторов с артиллеристами при проектировании и испытании. Помимо того, что это требовалось военной приемкой, присутствие на испытаниях помогало конструкторам оценить свои решения в реальном бою, в реальной ситуации стрельбы. Так конструктора видели, как ошибки на ватмане могут сказаться в реальных боевых условиях на успехе выполнения боевой задачи. В программировании это называется «взаимодействие с пользователями».
4. Эргономика. При проектировании Грабин и его конструкторы прибегали к помощи врача-физиолога, который давал ценные советы по эргономике органов управления пушкой. Благодаря этому пушки Грабина славились удобством работы с ними в самых критических боевых ситуациях. В программировании это называется «юзабилити».
5. Распространение опыта. Далее Грабин приводит пример того, как его скоростной метод пытались перенять другие военные заводы. Так-как метод формально не был описан, при внедрении другие заводы пользовались слухами и догадками и своими собственными домыслами. В начале 1941 года Грабина пригласили на конференцию, где он должен был рассказать о своем методе директорам и конструкторам других заводов. На конференции перед ним выступали другие докладчики, которые хвастались, что метод Грабина у них уже внедрен. И тут же жаловались, что метод не работает. Грабин с ужасом слышал, как его метод заменяли обычной штурмовщиной, авралами и переработками гигантских ресурсов в брак. Ничего не напоминает? Cargo cult методологий в программировании?