Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Як прокачати трьох студентів за п’ять тижнів

Як прокачати трьох студентів за п’ять тижнів

GitHub repository: https://github.com/stfalcon-studio/lost-and-found
Відео з презентації: https://www.youtube.com/watch?v=3EgilE_fpkI

До нас на студію прийшли три студенти проходити практику. Потрібно було дати їм завдання і організувати навчальний процес. Розробляли проект "Бюро знахідок" на PHP Framework Symfony2. Ділюсь своїм досвідом, як я це зробив і що в результаті вийшло.

Avatar for Artem Henvald

Artem Henvald

February 26, 2015

More Decks by Artem Henvald

Other Decks in Education

Transcript

  1. Опитування студентів Оцініть свої знання за шкалою від 0 до

    10. Де: 0 - абсолютно нічого не знаю 10 - знаю бездоганно
  2. Біллі 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
  3. Віллі 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
  4. Діллі 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
  5. Як організувати практику, щоб було цікаво і студентам, і керівнику

    • Придумати цікаве і корисне завдання • Придумати цікавий робочий процес • Викладатись на максимум і вимагати цього ж • Давати не тільки критику, але і похвалу • Краще багато маленьких завдань, ніж одне велике • Не скупитись ділитись знаннями
  6. Про проект Lost and Found - Бюро знахідок • Подача/перегляд

    оголошень • GPS-координати знайденої/загубленої речі • Пошук співпадінь, прив’язка до категорій • Соціалізація • https://github.com/stfalcon-studio/lost-and-found
  7. Перший тиждень • Уроки по Git на Code School •

    Реєстрація на GitHub • Розгортання Symfony • Code Style • phpDocumentor • Проектування бази даних • Semantic Versioning • Опис перших сутностей та міграції • Перший робочий функціонал: форма для додавання речей, адмінка
  8. Code Style • PSR-0, PSR-1, PSR-2, PSR-3, PSR-4 • Symfony

    Coding standards • TWIG Coding standards • phpcs
  9. Другий тиждень • Версіонування даних • Сторінка перегляду окремої речі

    • Доробки в адмінці (batch actions, плюшки від Sonata) • Підключення Leaflet.js • Шаблонізатор TWIG • ORM, DBAL • FormType в Symfony • Сесія, флеш-повідомлення • Валідація • Різні маркери категорії • YAGNI, KISS, DRY • Реєстрація користувачів через Facebook • Сторінка профілю користувача • Можливість позначення території для загубленої речі
  10. Третій тиждень • PHPUnit • DoctrineExtensions: Tree • Popus on

    markers • Emails • Вивід карти загублених/знайдених речей • AJAX • Виправлення багів • Service Container в Symfony2 • Як слідкувати за інформацією в світі PHP? • Розділення функціоналу по ролям • F.A.Q.
  11. • Travis CI • Scrutinizer • Codecov • Packagist •

    VersionEye • SensioLabs Insight • HHVM • Gitter
  12. Четвертий тиждень • Консольна команда для пошуку співпадінь • Events

    and Event Dispatcher • Запит контактів автора оголошення • Форма зворотнього зв’язку • Завантаження фотографії для оголошень • Переклади інтерфейсу • Статистика загублених і знайдених речей в бекенді • Вивчення Behat та перші тести • SonataSeoBundle • Корисні фічі PhpStorm
  13. sКРЯm • короткі спрінти: 3-4 дні для гнучкості • тікети

    на команду, в команді тікети розподіляють самостійно • тім-лід приймає пулл-реквести в свій бранч • в кінці спрінта - демо • я приймаю тільки один великий пулл-реквест в develop в кінці спрінта
  14. П’ятий тиждень • Refactoring • Кастомізація адмінки • Покриття тестами

    існуючого функціоналу • Верстка • Повідомлення між користувачами • SonataMediaBundle • CSRF tokens • RESTful API
  15. Story points • Перший тиждень - 41 • Другий тиждень

    - 85 • Третій тиждень - 63 • Четвертий тиждень - 84,5 • П’ятий тиждень - 33,5...
  16. Типові баги, факапи, фейли • закомітили вендори і кеш •

    код з однієї фічі попадав в бранч іншої • не переглядали diff під час коміту, попадав зайвий код • вперто не видаляли закоментований код • зламані міграції
  17. Біллі 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
  18. Віллі 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
  19. Діллі 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
  20. Біллі • копіпастер level 2 • мауглі • пінг-понгер •

    merge-conflict • вотЕтаПаварот • йошкін кот level 2 • feature-inventor level 2 • renamer… • селфі-спамер • sprint #1 done • sprint #2 done
  21. Віллі • pair-programming • копіпастер level 2 • F.A.Q. (friendly)

    • йошкін кот • sprint #1 done • sprint #2 done
  22. Діллі • javascript-slave • pair-programming • монетизатор • Робін •

    sКРЯm-master • Behat-сапер • sprint #1 done • sprint #2 done
  23. Плани на наступну практику • Покращення алгоритму пошуку співпадінь •

    API • Покращений пошук • Кластеризація маркерів при зумі • Публікація в соціальні мережі • Рейтинг користувачів, бейджики • Нотифікація про знайдені поряд речі • Прив’язування оголошення до події • Функціонал блогу • RabbitMQ? • ElasticSearch? • MongoDB?
  24. Як я прокачав себе • time management • project management

    • оновив свої знання • вивчив те, що не знав • на скільки добре я пояснюю матеріал?