View
6.749
Download
0
Category
Tags:
Preview:
Citation preview
IMPACT ANALYSIS
CHRIS LEMA | CROWD FAVORITE
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
THE WAY IT’S SUPPOSED TO WORK
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
WHAT HAPPENS WHEN...
THE DANGER ZONE The porPon of a project where all your profit disappears and you’re wondering how you got here in the first place.
HOPE
ACTU
AL
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 finally 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.
THE TRUTH: THE PROBLEM ISN’T CLIENTS & IT’S NOT DEVELOPERS
THE PROJECT BY THE NUMBERS
# OF COMMITS # OF CONTRIBUTORS # OF MONTHS
4461 12 8
THE PROBLEM IS OUR BRAIN & MEMORY
0% The number of staff we have that have perfect memory and can do impact analysis in their sleep.
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.
NOT A CHANGE ORDER ISSUE NOT A MONEY ISSUE. IT’S ABOUT RISK MITIGATION.
THE DANGER ZONE The place where you break your own code and can’t charge anyone else because it’s your mistake.
HOPE
ACTU
AL
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
Everything, which is done orderly, with measure and according to rules, generates something good. Plato
This is another story. It’s what turned me onto automated impact analysis thru acceptance tesPng.
CAN I TELL YOU A STORY?
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
IMPACT ANALYSIS IS EASIER & FASTER USING CODECEPTION FOR ACCEPTANCE TESTING
ACCEPTANCE TESTS REPLICATE A USER’S EXPERIENCE & ARE DRIVEN BY “EXPECTATION” LOGIC. THEY REMEMBER ALL THE PREVIOUS DECISIONS & PROMISES YOU MADE.
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 .pha r generate : s cena r io s
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.
wantTo amOnPage lookForwardTo click fillField selectOption submitForm
see seeLink seeElement dontSeeElement seeInCurrentUrl seeCheckboxIsChecked seeInField
CODECEPTION COMMANDS
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
395 ACCEPTANCE TESTS
AUTOMATED ACCEPTANCE TESTING GITH
UB
SCRU
TINIZER
CO
DECE
PTION
CAPISTRA
NO
PUSH REPO
TESTS Registered w/ ScruPnizer? ScruPnizer calls CodecepPon
Do the tests pass? ScruPnizer iniPates deployment
Capistrano only deploys code that’s passed acceptance tests
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 find places of impact quickly.
ConEnuous effort – 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 mil l ion $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
CHRIS LEMA CTO & CHIEF STRATEGIST, CROWD FAVORITE @chrislema | http://chrislema.com
Recommended