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

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

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

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

Я решил, что мне нужно переосмыслить роль собственного учителя. На курсах информатики я учился теории, но я не чувствовал, что они заставляли меня готовиться к работе. Мое собственное самообучение многому меня научило, но я все еще не мог разумно говорить о компромиссах. Я смирился с посещением внутреннего «учебного лагеря» по программированию после окончания учебы.

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

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

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