The Microeconomics of Decision Making in the Presence of Uncertainty
Glen Alleman MSSM
Applying Systems Engineering Principles, Processes & Practices to Increase Probability of Program Success for Complex System of Systems, in Aerospace & Defense, Enterprise IT, and Process and Safety Industries
Microeconomics is a branch of economics that studies the behavior of individuals and small impacting organizations in allocating limited resources.
All engineering is constrained optimization. How do we take the resources we've been given and deliver the best outcomes? That's what microeconomics is. Unlike mechanical engineering or classical physics models, microeconomic models are never precise. They are probabilistic, driven by the underlying statistical processes of the two primary?actors—suppliers and consumers.?
Let's look at both in light of the?paradigm of allocation?of?limited?resources.
In both cases, time, money, and capacity for productive value are limited (scarce) and compete with each other and the needs of both the supplier and the consumer. In addition, since the elasticity of labor costs is limited by the market, we can't simply?buy cheaper to make up for time and capacity. It's done, of course, but always to the detriment of quality and productivity.
So, the cost, time, capacity for work, and other attributes of the developed product are inelastic. The market need is also constrained. Business needs are rarely elastic—we really didn't need to pay?people?in the timekeeping system. Let's just collect the time sheets, and we'll run?payroll when that feature gets implemented.
Enough Knowing, Let's Have Some Doing
When the principles of Microeconomics are applied to software development, there is one KILLER issue that, if willfully ignored, will end the conversation for any business person trying to operate with limited resources—time, money, and work capacity.
Decisions about these limited resources are being made in the presence of uncertainty. This uncertainty—as mentioned—is based on random processes, which produce imprecise data. Data were drawn from random variables, variables with variances, instability (stochastic processes), and non-linear stochastic processes.?
Quick Introduction to Nonlinear Random Variables
There are many mathematical definitions of random variables, but let's use a simple one for this post.
A simple example—silly but illustrative—would be HR wanting to buy special shoes for the development team with the company logo on them. If we could not, for some reason (it doesn't matter why), measure the shoe size of all the males on our project, we could estimate how many shows of what size would be needed for the statistical distribution of male shoe sizes for a large population of coders.
This would get us close to the number and size of shoes we need to order. This is a notional example, so please don't go ahead and place an order for actual shoes. However, the underlying probability distribution of the values the random variable can take on can tell us about the people working on the project.
Since all the variables on any project are random, we can't know their exact values at any time. However, we can know their possible range of values and the probabilities of any specific value when asked to produce that value when making a decision.?
The viability of the population values and their analysis should not be seen as a way of making precise predictions about the project outcomes but as a way of ensuring that all relevant outcomes produced by these variables have been considered and evaluated appropriately and that we have a reasonable sense of what will happen for the multitude of values produced by a specific variable. It provides a way of structuring our thinking about the problem.?
领英推荐
Making Decisions In The Presence of Random Variables
To make a decision—a choice among several choices—means making an?opportunity cost decision based on random data. If there is only one choice, it is either to take it or not.
This means the factors that go into that decision are random variables: labor, productivity, defects, capacity, quality, usability, functionality, produced business capability, and time. Each is a random variable interacting nonlinearly with the other chosen variables. In the presence of this paradigm, we must make estimates of not only the behavior of the variables but also the behaviors of the outcomes.
In other words
To develop software with limited resources driven by uncertain processes for each resource (time, money, capacity, technical outcomes), we must estimate the?behaviors?of these variables?that inform our decision.
It's that simple, and it's that complex. Anyone can make conjecturing decisions without estimates of the future outcomes of that decision, which?willfully ignores?the microeconomics of business decision-making in the software development domain.
Here's a starting point for those interested in exploring the core principle of the Software Development business beyond this willful ignorance.
These are the tip of the big pile of books, papers, and journal articles on estimating software systems.?
A Final?Thought?on?Empirical?Data
Making choices in the presence of uncertainty can be informed by several means:
This is empirical data. However, several critically essential questions must be answered if we are going to be satisfied with our empirical data outcomes.
Calculating the number of samples needed for a specific confidence level requires some statistics. Suffice it to say, those conjecturing estimates based on past performance (number of story points in the past) will need to produce the confidence calculation before any non-trivial decisions should be made on their data. Those calculations are necessary for past performance to be more sporty when spending other people's money.
Thanks to Richard Askew for suggesting the addition of the random variable background