Міні-проект: бонусний етап Академії

Translated into:ru

Привіт. Мене звати Алік, я JavaScript розробник, працюю в компанії Binary Studio і допомагаю в організації Binary Studio Academy. Як ви знаєте, Академія поділена на декілька етапів (більш детально про них тут). Але я вам хочу розповісти про бонусний практичний етап.

На завершальному етапі відбору, поки тривають інтерв'ю по скайпу, у студентів є цілий місяць вільного часу, протягом якого вони присвячують Академії лише близько години. Але не цього року... Ідея додаткового етапу в тому, щоб за цей місяць підготувати вас до майбутніх лекцій та командної роботи над проектом, а також дати можливість заздалегідь набратися досвіду для майбутніх завдань. Крім того, за роботу над міні-проектом можна отримати до 10 балів, які ми приплюсуємо до вашої оцінки за липневі лекції.

Міні-проект

Етап повністю присвячений самостійній практиці. Для цього у вас буде невеликий проект (для кожного напрямку - свій) з готовою архітектурою і структурою, підключеним базовим стеком технологій і стартовим функціоналом, якого буде достатньо, щоб побачити, як працюють усі частини проекту. Ви познайомитесь з нашим баченням того, як реальний проект повинен виглядати зсередини, і що ми очікуємо від вас на етапі командної роботи.

Основа цього міні-проекту базується на ідеї соціальної мережі, на зразок Twitter. Думаю, що кожен зареєстрований хоча б в одній та має уявлення про те, як вона працює і який функціонал може надавати. Тому я розраховую, що у вас не повинно виникнути проблем із розумінням доменної області проекту, і це дозволить швидко розібратися з його будовою "під капотом".

У вас буде можливість дослідити, як побудована архітектура і структура проекту, подивитися його можливі конфігурації, спробувати покопатися і розібратися в чужому коді. На перший погляд це може здатися складним. Але коли ми розробляли і готували проект, одним із головних завдань якраз і було не ускладнювати його. Ми повністю розуміємо, що той, хто відкриє його на етапі Академії, швидше за все, ніколи з подібним не працював. Тому структура проекту продумана так, щоб з нею було нескладно працювати, а її розуміння не займало багато часу навіть у початківця.

Код теж писали з розрахунком на акуратність і читабельність, щоб він був не просто реалізацією функціоналу, а був зрозумілий тому, хто буде після цього розбиратися в ньому. Як-то кажуть: "Пишіть код так, ніби супроводжувати його буде схильний до насильства психопат, який знає, де ви живете". І під час розробки ми періодично робили рев'ю вже готових частин проекту, щоб перевірити свіжим поглядом, чи можна відрефакторити і поліпшити код. Таким чином, в результаті вийшов хороший приклад проекту зі зрозумілою і нескладної структурою та з чистим кодом.

А якщо все ж будуть з'являтися труднощі, то ми відкриті до будь-яких питань і допоможемо розібратися.

Завдання і вимоги

Також ви спробуєте написати свій код у проекті. А щоб знати, за що братися, для вас визначено список тасків, які необхідно виконати. Одні спрямовані на те, щоб доповнити або розширити існуючий функціонал, інші - реалізувати його з нуля. Наприклад, є готова фіча - поставити лайк посту, а вам необхідно буде додати можливість поставити дизлайк. Тут потрібно покопатися в готовому функціоналі лайка, розібратися, як працює весь його flow від натискання кнопки до збереження в базу даних, і зрозуміти, чого не вистачає. Можливо, потрібно просто дописати виклик методу на клієнті або сервері, а можливо, потрібно оновити і відрефакторити існуючий код.

Або інший приклад: потрібно додати можливість лайкнути коментар. Тут ніякої логіки ще немає, можливо, навіть ще файли не створені, але для цього буде приклад реалізованого лайка поста. Це дає можливість добре потренуватися і самому написати весь flow функціоналу, починаючи від створення кнопки на UI та закінчуючи написанням запитів до бази даних. Повинно бути складно тут закопатися, адже є вже готовий приклад, на який ви можете посилатися.

Завдань, в цілому, не багато, але їх достатньо, щоб потренуватися, і вони різні за складністю реалізації. Є навіть фічи, для яких немає прикладу в цьому міні-проекті. Це для того, щоб не тільки лазити по проекту і робити за прикладом, а й самостійно пошукати в гуглі мануали і документацію технологій, які використовуються, та спробувати розібратися в них детальніше.

А щоб було простіше відстежувати процес роботи, для кожного напрямку буде своя дошка на Trello з усією важливою інформацією. Там знаходяться посилання на репозиторій, де буде зберігатися стартап проекту, схема поточної бази даних (можливо, її доведеться доповнити), інформація про використаний стек технологій, а також список тасків з описом.

Цю дошку потрібно буде собі скопіювати і по ній працювати. Також ми дамо докладний опис проекту в його репозиторії у файлі README: про сам проект, які технології використовуються, де про них дізнатися і як запустити та налаштувати проект локально на своєму комп'ютері. Потрібно буде зробити форк репозиторію, виконати необхідні інструкції та можна працювати (як працювати з репозиторієм буде детально і дуже цікаво розказано в одній з перших лекцій про Git, так що join us!).

Успішне проходження

Думаю, що основний результат роботи можна визначити тим, як глибоко ви змогли розібратися у проекті і зрозуміти його, і як далеко просунулись в особистому навчанні. Сподіваюсь, що для кожного з вас цей результат буде позитивним і відчутним. Тоді вам буде легше слухати лекційний матеріал і виконувати завдання, тому що будете краще розуміти, про що йдеться. А на етапі командної роботи над проектом швидше почнете справлятися з темпом роботи, адже архітектура буде схожою, а ви вже будете в цьому орієнтуватися.

А в рамках Академії ми оцінимо проходження етапу як одну з лекцій. Перед стартом Академії або після того, як ви самі скажете "готово", ми відкриємо ваш репозиторій та перевіримо, що вийшло і які таски зроблені. Таск буде вважатись виконаним, якщо він повністю завершений і фіча працює. Подивимося на її реалізацію та оцінимо, чи правильно розподілили логіку в проекті, це покаже наскільки ви розібралися в архітектурі. І дамо коментарі до коду. До речі, щоб подивитися, як відбувався ваш процес, і визначити, що конкретно було зроблено, будемо використовувати вашу дошку на Trello, тому не забувайте там трекати свою роботу. В результаті кожен отримає фідбек і оцінку.

Хочу додати, що враховуючи час, виділений на цей етап, не варто відкладати всю роботу на останній тиждень. Потрібно пам'ятати, що це цілий місяць, який можна провести з користю. І чи варто втрачати таку можливість практики?