Being Business Focused: Flexibility

‘Being Business Focused’ is going to explore various business concepts and how we can use them to explain the bottom line impact of our decisions.

Don’t forget we learned roi = (fv-iv)/iv and that we learned than risk can affect roi.

I want to talk about ‘flexibility’. How many of us choose the tools we choose because they give us options? I know that I have chosen several tools for the options they give me. I have chosen to stay with an object-oriented language that has interfaces because it allows me to define points in my codebase where I may want to change my mind on the implementation.

Of course, this means that I have had to learn how to identify these points in my codebase, and that I have screwed this up many times learning the concepts. But in the end, its highly valuable knowledge.

Usually this requires some additional expenditure in some way or another causing an initial rise in value. Later on we hope to recapture that value by exercising that ‘option’. This can be done to take advantage of where we think the market is going, or we can hedge against something that we fear the market may do.

the math for pricing even a simple option: http://en.wikipedia.org/wiki/Black–Scholes is kind of complex.

Because the math is, … well hard, I am going to go off of some more basic observations of options trading. The first is that they cost you some money. We would see this reflected in the initial value of our project going up (we are investing in flexibility). Then during the course of our project something might happen where we can exercise that option or flexibility. Say you are using NHibernate against MS SQL and there is a change to score a big client, but the solution has to run on MySql. You could exercise your investment in NHibernate to switch their configuration to MySql and capture unexpected value (this would impact the final value) therefore paying off on the initial value increase. Ideally, we would invest an amount that is less then what is captured in the future but that isn’t exactly easy to predict.

We can also hedge our bets using options. In this case it might be that we are coding to an interface because we don’t know which payment processor we are going to use. We are 6 months out from that feature being implemented but we still need to code the pieces that use it. Instead of guessing which one the business is going to decide to use, we invest in a layer of separation / decoupled module from the payment processor. Then when we get to that feature, rather than recoding because the business changed its mind, we exercise our option to implement the interface however we see fit to incorporate the latest business decision.

Just another way of trying to explain to the business, somewhat using its terms, the value of investing in software.

-d

About Dru Sellers

Sr. Software Engineer at Dovetail Software.
This entry was posted in Uncategorized. Bookmark the permalink. Follow any comments here with the RSS feed for this post.
  • http://activeeingine.wordpress.com David Robbins

    I look forward to more from this series. This is so critical for many developers to understand. Many times YAGNI create a narrow scope when creating solutions for our customers. More specifically, many times we solve for what we know about the solution as it has been revealed to us so far without out knowing the life of a product, and without regarding the personality of the business users.

    Let’s face it – how many times have we been promised that we have a complete story of a feature only to be told 4 months later that there are a “series of exceptions” or while we are building a systems that must support transactions the systems has to bypass those rules? A critical question that should be on everyone’s mind when in throes of a project is “Now that I know everything I need to know, how can make it easy to change without re-deploying a new solution?” Embedded scripting? Plug-ins? Rules Engine? If I adhere to YAGNI when conducting my business analysis I may miss opportunities for building a flexible system for my customer.

    Any way – nice post. I look forward to more from you in this series.

  • http://www Dizi izle

    erretefgh