LINQed IN

Blog by Troy Magennis on Software Architecture, Development and Management

About the author

Troy Magennis is a software developer living in Seattle, WA. Troy is a Microsoft MVP, the author of many articles, and the founder of HookedOnLINQ.com, a LINQ specific wiki reference site.
E-mail me Send mail

Disclaimer

The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

© Copyright 2008

Technical Articles

Improving Software Estimates Using Monte Carlo Simulation

July, 2008 - Troy Magennis 

Improving_Software_Estimation_Promises_Using_Monte_Carlo_Simulation.pdf (585.39 kb)

Monty Carlo Estimation.xlsx (199.54 kb)

Monty Carlo Estimation (Excel 2003).xls (345.00 kb)

(9 pages + spreadsheet) What is the most likely delivery date for a current project?  What is the probability of hitting this go-live date? These are fair questions for any executive or investor to ask, but they are often answered by a sweating and nervous looking development manager who presents a date with no mention of probability.  This date holds the key to making better executive decisions, and risk is a normal aspect of any decision process. Padding estimates to cover all risks will give a date too far out to be acceptable; the counter case of aggressive estimates might get the project funded, but actual delivery of a quality product unlikely. What is the likelihood of successful delivery by a given date?

This article borrows a techniques described as Applied Information Economics (AIE) that will quickly build an estimation framework and statistically driven simulation mechanism to reflect the normal distribution of estimate risk ranges, presenting the probability of completion in a certain time. E.g. 80% chance of 66 days, and 34% of success in 60 days. It is also a simple charting step to present the same simulation data as a histogram showing the level of confidence that a given date is achievable.
 

Continuous Integration and Automated Builds at Enterprise Scale

Continuous Integration at Enterprise Scale.pdf (681.47 kb)

(17 pages) Continuous Integration and an Automated Build process are common practices employed by many high-functioning agile software teams. Many small teams are reporting high productivity improvements, but success stories of Continuous Integration and Automated Builds for Enterprise Scale software projects are much rarer. Some agile pundits have stated that there is a scale limitation for agile practices and these practices are in-appropriate for Enterprise Scale (or high staff count) projects.

This article aims to explore if and why the measurable benefits of Continuous Integration and Automated Build processes begin to decline as application size, and team size grows.

Our conclusion is that there is no inherent reason why Continuous Integration and Automate Build processes won’t scale to any size team. In fact, this article concludes that the problems these techniques solve are a higher pain point for Enterprise Scale applications and become more essential than ever. In addition, this article provides guidance on how to scale agile practices and how to make smart architectural choices up-front to ensure smooth adoption of Continuous Integration and Automated Builds leading to smoother projects and improved success rates.