?

Log in

No account? Create an account
 
 
16 March 2010 @ 02:18 pm
Записки программиста: мои перемены работы - 3  

Следующей моей работой была небольшая компания в Нью Хемпшире, производящая широкополосные
радары, предназначенные для поиска под землей.
Особенностью работы здесь был самый низкий уровень квалификации программистов (которых, впрочем,
было на тот момент два - без меня, оба русских; остальные в компании были не русские). Причем, это не был, как бы это сказать,
их врожденный их дефект: Просто их этому не учили - собственно, вообще программированию не учили.

Именно здесь я подразнил своего начальника, который с апломбом говорил, что важные программы
нужно писать на ассемблере, ради эффективности. Я уже упоминал об этом: однажды я, по его запросу, переписал
его ассемблерную программу на С, ускорив ее в несколько раз. Причем я это не афишировал и он заметил не сразу -
так что требовать переписать ее на ассемблере уже было поздно.

Он же потребовал позже, чтобы я использовал Hungarian Notation - с этого начилась наша, в некотором роде, вражда
которая привела потом к тому, что я ушел оттуда. А, впрочем, всерьез - не с этого, а еще позже, с того, что я однажды пожаловался его
боссу, что он кричит на меня (он действительно непристойно кричал - он пару дней до того спросил меня, не могу ли я
что-то быстро - за пару дней сделать. Я сказал, что, наверное смогу, но - буквально в пару дней не уложился).
После этого он стал разговарить со мной по английски - мне это было скорее смешно, чем обидно.

Такого ужаса в написанном коде я видел в своей жизни немного. Первой моей задачей было исправить программе, пересылающие
данные между компьютером и радаром (по-существу, между компьютерами). Это был код, напрямую работающий с регистрами
параллельного и/или последовательного порта. И там было такое! Я думаю, что этот код был скопирован откуда-то, где он
был с ошибками и, затем, его пытались наугад починить, вставляя наугад задержки!
Это при том, что описания этих портов были в то время широко доступны (даже, по русски) и состояли, каждое, из примерно 1/2
страницы!

Самая главная компонента безграмотности такого подхода состояла, мне кажется, в вере в то, что программа должна всегда
повторять себя (на самом деле это справедливо только для корректных програм, и то, с некоторыми ограничениями). Отсюда -
вера в метод "тыка": если "случайным" исправлением удалось ее заставить проработать один раз, то уже хорошо!

Затем в другом коде - полная мешанина функциональностей. Скажем, модуль называющийся драйвером магнитной ленты
содержал кроме низкоуровневых команд работы с лентой элементы синтатического разбора заголовков содержащий весьма
проблемно-ориентированные параметры! Идея, что модули должны быть функционально замкнуты (coherence), равно как
и то, что любово вида зависимости между модулями должны быть минимальны (loose coupling) здесь были совершенно
незнакомы.
Ладно бы, один громадный монолит - такое я видел не раз в раннем программном обеспечении. Но здесь были модули, с правдоподобными
функциональными именами, а внутри - полная мешанина!!!

Проработал я там что-то около 7 лет, и занемог. И отношения с начальником (кстати, способным человеком, но не желавшим учиться и
непрерывно старающийся всем показать, что он самый умный и умелый. И просто - скучно стало. Сделал значительную часть
интересного проекта - разновиднось задачи томографии, но заинтересованный в ней VP ушел (похоже, его ушли). И - стало никому не нужно.
И - меня насильно заставили взять большой отпуск из-за накопившехся отпускных дней. Я очень вяло стал искать работу и
к концу отпуска имел два офера, очень неплохих.

Надо сказать, что каждая работа приносила мне некоторую пользу. Если №1 помогла мне в начальной адаптации к новой среде
и там я выучил С++, то здесь я приобрел опыт embedded программирования, да и еще, как и всюду, сделал несколько интересных
проектов - на таком всегда учишься. Плюс: час дороги в каждую сторону: я слушал радио и за несколько лет научился понимать
практически все. И - наверное - практика вождения машины...