[Учебный процесс в IT] История о том, как один подросток сбежал от физического труда в программирование (перевод)

Автор Сообщение
news_bot ®

Стаж: 6 лет 9 месяцев
Сообщений: 27286

Создавать темы news_bot ® написал(а)
27-Май-2021 09:31

Летом 1982 года буквально за несколько месяцев до моего поступления в колледж мать отвела меня в сторонку и сказала: «Отец хочет, чтобы ты нашел на лето работу и сам оплачивал свои расходы в учебном году». Мне было восемнадцать лет, я нигде еще не успел поработать, и даже сама мысль об этом, честно сказать, меня тогда немного пугала. Я был ботаном-домоседом, ну и, чего греха таить, довольно ленивым – перспектива работы меня совсем не прельщала. Но я понимал, что спорить тут бесполезно, потому что в чем-то был согласен с позицией отца.
Он всю жизнь, начиная с возраста помоложе моих восемнадцати лет, вкалывал автомехаником. С колледжем у него не сложилось, но, к счастью, против моей учебы он ничего не имел и готов был оплатить ее из денег, которые мы получили за бабушкин дом после ее смерти. Так что в этом плане мне повезло – я мог получить высшее образование, практически ничего не вкладывая. Но какое-то финансовое участие с моей стороны все-таки предполагалось. Сам отец на эти темы со мной не разговаривал, действовал через мать, но я понимал, что дело серьезное, и он будет очень разочарован, если я что-нибудь не организую.
Мать всегда была готова помочь: она нашла несколько вакансий в нашем городке, среди которых была одна в дорожном управлении. Туда-то я и направился робкими шагами на собеседование одним июньским утром. В громадном здании со множеством грузовиков и кучами песка мне навстречу вышел крепкий парень в оранжевом жилете. Он скептически оглядел меня с ног до головы. Я был долговязым и прыщеватым подростком; слово «ботан» тогда еще не вошло в обиход, но я выглядел его живым воплощением. Едва ли не первыми словами, которые я от него услышал после этого осмотра, было (ей-богу, не вру):
— Ты же в курсе, что работа связана с физическим трудом?
— Конечно, конечно, — ответил я, стараясь звучать поубедительнее. По-моему, он не поверил, но только пожал плечами и сказал:
— Ну ладно. Когда выходишь?
Вот тут-то меня и охватила паника. Сказать по правде, я до этого как-то всерьез не задумывался о том, что мне предстоит физический труд. Ну, то есть на каком-то абстрактном уровне я это понимал, конечно. Но теперь я живо себе представил долгие часы под палящим солнцем возле грузовика, горячий асфальт, который нужно разбрасывать лопатой, машины, проносящиеся мимо в сантиметрах от меня. И хотя ничего лучше в плане честного труда, который закаляет характер, для подростка было не придумать, заниматься этим мне совершенно не хотелось.
Я понимал, что мне рано или поздно придется где-то работать, и ничего особенно приятного от этого ждать не приходится. Работа есть работа, за нее платят, иногда она действует на нервы. Мне тогда даже близко в голову не приходило, что те ботанские штуки, которыми я занимаюсь забавы ради, помогут мне откосить от физического труда практически на всю жизнь. Но твердое решение откосить от этой конкретной работы пришло ко мне уже там, в гараже на трассе.
Я сказал парню в оранжевом жилете, что схожу домой узнаю, «когда мы едем отдыхать», а потом сообщу ему дату (спойлер: больше я туда не возвращался) и умотал из владений дорожного управления на высшей скорости. Когда мать спросила, взяли ли меня на работу, мне не хватило духу соврать. Я сказал, что взяли, но я не пошел, и попытался объяснить почему, чувствуя себя пристыженным. Уверен, она была недовольна, но отчасти меня поняла. Последнее, что она сказала на этот счет: «Не говори отцу».

Говорить я не стал, но все-таки чувствовал, что обязан найти какую-нибудь другую работу, только не такую работообразную. Я поехал в городской университет и попытался устроиться кем-нибудь там – продавцом в местный компьютерный магазин или, может быть, лаборантом на технический факультет. Я там не учился и не планировал поступать, так что шансы, на самом деле, были нулевые – все подобные вакансии оказались уже расхватаны студентами. Но я старался: заставлял себя разговаривать с людьми, пробовал разные варианты, пусть и не особенно реалистичные – думаю, родители, по крайней мере, оценили мои усилия. Спустя две недели поисков результата так и не появилось, и я уже стал подумывать, что совершил серьезную ошибку, отказавшись от места дорожного работника.
Как-то раз мать принесла с работы интересную наводку. Она работала на радиостанции, составляла график рекламных объявлений. Один из спонсоров жил в нашем городе и занимался ремонтом и перепродажей подержанных автомобилей. У него что-то не заладилось с компьютером, и он спросил на станции, нет ли здесь «специалистов по компьютерам». Мать взяла его телефон и передала мне. Я позвонил.
Внесу ясность: хотя последние четыре-пять лет я хватался за всякую представляющуюся возможность усесться за компьютер, к специалистам я не относился. Благодаря программе, позволявшей старшеклассникам учиться программированию, я прошел несколько вузовских курсов по Фортрану и структурам данных, обгоняя учебную программу. Также я более-менее научился писать на BASIC в результате многочасовых попыток делать игры на соседском TRS-80. Но в моих знаниях по программированию было, мягко говоря, много пробелов. Я никогда не писал масштабных и сложных программ, не работал с чужими и вообще не занимался программированием в рабочей обстановке.
В мою пользу работало то, что, наверное, можно назвать хакерским складом – я не испытывал страха перед компьютерами и незнакомыми вещами, мне нравилось открывать для себя новое, учиться через эксперименты и что-то соображать на лету.
В своем разговоре с владельцем автомастерской (назовем его Джимом) я предложил такие условия: я посмотрю на компьютер, но плату возьму, только если сумею его починить. Джим был всячески согласен – он, похоже, уже неоднократно обращался к другим людям и выкладывал деньги без какого-либо результата.

Примерный портрет Джима (возможны расхождения с оригиналом)
Я приехал в мастерскую и познакомился с Джимом, который почти полностью соответствовал всеобщему представлению о владельцах бизнеса по ремонту и перепродаже подержанных машин: дружелюбный, оборотистый, но при этом движимый несколько нездоровым интересом к зарабатыванию денег. Он сколотил, пожалуй, крупнейший бизнес по продаже машин в окрестностях, который, не будучи салоном, вдобавок обслуживал машины, грузовики и трейлеры. У него была широкая деятельность и еще более обширные амбиции. Я бы с удовольствием продолжил: Джим был интересным персонажем, неординарным и тенденциозным, и часто попадал в разные переделки. Но вернемся к нашей истории.
Компьютерные проблемы Джима брали начало из сделки с калифорнийскими разработчиками, которую он заключил раннее – он заказал систему для ведения бизнеса. Компания была очень маленькой, буквально пара человек. Они продали ему 16-разрядный мини-компьютер Data General Eclipse с несколькими терминалами, а также сделали специальную программу для обработки заказов на ремонт, платежей и зарплатных ведомостей.
В какой-то момент отношения между Джимом и подрядчиком стали портиться. Подрядчик перестал дорабатывать систему и начал требовать слишком много денег, на вкус Джима, за то, чтобы исправлять баги, которые стали сильно портить жизнь сотрудникам офиса. Всех подробностей я не знаю, но дошло до того, что они вообще перестали разговаривать друг с другом, так что Джим фактически остался с продуктом, лишенным поддержки, на руках. Он обратился к местным программистам – выяснилось, что программа зашифрована. Тут оговорюсь для точности: следовало бы сказать, что программа была защищена, а не зашифрована, но итог все равно один – никто не мог добраться до исходного кода и что-то в нем исправить.
Я зашел в систему, потыкался в ней и понял, что у аккаунта, который мне выделили, ограниченные права. Я подошел к Джиму сказать, что мне нужно больше доступа, и он тут же впечатлился. Он, как оказалось, специально дал мне аккаунт без прав, чтобы посмотреть, замечу ли я. Это типа у него проверка была такая, и я ее прошел. В глубине души я закатил глаза, потому что проблемы там явно были посерьёзнее, чем уровень доступа.
А именно. Все системные файлы, которые что-то делали, были написаны на BASIC – отлично, благодаря долгим годам корпения над играми для TRS-80 я неплохо знал BASIC. Но, если открыть какой-нибудь из этих файлов, он оказывался пустым. Программа есть, а в редакторе кода ничего не отображается. Судя по размеру файлов – я проверил в директории, где они находились – содержимое в них было. Но их как-то сделали недоступными для просмотра.
Если бы у меня были компьютеры получше в годы юности, я бы, наверное, сразу встал и ушел без малейшего понятия, что с этим делать. Но я много времени провел за допотопными или просто примитивными машинами вроде мини-компьютера PDP-8/E производства Digital 1974 года, который стоял в школе, или моего личного инструктора по микрокомпьютеру Netronics ELF II, где для ввода-вывода служили клавиатура с шестнадцатеричными кодами и лампочки. Поэтому я кое-что знал о машинном коде, форматах файлов, заголовках, системных утилитах – всяких низкоуровневых вещах. По крайней мере, об их существовании.
И я подумал: наверное, с этими файлами что-то сделали, раз они не читаются, может быть, дело в заголовках? Я нашел в системе hex-редактор, с помощью которого можно было отображать и редактировать содержимое файлов в сыром виде, включая заголовки. Программа вывела содержимое файла в виде набора шестнадцатеричных чисел, аккуратно оформленных в табличку, а также символов, которые они представляли.

В редакторе определенно отображался исходный код на BASIC для всех программ. Он реально существовал, никакой шифровки не было. Это было первым наблюдением, которое меня обнадежило – значит, моя теория могла оказаться верной. Возможно, найдется какой-то способ перетянуть этот код из старых файлов в свежие, которые будут нормально открываться.
Джим крутился рядом, явно умирая от любопытства, но – нужно отдать ему должное – особенно не вмешивался. Уверен, для него всё выглядело, как будто я знаю, что делаю, потому что всякие цифры и таблицы так и летали по экрану. В реальности я действовал наобум, пытаясь нащупать решение и исправить файлы.
Я создал «нормальный» файл на BASIC и изучил его в hex-редакторе. Потом сравнил с «корявыми». Само содержимое, разумеется, отличалось, но у заголовков, в которых содержалась информация о файлах (название, расположение, размер, защита), формат был похожим. Так как эти фрагменты хорошо накладывались друг на друга, я решил, что можно кое-что извлечь из сопоставления.
В заголовках выделялось несколько непонятных мне областей, в которых обнаруживались различия между «нормальными» и «корявыми» файлами. Я стал просто вслепую экспериментировать с кодом, меняя некоторые символы в «корявых» файлах. Первые несколько попыток привели только к повреждениям файла, из-за которых он переставал даже открываться. Но потом я дошел до одного места, где в «нормальных» файлах стоял символ E, а в «корявых» – символ F (E в шестнадцатеричной системе исчисления соотносится с 1110 в двоичной, а F – с 1111). 1110 против 1111, разница всего-то в один бит. И я просто взял и заменил в «корявом» файле F на E.
Как по волшебству, на экране появился код на BASIC. Я был потрясен. Защита, которую подрядчик оставил для своих файлов, сводилась к банальной замене одного символа в каждом из заголовков, чтобы файлы запускались, но не читались. Можно сравнить с замочком, которые некоторые надевают на чемодан – может немного помешать, но того, кто твердо намерен добраться до содержимого, не остановит.
У меня колотилось сердце: казалось все более и более реальным, что я сумею решить проблему Джима. И, самое-то главное, смогу подкрепить слово делом, или как там говорят? На тот момент я провел в офисе примерно час, еще около сорока пяти минут понадобилось, чтобы перебрать все файлы и везде заменить символы. Сейчас я бы, наверное, попытался сделать какой-то скрипт, который бы все это провернул автоматически, потому что программисты не зря слывут лентяями. Но подобные вещи оставались за пределами моих возможностей в восемнадцатилетнем возрасте, да и не факт, что Data General Eclipse так уж хорошо подходил для создания скриптов, насчет этого не поручусь.
В конечном счете, мне потребовалось чуть меньше двух часов, чтобы снять все защиты. Когда Джим увидел, что я починил файлы, он был изумлен и обрадован (именно в этом порядке). Он радостно попросил меня исправить еще один баг в форме ввода, который очень докучал его бухгалтеру – там никак не удавалось заполнить одно поле. Баг оказался простым, полминуты на поиск, полминуты на исправление. Но для них это значило, что не придется теперь тратить целые часы лишнего времени, заполняя формы вручную, потому что не получается на компьютере.
Когда я справился с задачей меньше чем за минуту, Джим был совсем сражён. С этого момента я стал в его глазах компьютерным гением. Он только посмотрел на меня и сказал:
— Сколько просишь?
Этот вопрос возглавил бы список самых страшных вещей, которые у меня спрашивали, если бы не «Когда выходишь?», который я услышал парой недель раньше от работника дорожного управления. А так он занял почетное второе место. Ведь мне, восемнадцатилетнему подростку, который нигде никогда не работал, никогда в руках зарплаты не держал и сбежал с единственного в своей жизни собеседования, предлагалось самому решить, сколько денег мне причитается. На финансовой стороне вопроса я как-то не сосредоточивался. Когда входил в офис, еще думал о том, что, может быть, удастся получить здесь работу, но потом всё внимание поглотила техническая задача.
Какую же цифру назвать? Я понятия не имел. Не знал, сколько в принципе берут программисты, что такое «консультант» и как оценивать свое время. Мне не хотелось обижать Джима заоблачными запросами, но и в дураках остаться тоже не хотелось. Поэтому я выбрал сумму, которая лично мне казалась кругленькой, но Джима вряд ли бы разорила – сто долларов.
Услышав мой ответ, Джим расплылся в улыбке. Это была улыбка человека, которого после томительного ожидания вытащили из петли и отпустили на свободу. Ну или можно сказать, улыбка человека, который только что провернул хорошую сделку. Джим бросил взгляд на бухгалтера и сказал:
— Выпиши Неду чек на сто долларов.
Потом он сообщил мне, что у его еще много таких задач, если мне случаем нужна работа — систему еще дорабатывать и дорабатывать. Он предложил мне четыреста долларов в неделю в течение лета, чтобы я приходил исправлять ошибки и писать новые программы, которых ему не хватает.
Так что я ушел от него с сотней долларов и работой на лето в кармане. Родители были счастливы, да и я тоже. Я отработал у Джима и то лето, и следующее, денег мне хватило и на жизнь, и на учебные расходы, да еще осталось, чтобы купить свой первый «настоящий» компьютер – Commodore VIC-20. Я неплохо заработал, делая то, что мне нравится.
Какое-то время меня преследовало чувство, что я прогадал в этой своей первой сделке с Джимом. Было ясно, что на тот момент я диктовал условия и мог спокойно взять с него и побольше, чем сотню. Он бы заплатил, и, наверное, это было бы справедливо – ведь никто, кроме меня, не смог справиться с проблемой. Вообще-то, до этого он отдавал программистам и более значительные суммы за работу, даже безрезультатную. И я спрашивал себя: сколько еще денег я мог бы унести домой в тот день? Возможно, я показал этим свой непрофессионализм?
Время все расставляет по своим местам. Вспоминая эту историю сейчас, я осознаю, что в те времена минимальная зарплата составляла чуть меньше четырёх долларов в час. То есть за эту сотню мне пришлось бы двадцать пять часов раскидывать асфальт с дорожными рабочими – а вообще-то, больше, учитывая, что Джим в своем фирменном стиле рассчитался со мной за всё это предприятие «в конверте». А в итоге я получил работу, где мне платили, наверное, около двадцати долларов в час, потому что за свои четыреста долларов мне приходилось отрабатывать не больше половины рабочей недели. И при этом я занимался тем, что и по сей день не воспринимаю как «работу» в том смысле, который вкладывал в это слово мой отец. В общем, не такая уж невыгодная сделка.
Джим тоже в накладе не остался: он заполучил способного программиста по сниженной цене, а позже обкатал эту схему и стал нанимать других студентов для работы над системой. Но теперь я уже смотрю на это всё не с позиции «кто кого ободрал». В конечном итоге, сотрудничество было взаимовыгодным.
На той работе творилось много всякой ерунды, еще бы на одну статью хватило как минимум – вспомнить хотя бы, как жена Джима решила свести меня с их дочкой-подростком или как я катал Джима на новенькой машине модели Thunderbird Turbo Coupe предположительно по делам, но как оказалось потом – по барам. Но это подождет.
Вообще-то статья замышлялась как руководство по откосу от серьезной работы для подростков, но я не могу сообразить, какой совет дать исходя из личного опыта. В голову лезут только всякие банальности в духе «Занимайтесь тем, что вас увлекает, а деньги придут потом» или «Найдите работу, которую любите, и вам не придется работать ни дня». В моем случае в этих расхожих фразах нашлось зерно истины. А так могу добавить только одно: если идете на собеседование, сразу придумайте запасной план на случай, если вам начнут задавать страшные вопросы вроде «Когда выходишь?».
===========
Источник:
habr.com
===========

===========
Автор оригинала: Mad Ned
===========
Похожие новости: Теги для поиска: #_uchebnyj_protsess_v_it (Учебный процесс в IT), #_put_programmista (путь программиста), #_nachalo_karery (начало карьеры), #_blog_kompanii_productivity_inside (
Блог компании Productivity Inside
)
, #_uchebnyj_protsess_v_it (
Учебный процесс в IT
)
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 22-Ноя 23:14
Часовой пояс: UTC + 5