I pride myself in my ability to make decisions. If I have all the variables and criteria then I can typically select the best course of action, or at least a good choice of action. As an engineer, this is invaluable because most problems in software development are of this type; you have all the facts and a desired outcome. If you meet the desired outcome, then you can safely say that you made the right decision. If not you can go back and try again.
If only all decisions where as clear as the kind you have to make in programming! In the real world - which I'm forced to occasionally visit - most decisions I have to make definitely aren't like this. Generally I don't have all the facts, the criteria aren't clear and the outcome is a scalar, rather than a simple Boolean. And when faced with a problem that is too fuzzy, I tend to not make any decision at all, rather than risk making a bad one.
Purchasing a mobile phone is a case in point. I've been using a pay-as-you-go phone, which was a good deal originally but had become expensive because I use it a lot more now. I've known this for months but every time I considered which combination of phone and plan to go for I ended up deferring the decision for while because there were so many variables (vendor, phone price, monthly fee, contract length, add-ons, phone features etc). Annoyingly, of all the choices I could have made, deferring the decision to later was the worst, because it cost me money.
You may consider this to be a personality flaw that I should work on, but I say it is the universe that is at fault. What I need is a formal way of patching this flaw, or at least working around it. A piece of software could be written that allows the user to enter a number of possible choices and criteria. For the phone example the choices would be the various plans on offer and the criteria would in the form of graphs with a variable on the x-axis and a desirability rating on the y-axis. Each criteria could also be weighted for importance in the final decision, and given a confidence scale that reflects how sure you are of that criteria. The output of this program would be the list of choices, sorted by rank, with corresponding confidence ratings. The best choice would be the first in the list, but by setting the cut-off point for confidence it would include the possibility of inaction as the best choice.
I figure this software could be used to handle pretty much any major life decision, such as "which girlfriend should I marry?", "can my spouse have my kidney?" or "who should we eat first"? It could also replace many of today's world-leaders, who seem to make fairly arbitrary decisions anyway. I'm tempted to implement it in the form of a Python script, and perhaps put a nice graphical interface on it. I kind of like the idea of governments being replaced by Python code. I for one welcome... you know the rest.
Excuse me, its lunch time. Now do I want pickles, olives or sauerkraut on my sandwich?