Недавно я прошел курс PHP/JavaScript/Drupal в Epicodus в Портленде, штат Орегон. Я подумал, что это будет полезно для других, описывающих мой карьерный переход, опыт учебного лагеря, инструменты, которые я получил, и то, как я их использовал.

Откуда я взялся?

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

Моя последняя должность, оператор пилы на кузнечно-сталеплавильном заводе. Это была грязная, физически жестокая работа без продвижения по службе. Время сменить карьеру! Я начал с Codecademy, затем Free Code Camp, YouTube, Treehouse и в конце концов нашел Learnhowtoprogram.com. После многих поздних ночей после работы я самостоятельно прошел вводный курс.

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

Эпикод | Профессиональная школа программирования

Полный рабочий день (доступен вводный курс с частичной занятостью) учебный курс по кодированию, предлагающий 27-недельные курсы по JavaScript, Ruby, C#, .NET, PHP, Java, Android, CSS и дизайну. После завершения вы должны пройти 5-недельную стажировку в отраслевой компании.

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

Введение в программирование

Введение было отличным способом освежить мои знания HTML, CSS, JavaScript и Git, прежде чем сосредоточиться на конкретном языке. В первый день мы настроили и ознакомились с системой управления версиями Git и Github, так как они стали частью нашего повседневного рабочего процесса. Первая неделя была посвящена написанию структурированной разметки, правильному этикету синтаксиса и стилизации статических страниц с помощью пользовательского CSS. Затем мы начали углубленное изучение JavaScript (ООП, конструкторы, наследование прототипов, массивы, ветвление и циклы и т. д.).

Теперь пришло время создать внешний интерфейс, манипулируя элементами DOM с помощью jQuery, добавляя адаптивные медиа-запросы, дизайн UX/UI и базовую проверку формы. Когда наступила третья неделя, Портленд сильно пострадал от необычно продолжительной снежной бури. Это дало мне неожиданное знакомство с удаленным программированием (без выходных в учебном лагере!). Шторм прекратился как раз вовремя, чтобы вернуться к групповым проектам последней недели.

Любимый интро-проект: i VillainБитва добра и зла, на чьей стороне ты?

PHP

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

На второй неделе мы реализовали Silex (микрофреймворк) с динамической маршрутизацией, Twig (шаблонный движок) для представлений, управление зависимостями с помощью Composer и глубокое погружение в автоматические TDD и BDD с помощью PHPUnit (организуйте свои тесты, можно зависеть от многих !).

Следующие недели включали интеграцию реляционной базы данных MySQL (запросы, таблицы соединений, внешние ключи) с нашими приложениями из командной строки и phpMyAdmin. Теперь, когда у нас есть необходимые инструменты, пришло время включить наш CRUD! Расширьте класс, напишите тест, отправьте его обратно, обновите, удалите, затем повторите валлах :). Это также был отличный способ улучшить проверку и тестирование форм.

На этом этапе учебного плана каждый сольный проект должен иметь четко написанные спецификации, формализованный MVP (минимально жизнеспособный продукт) и историю коммитов Git, чтобы отразить это.

Избранный PHP-проект:Shoe Storeподдержите свое приложение в чистоте и порядке с помощью старого доброго BDD…

JavaScript

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

Когда вы загружаете Node.js, появляется менеджер пакетов Npm (где вы были всю мою жизнь?). Bower похож, хотя обрабатывает мои интерфейсные зависимости, такие как jQuery и Bootstrap. Загружать, обновлять и поддерживать все мои зависимости разработки и производства? Сладкий!

Теперь мы должны помочь браузеру интерпретировать наш код с помощью Gulp, нашей задачи/построителя конвейера активов. Подключение Gulp может быть утомительным, но вы сэкономите массу времени, автоматизируя рабочий процесс! Мне очень понравилась наша следующая задача, API и AJAX. Введение в асинхронные промисы и как правильно тестировать входящие данные из внешних ресурсов. Процесс может быть утомительным, хотя награда, как правило, щедрая.

На рамки! Ember, клиентская среда MVC (модель-представление-контроллер) или MTC (модель-шаблон-контроллер, если хотите). Прежде чем мы перейдем к гладкой версии CLI (интерфейс командной строки), мы сначала должны создать файлы вручную, чтобы по-настоящему понять инфраструктуру фреймворка. Это не только отлично подходит для понимания основных концепций и практики, но также чрезвычайно полезно при отладке в будущем. Мы использовали динамическую маршрутизацию для отображения наших шаблонов Handlebar, включили модели данных Ember и Firebase для постоянных данных через Сервисы. JSLint, чтобы проверить наш код на наличие ошибок и, наконец, создать проект CLI.

Я нашел файловую структуру Angular2 (также JavaScript MVC) удобной и интуитивно понятной. Typescript, надмножество JavaScript, обеспечивает строгую статическую типизацию, дополнительные функции ES6, ES2016 и ES2017 (классы, модули, стрелочные функции) и легко совместим с ванильным JavaScript.

Директивы чрезвычайно удобны, они связывают значения HTML с данными приложения через атрибуты, например, обеспечивая двустороннюю привязку с помощью ngModel. Контроллеры (объекты JavaScript) определяют область действия для части «бизнес-логики» в конструкторе. Провайдеры создают экземпляр службы, регистрируют инжектор, который использует внедрение зависимостей для передачи необходимых данных вашим компонентам. В основном мы использовали Сервисы для подключения к Firebase и RxJS Observables для просмотра, извлечения, сохранения, обновления и удаления асинхронных данных.

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

Избранный JavaScript-проект: Timbers Club Managerследите за составом, сортируя, нанимая/увольняя и обновляя информацию об игроках

Друпал

Первое правило, не взламывайте ядро! Хорошо… теперь мы можем продолжить. CMS (система управления контентом), которая отдает приоритет обширным ролям пользователей, безопасности, модальности и масштабируемости. Drupal прост в использовании, но требует серьезного обучения, когда вы начинаете настраивать функциональность.

В основном мы работали в Drupal 7, используя основные функции для создания контента, статей, блоков, пользовательских типов контента и представлений для выполнения запросов MySQL. Второй раздел Drupal включал в себя написание пользовательских модулей, расширение модулей с помощью крючков для функциональности, настраиваемые темы и подтемы для дизайна. Расширенные представления позволили мне контролировать отношения данных с помощью контекстных фильтров и полей ссылок на объекты. Drush — это оболочка командной строки, которая не только ускоряет разработку, но и предоставляет псевдоним, который поддерживает «песочницу» Pantheon (хостинговая платформа для веб-разработки) в актуальном состоянии.

Я провел рефакторинг предыдущих проектов с функциональными/модульными тестами с помощью PHPUnit, сформулировал AJAX-запросы на основе промисов с плавной деградацией и исследовал ключевые отличия от Drupal 8.

В течение последней недели Drupal мы индивидуально работали над созданием персонального завершающего проекта, чтобы воплотить в себе все, что мы узнали к этому моменту. Мой проект был основан на запросах к API Better Doctor и Health Finder. Это позволяло пользователю выполнять поиск по состоянию здоровья и получать соответствующий список местных врачей и ресурсов. В последний день мы представили наши проекты учителям и однокурсникам.

Любимый проект Drupal: ШифрованиеНе самое лучшее визуальное решение, хотя мне очень понравилось криптографическое испытание!

Вывод

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

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

Ты спрашиваешь себя, смогу ли я это сделать? Я уже ответил на ваш вопрос! Я решил это, и вы можете.

Несколько советов:

  • Ешьте, высыпайтесь, избегайте обезвоживания, гуляйте, говорите, общайтесь
  • Посещайте встречи (воспользуйтесь своей группой поддержки)
  • Делайте заметки (пример: Документы Google)
  • Пишите README (Всегда!)
  • Сделайте скриншот КАЖДОГО проекта (вы будете благодарны себе в будущем!)

Первоначально опубликовано на daniellauby.wordpress.com 15 августа 2017 г.