This document provides guidance for creating initial effort estimates for software development projects during the pre-sales stage when requirements are uncertain. It recommends modeling the domain using use cases and user stories to organize requirements in a granular way. Complexity levels and estimated time ranges are then assigned to stories. This allows calculating an initial effort estimate by summing the estimates for all stories while accounting for risks. The process is illustrated with an example modeling an app for social sharing and estimating its development at around 3 months for a team of 3 engineers.
Quick and easy initial effort ETA for software development projects
1. Quick and easy initial effort ETA for
software development projects
Alex Moskvin
CEO/CTO Plexteq
2. About myself
• CEO/CTO Plexteq OÜ
• Ph.D in information technology area
• Interests
• Software architecture
• High loaded systems
• AI/ML + BigData
• Knowledge sharing ;)
• Building local and offshore development teams
• Follow me
• https://twitter.com/amoskvin
• https://www.facebook.com/moskvin.aleksey
12. Relevance
Pre-sales, POC …
• Uncertainty and no visibility
• Fast paced environment
• Usually fixed price
• No bullet proof approach for making effort/cost estimates
14. Let’s organize chaos
What do we have on pre-sales POC planning phase:
1. Customer representative
2. Engineering team
3. High level requirements (list of features)
4. We know technical stack
5. Budget estimate
15. Let’s organize chaos
What usually happens:
• Non agile, engineering driven approach wins
Why it’s suboptimal?
• Focuses on low level technical details which are non-granular
• Doesn’t give easy way re-estimate with changed features layout (user
stories)
16. Let’s organize chaos
What is our experience:
• Think in feature/story based way
• Always build business domain model
• Use UML for modeling - especially use cases and process flows
17.
18. Screw it, let’s do it!
Legend:
• iOS application that helps with posting text, photos and videos for
lazy and over social people (Twitter, Facebook, Instagram, Snapchat,
…)
• Should have server side for storing authentication data and linked
accounts
• There should be a back office system for accessing user data and
overviewing system operation
25. Screw it, let’s do it!
1. Define complexity levels
1. L (green) – low complexity
2. M (yellow) – medium complexity
3. H (red) – high complexity
2. Define execution time for every complexity level
1. L – 1 week
2. M – 2 weeks
3. H – 3 weeks
3. Mark use cases with complexity levels
29. Screw it, let’s do it!
Calculate:
• H – 3
• M – 4
• L – 16
S = (3*3 + 3*0.3 + 3*0.3) + (4 * 2) + (16 * 1) =~ 35 w
(~ 3 months for team of 3 engineers)