Impact Analysis - LoopConf

34
IMPACT ANALYSIS CHRIS LEMA | CROWD FAVORITE

Transcript of Impact Analysis - LoopConf

Page 1: Impact Analysis - LoopConf

IMPACT ANALYSIS

CHRIS LEMA | CROWD FAVORITE

Page 2: Impact Analysis - LoopConf

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?

Page 3: Impact Analysis - LoopConf

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

Page 4: Impact Analysis - LoopConf

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...

Page 5: Impact Analysis - LoopConf

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

Page 6: Impact Analysis - LoopConf

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.

Page 7: Impact Analysis - LoopConf

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.

Page 8: Impact Analysis - LoopConf

THE TRUTH: THE PROBLEM ISN’T CLIENTS & IT’S NOT DEVELOPERS

Page 9: Impact Analysis - LoopConf

THE PROJECT BY THE NUMBERS

# OF COMMITS # OF CONTRIBUTORS # OF MONTHS

4461 12 8

Page 10: Impact Analysis - LoopConf

THE PROBLEM IS OUR BRAIN & MEMORY

Page 11: Impact Analysis - LoopConf

0% The number of staff we have that have perfect memory and can do impact analysis in their sleep.

Page 12: Impact Analysis - LoopConf

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.  

Page 13: Impact Analysis - LoopConf

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.  

Page 14: Impact Analysis - LoopConf

   

NOT A CHANGE ORDER ISSUE NOT  A  MONEY  ISSUE.  IT’S  ABOUT  RISK  MITIGATION.

Page 15: Impact Analysis - LoopConf

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

Page 16: Impact Analysis - LoopConf

Everything, which is done orderly, with measure and according to rules, generates something good. Plato

Page 17: Impact Analysis - LoopConf

This  is  another  story.  It’s  what  turned  me  onto  automated  impact  analysis  thru  acceptance  tesPng.  

CAN I TELL YOU A STORY?

Page 18: Impact Analysis - LoopConf

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

Page 19: Impact Analysis - LoopConf

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

Page 20: Impact Analysis - LoopConf

IMPACT ANALYSIS IS EASIER & FASTER USING CODECEPTION FOR ACCEPTANCE TESTING

Page 21: Impact Analysis - LoopConf

ACCEPTANCE TESTS REPLICATE A USER’S EXPERIENCE & ARE DRIVEN BY “EXPECTATION” LOGIC. THEY REMEMBER ALL THE PREVIOUS DECISIONS & PROMISES YOU MADE.

Page 22: Impact Analysis - LoopConf

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/

Page 23: Impact Analysis - LoopConf

<?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

Page 24: Impact Analysis - LoopConf

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.

Page 25: Impact Analysis - LoopConf

wantTo amOnPage lookForwardTo click fillField selectOption submitForm

see seeLink seeElement dontSeeElement seeInCurrentUrl seeCheckboxIsChecked seeInField

CODECEPTION COMMANDS  

Page 26: Impact Analysis - LoopConf

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

Page 27: Impact Analysis - LoopConf

395 ACCEPTANCE TESTS

Page 28: Impact Analysis - LoopConf

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

Page 29: Impact Analysis - LoopConf

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.

Page 30: Impact Analysis - LoopConf

ConEnuous  effort    –  not  strength  or  intelligence  –    is  the  key  to  unlocking  our  potenPal.   Sir  Winston  Churchill

Page 31: Impact Analysis - LoopConf

Maybe  you  saw  this  in  the  papers,  online,    or  read  about  it  recently.  It  sPll  bears  telling.  

ONE LAST STORY...

Page 32: Impact Analysis - LoopConf

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.  

Page 33: Impact Analysis - LoopConf

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

Page 34: Impact Analysis - LoopConf

CHRIS LEMA CTO & CHIEF STRATEGIST, CROWD FAVORITE @chrislema | http://chrislema.com