Работа в условиях жестко ограниченных ресурсов
Вот короткая цитата из книги об американской программе полета человека в космос «Это новый океан: история проекта Mercury»0:
Производитель RCS (Reaction Control System — реактивная система управления, являющаяся частью аппаратуры маневрирования космического аппарата на орбите) — компания Bell Aerosystems — с августа по октябрь
- 0 Это публикация Лойда С. Свенсона-младшего (Loyd S. Swenson Jr.) и других (онлайн- издание датировано 1996 годом, хотя там также присутствует 1989 год, публикация NASA SP-4201). На момент написания книги полный текст можно было прочитать на странице www.hq.nasa.gov/ofTice/pao/History/SP-4201/cover.html.
- 1960 года выполняла программу испытаний системы и доложила об удовлетворительном прохождении всех этапов тестирования. Последующие тесты, проведённые Макдонеллом (MacDonell), STG (Space Task Group — Целевая космическая группа), другими инженерами NASA, предполётными командами на мысе Канаверал и, наконец, работниками Project Orbit, вскрыли в проверяемом устройстве бесчисленные электрохимические и электромеханические проблемы, для устранения которых требовались небольшие изменения то в том, то в другом месте (ив конечном счёте, повсюду). Камеры сгорания, измерительные диафрагмы, электромагнитные клапаны, вытеснительные ёмкости, предохранительные клапаны — везде были найдены конструктивные изъяны, которые «исправлялись» чаще импровизациями, чем повторным проектированием с использованием научного подхода. Карл Ф. Гэейл (Karl F. Greil), специалист по термодинамике, работавший в 1960 году в Grand Central Rocket Company над совершенствованием технологии разделения с помощью пиропатронов по проекту Mercury, присоединился в 1961 году к STG и её команде, занимавшейся проверкой реактивной системы управления, и тщетно пытался приложить те же самые стандарты совершенствования к этой гораздо более сложной и существенно менее надёжной системе из движущихся частей.
Ирония состоит в том, что результаты, которые рассчитывали получить от реактивной системы управления, были получены за счёт изменения экранов, тепловых барьеров и диафрагм, сделанных просто по наитию. С другой стороны, огромное количество экспериментов с клапанами привели к уверенности, что ничего в том, что касается конструкции клапанов, менять пока не следует. Это на самом деле смешно, когда всё получилось при использовании простого подхода, тогда как сложный подход привел в итоге лишь к словам: «Да будет так! Аминь!», и, несомненно, заставляет задуматься, поскольку эта история несёт в себе и урок, и риск. Урок в том, что изощрённые доводы, содержащие столько шарма и столько презрения к непосвященным, приводят ко всякого рода бедам. Риск же в том, что успех простого средства, решившего однажды проблему без приложения каких-либо усилий, но к ясному пониманию реального действия которого так и не пришли, повторить, вероятно, в других случаях не удастся. Однако, имея перед глазами прецедент, мы испытываем соблазн положиться на это средство, если даже не делаем его догмой.
Инженеры в небольших компаниях привыкли работать в условиях дефицита почти всего, и главным образом времени. Каждый инженер со сколь- нибудь значительным опытом работы знаком с «дзэн»-состоянием глубокой задумчивой отрешённости, которое сопровождает самые продуктивные моменты. Это дни, когда вы сидите за своим рабочим столом, а программы и схемы волшебным образом появляются сами собой. Это чрезвычайно ценное время, но оно почти бесполезно расходуется, если вас отвлекают. (Чтобы почитать что-нибудь лёгкое на эту тему, обратитесь к информационному бюллетеню Джека Гэнсла (Jack Ganssle) Embedded Muse, № 53, за 23 октября 2000 года и особенно к цитируемым им источникам. Вы можете найти этот выпуск на www.ganssle.com/tem/tem53.pdf.) Именно в те моменты, когда вы сможете достичь этой вершины отрешённости, и будут созданы ваши наилучшие программы. Вне этих моментов вы всегда будете в состоянии спешки. Это может привести к невнимательности и (что менее деструктивно) к большому числу решений, которые, как сказано в приведённом отрывке, «когда-то решили проблему, но к ясному пониманию реального действия которых вы так и не пришли». Помните об этом, когда собираетесь выдать «магическое» решение, похожее на данное, и осознанно старайтесь преодолеть искушение. Повторное использование существующих наработок — ключ к повышению производительности, но повторно использовать «магические» решения очень тяжело.
Во многих небольших компаниях сотрудники работают в одном открытом всем взорам месте, без отдельных кабинетов. Поэтому вам, возможно, понадобится метод создания своего собственного жизненного пространства, т. е. понадобится сделать так, чтобы за работой вас ничто не отвлекало. Во времена рабочих кризисов, когда мне приходилось работать в подобных условиях, я приобрел хороший набор шумоизолирующих наушников и использовал их, чтобы слушать CD-диски с музыкой, способствующей релаксации. Моё внимание отвлекает прослушивание почти любой иной музыки, если я пытаюсь глубоко сконцентрироваться. Вы, возможно, смотрите на это по-другому. Смысл в том, чтобы как можно сильнее дистанцироваться от всей происходящей вокруг вас суеты, заменить её чем-нибудь ненавязчивым, чтобы вы могли сфокусироваться на имеющейся задаче.
Технологии, подобные этой, увеличат количество сделанного вами за время, оставшееся до назначенной даты передачи программного или аппаратного проекта заказчику, но всё же не приведут к действительному увеличению человеко-часов, чтобы помочь вам выполнить работу. Вы можете засиживаться на работе до позднего вечера или сидеть там все ночи напролёт, но я бы не советовал этого делать. Работая подобным образом, вы подвергаете свой организм гигантскому стрессу, и такие действия приведут к тому, что все остальные в компании буду считать, что вы именно тот парень, который при необходимости всегда останется на месте и будет работать ночами. Не стоит делать этого, даже если вам будут платить за переработку (а я уверен, что не будут). Если есть очень веский, кратковременный повод для работы допоздна, тогда, пожалуйста, оставайтесь и работайте (хотя я бы предложил вам предварительно сказать руководству, что вы бы хотели получить за переработанные часы один или два дополнительных выходных дня, когда кризис закончится). Очень веские поводы включают производственные проблемы, которые готовы потопить компанию, или конструктивные проблемы, которые ставят под вопрос безопасность эксплуатации уже поставленных устройств. Никакие менее значимые причины в этот список включать не стоит. Просто желание успеть к обещанному занимающимся сбытом сотрудником сроку поставки прибора не относится к числу достаточно важных причин, если только ожидающий поставки клиент не собирается аннулировать свой заказ, а убытки от потери заказа достаточно велики, чтобы серьёзно повлиять на жизнеспособность компании. Изнеможение от переработок — весьма реальная проблема, не позволяйте ей вас настигнуть.
Из-за постоянной нехватки времени, усиленной тем, что большинство сотрудников компании не занимаются инженерной работой и не понимают, что такое правильный процесс проектирования, в большинстве маленьких фирм мучительно трудно следовать жёсткому регламенту создания новых устройств. В результате этого, как мной указывалось ранее, легко докатиться до программ и схем, которые «просто работают», но не являются хорошо проработанными и понятыми. О последствиях этого говорит цитата, с которой я начал данный раздел. Если вы можете добиться ведения документированного, совместимого со стандартами процесса проектирования, то честь вам и хвала. Но вам всё же следует планировать вероятность «короткого замыкания» в цикле проектирования. Часто случается так, что у вас нет времени даже сделать макет схемы перед изготовлением её на производстве. Возможно, в таком случае вам придётся на первые прогоны макетных плат ставить техника, который будет методом проб и ошибок подбирать номиналы резисторов и конденсаторов, тогда как вы сами будете лихорадочно работать над кодом или другими аспектами аппаратной части. Такая мера, конечно, нисколько не увеличит скорость, а скорее создаст суету, но объяснить всё это руководству очень тяжело.
Работа в условиях ограниченных финансовых ресурсов также сильно влияет на то, какие решения инженеры закладывают в проект (в своей первой книге я вдавался в некоторые подробности на эту тему, возможно, вам было бы полезно её прочитать). Вот первый пришедший в голову пример. Вы, вероятно, будете предпочитать делать проекты на чипах в корпусах, пригодных для ручной пайки, чтобы собирать макет самостоятельно. Однако это закрывает дверь, ведущую к целому ряду микросхем, которые поставляются только в корпусах BGA и подобных им.
Ограниченность в ресурсах также заставляет блюсти экономию при приобретении инструментальных средств (как программных, так и аппаратных). Например, в течение уже нескольких лет среди программ САПР (CAD — Computer-Aided Design, программ компьютерного проектирования) я отдаю предпочтение пакету EAGLE компании Cadsoft (www.cadsoftusa.com). Это, несомненно, лучший сегодня по соотношению цена—качество пакет автоматизированного проектирования печатных плат. И это превосходный выбор для небольших компаний и частных предпринимателей, которые не хотят покупать ПО стоимостью в десятки тысяч долларов. Впрочем, файлы EAGLE не переносятся непосредственно в САПР, которые используются большинством контрактных и конструкторско-производственных фирм1’ в странах Азии (СМ — Contract Manufacturer и ODM — Original Design Manufacturer, соответственно). Это приводит к возможности появления ошибок при переводе в другие форматы, когда вы отправляете схемы заморским изготовителям, а также увеличивает время подготовки производства.
Заметьте, что, чем сложнее становится ваша целевая система, тем, при условии, что вы не нанимаете дополнительный инженерный персонал, менее выполнимой становится задача изготовления всех входящих в неё компонентов собственными силами компании. При разработке действительно сложного высокоскоростного устройства, приближающегося по сложности к настольному ПК, вы будете принуждены к фактической покупке ПК в качестве ядра проекта, так как у фирмы просто не будет достаточного количества ресурсов для разработки собственного решения. В менее сложных случаях вы будете останавливаться на различных промежуточных компромиссных решениях. Общее правило таково: чем сложнее ваша система, тем во всё большей степени она состоит из подсистем, являющихся «чёрными ящиками», которые были приобретены у сторонних поставщиков. В таком процессе «эволюции» в вашей системе неизбежно появление шероховатостей, поскольку интерфейсы между всеми этими компонентами не совпадают друг с другом в полной мере. Более того, ваши возможности менять поведение компонентов на низком [1]
уровне оказываются значительно ограниченными. Если вы приобрели чипсет беспроводной связи 802.1 lg и интегрировали его в свою собственную плату, то можете заставить его делать всё, что ему позволяют делать его электрические характеристики. Но если вы купили модуль и просто подключили его к существующей плате, то ограничены только теми функциями, которые предлагает встроенное ПО производителя данного модуля.
И наконец, по поводу ограниченных финансов. Вам следует понимать, что большинство поставщиков электронных компонентов не обращают особого внимания на небольшие компании (что вполне понятно)1’. Они с удовольствием нанесут вам визит, если вы позвоните и скажете, что хотите закупить их продукцию, но в любом случае вам не следует ожидать от них большой помощи, если только для этого нет каких-то особых обстоятельств. В качестве примера скажу следующее. Если вам настолько повезло, что вы задали вопрос о какой-то новой микросхеме, которая пока не получила широкого применения в практике проектирования, вы можете получить дополнительную специальную техническую поддержку от производителя чипа. При этом его интерес состоит в показе вашего устройства на выставках как демонстрации использования микросхемы в конструкции реального, продаваемого прибора. В обычной ситуации «звёзды» не будут оказывать вам помощь, поэтому придётся, по большому счёту, полагаться на помощь равных себе. Ваш друг здесь — Usenet. Но помните, что это разделяемый ресурс. Если вы используете его, чтобы задать вопросы, относящиеся к вашим проектам, то, пожалуйста, не забывайте «отдавать долги» сообществу, затрачивая своё время на чтение вопросов, задаваемых другими людьми, и написание ответов на них.
- [1] Контрактное производство (СМ — Contract Manufacturer) берёт ваши схемы и другиетехнические данные и изготавливает для вас продукт. Конструкторско-производственнаяфирма проектирует изделие по вашим спецификациям и ставит на него вашу торговуюмарку.