Hack Reactor, как и было обещано и ожидаемо, сильно и быстро поразит вас серией хорошо поставленных и острых лекций, парных спринтов по программированию, а также групповых сессий вопросов и ответов и размышлений. На прошлой неделе состоялась первая пробежка моего трехмесячного марафона с группой под названием HRRB13. RB для Remote Beta: Remote, потому что эта программа запускается онлайн, соединяя распределенных студентов и преподавателей через различные интерфейсы, подобные Skype; и Бета, потому что, ну, смирение…? — Думаю, можно с уверенностью сказать, что к 13-й итерации HR Remote вышел из бета-статуса.

Огромный объем информации, загружаемой в ваш мозг (а затем применяемой вашими ловкими кодирующими пальцами) за один день HR, угрожает взорвать вашу голову. В первую неделю — и это был обзор материала перед курсом — мы уже глубоко погружались в механику замыканий, функции высшего порядка, ключевое слово this, отладку, структуры данных, различные шаблоны классов и наследования, анализ сложности. , написание собственных тестов и связывание функций. И реализовывать наши знания с помощью парного программирования с нашими опытными сверстниками, которые все преодолели строгие вступительные испытания, чтобы попасть сюда.

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

Пара моментов меня зацепила:

  1. Успешный учащийся должен сохранять способность игнорировать сложность. Нужно оставить некоторые звезды неисследованными, отпустить «существует ли Бог, и если да, то кто создал Бога?» Мне не нужно знать, на какие языки компилируется JavaScript на пути к двоичному коду. Но я должен знать, что удаление значения из середины массива имеет больший порядок алгоритмической сложности времени, чем выполнение того же в связанном списке, потому что это фактически повлияет на производительность моих проектов. Теперь я знаю, что объекты JavaScript являются реализацией структуры данных, называемой хеш-таблицей — ограниченным массивом, который содержит «кортежи» (массивы «ключ-значение»), такие как ['Зак', 'Галифианакис'] со значениями индекса, присвоенными каждому уникальному ключу. (или tuple[0], в данном случае «Зак») с помощью функции хеширования; ограниченный массив, который будет удваиваться в размере, когда он начнет заполняться, и снова уменьшится вдвое, когда он снова станет пустым; ограниченный массив, который будет изящно обрабатывать коллизии, когда несколько кортежей назначаются одной и той же позиции индекса — складывая ['Jason', 'Schwartzman'] поверх Zach G., когда они сталкиваются, но заменяя Zach G. на ['Zach' , «Тейлор»], когда 12-й президент Соединенных Штатов хочет принять участие в акции. TL;DR. Мне не нужно знать, как эта хэш-функция работает «внутри» или почему размер ограниченного массива изменяется ровно на 75 % емкости, чтобы создавать приятные вещи с объектами JavaScript.
  2. Теория неразрывно связана с практикой. HR получает поддержку за то, что действительно хорошо каскадирует свою учебную программу, немного знакомя вас с более продвинутыми концепциями, пока вы работаете над более базовыми, позволяя им немного проникнуть в ваш перегруженный мозг, а затем дает вам спринт, в котором вы полностью сосредотачиваетесь на этом. , а в течение дня или двух это вполне в пределах вашего понимания. Это происходит очень быстро.
  3. Быть инженером-программистом — это совокупность состояний потерянности, одиночества и замешательства. И снова и снова терпит неудачу. Перемежается (редкими) светящимися восторженными моментами чистого восторга. У студента возникает искушение поверить, что разочарование и неудачи — это часть жизни новичка, а не неотъемлемая часть работы. Нужно научиться не только терпеть, но, возможно, даже влюбляться в неудачу, чтобы добиться успеха.