26 November 2014

Как я получил медаль от Армии за написание кода (перевод)

Programming
Translation
Original author: Vivin Paliath
Примечание от переводчика. В переводе давно не практиковался, поэтому буду рад любой критике. Сама статья заинтересовала именно приоткрытием тайны (для переводчика) на IT в американской армии.

Как я получил медаль от Армии за написание кода.
В 2005 году мое подразделение в Национальной гвардии было передислоцировано в Ирак, как участник операции «Иракская свобода». Мой армейский ВУС (военная учетная специальность) – 92А, что в основном означает логистику и специалиста по материальному обеспечению. Моя работа заключалась в заказе механических частей, их получении, возврат старых запчастей, обращение с опасными веществами, отправка/возврат (при. пер. – здесь не уверен) машин с заданий и обработка допусков на вождение (прим. пер. – не уверен, что это именно допуска, но печатать «права» мне кажется странным) Я делал еще и некоторые другие вещи, которые я уже не помню. В любом случае, в то время, сердцем этой системы была приспособа под названием ЮЛЛС-Г (Логистическая Система Подразделения — Сухопутная). Я говорю «в том время», так как сразу после нашего возвращения ЭЛСС-Г была заменена на САМС-Е (Стандартная Армейская Система Технического Обслуживания – Улучшенная), которая между прочим использовала Оракл в качестве серверной СУБД (прим. пер. — надеюсь правильно понял термин). В сравнении с САМС-Е, ЮЛЛС-Г был динозавром. Ко времени передислоцирования, я занимался ей уже в течение 4 лет. Ее использование практически причиняло боль. ЮЛЛС-Г была приложением под ДОС (точнее МС-ДОС) и большинство компьютеров на складах, на которых я работал, использовали только ДОС (это было примерно раннее 2000-ые и в этом не было ничего необычного). К тому моменту нашего передислоцирования, большинство компьютеров работало с Виндоус ХР/2К или что-то подобное и ЮЛЛС-Г можно было запустить в совместимости с МС-ДОС.

И так, как я упоминал раньше, ЮЛЛС-Г, было использовать сложно. Нельзя было по-настоящему использовать мышь, так как эта программа была написана под ДОС. Поэтому все взаимодействие строилось на клавиатуре. Я помню, что уже к концу операции «Иракская свобода», мне даже не приходилось смотреть на клавиатуру. Я запомнил все горячие клавиши и мог запросто набивать нужные вещи. Частично, то, что делало программу такой ужасной, было отсутствие пакетной функциональности любого рода. Например, если вам нужно вывести на печать допуск солдат на вождение в подразделении, то приходилось набирать и печатать каждый допуск отдельно один за другим. Окно допуска солдата загружалось через ввод его номера и зачем распечатывалось. В нашем подразделении было около 150 солдат, поэтому чтобы распечатать все допуска, мне приходилось находить каждого отдельно и печатать. Что еще касается допусков на вождение, то если вам нужно было добавить водительскую квалификацию, то и это тоже делалось для каждого отдельно. Но мы были подразделением, которое специализировалось на активных действиях в этой операции (солдаты были набраны из 4 дивизионов 1 батальона 180 батальона полевой артиллерии, чтобы сформировать штабную батарею 1 батальона 180 полка (при. пер. – не уверен, что 180 именно батальон, исправил спасибо за комент)). Что означает, что в нашем ЮЛЛС-Г не было информации о водительских квалификациях солдат. Поэтому сперва я должен был вручную ввести водительские квалификации и затем распечатать допуска. Что занимало у меня значительную часть часа, для набивки всем 150-ти солдат. До того, как нас отправили, мы прошли предмобилизационную подготовку в Форт Льюисе, штат Вашингтон. Там было много учебных машин (Хаммеры модификации М-1114, 5-ти тонный, 2,5 тонный и т.д.), которым должны были овладеть наши солдаты. Обучение было распределено по часам и после каждой тренировочной миссии я должен был добавлять квалификации и перепечатывать допуска.

Не стоит говорить, как я был раздражен из-за этого. (исправлена орфография спасибо horlon) Мне даже было сказано, что как только мы окажемся где надо, то количество квалификаций на машины вырастет еще больше и это означало, что мне придется добавлять все это и печатать допуска снова. Как программист, я всегда ищу пути, которые сделают мою работу проще. Я не хотел сидеть набивать квалификации и печатать допуска каждый раз отдельно. Я был слишком ленив для этого, и что еще хуже, вся эта система была неэффективной. Поэтому я решил придумать, как автоматизировать этот процесс. Первой вещью, которую я попытался сделать, было разобраться в формате файлов базы данных ЮЛЛС-Г. Я не смог сделать этого, к несчастью и главным образом потому, что у меня было мало времени (что является нормой при обучении военнослужащих). Но затем, по довольно-таки счастливому стечению обстоятельств. я наткнулся на вкладку, в которой кто-то указал ODBC драйвер (прим. пер. – исправил с ОДБС, спасибо за комент) для ЮЛЛС-Г. Это означало, что я мог запускать SQL запросы к базе данных ЮЛЛС-Г. Вооружившись этим, я начал писать Perl скрипты к запросам данных. К этому времени мы достигли Ирака, у меня был рабочий скрипт, который создавал допуска в виде текстовых файлов на всех солдат. Скрипт работал всего 1-2 сек. и самой длительной частью процесса было просто распечатать допуска. Но мне этого было мало. Я все еще был раздражен тем, что мне приходилось добавлять водительские квалификации вручную. Поэтому я написал еще один скрипт, который запускался и добавлял квалификации к водителям en masse (прим. пер. – оставил оригинальный текст, так как надеюсь он понятен без перевода, тем не менее означает «скопом, в массовом порядке»). У скрипта даже был настроечный файл, где можно было указать какие квалификации вы хотите добавить и кому.

Когда мы уже окончательно прибыли в расположение нашего подразделения, мне пришлось снова распечатать всем допуска. Я все еще помню, как мой сержант автомобильной службы был в замешательстве, когда я появился через 20 мин. с еще теплой стопкой допусков, совсем свежих из принтера. «Разве это не занимало у тебя чуть больше времени?» — спросил он. Я начал говорить о скрипте, но он развернул меня после 3-4 слов о Perl, SQL и ODBC соединениях, кивнул и отнес допуска в ТОС (Центр Боевых Операций). С одной стороны это было хорошо, что он не задавал слишком много вопросов, так как то, что я делал, было запрещено. Только сертифицированные специалисты (для этого есть отдельный ВУС) допускались к вмешательству в установочные файлы ЮЛЛС-Г, а я не был технически подготовлен, по крайне мере в глазах Армии.

После нашего прибытия в страну, я обнаружил к тому же, что нам придется отправлять ежедневные донесения в наш центр боевых операций (который потом отправлял их в батальон). Донесения содержали в себе состояние наших машин (подлежали ли они ремонту или все нормально) и разная другая информация. Практически все другие подразделения впечатывали эту информацию вручную в экселевские таблицы, затем печатали и отвозили их в TOC. В результате, всегда оставалось место для ошибок. Каждое утро я должен был тратить по 20-30 мин. на исправление донесений и убеждаться, что они на текущее число, до того как я распечатывал их и отправлял в TOC. Я помню, как пару раз даже кричал с досады от того, что данные были неправильными, после чего я был вдвойне аккуратнее. Я снова стал раздражаться. Должен быть лучший способ для этого, и он был. Ексель может делать ODBC соединения (прим. пер. – не уверен в правильности понимания процесса) зарегистрированные в Виндоус и я уже зарегистрировал одно из них для моих Perl скриптов в ЮЛЛС-Г. Поэтому я просто использовал тоже соединение с помощью изящного макроса Экселя, которое заполняло все поля в нашей таблице. Выглядело это аккуратно. Скрипт (прим. пер. – или макрос?) автоматически обновлял данные по машинам требующим ремонта и еще включал дополнительную информацию, которую другие подразделения не сообщали, такую как состояние обслуживание всех машин и их километраж. Информация о состоянии обслуживания была особенно полезна для ежедневной работы, так как до этого нам приходилось вручную отыскивать ее после возвращения машины с выезда. Теперь же мне просто нужно было найти ее в таблице и сразу понятно, какая машина требовала обслуживания.

С точки зрения программирования, то, что я сделал, не было чем-то из разряда вон. Я просто придумал способ, как вытащить информацию из баз данных ЮЛЛС-Г. Но мое начальство было очень впечатленно, особенно командир отделения и сержант автомобильной службы. После 2-3 месяцев нашего нахождения в стране, у нас появился новый начальник автомобильной службы батальона (старший уорент-офицер 2 класса Ли, если я правильно помню (прим. пер. – примерно соответствует прапорщику в МО РФ)). Его очень заинтересовало то, что я сделал. Однажды я показал ему демку, он посмотрел на меня и сказал: «Ты же знаешь, что тебе нельзя было этого делать, правильно?». Сперва я был испуган и я попал в серьезные неприятности, но он улыбнулся. Он сказал мне, что он не против, так как кажется, я знал, что делал, и в конечном результате я помогал моему подразделению быть эффективным и улучшать точность донесений.

Прошло несколько месяцев и нам оставалось один или два месяца до отправки из Ирака. Мои скрипты и макросы работали, с небольшими отклонениями, и там и тут. К концу срока у нас была церемония награждения. Капитан и первый сержант прибыли в автопарк, чтобы вручить награды. Я был довольно-таки удивлен, когда меня назвали, ведь я не ожидал этого (моя работа главным образом держала меня на базе. Я хорошо делал свою работу, думал я, но я не думал, что она достойна награды. Существует не так много путей, чтобы и правда отличиться в материальном обеспечении и логистике.) После вручения мне «Благодарственной медали за службу в сухопутных войсках» (Army Commendation Medal) оба, он и первый сержант пожали мне руку и поздравили меня. Я думал, что это ничем не выдающаяся награда «за хорошую службу», до того, как посмотрел в наградной лист. Когда я прочитал, я увидел, что командир моего отделения, старший сержант Лопес, включил меня в наградной лист, основываясь на той работе, что я сделал с Perl скриптами и экселевскими макросами. Я был удивлен и в восторге. И хотя я не сделал ничего такого, чтобы заслужить ее, приятно осознавать, что твоя работа признается.

Вот такая моя история о том, как я получил медаль от Армии за написании кода.

П.С. Плюс и минус не всегда отражаются реальную картинку оценки статьи. Поэтому хотелось бы использовать инструмент опроса. Спасибо всем участникам
Tags:переводIT-в армии
Hubs: Programming
0
5.3k 11
Comments 11