Неделя 2 - неделя 0: Предвестники

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

Я не был уверен, насколько я готов, но пора было. Наконец-то началась предварительная работа.

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

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

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

Неделя 1. Начало разработки CodeSmithing - чувство бодрости!

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

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

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

Неделя 2: Снейк! - чувство: немного кружится голова, но мне это нравится!

Ладно, поехали на гонки. Первая неделя была в основном посвящена алгоритмам в JavaScript и основам CS. На этой неделе мы сразу приступили к реализации этих концепций на практике, а также изучили некоторые ценные новые инструменты.

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

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

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

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

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

Неделя 3: неприятный сюрприз - чувство: сильная боль :(

Я живу в двух часах езды (в час пик) к северу от CodeSmith. Итак, каждое воскресенье вечером я приезжаю и останавливаюсь на неделю у друга. В это воскресенье, собирая свой инвентарь, чтобы ехать на юг, меня охватила самая мучительная боль, которую я когда-либо испытывал. Два слова, которые я молился, чтобы никогда не услышать: камень в почках. Очевидно, это случается с каждым десятым человеком в возрасте от 40 лет. Я избавлю вас от подробностей, но это положило меня на спину, что было очень и очень неудобно. Я пропустил два дня в CodeSmith. Честно говоря, я не мог понять, как я могу сосредоточиться через боль, которую испытывал.

Мои товарищи из CodeSmith обратились к нам и предложили поддержку и сочувствие. На второй день мне позвонил Уилл Сентанс. Он, его товарищи и Дэн, наш бесстрашный инструктор, не собирались отказываться от меня. Они были готовы потратить дополнительное время, чтобы снова поймать меня. Мне просто нужно было вернуться в игру. 20 марта у меня на подходе роженица. Так я и сделал. Одна нога перед другой. Это больно. Больно. Но это просто необходимо было сделать.

Два дня, которые я пропустил, были посвящены Angular. Это структура, предоставленная Google. Совсем другой подход, чем у Facebook React. Я планирую наверстать упущенное по Angular в выходные в конце февраля. На данный момент мне нужно было сосредоточиться на самом главном на этой неделе: на Nodejs.

Мне очень понравилось работать с Nodejs, который привносит асинхронную мощь JavaScript в серверную часть. Здесь мы создаем серверы и API. Здесь мы взаимодействуем с такими базами данных, как Postgres и Mongo, двумя другими технологиями, на которых мы сосредоточимся на следующей неделе. Мы начинаем понимать, что значит быть разработчиком полного цикла. И с этим стоит бороться с болью.

Кроме того, война с нерфами.

Неделя 4: Сладкое облегчение - чувство: НАМНОГО ЛУЧШЕ!

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

Это была хорошая неделя, чтобы вернуться к своему прежнему «я». Мы сосредоточились на технологиях баз данных, с которыми у меня был большой опыт, и на новых технологиях баз данных с NoSQL, которые меня интересовали. От баз данных мы перешли к работе с Nodejs, выполняя аутентификацию на серверной части. Я начинаю чувствовать себя более комфортно при работе с серверным кодом, а Nodejs изящно и элегантно справляется со сложными задачами. Определенно мой любимый агрегат на данный момент.

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

На этой неделе нас угощали группой спикеров. Среди них были трое молодых, очень сообразительных разработчиков, которые познакомили нас с впечатляющим проектом с открытым исходным кодом, работающим с JavaScript Observables. Только после их презентации я узнал, что они недавние выпускники CodeSmith. Я заметил одному из своих одноклассников: «Кажется, существует огромная пропасть между тем, где мы сейчас находимся, и тем, откуда пришли эти люди. Но тогда просто вспомните, где мы были четыре недели назад, и как мы были бы впечатлены, если бы услышали, как кто-то говорит о том, что мы можем делать сейчас ».

Неделя 5: все становится реальностью - ощущение: возбужденное состояние

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

Первым был наш сольный проект. Нам дали полную свободу действий придумывать любой проект, который, как мы чувствовали, мы хотели реализовать. Со своей стороны, я воскресил проект презентации продаж Voice over IP, который я построил в Excel для моего старого друга и бывшего работодателя. Я всегда хотел превратить это в работающее веб-приложение, и это была моя возможность. Мне было очень приятно работать с React, Nodejs и Postgres.

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

Потом стало еще лучше. Следующим был наш первый групповой проект. Я остался очень доволен своей группой. Добродушные и резкие, каждый из них. Нас было четверо, поэтому мы выбрали quadStar (который нам пришлось изменить на quadStarrr, потому что quadStar уже был размещен на Github).

Процесс формирования идей предвосхитил проблемы грядущих циклов формирования идей. Это может быть самая сложная часть: определить что делать. Учитывая что и инструменты для этого, как становится намного проще. Мы выбрали справочный форум со встроенным редактором общего кода. У нас была непростая цель - включить webRTC для видеочата.

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

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

Презентация была в 3:30. Нам нужно было заставить остальные маршруты работать и попытаться немного продвинуться с общим рабочим пространством и webRTC. Поскольку сервер был настроен и работал без сбоев, я сосредоточился на последнем. Передняя часть складывалась хорошо, как и аутентификация. К 1:30 у нас была едва работающая тестовая реализация webRTC только для голоса с односторонним звуком. Хотя было круто пройтись по кампусу и послушать моих товарищей по команде, было ясно, что мы не собираемся интегрировать это вовремя, чтобы представить. У нас не хватало времени, а наш проект все еще нуждался в стилизации. Не знаю, успевал ли я когда-нибудь так быстро… но когда пришло 3:30, нам было что показать. Это было не все, на что мы рассчитывали, но это было достойно, и мы, безусловно, многому научились. Наш код чистый, и команда, которая возьмется за него на следующей неделе, будет за это благодарна.

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

Неделя 6: почти половина пути! - чувство: готовы к недельному отдыху!

Они называют это итерацией. Здесь вы наследуете чужую кодовую базу и пытаетесь превратить ее в нечто волшебное (или, по крайней мере, полезное). Группы снова собрались, и у меня все получилось, Дип и Трунг резкие и целеустремленные. Поскольку группы были сформированы из других групп, и мы должны были работать над проектом из группы, в которой никто из нас не участвовал, наши возможности были ограничены с точки зрения того, за какой проект мы могли бы взяться. К счастью для нас, нам досталось забавное.

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

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

Неделя 7: пожилые люди! - чувство: как будто я хочу еще одну неделю отдыха!

Идея была… утомительной. Я уверен, что буду благодарен за дополнительные дни разработки, которые мы заработали, выполняя цикл идей в выходные, но, черт… это было много работы. Но важно то, что нам дали зеленый свет! Наш безымянный проект будет сосредоточен на том, чтобы позволить разработчикам, использующим интерфейс Vue, работать с асинхронным состоянием с использованием наблюдаемых RxJS. А что такое наблюдаемые RxJS? Думайте о них как о массивах… в четвертом измерении! (Это измерение - время.) Это звучит круто, и я с нетерпением жду этого.

Во-первых, нам нужно лучше познакомиться с Vue - перспективным фреймворком, Vuex - хранилищем состояний для этого фреймворка и RxJS Observables - вышеупомянутыми массивами в четвертом измерении. Хорошо, что у нас есть дополнительное время. У нас есть много материала для понимания.

Неделя 8: MaxJoy - ощущение: как будто в моей голове осталось не так много места

Столько всего Макс. И это здорово, потому что Макс великолепен. Мы должны знать, мы часами смотрели его видео на Vue и Vuex. Мы так любим Макса, что включили его в название нашей группы: MaxJoy. Битва Joy была посвящена Джой из Кении, выдающемуся техническому блогеру, который помог нам разработать Webpack.

Vue - отличный фреймворк. Но для этого нужно было много чего поразмыслить. Мы также копались в RxJS Observables. Кажется, что колодец так же глубок ...

Неделя 9: MaxJoyBenJayRudi - ощущение: в некоторые дни на подъеме… иногда на минимуме…

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

Мы воскресили мой клон Instagram из предварительной работы и добились этого с помощью Vue и Vuex. Было несколько подводных камней, когда мы обнаружили сложности работы с хранилищем состояний Vuex, но нам удалось заставить все это работать!

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

Потребовалось много проб и ошибок, а затем еще немного, но, наконец, у нас было рабочее хранилище состояний, которое включало цикл RxJS Observables для управления обновлениями состояния. Чтобы включить этот магазин в интерфейс Vue, потребовалось еще больше проб и ошибок. Но мы сделали это. Мы сделали это! Ура!

Но… что теперь?

Неделя 10: OverVue - ощущение: как будто мы почти у цели, но почему это кажется таким далеким?

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

Пока мы не попытались обновить визуализированную страницу и не увидели, что хранилище состояний Vuex на самом деле не сохраняется при обновлении страницы или между экземплярами Vue. Вот и все! В нашем государственном магазине OverVue была бы встроена настойчивость. Итак, мы пошли по кроличьей норе, исследуя решения для настойчивости.

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

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

Неделя 11: Baby Brain - чувство: на вершине мира!

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

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

Кроме того, детка.

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

Неделя 12: Crescendo - чувство: много счастья, немного грусти

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

О, какая разница в моменте. Где-то в самом начале своих строк я просто потерял нить. Я мучительно продолжал сражаться, но сумел пробиться сквозь наплыв слов. Когда осталось чуть больше часа, я в панике решил, что мне действительно нужно расслабиться. Мы ждали в комнате для выпускников, когда прибыли партнеры по найму. (Комната выпускников теперь известна как Комната Reactide, названная в честь одного из проектов нашей когорты, который установил рекорд среди всех проектов Codesmith по общему количеству звезд на Github!) Среди всех шагающих и практикующих пожилых людей был младший, который был чувствовал себя под непогоду и потерял сознание на кушетке. Я решил передать немного этого покоя.

А потом пришло время. Наша группа заняла второе место. Когда первая группа закончила свою презентацию, я почувствовал, как барабанная дробь ... нарастает ...

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

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

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

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