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

«Это сложнее, чем вы думаете, - сказал он, - на самом деле в эти вещи входит много вещей».

Это был не ответ. Это не помогло мне сделать окно и даже не направило меня в правильном направлении.

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

После этого я пошел к своим друзьям и рассказал о том, как ржавчина не может даже заставить окно появиться на вашем экране! Об этом говорится во всех этих статьях. Это было бесполезнее, чем я думал!

Позже я узнал, что это было неправильно, и на самом деле есть сотни статей, до краев заполненных полной ерундой.

Я искал в Google, как заставить окно появляться на моем экране с помощью C. Я нашел фрагмент кода и вставил его в свой редактор кода, скомпилировал и запустил его. Бум. Менее чем через 3 часа после разговора с моим другом у меня на экране появилось окно со всеми функциями, которые вы ожидаете от окна. Впервые в жизни я написал код на C.

По всей видимости, программисты на C совершенствовали этот скрипт около 30 лет. Это было около 60 строк кода, но это был фрагмент, который создавался и совершенствовался многими разработчиками в течение длительного периода времени.

2 часа после этого у меня был текст и фигуры в окне, выполняющие разные действия.

Прочитать фрагмент кода, понять, как он работает, и использовать его оказалось не сложнее, чем я думал.

Что я узнал? Мир полон тумана. Есть миллион людей, которые говорят что-то в полном невежестве. Нетрудно заставить окно появляться на вашем экране на ржавом, C или любом другом современном языке. Ребенок мог разобраться в этом за 20 минут. Самая сложная часть процесса - копаться в навозе.

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

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

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

В первый раз рекрутер спросил меня, есть ли у меня 10-летний опыт работы в ReactJS. Я побежал к серверу раздора, мои друзья, и мне очень нравится, и я рассказал забавную историю о рекрутере, который не знал о работе, на которую они нанимали.

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

Спустя примерно 55 телефонных звонков я обнаружил, почему это не очень смешно. По моему опыту, не некоторые, но почти ВСЕ рекрутеры мало знают о технической работе, на которую они нанимают. Они не понимают, что могут делать инженеры, они не знают, что делают каждый день, и не знают почему.

По моему опыту, не некоторые, но почти ВСЕ рекрутеры мало знают о технической работе, на которую они нанимают.

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

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

Верно. К заявке прилагаю свое резюме. Затем я прикрепляю свое резюме к электронному письму, которое отправляю рекрутеру. Затем я читаю свое резюме медленно и вслух тому же рекрутеру по телефону. Это нормально.

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

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

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

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

Project Euler предложит вам просто сформулированный вопрос, в котором есть решение грубой силы, которое может потребовать 4³⁴⁸⁷ операций (или какое-то другое произвольно большое количество). Он заставляет программистов думать об альтернативных методах, которые могут завершить вычисления менее чем за 6 дней. (как произвольное неприемлемое время расчета)

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

У меня были такие проблемы:

Затем было объявлено о появлении кода 2019. Об этом мне рассказал мой старший друг-инженер.

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

Я помню, как читал научные статьи о программном моделировании гравитации. Это было очень весело.

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

Мое первое интервью было шипящим.

Человек, который брал у меня интервью, спросил, могу ли я пошутить. Сначала я подумал, что это шутка. Жужжать Fizz шокирующе легко. Но здесь я был с человеком, который злобно грабил меня через стол, как будто его глазные яблоки могли меня открыть. Он хотел посмотреть, как я складываю шипучку-жужжание и рассказываю о моем логическом процессе …… .. На его кодирование ушло около 10 секунд, а если я очень постараюсь, то смогу за 10 секунд произнести слово «логический».

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

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

В нем очень подробно рассмотрено, как можно создать базу данных для всей больницы, которая будет поддерживать стандарты нормальной формы ключа домена для ~ 60 таблиц (это стандарт, который, по словам самого автора, часто слишком хорош, чтобы быть рентабельным)

В моем третьем интервью небольшая винодельня показала мне макет своей табличной базы данных в Postgres. В нем было 9 столов. Они хвастались между собой, насколько сложна их база данных, и спрашивали, могу ли я «справиться с этим».

В объявлении, размещенном винодельней, кандидатам предлагалось знать MYSQL. Во время интервью я сообщил им, что их база данных явно создана на PostgreSQL. Я знал это, потому что они распечатали свою схему и передали ее мне во время собеседования. Схема представляла собой физический отпечаток кода Ruby, который составлял ORM для их базы данных, и в документах четко указывался PostgreSQL. (в том числе на верхней странице пачки). Они не читали. Меня не наняли, но обновили объявление ...

Процесс найма может идти против всех причин, я думаю, что его можно улучшить, если проявить доверие.

На моей первой работе я объяснил вещи больше, чем я думал.

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

Если бы я работал один и мне нечего было делать, я мог бы создать полнофункциональное приложение средней сложности за пару дней.

Если бы я собирался создать один графический интерфейс для Amazon, это заняло бы всего около 30 минут, и он все равно выглядел бы идеально на любом размере экрана, но в компаниях есть много гарантий, которые замедляют это.

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

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

Для меня поддерживать хорошие рабочие отношения и делать все возможное, чтобы поддерживать хорошее, альтруистическое отношение, важнее и прибыльнее, чем что-либо в редакторе кода.

В конце концов, перестаньте сомневаться в себе.

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

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

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