Краткая информация о том, что должен знать каждый разработчик программного обеспечения.
Видео версия презентации http://www.youtube.com/watch?v=MqKFIcfouQc
2. Содержание
> Базовые принципы командной работы
> Правила по работе с исходным кодом
> Непрерывная поставка разрабатываемого
продукта
> Правильная организация построения
архитектуры
> Behavior Driven Development
4. 4Успешная карьера в современной разработке ПО. Что должен знать каждый?
Что такое команда?
Команда
— это небольшая группа людей со взаимодополняющими
навыками, чувствующих взаимную ответственность
и объединенных общей целью.
5. 5Успешная карьера в современной разработке ПО. Что должен знать каждый?
Manifesto for Agile Software Development
Agile-манифест разработки
программного обеспечения
Мы постоянно открываем для себя более
совершенные методы разработки программного
обеспечения, занимаясь разработкой
непосредственно и помогая в этом другим.
Благодаря проделанной работе мы смогли осознать,
что:
> Люди и взаимодействие важнее процессов
и инструментов
> Работающий продукт важнее исчерпывающей
документации
> Сотрудничество с заказчиком важнее
согласования условий контракта
> Готовность к изменениям важнее следования
первоначальному плану
То есть, не отрицая важности того, что справа,
мы всё-таки больше ценим то, что слева.
Kent Beck
Mike Beedle
Arie van Bennekum
Alistair Cockburn
Ward Cunningham
Martin Fowler
James Grenning
Jim Highsmith
Andrew Hunt
Ron Jeffries
Jon Kern
Brian Marick
Robert C. Martin
Steve Mellor
Ken Schwaber
Jeff Sutherland
Dave Thomas
www.agilemanifesto.org
6. 6Успешная карьера в современной разработке ПО. Что должен знать каждый?
XP, Scrum, Kanban
Адаптивность
XP
(13) Scrum
(9) Kanban
(3)
?
More adaptive
7. 7Успешная карьера в современной разработке ПО. Что должен знать каждый?
Planning game (XP)
Planning poker
8. 8Успешная карьера в современной разработке ПО. Что должен знать каждый?
Doing Agile vs Being Agile
Doing Agile
Being Agile
10. 10Успешная карьера в современной разработке ПО. Что должен знать каждый?
Version Control System
GIT & Subversion
2009 2010 2011 2012 2013 2014
70%
60%
50%
40%
30%
20%
10%
0%
Git
Svn
11. 11Успешная карьера в современной разработке ПО. Что должен знать каждый?
GIT Flow
GIT Flow
в теории
12. 12Успешная карьера в современной разработке ПО. Что должен знать каждый?
GIT Flow
GIT Flow
на
практике
13. 13Успешная карьера в современной разработке ПО. Что должен знать каждый?
GIT Flow
GIT Flow
+ REBASE
In process
Цель
> Линейность истории
изменений
Средства
> Merge ff-only
> Логическая
завершенность каждого
коммита
14. 14Успешная карьера в современной разработке ПО. Что должен знать каждый?
GIT Flow
GIT Flow
+ REBASE
AFTER MERGE
15. 15Успешная карьера в современной разработке ПО. Что должен знать каждый?
Практики XP
> Формируется командой
> Перечень правил не должен
быть исчерпывающим или
слишком объёмным
> Адаптируется вместе с командой
CODING
STANDARD
> Проводится командой
> Используется специализированное
ПО (Stash, Upsource и др.)
> Целью является улучшение качества
программного продукта и
совершенствование навыков
разработчиков
CODE
REVIEW
19. 19Успешная карьера в современной разработке ПО. Что должен знать каждый?
Domain-Driven Design
ANEMIC DOMAIN MODEL + RPC
20. 20Успешная карьера в современной разработке ПО. Что должен знать каждый?
Domain-Driven Design
Многоуровневая архитектура
Интерфейс пользователя
Операционный
Предметной области
Инфраструктурный
21. 21Успешная карьера в современной разработке ПО. Что должен знать каждый?
Domain-Driven Design
Что читать?
22. 22Успешная карьера в современной разработке ПО. Что должен знать каждый?
Domain-Driven Design
Составляющие эффективного
моделирования
Связь между моделью и реализацией
Единый язык
Информоемкая модель
Дистилляция модели
Эксперименты и мозговые штурмы
23. 23Успешная карьера в современной разработке ПО. Что должен знать каждый?
Domain-Driven Design
Модульность
Низкая внешняя зависимость при
высокой внутренней связности
25. 25Успешная карьера в современной разработке ПО. Что должен знать каждый?
Test-Driven Development
Test-driven
development
Возникающие
вопросы
С чего начать?
Что тестировать?
Что не тестировать?
Как много тестировать за раз?
Как называть тесты?
Как понять, почему тесты падают?
26. 26Успешная карьера в современной разработке ПО. Что должен знать каждый?
Behavior Driven Development
Немного истории
2004
JBehave
2006
INTRODUCING BDD
http://dannorth.net/introducing-bdd/
2007
RBehave, Rspec
2009
Cucumber (Gherkin)
27. 27Успешная карьера в современной разработке ПО. Что должен знать каждый?
Behavior Driven Development
Behavior Driven
Development
«BDD is a second-generation, outside-in, pull-based, multiple-
stakeholder, multiple-scale, high-automation, agile methodology.
It describes a cycle of interactions with well-defined outputs, resulting
in the delivery of working, tested software that matters.»
Dan North
3 Principles
> Enough is enough: do as much planning, analysis, and design
as you need, but no more
> Deliver stakeholder value: everything you do should deliver
value or increase your ability to do so
> It's a behavior: everyone involved should have the same way
of talking about the system and what it does
28. 28Успешная карьера в современной разработке ПО. Что должен знать каждый?
Behavior Driven Development
Cucumber example
Feature: Addition
In order to avoid silly mistakes
As a math idiot
I want to be told sum of two numbers
Scenario: Add two numbers
Given I have entered 50 into the calculator
And I have entered 70 into the calculator
When I press add
Then the result should be 120 on the screen
29. 29Успешная карьера в современной разработке ПО. Что должен знать каждый?
Behavior Driven Development
Что
почитать?