building behavior driven teams - phpcon poland 2014
DESCRIPTION
Many teams in their development process tend to focus on answering the question “how” instead of “why”. This leads to many misunderstandings which in turn decrease productivity and pleasure of working. In my presentation I waned to introduce Behavior Driven Development which is one of the ways to improve communication within a team. I will share my knowledge on how to start with BDD in your company and say a couple of words about things like StoryBDD, SpecBDD and living documentation. Taking my team as a use case I will also speak about how BDD helped us in understanding each other and making software that matters.TRANSCRIPT
![Page 1: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/1.jpg)
BUILDING BEHAVIOR DRIVEN TEAMS
PHPCon Poland 2014
![Page 2: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/2.jpg)
Karol SójkoProject Leader @ Schibsted Tech Polska
@karolsojko
PHPers 3City organiser+
"
#BDD #PHP
#Symfony #TDD
#ImpactMapping #Agile #Team
![Page 3: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/3.jpg)
Common Team Problems
ú
![Page 4: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/4.jpg)
COMMUNICATIONExpect the unexpected
![Page 5: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/5.jpg)
THE GREAT WALLBetween Us
![Page 6: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/6.jpg)
Rambo Developers&
Colonel Trautman Managers
![Page 7: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/7.jpg)
Outdated Documentationor what’s left of it
![Page 8: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/8.jpg)
Tail ChasingLike a boss
![Page 9: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/9.jpg)
BoomerangsPlease don’t come back
![Page 10: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/10.jpg)
What Is BDD
z
![Page 11: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/11.jpg)
Full Stack BDD
V
Behavior Driven Development
Inner QualityX
Outer Quality
Quality
Spec BDD Story BDD
![Page 12: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/12.jpg)
#
$
Backlog
Story BDD
Features
Scenarios
Green
Refactor
Red
StoryBDD & SpecBDD
Spec BDD
![Page 13: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/13.jpg)
Impact Mappingq
![Page 14: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/14.jpg)
Why
Who
HowWhat
Who
HowWhat
What…
…
Impact Mapping
![Page 15: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/15.jpg)
Increase Books Sale
Who
HowWhat
Who
HowWhat
What…
…
Impact Mapping
![Page 16: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/16.jpg)
Increase Books Sale
Readers
HowWhat
Authors
HowWhat
What…
…
Impact Mapping
![Page 17: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/17.jpg)
Increase Books Sale
Readers
Organize Events
What
Authors
Make Book Clubs Popular
What
What…
…
Impact Mapping
![Page 18: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/18.jpg)
Increase Books Sale
Readers
Organize Events
Inviting Readers
Authors
Make Book Clubs Popular
Voting for books
Creating book clubs…
…
Impact Mapping
![Page 19: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/19.jpg)
Living Documentation`
![Page 20: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/20.jpg)
Increase Books Sale
Readers
Organize Events
Inviting Readers
Authors
Make Book Clubs Popular
Voting for books
Creating book clubs…
…
Scenario Workshop
Feature: Creating book clubs In order to make book clubs popular As a reader I want to create book clubs Scenario: Successfully creating a book club Given I am a registered user When I create a book club Then all users can join it
![Page 21: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/21.jpg)
Increase Books Sale
Readers
Organize Events
Inviting Readers
Authors
Make Book Clubs Popular
Voting for books
Creating book clubs…
…
Refine ExamplesBeforeGiven I am a registered userWhen I create a book clubThen all users can join it
Given I am logged in as “[email protected]” When I am on book club creation pageAnd I fill in “Name” with “PHP Book Club” And I press “Create” Then a pubic book club “PHP Book Club” should exist !
After
![Page 22: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/22.jpg)
Being SpecificY
![Page 23: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/23.jpg)
/** * @Then a public book club :bookClubName should exist */public function aPublicBookClubShouldExist($bookClubName) { $dm = $this->getDocumentManager(); $bookClub = $dm->getRepository('AcmeDemoBundle:BookClub') ->findOneBy(array('email' => $bookClubName)); if (empty($bookClub)) { throw new \Exception(sprintf( 'Book club %s has not been found', $bookClubName )); } }
Behat steps
![Page 24: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/24.jpg)
use PhpSpec\ObjectBehavior; class BookClubSpec extends ObjectBehavior{ /** * @param Acme\DemoBundle\Document\User $user */ function it_should_be_available_for_readers($user) { $user->isReader()->willReturn(true); $this->isAvailableFor($user)->shouldReturn(true); } /** * @param Acme\DemoBundle\Document\User $user */ function it_should_not_be_available_for_readers_if_premium($user) { $user->isReader()->willReturn(true); $this->setPremium(true); $this->isAvailableFor($user)->shouldReturn(false); } }
class BookClub{ protected $premium; /** * @param $premium */ public function setPremium($premium) { $this->premium = $premium; } /** * @param User $user * * @return bool */ public function isAvailableFor(User $user) { return $user->isReader() && !$this->premium; } }
PhpSpec Implementation
![Page 25: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/25.jpg)
BDD in your CompanyZ
![Page 26: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/26.jpg)
Business and Development
![Page 27: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/27.jpg)
When you have a hammer …
![Page 28: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/28.jpg)
Avoid Buzz Words
![Page 29: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/29.jpg)
The Batman
![Page 30: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/30.jpg)
Don’t attack every angle
![Page 31: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/31.jpg)
Measure business valuesnot developers
![Page 32: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/32.jpg)
Use Case #1 The Comet CultB
![Page 33: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/33.jpg)
Small Team
![Page 34: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/34.jpg)
4 Different Locations
![Page 35: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/35.jpg)
Communication Breakdown
![Page 36: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/36.jpg)
Us and Them
![Page 37: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/37.jpg)
The Guesstimates
![Page 38: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/38.jpg)
Rock Solid
![Page 39: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/39.jpg)
Issue reincarnation
![Page 40: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/40.jpg)
What to test?
![Page 41: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/41.jpg)
Use Case #2 SchibstedB
![Page 42: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/42.jpg)
Team building 101
![Page 43: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/43.jpg)
Buzz word project
![Page 44: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/44.jpg)
Mind reading
![Page 45: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/45.jpg)
Achievement Unlockedf
![Page 46: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/46.jpg)
Goal Comprehension
![Page 47: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/47.jpg)
Release soon & adjust quickly
![Page 48: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/48.jpg)
Focus on Quality
![Page 49: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/49.jpg)
Client’s Trust
![Page 50: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/50.jpg)
Quicker Agile Adoption
![Page 51: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/51.jpg)
The Team
![Page 52: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/52.jpg)
Good Reads
![Page 53: Building Behavior Driven Teams - PHPCon Poland 2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/54841df8b4af9f84218b4590/html5/thumbnails/53.jpg)
Question Time!
https://joind.in/talk/view/11851
http://behaviordriventeams.com