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

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

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

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

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
Tweet

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

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