Як прокачати трьох студентів за п’ять тижнів Artem Genvald Km Code'n'Coffee #12 26.02.2015
Як прокачати трьох студентів за п’ять тижнів
Artem Genvald
Km Code'n'Coffee #1226.02.2015
Я очікував на щось таке...
Або таке...
Але отримав таке :)
Опитування студентів
Оцініть свої знання за шкалою від 0 до 10. Де:
0 - абсолютно нічого не знаю10 - знаю бездоганно
Біллі 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
Віллі 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
Діллі 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
Як організувати практику, щоб було цікаво і студентам, і керівнику
● Придумати цікаве і корисне завдання
● Придумати цікавий робочий процес
● Викладатись на максимум і вимагати цього ж
● Давати не тільки критику, але і похвалу
● Краще багато маленьких завдань, ніж одне велике
● Не скупитись ділитись знаннями
Про проект
Lost and Found - Бюро знахідок
● Подача/перегляд оголошень
● GPS-координати знайденої/загубленої речі
● Пошук співпадінь, прив’язка до категорій
● Соціалізація
● https://github.com/stfalcon-studio/lost-and-found
Рефакторити доводилось не тільки код, але й робочі місця
До рефакторинга
Після рефакторинга
Робота в команді
Trello
Маркуваннятікетів
кольорами
З першого поглядувидно стан справ
Перший тиждень● Уроки по Git на Code School● Реєстрація на GitHub● Розгортання Symfony● Code Style● phpDocumentor● Проектування бази даних● Semantic Versioning● Опис перших сутностей та міграції● Перший робочий функціонал: форма для
додавання речей, адмінка
Code Style
Што, кря…?
Code Style
● PSR-0, PSR-1, PSR-2, PSR-3, PSR-4
● Symfony Coding standards
● TWIG Coding standards
● phpcs
RTFM! Читаємо документацію
Batsignal
Читаємо документацію! Кря...
Другий тиждень● Версіонування даних● Сторінка перегляду окремої речі● Доробки в адмінці (batch actions, плюшки від Sonata)● Підключення Leaflet.js● Шаблонізатор TWIG● ORM, DBAL● FormType в Symfony● Сесія, флеш-повідомлення● Валідація● Різні маркери категорії● YAGNI, KISS, DRY● Реєстрація користувачів через Facebook● Сторінка профілю користувача● Можливість позначення території для загубленої речі
Leaflet Draw
Третій тиждень● PHPUnit● DoctrineExtensions: Tree● Popus on markers● Emails● Вивід карти загублених/знайдених речей● AJAX● Виправлення багів● Service Container в Symfony2● Як слідкувати за інформацією в світі PHP?● Розділення функціоналу по ролям● F.A.Q.
Skype >>> Slack
Підключаємо сервіси оцінки якості коду
● Travis CI● Scrutinizer● Codecov● Packagist● VersionEye● SensioLabs Insight● HHVM● Gitter
Code Coverage
Scrutinizer
SensioLabs Insight
Парне програмування
Четвертий тиждень● Консольна команда для пошуку співпадінь● Events and Event Dispatcher● Запит контактів автора оголошення● Форма зворотнього зв’язку● Завантаження фотографії для оголошень● Переклади інтерфейсу● Статистика загублених і знайдених речей в
бекенді● Вивчення Behat та перші тести● SonataSeoBundle● Корисні фічі PhpStorm
Scrum
Team Lead
sКРЯm
● короткі спрінти: 3-4 дні для гнучкості● тікети на команду, в команді тікети розподіляють
самостійно● тім-лід приймає пулл-реквести в свій бранч● в кінці спрінта - демо● я приймаю тільки один великий пулл-реквест в
develop в кінці спрінта
П’ятий тиждень● Refactoring
● Кастомізація адмінки
● Покриття тестами існуючого функціоналу
● Верстка
● Повідомлення між користувачами
● SonataMediaBundle
● CSRF tokens
● RESTful API
Story points
● Перший тиждень - 41
● Другий тиждень - 85
● Третій тиждень - 63
● Четвертий тиждень - 84,5
● П’ятий тиждень - 33,5...
Типові баги, факапи, фейли
Типові баги, факапи, фейли
● закомітили вендори і кеш
● код з однієї фічі попадав в бранч іншої
● не переглядали diff під час коміту, попадав
зайвий код
● вперто не видаляли закоментований код
● зламані міграції
Повторне опитування студентів в кінці практики
Біллі 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
Віллі 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
Діллі 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
Статистика RescueTime від Діллі
Бейджики
Біллі● копіпастер level 2● мауглі● пінг-понгер● merge-conflict● вотЕтаПаварот● йошкін кот level 2● feature-inventor level 2● renamer…● селфі-спамер● sprint #1 done● sprint #2 done
Віллі● pair-programming● копіпастер level 2● F.A.Q. (friendly)● йошкін кот● sprint #1 done● sprint #2 done
Діллі● javascript-slave● pair-programming● монетизатор● Робін● sКРЯm-master● Behat-сапер● sprint #1 done● sprint #2 done
Чуваки на правильному шляху
Перший отриманий хабар :)
Плани на наступну практику● Покращення алгоритму пошуку співпадінь● API● Покращений пошук● Кластеризація маркерів при зумі● Публікація в соціальні мережі● Рейтинг користувачів, бейджики● Нотифікація про знайдені поряд речі● Прив’язування оголошення до події● Функціонал блогу● RabbitMQ?● ElasticSearch?● MongoDB?
Як я прокачав себе
Як я прокачав себе
● time management
● project management
● оновив свої знання
● вивчив те, що не знав
● на скільки добре я пояснюю матеріал?
Практика закінчилась
Тепер я вільний!
А де ж Поночка? :)
А ось вона =)
Яна - HR at Stfalcon.com
Happy End
To be continued...