Когда я закончил колледж, я предположил, что я был наравне со всеми остальными: «У меня есть степень бакалавра в области CS, как и у многих других людей, и мы все можем делать по существу одни и те же вещи». В конце концов я обнаружил, что мое предположение было ложным. Я выделялся, и мой опыт был во многом связан с этим - особенно моя степень.
Я знал, что было одно «небольшое» различие в том, что у меня был «Б.С.» в CS, потому что мой колледж был одним из первых (предположительно, № 2 в 1987 году) в стране, который получил аккредитацию по программе CS, и я получил второе образование, чтобы получить эту аккредитацию. В то время я не думал, что это имеет большое значение.
Я также заметил в старших классах и в колледже, что я особенно хорошо учился в CS - намного лучше, чем мои сверстники и даже лучше, чем многие из моих учителей. Меня часто просили о помощи, я занимался репетиторством, меня попросили помочь с исследовательским проектом, и мне было позволено проводить независимое обучение, когда никого не было. Я был счастлив, что смог помочь, но не особо задумывался о разнице.
После колледжа (USAFA) я провел четыре года в Военно-воздушных силах, два из которых подали заявку на получение степени CS. Там я заметил, что очень немногие из моих коллег имели дипломы или даже обучение, связанное с компьютерами. Военно-воздушные силы отправили меня на пять месяцев сертификационной подготовки, где я снова обнаружил отсутствие степеней или подготовки. Но здесь я начал замечать разницу - стало совершенно очевидно, что многие из людей, с которыми я столкнулся, ДЕЙСТВИТЕЛЬНО не знали, что они делают, и это включало людей с обучением или степенями. Разрешите, пожалуйста, проиллюстрировать.
В моей сертификационной подготовке ВВС было всего тринадцать человек (включая меня). Как офицеры ВВС или эквивалент, у всех нас были степени бакалавра. Я был в середине, основываясь на возрасте и звании (я был O-2 среди шести O-1 и шести O-3 и выше). В конце этого обучения ВВС отметили нас всех одинаково компетентными для приобретения, создания, проектирования, обслуживания и эксплуатации ЛЮБОГО компьютера или системы связи для ЛЮБОЙ части Министерства обороны.
Однако из тринадцати из нас только шесть имели какую-либо форму степени, связанной с компьютером; остальные семь имели степень от аэронавтики до химии / биологии и психологии. Из шести человек со степенями CS я узнал, что двое никогда не писали никаких программ и никогда не пользовались компьютером чаще, чем небрежно (написание статей, игры в игры и т. Д.). Я узнал, что еще двое из нас написали ровно одну программу на одном компьютере во время обучения по программе CS. Только один человек и я написали более одной программы или использовали более одного типа компьютера - действительно, мы обнаружили, что мы оба написали много программ и использовали много типов компьютеров.
К концу нашего пятимесячного обучения нашему классу был назначен программный проект, и мы были разделены на четыре группы, чтобы выполнить его отдельно. Наши преподаватели разделили класс, чтобы справедливо распространить «талант программиста», и им были назначены роли руководителя команды, технического лидера и разработчика. Каждой группе была предоставлена неделя для реализации (в Аде) полноэкранного текстового пользовательского интерфейса (это был 1990 год) для имитатора полета поверх библиотеки лётной механики, предоставляемой инструктором. Я был назначен техническим руководителем для моей команды из четырех человек.
Руководитель моей команды (у которого не было компьютерного образования) попросил остальных троих разделить проект на задачи, а затем назначил треть из них каждому из нас. Я выполнил свою третью задачу к середине первого дня, а затем провел остаток дня, помогая двум другим своим товарищам по команде, разговаривая с руководителем моей команды (BSing; ^) и играя на моем компьютере.
На следующее утро (второй день) руководитель моей команды в частном порядке сообщил мне, что два других члена нашей команды не достигли прогресса (один не мог написать заявление «если», которое будет компилироваться), и он попросил меня взять их Работа. Я закончил весь проект к середине дня, и моя команда провела остаток дня на симуляторе.
Другой парень с сопоставимой степенью CS также был назначен техническим руководителем для своей команды, и они закончили к концу третьего дня. Они также начали летать на своем симуляторе. Две другие команды не закончили или даже достигли значительного прогресса к концу недели. Нам не разрешили помогать другим командам, поэтому на этом все и оставалось.
Между тем, к середине третьего дня я заметил, что симулятор полета, похоже, ведет себя «неправильно». Поскольку один из моих одноклассников получил степень в области аэронавтики, я спросил его об этом. Он был озадачен, а затем признался, что на самом деле не знал, что заставило самолет летать!?! Я был ошеломлен! Оказывается, вся его дипломная программа была посвящена исследованиям безопасности и аварий - без реальной математики или науки за полетом. С другой стороны, у меня была небольшая доля в аэронавтике (помните USAFA?), Но мы разработали крылья и провели реальные испытания в аэродинамической трубе. Поэтому я спокойно провел остаток недели, переписывая предоставленную инструктором библиотеку лётной механики, пока симулятор не полетел «правильно».
С тех пор я почти два десятилетия работал подрядчиком, а иногда и сотрудником, всегда занимаясь разработкой программного обеспечения и сопутствующими мероприятиями (администратор баз данных, архитектор и т. Д.). Я продолжал находить больше того же самого, и в конце концов я отказался от своего юношеского предположения.
Итак, что именно я обнаружил? Не все равны, и это нормально - я не лучший человек, потому что могу эффективно программировать, но я более полезен, ЕСЛИ это то, что вам нужно от меня. Я узнал, что мой фон действительно имел значение:
рос в семье электриков и инженеров-электриков,
комплекты строительной электроники,
читая буквально каждую компьютерную книгу в школьных / публичных библиотеках, потому что у меня не было доступа к настоящему компьютеру,
затем переезжает в новый город, где в моей школе были компьютеры,
затем получить свой компьютер в подарок,
посещать школы, в которых были компьютеры разных размеров и типов (от ПК до мэйнфреймов),
получение аккредитованной степени в ОЧЕНЬ хорошей инженерной школе,
писать много программ на разных языках на разных компьютерах,
необходимость писать сложные программы (например, мою собственную виртуальную машину с пользовательским языком ассемблера или реализацию сжатия Хаффмана и т. д.),
необходимость устранения неполадок для себя,
собирать свои компьютеры из частей и устанавливать ВСЕ программное обеспечение,
и т.д.
В конечном итоге я узнал, что мои способности основаны на знании того, как компьютеры работают с электрического уровня на дискретных электронных компонентах, схемах, подсистемах, интерфейсах, протоколах, битах, байтах, процессорах, устройствах, драйверах, библиотеки, программы, системы, сети, вплоть до огромных конгломератов корпоративного класса, над которыми я обычно работаю сейчас. Поэтому, когда эта чертова штука плохо себя ведет, я точно знаю, КАК и ПОЧЕМУ. И я знаю, что нельзя сделать так же, как и то, что можно. И я много знаю о том, что было сделано, что было опробовано и что осталось относительно неисследованным.
Самое главное, после того, как я все это узнал, я понял, что я не знаю ни черта. Перед лицом всего, что потенциально можно узнать, мои знания ничтожны.
И я вполне доволен этим. Но я рекомендую вам попробовать.