{"action":"created","comment":{"url":"https://api.github.com/repos/dockyard/reefpoints/pulls/comments/23692405","id":23692405,"diff_hunk":"@@ -0,0 +1,32 @@\n++---\n++layout: post\n++title: \"Estimation Buyers Guide\"\n++comments: true\n++author: Jon Lacks\n++twitter: \"Jon_Lacks\"\n++social: true\n++summary: \"Buyer beware of estimates without understanding how it was derived\"\n++published: true\n++tags: project management\n++---\n+\n+As a Project Manager, I have seen estimates in all forms - points, days, months, hours, mario coins, etc. Many say estimates in Software development are garbage and significant margin of error should be the expected norm. I believe this perspective to be true if estimation is conducted in a vacuum vs. as a means to have a conversation with prospective clients about what it is going to take to achieve their vision.\n+\n+While estimation provides financial insight into a project, it also provides the project team with a point of reference when it comes to establishing schedules and conducting impact analysis when something needs to change (which is inevitable). As a project manager, a solid process by which we establish an estimate allows me to best serve the client and team.\n+\n+I would question any firm that claims to offer a high confidence estimate to a prospective client without spending time mapping out the direction an application/product may take on paper. I am not talking about writing a 50 page requirements document (which I once did on a project 10 years before I knew any better).  I am talking about getting the “supporting\" cast the context they need to provide an informed perspective on the complexity associated with building the application.  This complexity spans design, engineering, quality and any other overhead associated with a project. \n+\n+Let me paint this picture for you. Client X wants to build out a new application. The team to build said application provides client X with an estimate based off of a couple Pre-Sales meetings. Cost is negotiated until everyone around the table is happy with the economics and then the project is handed over to the project team and they are told to build “this” application in “this” amount of time. Client X is doomed regardless of whether or not that application is handed over in the agreed amount of time. Here’s why:\n+\n+* The team has no context - Therefore, they are going to spend the first weeks of development getting up to speed as opposed to delivering working features\n+* The team does not own the estimate -  Someones else provided it on their behalf (who wants to be responsible for something they don’t own?)\n+* Unexpected risks and complexity will (not “may”) put schedule at risk\n+* “Quality” will (not “may\") suffer because the team will attempt to meet the date commitment at the expense of quality\n+\n+To avoid this at DockYard, we use a tool called Discovery. This is an intensive time-boxed exploration of a client’s business objectives, market and user needs, as well as technological possibilities. These inputs translate into wireframes and those wireframes translate into an estimable breakdown of deliverables that provides a platform to discuss scope, schedule and cost with our client. Our Discovery phase is cross-functional where we have designers and developers working hand in hand to understand the direction a client wants to go. We iterate on design concepts, we discuss technical direction and potential complexities, we map out scope in a way that allows clients to make decisions which may adjust cost and schedule up or down.   While this Discovery phase might feel like a tough nut to crack, it typically results in lower overall project cost, higher quality and better probability of staying on budget/schedule.","path":"2015-01-28-estimation-buyers-guide","position":26,"original_position":26,"commit_id":"672b8129b9a3909c936a6a3adea037cb020b6082","original_commit_id":"672b8129b9a3909c936a6a3adea037cb020b6082","user":{"login":"rsocci","id":4259637,"avatar_url":"https://avatars.githubusercontent.com/u/4259637?v=3","gravatar_id":"","url":"https://api.github.com/users/rsocci","html_url":"https://github.com/rsocci","followers_url":"https://api.github.com/users/rsocci/followers","following_url":"https://api.github.com/users/rsocci/following{/other_user}","gists_url":"https://api.github.com/users/rsocci/gists{/gist_id}","starred_url":"https://api.github.com/users/rsocci/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rsocci/subscriptions","organizations_url":"https://api.github.com/users/rsocci/orgs","repos_url":"https://api.github.com/users/rsocci/repos","events_url":"https://api.github.com/users/rsocci/events{/privacy}","received_events_url":"https://api.github.com/users/rsocci/received_events","type":"User","site_admin":false},"body":"deliverables that *provide*\r\n","created_at":"2015-01-28T15:06:37Z","updated_at":"2015-01-28T15:06:37Z","html_url":"https://github.com/dockyard/reefpoints/pull/248#discussion_r23692405","pull_request_url":"https://api.github.com/repos/dockyard/reefpoints/pulls/248","_links":{"self":{"href":"https://api.github.com/repos/dockyard/reefpoints/pulls/comments/23692405"},"html":{"href":"https://github.com/dockyard/reefpoints/pull/248#discussion_r23692405"},"pull_request":{"href":"https://api.github.com/repos/dockyard/reefpoints/pulls/248"}}},"pull_request":{"url":"https://api.github.com/repos/dockyard/reefpoints/pulls/248","id":28198724,"html_url":"https://github.com/dockyard/reefpoints/pull/248","diff_url":"https://github.com/dockyard/reefpoints/pull/248.diff","patch_url":"https://github.com/dockyard/reefpoints/pull/248.patch","issue_url":"https://api.github.com/repos/dockyard/reefpoints/issues/248","number":248,"state":"open","locked":false,"title":"Lacks estimation buyers guide","user":{"login":"jonlacks","id":6575390,"avatar_url":"https://avatars.githubusercontent.com/u/6575390?v=3","gravatar_id":"","url":"https://api.github.com/users/jonlacks","html_url":"https://github.com/jonlacks","followers_url":"https://api.github.com/users/jonlacks/followers","following_url":"https://api.github.com/users/jonlacks/following{/other_user}","gists_url":"https://api.github.com/users/jonlacks/gists{/gist_id}","starred_url":"https://api.github.com/users/jonlacks/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jonlacks/subscriptions","organizations_url":"https://api.github.com/users/jonlacks/orgs","repos_url":"https://api.github.com/users/jonlacks/repos","events_url":"https://api.github.com/users/jonlacks/events{/privacy}","received_events_url":"https://api.github.com/users/jonlacks/received_events","type":"User","site_admin":false},"body":"","created_at":"2015-01-28T14:49:35Z","updated_at":"2015-01-28T15:06:37Z","closed_at":null,"merged_at":null,"merge_commit_sha":"acef6b32e7de924361a2d1a9a9f817a7483d646f","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/dockyard/reefpoints/pulls/248/commits","review_comments_url":"https://api.github.com/repos/dockyard/reefpoints/pulls/248/comments","review_comment_url":"https://api.github.com/repos/dockyard/reefpoints/pulls/comments/{number}","comments_url":"https://api.github.com/repos/dockyard/reefpoints/issues/248/comments","statuses_url":"https://api.github.com/repos/dockyard/reefpoints/statuses/672b8129b9a3909c936a6a3adea037cb020b6082","head":{"label":"dockyard:lacks-estimation-buyers-guide","ref":"lacks-estimation-buyers-guide","sha":"672b8129b9a3909c936a6a3adea037cb020b6082","user":{"login":"dockyard","id":873981,"avatar_url":"https://avatars.githubusercontent.com/u/873981?v=3","gravatar_id":"","url":"https://api.github.com/users/dockyard","html_url":"https://github.com/dockyard","followers_url":"https://api.github.com/users/dockyard/followers","following_url":"https://api.github.com/users/dockyard/following{/other_user}","gists_url":"https://api.github.com/users/dockyard/gists{/gist_id}","starred_url":"https://api.github.com/users/dockyard/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dockyard/subscriptions","organizations_url":"https://api.github.com/users/dockyard/orgs","repos_url":"https://api.github.com/users/dockyard/repos","events_url":"https://api.github.com/users/dockyard/events{/privacy}","received_events_url":"https://api.github.com/users/dockyard/received_events","type":"Organization","site_admin":false},"repo":{"id":2262874,"name":"reefpoints","full_name":"dockyard/reefpoints","owner":{"login":"dockyard","id":873981,"avatar_url":"https://avatars.githubusercontent.com/u/873981?v=3","gravatar_id":"","url":"https://api.github.com/users/dockyard","html_url":"https://github.com/dockyard","followers_url":"https://api.github.com/users/dockyard/followers","following_url":"https://api.github.com/users/dockyard/following{/other_user}","gists_url":"https://api.github.com/users/dockyard/gists{/gist_id}","starred_url":"https://api.github.com/users/dockyard/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dockyard/subscriptions","organizations_url":"https://api.github.com/users/dockyard/orgs","repos_url":"https://api.github.com/users/dockyard/repos","events_url":"https://api.github.com/users/dockyard/events{/privacy}","received_events_url":"https://api.github.com/users/dockyard/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/dockyard/reefpoints","description":"DockYard Blog","fork":false,"url":"https://api.github.com/repos/dockyard/reefpoints","forks_url":"https://api.github.com/repos/dockyard/reefpoints/forks","keys_url":"https://api.github.com/repos/dockyard/reefpoints/keys{/key_id}","collaborators_url":"https://api.github.com/repos/dockyard/reefpoints/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/dockyard/reefpoints/teams","hooks_url":"https://api.github.com/repos/dockyard/reefpoints/hooks","issue_events_url":"https://api.github.com/repos/dockyard/reefpoints/issues/events{/number}","events_url":"https://api.github.com/repos/dockyard/reefpoints/events","assignees_url":"https://api.github.com/repos/dockyard/reefpoints/assignees{/user}","branches_url":"https://api.github.com/repos/dockyard/reefpoints/branches{/branch}","tags_url":"https://api.github.com/repos/dockyard/reefpoints/tags","blobs_url":"https://api.github.com/repos/dockyard/reefpoints/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/dockyard/reefpoints/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/dockyard/reefpoints/git/refs{/sha}","trees_url":"https://api.github.com/repos/dockyard/reefpoints/git/trees{/sha}","statuses_url":"https://api.github.com/repos/dockyard/reefpoints/statuses/{sha}","languages_url":"https://api.github.com/repos/dockyard/reefpoints/languages","stargazers_url":"https://api.github.com/repos/dockyard/reefpoints/stargazers","contributors_url":"https://api.github.com/repos/dockyard/reefpoints/contributors","subscribers_url":"https://api.github.com/repos/dockyard/reefpoints/subscribers","subscription_url":"https://api.github.com/repos/dockyard/reefpoints/subscription","commits_url":"https://api.github.com/repos/dockyard/reefpoints/commits{/sha}","git_commits_url":"https://api.github.com/repos/dockyard/reefpoints/git/commits{/sha}","comments_url":"https://api.github.com/repos/dockyard/reefpoints/comments{/number}","issue_comment_url":"https://api.github.com/repos/dockyard/reefpoints/issues/comments/{number}","contents_url":"https://api.github.com/repos/dockyard/reefpoints/contents/{+path}","compare_url":"https://api.github.com/repos/dockyard/reefpoints/compare/{base}...{head}","merges_url":"https://api.github.com/repos/dockyard/reefpoints/merges","archive_url":"https://api.github.com/repos/dockyard/reefpoints/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/dockyard/reefpoints/downloads","issues_url":"https://api.github.com/repos/dockyard/reefpoints/issues{/number}","pulls_url":"https://api.github.com/repos/dockyard/reefpoints/pulls{/number}","milestones_url":"https://api.github.com/repos/dockyard/reefpoints/milestones{/number}","notifications_url":"https://api.github.com/repos/dockyard/reefpoints/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/dockyard/reefpoints/labels{/name}","releases_url":"https://api.github.com/repos/dockyard/reefpoints/releases{/id}","created_at":"2011-08-24T16:55:40Z","updated_at":"2015-01-21T19:13:45Z","pushed_at":"2015-01-28T15:00:35Z","git_url":"git://github.com/dockyard/reefpoints.git","ssh_url":"git@github.com:dockyard/reefpoints.git","clone_url":"https://github.com/dockyard/reefpoints.git","svn_url":"https://github.com/dockyard/reefpoints","homepage":"http://reefpoints.dockyard.com","size":61937,"stargazers_count":29,"watchers_count":29,"language":"CSS","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":true,"forks_count":57,"mirror_url":null,"open_issues_count":8,"forks":57,"open_issues":8,"watchers":29,"default_branch":"master"}},"base":{"label":"dockyard:master","ref":"master","sha":"8f134ba565ddf8d31391bef0f91a506f49d662e1","user":{"login":"dockyard","id":873981,"avatar_url":"https://avatars.githubusercontent.com/u/873981?v=3","gravatar_id":"","url":"https://api.github.com/users/dockyard","html_url":"https://github.com/dockyard","followers_url":"https://api.github.com/users/dockyard/followers","following_url":"https://api.github.com/users/dockyard/following{/other_user}","gists_url":"https://api.github.com/users/dockyard/gists{/gist_id}","starred_url":"https://api.github.com/users/dockyard/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dockyard/subscriptions","organizations_url":"https://api.github.com/users/dockyard/orgs","repos_url":"https://api.github.com/users/dockyard/repos","events_url":"https://api.github.com/users/dockyard/events{/privacy}","received_events_url":"https://api.github.com/users/dockyard/received_events","type":"Organization","site_admin":false},"repo":{"id":2262874,"name":"reefpoints","full_name":"dockyard/reefpoints","owner":{"login":"dockyard","id":873981,"avatar_url":"https://avatars.githubusercontent.com/u/873981?v=3","gravatar_id":"","url":"https://api.github.com/users/dockyard","html_url":"https://github.com/dockyard","followers_url":"https://api.github.com/users/dockyard/followers","following_url":"https://api.github.com/users/dockyard/following{/other_user}","gists_url":"https://api.github.com/users/dockyard/gists{/gist_id}","starred_url":"https://api.github.com/users/dockyard/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dockyard/subscriptions","organizations_url":"https://api.github.com/users/dockyard/orgs","repos_url":"https://api.github.com/users/dockyard/repos","events_url":"https://api.github.com/users/dockyard/events{/privacy}","received_events_url":"https://api.github.com/users/dockyard/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/dockyard/reefpoints","description":"DockYard Blog","fork":false,"url":"https://api.github.com/repos/dockyard/reefpoints","forks_url":"https://api.github.com/repos/dockyard/reefpoints/forks","keys_url":"https://api.github.com/repos/dockyard/reefpoints/keys{/key_id}","collaborators_url":"https://api.github.com/repos/dockyard/reefpoints/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/dockyard/reefpoints/teams","hooks_url":"https://api.github.com/repos/dockyard/reefpoints/hooks","issue_events_url":"https://api.github.com/repos/dockyard/reefpoints/issues/events{/number}","events_url":"https://api.github.com/repos/dockyard/reefpoints/events","assignees_url":"https://api.github.com/repos/dockyard/reefpoints/assignees{/user}","branches_url":"https://api.github.com/repos/dockyard/reefpoints/branches{/branch}","tags_url":"https://api.github.com/repos/dockyard/reefpoints/tags","blobs_url":"https://api.github.com/repos/dockyard/reefpoints/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/dockyard/reefpoints/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/dockyard/reefpoints/git/refs{/sha}","trees_url":"https://api.github.com/repos/dockyard/reefpoints/git/trees{/sha}","statuses_url":"https://api.github.com/repos/dockyard/reefpoints/statuses/{sha}","languages_url":"https://api.github.com/repos/dockyard/reefpoints/languages","stargazers_url":"https://api.github.com/repos/dockyard/reefpoints/stargazers","contributors_url":"https://api.github.com/repos/dockyard/reefpoints/contributors","subscribers_url":"https://api.github.com/repos/dockyard/reefpoints/subscribers","subscription_url":"https://api.github.com/repos/dockyard/reefpoints/subscription","commits_url":"https://api.github.com/repos/dockyard/reefpoints/commits{/sha}","git_commits_url":"https://api.github.com/repos/dockyard/reefpoints/git/commits{/sha}","comments_url":"https://api.github.com/repos/dockyard/reefpoints/comments{/number}","issue_comment_url":"https://api.github.com/repos/dockyard/reefpoints/issues/comments/{number}","contents_url":"https://api.github.com/repos/dockyard/reefpoints/contents/{+path}","compare_url":"https://api.github.com/repos/dockyard/reefpoints/compare/{base}...{head}","merges_url":"https://api.github.com/repos/dockyard/reefpoints/merges","archive_url":"https://api.github.com/repos/dockyard/reefpoints/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/dockyard/reefpoints/downloads","issues_url":"https://api.github.com/repos/dockyard/reefpoints/issues{/number}","pulls_url":"https://api.github.com/repos/dockyard/reefpoints/pulls{/number}","milestones_url":"https://api.github.com/repos/dockyard/reefpoints/milestones{/number}","notifications_url":"https://api.github.com/repos/dockyard/reefpoints/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/dockyard/reefpoints/labels{/name}","releases_url":"https://api.github.com/repos/dockyard/reefpoints/releases{/id}","created_at":"2011-08-24T16:55:40Z","updated_at":"2015-01-21T19:13:45Z","pushed_at":"2015-01-28T15:00:35Z","git_url":"git://github.com/dockyard/reefpoints.git","ssh_url":"git@github.com:dockyard/reefpoints.git","clone_url":"https://github.com/dockyard/reefpoints.git","svn_url":"https://github.com/dockyard/reefpoints","homepage":"http://reefpoints.dockyard.com","size":61937,"stargazers_count":29,"watchers_count":29,"language":"CSS","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":true,"forks_count":57,"mirror_url":null,"open_issues_count":8,"forks":57,"open_issues":8,"watchers":29,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/dockyard/reefpoints/pulls/248"},"html":{"href":"https://github.com/dockyard/reefpoints/pull/248"},"issue":{"href":"https://api.github.com/repos/dockyard/reefpoints/issues/248"},"comments":{"href":"https://api.github.com/repos/dockyard/reefpoints/issues/248/comments"},"review_comments":{"href":"https://api.github.com/repos/dockyard/reefpoints/pulls/248/comments"},"review_comment":{"href":"https://api.github.com/repos/dockyard/reefpoints/pulls/comments/{number}"},"commits":{"href":"https://api.github.com/repos/dockyard/reefpoints/pulls/248/commits"},"statuses":{"href":"https://api.github.com/repos/dockyard/reefpoints/statuses/672b8129b9a3909c936a6a3adea037cb020b6082"}}}}