Вже кілька років я подорожую один і зіткнувся з тим, що інформацію про акції та знижки від авіакомпаній і туроператорів знайти вчасно не так просто. Вона з'являється тільки на спеціалізованих сайтах або розсилках для невеликої аудиторії. І мені в голову прийшла ідея створити блог, який би повідомляв про знижки всім бажаючим.
На ринку вже були схожі проекти, але їх реалізація залишала бажати кращого. Їх відвідували від 15 до 30 тисяч унікальних користувачів на добу - а це говорить про актуальність даної послуги.
У Школі я дізнався про програму Hillel Evo, яка призначена для реалізації ідей Студентів та Випускників Школи, а також отримання ними ще більшого практичного досвіду. Я подав заявку зі своєю ідеєю і незабаром дізнався, що вона була схвалена. Обраним школою трьом проектам надаються: приміщення і комп'ютери, розробники, які подали заявки на участь в EVO, а також ментор, яким виступає Викладач школи. Він курирує весь проект, підказує і допомагає в процесі роботи над проектом. Термін розробки проекту становить 4 місяці.
Я представив проект на презентації перед суддями і аудиторією. Судді відібрали 3 проекти, в тому числі і мій, для участі в програмі. Після презентації до мене підходили бажаючі взяти участь в розробці проекту.
Команда проекту спочатку включала: 3 Front-end розробника, 2 PHP розробника, 3 дизайнера і 1 тестувальник. Пізніше вона зросла до 14 осіб, включно зі мною. Ментором став наш викладач по PHP.
Ми створили групу в Telegram, і я став розписувати завдання команді. Незабаром з'ясувалося, що зручніше окремо обговорювати завдання для розробників і для дизайнерів. За порадою ментора для створення і контролю тасків ми використовували Redmine.
Зізнаюся, що спочатку я невірно уявляв собі етапи розробки, необхідний стек технологій та мовою розробки вважав PHP. Виявилося, що основний функціонал у нас буде задіяний на front-end. Тоді мені дуже хотілося, щоб back-end ми розробляли на PHP, а front-end на React. Наша команда навіть придбала React розробника, хоча він був вже Випускником школи і не був на презентації, але завдяки Hillel дізнався про проект і «зірки зійшлися».
Перші проблеми з якими ми зіткнулися:
- Як правильно пов'язати React і Symfony?
- Звідки повинні йти запити до api?
- Як реалізувати отримання даних на стороні PHP?
На ці питання нам допоміг відповісти наш ментор, викладач по PHP.
Паралельно йшла робота з дизайнерами. Кілька годин обговорень про те, де і як правильно розміщувати ті чи інші блоки, і консенсус був знайдений. Їм потрібно було зрозуміти, яка інформація повинна була бути на першому місці для відвідувача, як правильно організувати навігацію по сайту, щоб було зручно відвідувачеві і одночасно він знайшов необхідні розділи. Як красиво оформити СЕО текст, щоб він не псував дизайн, але і залишався на місці.
Коли дизайнери приступили до роботи, мені стало зовсім незрозуміло, чим же зайняти Front-end розробників, які повинні були займатися версткою, адже поки у нас не було дизайну. І ми всі не знали, яку технологію можна застосувати для верстки і як правильно це поєднати з Symfony і React.
Перший результат роботи React розробника я побачив після 3-x тижнів наших погоджень і обговорень і 4-x днів його роботи. Це була сторінка на яку виводилися гарячі тури з фото готелю, ціною та описом туру по 15 штук на сторінці. Тим часом я поставив завдання двом php розробникам на реалізацію необхідних компонентів, а сам зайнявся розробкою адмінки майбутнього проекту на Symfony.
Після декількох консультацій з ментором, проб і помилок для реалізації адміністративної частини я вибрав готовий бандл для фреймворка, що є зручною обгорткою для управління створеним функціоналом - таким як списки (наприклад категорії сайту, блог, списки користувачів і т. д.).
Перший місяць роботи над проектом добігав кінця:
- Розробник React шукав зручне рішення по зв'язці з Symfony;
- Я працював над тим, щоб через PHP відправити запит до api, а отримані дані передати на фронт для обробки через React.
- Залишалося легке нерозуміння, як все ж працювати далі, так як було кілька рішень, але чіткого уявлення не було.
На цьому етапі розробка загальмувалася на місяць. Розробник React був зайнятий своїми справами, з боку PHP основний функціонал був готовий, але все ж весь необхідний функціонал для отримання турів був на «фронті», а ця частина у нас застопорилася.
Тоді в команду прийшов ще один сильний Javascript розробник, який всього за тиждень на Javascript native написав всю ту частину, що у нас вже була на React, написав фільтри і ми інтегрували написаний функціонал в Symfony.
Ще ряд незрозумілих мені питань вирішилися завдяки менторові, зустрічам з php-розробниками і роботі front-end розробника, з яким ми вирішили проблеми «фронту» за місяць до фінальної презентації. З'явилася ясна цілісна картина процесу розробки.
До потрібного дизайну ми прийшли на другому варіанті макета, запропонованого дизайнерами. Через мою недосвідченість як проджект менеджера цей процес зайняв багато часу, протягом якого двоє front-end розробників чекали свої завдання. Так як ми відмовилися від React на користь Javascript native, а терміни підганяли, не всі сторінки були намальовані. Я вирішив зверстати їх на добре знайомому фреймворку Bootstrap. Останні сторінки версталися за день до фінальної презентації. Тестування сайту проходило паралельно і закінчилося в останній день.
В процесі розробки довелося відмовитися від агрегатора квитків і зосередитися тільки на турах. І так як головним призначенням програми EVO є застосуванням студентами отриманих на курсах знань — ми їх застосували в повній мірі, іноді стрибаючи вище голови.
Правда, до фіналу в проекті залишилося тільки 5 чоловік. Частина команди виявилася зайнята на роботі, а частину я не зміг задіяти через зірвані терміни дизайну.
Програма EVO дала неоціненний досвід розробки, досвід управління проектом, масу інформації, яку до того я не знав, з якою не стикався і не розумів. Я зміг попрактикуватися з мовою програмування і фреймворком, який вчив у Hillel, зміг застосувати отримані знання та отримав додаткові знання в процесі розробки, навчився на власних помилках. Найголовніше, завдяки програмі я реалізував той функціонал, який хотів і зможу тепер розробити інші ідеї, а також я і учасники команди зможуть додати цей проект у своє портфоліо.
На презентації готового проекту я почув масу позитивних відгуків, конструктивну критику та навіть пропозицію по функціоналу, яку обов'язково включу до плану майбутніх доробок. Я зрозумів, що проект актуальний, затребуваний і варто їм займатися і розвивати далі.
Як ви могли побачити на фото обкладинки, наш проект здобув перемогу отримавши найбільше голосів від менторів та викладачів школи Hillel.