Пожалуйста, прочтите первую часть этой статьи, если вы ее еще не читали ( https://medium.com/@optimiseordie/so-you-work-in-it-then-do- you-fb59ee93d098 )

Я был очень удивлен интересом к моей первой статье, поэтому благодарю вас за все отличные отзывы - они просто подтолкнули меня к написанию остальной части этой серии, так что продолжайте в том же духе, пожалуйста!

Я имею в виду, Симо Ахава (Симо чертов Ахава!) Написал в Твиттере МОЮ статью и сказал что-то действительно хорошее. Над луной, пыхтел, доволен, что это нашло отклик. (D) - Все вышеперечисленное. Как видно на фото ниже.

Лучшая обратная связь, которую я получаю, - это когда люди читают и находят что-то полезное в моих словах, аналогиях, объяснениях и извлеченных уроках. Когда они применяют эти вещи и рассказывают мне, что произошло дальше, я обнаружил, что это вершина любой работы.

Не презентация, слайды, не аплодисменты в конце, а когда люди идут домой, возвращаются на работу и занимаются чем-то другим завтра, на следующей неделе и навсегда после этого. Это лучший отзыв, который вы можете получить.

Итак, теперь, скорее, мы обратимся к Уроку № 3, который посвящен «свободе учиться». Это, вероятно, самый важный фактор в достижении удовлетворения и мастерства в вашей работе, так что терпите меня. Я объясню это на протяжении всей моей карьеры, чтобы вы могли уловить сигналы.

Одним из моих первых компьютеров был прекрасный клон Tandy TRS-80, названный Dragon 32. Компьютерная реклама была, пожалуй, даже более откровенно и снисходительно сексистской, чем сегодня:

Это был не тот компьютер, который мне действительно нужен (модель B BBC со всем дополнительным оборудованием было бы неплохо), но эта модель * была * скорее волшебным в рамках бюджета моего отца, когда была полностью забита однажды вечером в пабе и купил его по дороге домой, что удивило нас обоих. Я поднимаю бокал с благодарностью мистеру Джонни Уокеру!

Я оценил этот компьютер и проверил его возможности. Я обнаружил новые графические режимы и прочее, что было недокументировано. Я разобрал все купленные игры и модифицировал их. Больше обучения методом проб и ошибок, а не целенаправленным, но это сработало. Что более важно, я понял, что есть способ расширить базовый язык (БЕЙСИК), с которым был затруднен компьютер. Я мог перехватить собственное прерывание и начать взламывать основное оборудование. Это было похоже на открытие двери в новый мир ...

Так что для меня это было хакерским прозрением - я действительно мог отказаться от операционной системы, поставляемой потребителем, и создать новую. Небольшая проблема - как я собирался написать ассемблер 6809? Вы не могли купить программу на ассемблере для этого компьютера - ее еще никто не написал. Его просто не существовало.

Придется сделать свое собственное. Вот дерьмо. Я понимал интерпретирующие языки, но программирование на голом железе казалось мне каким-то непостижимым, невозможным, чего я даже не мог понять или прочитать, не говоря уже о взломе. Мне нужно было создать программу, чтобы что-то сделать, без того самого элемента, который мне требовался для создания этой программы. Ха-ха! Рекурсия! Кстати, несколько лет спустя системный программист, работавший в Эдинбургском университете, объяснил инструменты, используемые для переноса системного программного обеспечения (ОС и платформенного оборудования) между различными наборами микросхем. В то время ничего подобного тоже не было. Я был сам по себе - создавай или сдавайся.

В то время не было интернета, но благодаря моей матери, разжигающей мой интерес к чтению, я использовал свою местную библиотеку (ах! Запомните их!), Чтобы заказывать и исходить из книг по кодированию для процессоров 68000, 6809 и одного удобного руководства под названием «Создайте свой собственный 68000 Macro Assembler ».

В те дни приходилось ждать недели, а иногда и месяцы, чтобы книги пришли по почте в вашу местную библиотеку. Для некоторых из них был вроде как список приоритетов, так что вашу книгу много раз просматривали, прежде чем она пришла. Я почти каждый день заглядывал в библиотеку и с нетерпением ждал этих фолиантов. Когда один приходил, я начинал читать еще до того, как возвращался домой, идеи уже сыпались со страниц. Поскольку информации у меня было так мало, я с жадностью просматривал каждую страницу и перечитывал их несколько раз.

Обладая выигрышной комбинацией социальной неспособности, обсессивно-компульсивного программирования, плохой личной гигиены и несуществующих навыков взаимодействия, я мог потратить почти все свое время на выяснение этих вещей. Я начал все ночные сеансы кодирования, записывать свои набеги на кассету и строить что-нибудь, что угодно. Код. Сохранять. Код. Сохранять. Повторение.

Мой отец часто останавливался на ночь напоследок и заглядывал в мою комнату. Он проверил, что я не провожу сеанс всю ночь, посмотрев на стеклянную панель над дверью моей спальни, чтобы убедиться, что я уже сплю. Вскоре я сделал картонную вставку и ручку, которые плотно прилегали к стеклянному окну, благодаря чему оно выглядело совершенно темным, когда он проверял. Я поместил это в начале сеанса кодирования, а потом удалил. Блаженство. Никаких перерывов.

Не было ни github, ни журналов по программированию для этого материала, ни коммерческого программного обеспечения, поэтому, используя три книги, я понял, что могу перенести 68000 Macro Assembler с одного набора микросхем на другой.

Это заняло около 6 недель работы, мой компьютер разбился сотни раз методом проб и ошибок, пока я не понял, как сопоставить 68000 - ›6809 инструкций. Несколько раз я чуть не сдавался, но в конце концов у меня появился стабильный макроассемблер. Я реализовал свой первый интерпретатор. Когда у меня появился собственный редактор, я мог писать на ассемблере без использования шестнадцатеричного или двоичного кода!

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

Эта любовь к оборудованию сохранялась на протяжении всей моей карьеры, и я горжусь тем, что я подарил своей дочери ее первый четырехъядерный ноутбук в 8 лет, а в 12 лет она собрала свой первый компьютер из голых частей, пока я смотрел. Моя любовь к оборудованию явно присуща семье ;-)

Годы программирования

1986–89 годы были моим самым интенсивным периодом программирования.

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

Для тех, кто достаточно взрослый, чтобы помнить, я использовал Mac, ПК и какое-то гибридное оборудование, а также несколько языков. Dbase, Foxpro, Turbo Pascal, Assembler, Basic, Pick - смесь низкого и высокого уровня. Однако это была не самая интересная часть того периода. Это был бизнес, в котором я работал.

Я построил систему для небольшой компании по автомобильным грузоперевозкам в сельской местности Кентиша, разработал систему управления запасами для сети женской одежды, придумал, как создавать школьные расписания и систему отображения лидеров в клубе гольфа. Я обнаружил, что все они уникальны и неповторимы, от магазинчиков на углу до приличных предприятий.

Система клюшек для гольфа дала массу удовольствия, потому что мне пришлось написать язык разметки для отображения рекламы, чередующейся с отображением таблицы лидеров. Мы установили сеть телевизионных мониторов вокруг гольф-клуба, и язык разметки работал отлично. Вот как выглядел язык разметки:

Эй, я изобрел ‹warp› ‹/warp› раньше всех, верно? Если вы действительно хотите знать, он менял цвета радуги для любого шрифта или графики. Вызывает рвоту, но весело.

Это был 1984 год, и я невольно обнаружил поразительное сходство с HTML. Я использовал язык разметки для показа рекламы в таблице лидеров по гольфу, а также в витрине магазина в Глазго - потому что людям было легче редактировать разметку, чем заставлять меня каждый раз редактировать код. Тогда я даже попал в журнал:

За это время я узнал о многих разных людях, компаниях и конкретных проблемах, которые они пытались решить. Я задавал много надоедливых вопросов. Я нашел все это одновременно увлекательным и очень трудным для понимания.

Я начал понимать, что написание кода - это не обо мне, а об их проблемах и о том, как я могу их решить. Код и оборудование были просто вектором, который мы могли использовать для создания результата, если бы я только мог понять, где на самом деле находится эта конечная точка.

Я счел транспортный бизнес чертовски запутанным, поэтому мне просто пришлось приложить больше усилий, чтобы по-настоящему понять, что означает вся эта терминология. Я не разбирался в обращении со складами, поэтому мне пришлось заставлять их объяснять мне это примерно 15 раз. Кодирование стало намного проще, когда я действительно понял, какую проблему я пытаюсь решить. Думаю, они думали, что я идиот. Я только пытался уточнить все детали, о чем я заботился больше, чем о людях, считающих меня глупым.

Не совсем понимая, что я делал, я узнал о людях и физических или бумажных процессах, которые лежали в основе того, «как все работает». Мне пришлось узнать о НЕ КОМПЬЮТЕРНЫХ вещах, чтобы заставить КОМПЬЮТЕРНУЮ часть работать нормально. До этого я только думал, что тратить больше времени на кодирование было ответом практически на любую проблему; -o

Итак - это был большой период обучения для меня. Аппаратное обеспечение, процессоры, языки, а затем люди и предприятия, с которыми были связаны технологии. Любопытство привело меня к этому, но сочувствие и понимание людей и проблемных областей, которые они пытались решить, были неотъемлемой частью написания лучшего кода.

Мы продолжим урок «Свобода учиться» в следующей части этой статьи, которая охватывает мои годы в PriceWaterhouseCoopers, John Lewis, LOVEFiLM и по сегодняшний день. Это обучение на всю жизнь, поэтому мне нужно показать вам суть всей моей работы и эту тему, которая так ясно проходит через нее.

Надеюсь, вам нравится читать!

C.