GitHub repository: https://github.com/stfalcon-studio/lost-and-found
Відео з презентації: https://www.youtube.com/watch?v=3EgilE_fpkI
До нас на студію прийшли три студенти проходити практику. Потрібно було дати їм завдання і організувати навчальний процес. Розробляли проект "Бюро знахідок" на PHP Framework Symfony2. Ділюсь своїм досвідом, як я це зробив і що в результаті вийшло.
6. Біллі 0 1 2 3 4 5 6 7 8 9 10
PHP
JavaScript
CSS
HTML
PHP-Framework Symfony2
Doctrine ORM
PHP best practice
PhpStorm
Шаблонізатор TWIG
SQL
MySQL DB
Git, GitHub Workflow
Design Patterns
TDD, PHPUnit
BDD, Behat & Mink
Web-Development Workflow
7. Віллі 0 1 2 3 4 5 6 7 8 9 10
PHP
JavaScript
CSS
HTML
PHP-Framework Symfony2
Doctrine ORM
PHP best practice
PhpStorm
Шаблонізатор TWIG
SQL
MySQL DB
Git, GitHub Workflow
Design Patterns
TDD, PHPUnit
BDD, Behat & Mink
Web-Development Workflow
8. Діллі 0 1 2 3 4 5 6 7 8 9 10
PHP
JavaScript
CSS
HTML
PHP-Framework Symfony2
Doctrine ORM
PHP best practice
PhpStorm
Шаблонізатор TWIG
SQL
MySQL DB
Git, GitHub Workflow
Design Patterns
TDD, PHPUnit
BDD, Behat & Mink
Web-Development Workflow
9. Як організувати практику, щоб було
цікаво і студентам, і керівнику
● Придумати цікаве і корисне завдання
● Придумати цікавий робочий процес
● Викладатись на максимум і вимагати цього ж
● Давати не тільки критику, але і похвалу
● Краще багато маленьких завдань, ніж одне велике
● Не скупитись ділитись знаннями
10. Про проект
Lost and Found - Бюро знахідок
● Подача/перегляд оголошень
● GPS-координати знайденої/загубленої речі
● Пошук співпадінь, прив’язка до категорій
● Соціалізація
● https://github.com/stfalcon-studio/lost-and-found
19. Перший тиждень
● Уроки по Git на Code School
● Реєстрація на GitHub
● Розгортання Symfony
● Code Style
● phpDocumentor
● Проектування бази даних
● Semantic Versioning
● Опис перших сутностей та міграції
● Перший робочий функціонал: форма для
додавання речей, адмінка
26. Другий тиждень
● Версіонування даних
● Сторінка перегляду окремої речі
● Доробки в адмінці (batch actions, плюшки від Sonata)
● Підключення Leaflet.js
● Шаблонізатор TWIG
● ORM, DBAL
● FormType в Symfony
● Сесія, флеш-повідомлення
● Валідація
● Різні маркери категорії
● YAGNI, KISS, DRY
● Реєстрація користувачів через Facebook
● Сторінка профілю користувача
● Можливість позначення території для загубленої речі
28. Третій тиждень
● PHPUnit
● DoctrineExtensions: Tree
● Popus on markers
● Emails
● Вивід карти загублених/знайдених речей
● AJAX
● Виправлення багів
● Service Container в Symfony2
● Як слідкувати за інформацією в світі PHP?
● Розділення функціоналу по ролям
● F.A.Q.
36. Четвертий тиждень
● Консольна команда для пошуку співпадінь
● Events and Event Dispatcher
● Запит контактів автора оголошення
● Форма зворотнього зв’язку
● Завантаження фотографії для оголошень
● Переклади інтерфейсу
● Статистика загублених і знайдених речей в
бекенді
● Вивчення Behat та перші тести
● SonataSeoBundle
● Корисні фічі PhpStorm
39. sКРЯm
● короткі спрінти: 3-4 дні для гнучкості
● тікети на команду, в команді тікети розподіляють
самостійно
● тім-лід приймає пулл-реквести в свій бранч
● в кінці спрінта - демо
● я приймаю тільки один великий пулл-реквест в
develop в кінці спрінта
40. П’ятий тиждень
● Refactoring
● Кастомізація адмінки
● Покриття тестами існуючого функціоналу
● Верстка
● Повідомлення між користувачами
● SonataMediaBundle
● CSRF tokens
● RESTful API
41. Story points
● Перший тиждень - 41
● Другий тиждень - 85
● Третій тиждень - 63
● Четвертий тиждень - 84,5
● П’ятий тиждень - 33,5...
43. Типові баги, факапи, фейли
● закомітили вендори і кеш
● код з однієї фічі попадав в бранч іншої
● не переглядали diff під час коміту, попадав
зайвий код
● вперто не видаляли закоментований код
● зламані міграції
56. Плани на наступну практику
● Покращення алгоритму пошуку співпадінь
● API
● Покращений пошук
● Кластеризація маркерів при зумі
● Публікація в соціальні мережі
● Рейтинг користувачів, бейджики
● Нотифікація про знайдені поряд речі
● Прив’язування оголошення до події
● Функціонал блогу
● RabbitMQ?
● ElasticSearch?
● MongoDB?