Проект Игры разума

Уровень: 1

Профессия PHP-программист

Погрузитесь в экосистему PHP, научитесь настраивать рабочее окружение. Подружитесь с CodeSniffer (линтером, анализатором качества кода) и менеджером зависимостей Composer. Поймёте, чем git отличается от GitHub, поработаете с внешними репозиториями. Получите опыт построения архитектуры полноценного приложения и написания чистого кода.

9
шагов
2-4
недели

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

Профессия PHP-программист

Цель

Настройка окружения

Первый проект для многих студентов — одновременно первая полноценная программа вне среды Хекслета. Он знакомит с основными шагами, необходимыми для старта любого нового проекта: установкой языка (интерпретатора), настройкой среды (операционная система, редактор, линтеры), подключением дополнительных библиотек, созданием git-репозитория. На этом этапе начинается глубокая работа с терминалом. Студенты на практике используют все то, что давалось в базовых курсах.

Первый проект прокачивает работу с экосистемой PHP. Студенты учатся запускать любые программы, написанные на PHP. Знакомятся с интерпретатором языка (REPL) и его возможностями по быстрой отладке и проверке работы небольших кусков кода. Знакомятся с Composer. Утилитой, через которую происходит управление проектами: установка и обновление дополнительных библиотек, публикация пакета и многое другое.

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

Здесь же идет формирование правильной инженерной культуры. Одно из первых заданий в настройке — это подключение линтера (PHP_CodeSniffer), который автоматически следит за стилем кода и находит потенциальные ошибки. Код, соответствующий стандартам кодирования (PSR-12), гораздо проще в анализе и значительно выше оценивается другими программистами. Это, в том числе, важно при демонстрации проектов на собеседованиях.

Еще один мощный элемент реальной разработки — непрерывная интеграция. Система, которая автоматически после каждого изменения собирает проект, запускает проверки линтера и тесты (будут во втором проекте). Подобные системы являются неотъемлемой частью любой профессиональной разработки. В проектах Хекслета непрерывная интеграция подключается к каждому проекту. Среди множества систем мы выбрали Github Actions как бесплатную и интегрированную в Github систему сборки.

И, наконец, студенты знакомятся с GitHub — центральным местом хранения кода и обитания разработчиков в мире. GitHub — это не просто хранилище репозиториев, но и фактически социальная сеть. Реальный код на гитхабе высоко ценится работодателями и резко повышает шансы на трудоустройство. К тому же это первый шаг в разработку открытого ПО (open source).

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

Код

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

Первый проект включает в себя интерактивную часть — взаимодействие с пользователем командной строки. Для этого понадобится дополнительная библиотека. А это значит, что нужно научиться ее устанавливать, подключать (импортировать) и запускать. Для последнего обязательно чтение документации. Именно так происходит реальная разработка.

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

Архитектура первого проекта — корневая часть всей системы. Она опирается на основные принципы организации кода: изоляцию побочных эффектов, создание правильных барьеров абстракций (высокая модульность). Здесь возникает множество вопросов: «кто за что отвечает?», «кто взаимодействует с пользователем?» «как игра запускается?» и многое другое. С архитектурой придется повозиться, даже если у вас есть опыт реальной разработки.

У меня есть опыт в разработке, можно пропустить первый проект? Кажется, он слишком лёгкий для меня.

Проекты пропускать нельзя. Каждый проект на Хекслете важен. На нём закладываются знания, с которыми человек идет дальше: правильные инженерные практики, работа над структурой кода, стандартами кодирования и так далее. Даже если вы уже имеете опыт разработки, первый проект будет полезным. Дело в том, что менторы оценивают код каждого студента индивидуально. В зависимости от уровня подготовки и качества кода они могут предложить дополнительные задачи. Поэтому не надейтесь на лёгкую прогулку: даже если вы выполните все задания быстро и без затруднений, ментор предложит вам более сложные задачи.

Проверки ментора

Основные аспекты, на которые обращают внимание менторы при проверке:

  • Правильная настройка проекта и соответствие кода стандартам кодирования.

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

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

  • Архитектура. Правильное выделение функций, распределение ответственностей между разными частями системы. Все это имеет огромное значение даже в первом проекте.

Описание

«Игры разума» — набор из пяти консольных игр, построенных по принципу популярных мобильных приложений для прокачки мозга. Каждая игра задает вопросы, на которые нужно дать правильные ответы. После трех правильных ответов считается, что игра пройдена. Неправильные ответы завершают игру и предлагают пройти ее заново. Игры:

  • Калькулятор. Арифметические выражения, которые необходимо вычислить.
  • Прогрессия. Поиск пропущенных чисел в последовательности чисел.
  • Определение четного числа.
  • Определение наибольшего общего делителя.
  • Определение простого числа.

Пример игры:

$ brain-progression
Welcome to the Brain Game!
What number is missing in this progression?
May I have your name? Roman
Hello, Roman!
Question: 14 .. 18 20 22 24 26 28
Your answer: 16 # Пользователь вводит ответ
Correct!
Question: 5 6 7 8 9 .. 11 12
Your answer: 10 # Пользователь вводит ответ
Correct!
Question: 12 15 18 21 .. 27 30 33
Your answer: 24 # Пользователь вводит ответ
Correct!
Congratulations, Roman!

Проект Игры разума

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

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

Впечатления

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

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

Чуть не облился слезами радости, когда увидел в почте письмо, что проект принят. Команда Хекслета - снимаю шляпу, отличную штуку придумали. Просветление, полученное в конце, стоило и времени, и денег. Сергей, вам спасибо за правильные ненавязчивые советы, которые заставляют поскрипеть мозгами :)

Прошел 20 курсов. Думал, что обойдусь без проектов. Понятно, что денег жалко было. Но это очень хороший опыт. Проект заставляет тебя делать и изучать то, что обычно пропускается, с мыслями: "потом почитаю", "мне сейчас это точно не понадобится" и тд. Ну и конечно спасибо ментору - Сергею. Поначалу, его замечания казались мелкими, но потом, когда переписал 70% файла, потом еще 60%...понимаешь, что каждая мелочь дорого стоит. Короче, спасибо Хекслету.

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

Вопросы и ответы

Какое расписание у проекта?

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

Как оплачивается проект?

Один проект стоит $127, и оплата снимается только если вы отправите на проверку первое задание в проекте. Если вы начнете проект, но не выполните первое задание, то деньги списываться не будут. Для участия в проекте нужно иметь активную месячную или годовую подписку, и деньги за проект будут списываться с вашей привязанной карты.

Зачем нужны проекты?

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

Что делает ментор в проектах?

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

У меня есть другой вопрос

Пишите нам на support@hexlet.io, вам ответит живой человек из команды Хекслета. Или нажмите на иконку со знаком вопроса в правом нижнем углу экрана. Там есть ответы и на другие вопросы и удобная форма для отправки сообщения нам.

Проект Игры разума

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

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