THANKS FOR READING. - Marco Behler, Author. Copyright 2015 Marco Behler GmbH. All Rights Reserved.

Similar documents
An Introduction to Business Disaster Recovery

HOW TO INTEGRATE A PAYPAL BUTTON INTO YOUR WEBSITE

Adding content to your Blackboard 9.1 class

Week - 01 Lecture - 04 Downloading and installing Python

205CDE: Developing the Modern Web. Assignment 1: Designing a Website. Scenario: D Bookshop

Welcome Back! Without further delay, let s get started! First Things First. If you haven t done it already, download Turbo Lister from ebay.

Outlook is easier to use than you might think; it also does a lot more than. Fundamental Features: How Did You Ever Do without Outlook?

Azon Master Class. By Ryan Stevenson Guidebook #5 WordPress Usage

Lesson 2. Introducing Apps. In this lesson, you ll unlock the true power of your computer by learning to use apps!

Clickbank Domination Presents. A case study by Devin Zander. A look into how absolutely easy internet marketing is. Money Mindset Page 1

SPEED UP YOUR CODING PROCESS HTML INSIGHTS YOU DIDN T KNOW ABOUT. 1

Samples of Features and Feature Stories CSc 190

Participation Status Report STUDIO ELEMENTS I KATE SOHNG

Hello, welcome to creating a widget in MyUW. We only have 300 seconds, so let s get going.

Chapter01.fm Page 1 Monday, August 23, :52 PM. Part I of Change. The Mechanics. of Change

Background. $VENDOR wasn t sure either, but they were pretty sure it wasn t their code.

The name of our class will be Yo. Type that in where it says Class Name. Don t hit the OK button yet.

If Statements, For Loops, Functions

Basic Fiction Formatting for Smashwords in OpenOffice L. Leona Davis. Copyright 2012 L. Leona Davis All Rights Reserved

FileWave 10 Webinar Q&A

Download Free Pictures & Wallpaper from the Internet

The first thing we ll need is some numbers. I m going to use the set of times and drug concentration levels in a patient s bloodstream given below.

By Jeff Walker ProductLaunchFormula.com BLACKOUT.

Measuring Usability: The Basics

Staff Intranet Survey Results

CSS Crash Course for Fearless Bloggers by Gill Andrews

Apple iphone Battery Life Tweak

How to Create a Killer Resources Page (That's Crazy Profitable)

THE 18 POINT CHECKLIST TO BUILDING THE PERFECT LANDING PAGE

CHIPS Newsletter Vol 16 - Yahoo! Mail. Official Newsletter of

For those who might be worried about the down time during Lync Mobility deployment, No there is no down time required

Mr G s Java Jive. #11: Formatting Numbers

CREATE YOUR CONTENT STRATEGY & LAUNCH PLAN Amanda Genther Inc. & Irresistible Offerings

Subversion was not there a minute ago. Then I went through a couple of menus and eventually it showed up. Why is it there sometimes and sometimes not?

Product Backlog Document Template and Example

SITE 2 SITE SYNC TRANSFER NOTES

Hello World! Computer Programming for Kids and Other Beginners. Chapter 1. by Warren Sande and Carter Sande. Copyright 2009 Manning Publications

Web Host. Choosing a. for Your WordPress Site. What is web hosting, and why do you need it?

Title: Episode 11 - Walking through the Rapid Business Warehouse at TOMS Shoes (Duration: 18:10)

business card $ Business card design includes 3 business card options to choose from plus 2 rounds of editing.

c122jan2714.notebook January 27, 2014

Pastel Evolution Bank Manager Version 2

_APP A_541_10/31/06. Appendix A. Backing Up Your Project Files

Strategy. 1. You must do an internal needs analysis before looking at software or creating an ITT

Slick The Split:

Problem Solving through Programming In C Prof. Anupam Basu Department of Computer Science & Engineering Indian Institute of Technology, Kharagpur

Dealing with Bugs. Kenneth M. Anderson University of Colorado, Boulder CSCI 5828 Lecture 27 04/21/2009

Digital Marketing Manager, Marketing Manager, Agency Owner. Bachelors in Marketing, Advertising, Communications, or equivalent experience

What about when it s down? An Application for the Enhancement of the SAS Middle Tier User Experience

How to use the Vlookup function in Excel

Your First Meteor Application

x 2 + 3, r 4(x) = x2 1

(Refer Slide Time: 01:25)

Oracle Eloqua Campaigns

BTEC Nationals IT - Unit2 FAQs

PayTrace Virtual Terminal

HOW TO CREATE AN OPT-IN THAT SPEAKS TO YOUR TARGET AUDIENCE

Azon Master Class. By Ryan Stevenson Guidebook #4 WordPress Installation & Setup

At merchants that have not yet signed up for your card will continue to work without the need to use an OTP.

SPRING MVC: BEGINNER'S GUIDE BY AMUTHAN G DOWNLOAD EBOOK : SPRING MVC: BEGINNER'S GUIDE BY AMUTHAN G PDF

Web Hosting. Important features to consider

Thank You. Hello. Special offer

How To Save $30,000 a Month Using

Meet our Example Buyer Persona Adele Revella, CEO

c122sep814.notebook September 08, 2014 All assignments should be sent to Backup please send a cc to this address

A PROGRAM IS A SEQUENCE of instructions that a computer can execute to

Discover How to Watch the Mass Ascension of the Albuquerque International Balloon Fiesta Even if You Can t Be There

Getting Started. Excerpted from Hello World! Computer Programming for Kids and Other Beginners

How to Improve Your Campaign Conversion Rates

Copyright. For more information, please read the Disclosures and Disclaimers section at the end of this ebook. First PDF Edition, February 2013

Keep It Easy Software Cloud User Manual

OpenEmbedded in the Real World

The QuickStudy Guide for Zoho CRM

SitelokTM. Stripe Plugin V1.5

List Building Starter Course. Lesson 2. Writing Your Campaign. Sean Mize

B. What strategy (order of refactorings) would you use to improve the code?

Comet and WebSocket Web Applications How to Scale Server-Side Event-Driven Scenarios

BROCHURES MOCKUPS (Landscape Version)

Browsing the World Wide Web with Firefox

FRONT USER GUIDE Getting Started with Front

Making Money with Hubpages CA$HING IN WITH ARTICLE WRITING. Benjamin King

How to post a job on Inside Higher Ed

Lesson 4: Bug Reporting and STLC

Building on the Globus Python SDK

CTI-TC Weekly Working Sessions

Inside Visual C++: With CDROM (Microsoft Programming Series) PDF

Update Manual Ios 7.1 Iphone 4s Wont >>>CLICK HERE<<<

For more info on Cloud9 see their documentation:

Starting Out With Java: From Control Structures Through Data Structures (2nd Edition) (Gaddis Series) PDF

UTILIZING THE NEW ALDA WEBSITE (CHAPTER LEADERS GROUP) PRESENTER: BRIAN JENSEN SEPTEMBER 16, 2016

Setting up a ColdFusion Workstation

DOWNLOAD PDF EXCEL MACRO TO PRINT WORKSHEET TO

The Anglemaker Program

Spam. Time: five years from now Place: England

Homework 09. Collecting Beepers


CIO 24/7 Podcast: Tapping into Accenture s rich content with a new search capability

Marketing Alliance Pre Built Funnel SWIPES..

Creating and Managing Surveys

How to approach a computational problem

Transcription:

6

THANKS FOR READING Thanks for reading Customer Requirements - Everything Programmers Need To Know Before Writing Code. If you have any suggestions, feedback (good or bad) then please do not hesitate to contact me directly at marco@marcobehler.com or leave a comment on our blog at www.marcobehler.com/blog. (This is a one-man operation, please respect the time and effort that went into this book. If you came by a free copy and find it useful, you can compensate me at http://www.marcobehler.com/books) Thanks! - Marco Behler, Author Copyright 2015 Marco Behler GmbH. All Rights Reserved. 7

Practice Time: Estimation & Billing From gut feelings to a time tracking database Back to our start-up Zee Bänk. In the Communication chapter we came up with 5 tasks for our synchronous VISA payment workflow: 1) Generate Request/Response DTOs. Estimate =? 2) Implementation: Actual POST. Estimate =? 3) Implementation: Success Case. Estimate =? 4) Implementation: Error Cases. Estimate =? 5) Documentation. Estimate =? Our goal is to have an hour estimate for each one of those tasks. 52 8

Estimation Techniques Before looking at each one individually, I like to quickly go through all the tasks and decide on what my strategy for each task is going to be like: Gut Feeling + Deviation Factor Generating Request/Response DTOs I have done plenty of times before, so I trust my guest estimate and my own deviation factor of 1.5. I assume I start with a blank time tracking database for now, so I cannot really look up old, similar tasks. But for sure I can write my new estimates down. The Success and Error cases I have already reasoned about a lot and as I assume that there are no real technical challenges, I will also go with my gut feeling + estimation factor. What I should note here is that my gut feeling always also includes time for testing and a tiny bit of cleaning up, not just writing the code itself. Spiking The Actual POST is something I am not quite sure of. Sure, it seems simple enough and the documentation seems to be up-to-date. But I want to get a quick feel it is really as simple as it looks, if the parameters are right, if authentication is easy. My spike is going to consist of a couple of simple CURL calls. Nothing too fancy and maybe using up 30 minutes. Fixed Time-Limits The documentation I am not going to estimate, instead I am going to set a fixed time-limit of 1 hour. The one hour is simply a measure from experience. Maybe I can copy & paste parts of existing documentation for documenting this new feature, maybe I have proper writing tools in place, maybe I do not. Your number might differ. Writing documentation is in some ways a lot like brushing your teeth: Skipping to brush your teeth for the whole month and then on one day brushing 31 times is not really going to work. Same for documentation. Do it in small batches and do it regularly. 53 9

The Nitty-Gritty I recommend you to quickly go back to the Line-Of-Thinking sections from the Communication Practice chapter and read through them again, as there is a certain overlap. Generate Request/Response DTOs (maybe automatically from XSD) For the non-java users out there: Tools exist to easily create.class (e.g. XJC) files from XSDs and in our case VISA provides all XSD location URLs in our mock documentation file. So our spike consists of invoking a couple of command line calls, maybe cleaning up the result, adding it to our VCS etc. Time for the gut feeling: My Final Estimate: 30 minutes x 1.5 (deviation factor) = 45minutes. Implementation: Actual POST Let us assume that after curling the VISA test servers I have a pretty high confidence level that everything is in place, as expected. So we are talking about getting our favourite HTTP client like Apache HttpClient up and running and implementing a POST. Marshalling/Un-Marshalling request/response objects can be a bit of a pain to setup at first, but let us assume it is easy in this case. Other than that, POSTs are straightforward and there is plenty of documentation available how to do a straight post. For Socket/Read Timeouts I decide to go the easy way: If the request to VISA takes longer than 3s, I timeout and return an error code. (This is rather simplified to how it works in the real world, but will do just fine for now). I also am going to have a couple of tests for the timeouts etc. Time for the gut feeling: My Final Estimate: 1.5h x 1.5 (deviation factor) = 2,25h. Implementation: Success Case For the success case we assumed the redirection logic and merchant notification system etc. to be already in place. So the success case basically consists of a couple of lines of implementation hooking into an already existing codebase and a few tests for that. My Final Estimate: 1h x 1.5 (deviation factor) = 1.5h. 54 10

Implementation: Error Cases Error cases are always trickier than the success cases. Remember, we identified 3 error cases: WRONG CVC, BLOCKED, EXPIRED. We have different acceptance criteria for each error state: Sometimes we prompt the user to try his purchase one more time, another time we show the user a simple contact-customer-support error message. We assume the redirection and general error message logic (i.e. display an error message on a respectively styled CSS page) to be already in place. We have to read in some property files for those error messages, react upon the error code VISA returns us and then either retry the purchase or display a final error message. And tests. My Final Estimate: (3x2,5h) x 1.5h(deviation factor) = 11,25h Documentation: My Final Estimate: 1hr (fixed) The Result Adding up all these numbers leads to 16,75h or roughly 2-3 days for the synchronous VISA payment task. That number might differ for you depending on how experienced you are. It does not matter. We are going to note down the estimates, later on look at the actual implementation time and then adjust accordingly in the future. What we can see by looking at the screenshot below, is that the error task is assumed to be a lot more time-consuming than the other ones. I still advise against splitting it up into more subtasks though. It is faster to let one programmer implement the whole thing than trying to parallelise it with multiple programmers and more sub-tasks. The communication overhead is simply too big for that. 55 11

56 12

Recommendations Now that we have estimated our tasks, let us look at how we can get our estimates more reliable over the long-term. A simple time tracking database If you live in poor man s land and doubt the whole time-tracking thing, you can start off with just this. Use Excel or Notepad or something similar. Do not even write down the task descriptions, but whenever you tackle a new task or user story write down a quick hourly estimate in a new line. Use a time tracker if possible, otherwise, if you are really lazy, just note down how long your task took to implement from your head. Look at the deviation. Do that for every task you implement for a month. Note down your deviation factor. Here is what this looks like in Notepad: According to that file my estimates are off by 1.4 the real effort and I am going to use this number for my next estimates and update it again after a couple of weeks. Yes, this is not a perfect number and I do not want to get into a discussion on averages, means and standard deviations here. For practical purposes, this will be more than enough. -- END OF PREVIEW -- 57 13