O SlideShare utiliza cookies para otimizar a funcionalidade e o desempenho do site, assim como para apresentar publicidade mais relevante aos nossos usuários. Se você continuar a navegar o site, você aceita o uso de cookies. Leia nosso Contrato do Usuário e nossa Política de Privacidade.
O SlideShare utiliza cookies para otimizar a funcionalidade e o desempenho do site, assim como para apresentar publicidade mais relevante aos nossos usuários. Se você continuar a utilizar o site, você aceita o uso de cookies. Leia nossa Política de Privacidade e nosso Contrato do Usuário para obter mais detalhes.
This is a story that
bears strong resemblance to a real project. I can’t tell you the details but I can tell you enough of it to make it useful as a story. I’ll protect the innocent. Oh wait, there were no innocents. CAN I TELL YOU A STORY?
PERFECT CLIENT BUILD THE
SOLUTION DESIGN THE SOLUTION RECIEVE THE REQUIREMENTS GO THROUGH THE SECOND ROUND OF SAME PHASE NO YES TEST & SHOW THE CLIENT release start of iteraPon THEWAYIT’SSUPPOSEDTOWORK
LARGE CLIENT BUILD THE
SOLUTION DESIGN THE SOLUTION RECIEVE THE REQUIREMENTS YES. WE KNOW WHO YOU ARE. OK. WE’RE ON IT. NO WAIT! LET’S ADD NEW SCOPE TEST & SHOW THE CLIENT WHATHAPPENSWHEN...
THE DANGER ZONE The porPon
of a project where all your proﬁt disappears and you’re wondering how you got here in the ﬁrst place. HOPE ACTUAL SOW DEVELOPMENT & QA DISCOVERY LAUNCH Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec Jan Feb Mar Apr May Jun Jul Aug Sep 2014 2015 THE PROJECT TIMELINE TELLS THE STORY SOW DEVELOPMENT DISCOVERY SOW & CONTRACTS DEVELOPMENT DISCOVERY LAUNCH PARTNER API IS A WORK IN PROGRESS DANGER ZONE
CLIENTS ARE IDEA FACTORIES You
can’t blame a client for having a lot of new ideas when they can ﬁnally interact with the system they’ve been paying for.
DEVELOPERS GET EASILY ANCHORED We
o]en get locked in on the original statement of work -‐ and the tasks we created based on them. Even if a client has to adjust course.
IMPACT ANALYSIS The work that
must be done when a client requests new work (new scope) and it must be determined what the changes will do (what impact they’ll have) on exisPng code. HINT: IT’S REALLY HARD TO DO.
HOW DO YOU MAKE CHOICES
WHEN YOU WRITE CODE? Idea Insight CODE CODE CODE Talk Talk Talk Choice Choice Choice If you noPce the performance isn’t great, maybe you try a new approach. Seeing someone else’s code helps you think about your own in a new way. New informaPon suggests you thought about it all wrong. Which leads to changes in your code. LET ME MAKE A GUESS. YOU DON’T WRITE THIS ALL DOWN. I NEVER DID.
THE DANGER ZONE The place
where you break your own code and can’t charge anyone else because it’s your mistake. HOPE ACTUAL SOW DEVELOPMENT & QA DISCOVERY LAUNCH Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec Jan Feb Mar Apr May Jun Jul Aug Sep 2014 2015 WE CREATED CHANGE ORDERS FOR NEW WORK... SOW DEVELOPMENT DISCOVERY SOW & CONTRACTS DEVELOPMENT DISCOVERY LAUNCH PARTNER API IS A WORK IN PROGRESS DANGER ZONE
The trading engine for
market makers was a message-‐oriented soluEon that was having performance issues. No one thought about gridlock because no one thought about the big picture. PACIFIC STOCK EXCHANGE
HIRE OLD PEOPLE T I
N Y L I T T L E P L U G B E C A U S E T H E Y C A N W R I T E B O O K S F I L L E D W I T H L E S S O N S L E A R N E D
Title As a [role] I
want [feature] So that [benefit] Acceptance Criteria Scenario: Title Given [context] When [event] Then [outcome] hdp://dannorth.net/whats-‐in-‐a-‐story/
<?php $I = new AcceptanceTester($scenario);
$I->am(‘A Subscriber’); $I->wantTo(‘edit my profile’); $I->amOnPage(‘/members/edit-profile/’); $I->canSee(‘Personal Information’); ?> $ php codecept.phar generate:scenarios
I want to edit my
profile I am on page ‘members/edit-profile’ I see ‘Personal Information’ ... This is the expectaPon logic that is easy to remember later. And it’s really helpful when something breaks. Because we know exactly what we were trying to do and how to verify that something broke.
1. wget http://codeception.com/codecept.phar 2. php codecept.phar
bootstrap 3. php codecept.phar generate:cept acceptance Welcome 4. Edit file tests/acceptance/WelcomeCept.php 5. Write your first acceptance test 6. Put application URL into tests/acceptance.suite.yml 7. php codecept.phar run GETTING STARTED IS EASY hdp://codecepPon.com/quickstart
80mph SPEED The goal isn’t
to write these tests quickly. Or even to learn quickly which acceptance tests to write. The goal is to ﬁnd places of impact quickly.
ConEnuous eﬀort –
not strength or intelligence – is the key to unlocking our potenPal. Sir Winston Churchill
Maybe you saw this in
the papers, online, or read about it recently. It sPll bears telling. ONE LAST STORY...
KNIGHT CAPITAL - August 2012
$440 million $10MM every minute 45 MINUTES 8 SERVERS LET ME MAKE A GUESS. YOU DON’T WANT YOUR NAME IN AN SEC FILING.
RESOURCES TO GET YOU STARTED
hdp://codecepPon.com/quickstart hdp://codecepPon.com/docs/01-‐IntroducPon hdp://codecepPon.com/docs/02-‐GekngStarted hdp://codecepPon.com/docs/04-‐AcceptanceTests hdp://dannorth.net/whats-‐in-‐a-‐story/ hdps://vimeo.com/rzen/codecepPon