Impact Analysis - LoopConf
Transcript
- 1. IMPACT ANALYSIS CHRISLEMA | CROWDFAVORITE
- 2. 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?
- 3. 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
- 4. 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...
- 5. 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 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
- 6. 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.
- 7. 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.
- 8. THE TRUTH: THE PROBLEM ISN’T CLIENTS & IT’S NOT DEVELOPERS
- 9. THE PROJECT BY THE NUMBERS # OF COMMITS # OF CONTRIBUTORS # OF MONTHS 4461 12 8
- 10. THE PROBLEM IS OUR BRAIN & MEMORY
- 11. 0% The number of staff we have that have perfect memory and can do impact analysis in their sleep.
- 12. 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.
- 13. 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.
- 14. NOTACHANGEORDERISSUE NOT A MONEY ISSUE. IT’S ABOUT RISK MITIGATION.
- 15. 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
- 16. Everything, which is done orderly, with measure and according to rules, generates something good. Plato
- 17. This is another story. It’s what turned me onto automated impact analysis thru acceptance tesPng. CAN I TELL YOU A STORY?
- 18. 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
- 19. 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
- 20. IMPACT ANALYSIS IS EASIER & FASTER USING CODECEPTION FOR ACCEPTANCE TESTING
- 21. ACCEPTANCE TESTS REPLICATE A USER’S EXPERIENCE & ARE DRIVEN BY “EXPECTATION” LOGIC. THEY REMEMBER ALL THE PREVIOUS DECISIONS & PROMISES YOU MADE.
- 22. 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/
- 23. <?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
- 24. 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.
- 25. wantTo amOnPage lookForwardTo click fillField selectOption submitForm see seeLink seeElement dontSeeElement seeInCurrentUrl seeCheckboxIsChecked seeInField CODECEPTION COMMANDS
- 26. 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
- 27. 395ACCEPTANCE TESTS
- 28. AUTOMATED ACCEPTANCE TESTING GITHUB SCRUTINIZER CODECEPTION CAPISTRANO 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
- 29. 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.
- 30. ConEnuous effort – not strength or intelligence – is the key to unlocking our potenPal. Sir Winston Churchill
- 31. Maybe you saw this in the papers, online, or read about it recently. It sPll bears telling. ONE LAST STORY...
- 32. 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.
- 33. 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
- 34. CHRIS LEMA CTO & CHIEF STRATEGIST, CROWD FAVORITE @chrislema | http://chrislema.com