Friday, February 26, 2010

Why Computer Progamming is Hard

I had a perfect example at work today why working with computers is more difficult than people realize.  It was further enforced by the fact that my friend Rick posted a link on facebook that hit the sums it up perfectly, computers do exactly what you tell them to do.

Think about that for a second.  Whether you realize it or not, human communication is very imprecise.  A lot of what is communicated between people is implicit.  Intent is not something that computers understand.  They only understand the exact instructions you feed them.

Several months ago one of my engineers was told to turn on a feature in the system to run a test.   We had turned it off because the feature was causing some problems but those issues were resolved so the powers that be wanted to turn it back on.  He did exactly what the request asked for, he turned on the feature.  The feature controls whether or not a certain data source is used or not.  There are times when some of our customers explicitly turned it off and under no circumstances should it be turned back on.

But since it was turned on for the purposes of this test, this overrides any configuration that our customers can do.  Nobody thought it would do this because this is not normally what happens when we run tests.  The system is usually set up to avoid these circumstances.  So what was the problem?

The problem was that the feature should not have been turned on.  It should have been set to not be off.  Believe it or not, in this case, the opposite of off is not on.  It is in fact not off (Null for those familiar with computer jargon).  The computer, and the engineer, did the right thing.  The "intent" however was not to just turn it on completely.  The intent was not to specify that it was off completely.  If there were other configurations which said to turn it off, as is the case for some of our customers, those rules should have taken precedence.  Of course they did not because the computer was told to turn it on.

So you see, the problem is not the computer.  It is that we live in a world where things are not always specified precisely.  And that is what makes software development so hard.

Saturday, February 13, 2010

Multiple #1 Priorities

I just ran across a job description that had as one of its requirements

- Ability to handle multiple number one priorities simultaneously.

Really?  Did the person who wrote this job description not understand how this is quite literally impossible.  Now I understand what the intent of this requirement is.  There are often times that you have to try and correctly handle a situation where everything seems important and nothing can be dropped.

But one things is for certain, when push comes to shove there can only be one #1 priority.  It is something that most people just can't deal with because they refuse to or don't understand how to prioritize.  The more I work, the more I realize just how rare a skill it is to find someone who can correctly prioritize.

I fail to see how anyone, especially in upper management, can not know how to prioritize.  It comes so easy for me.  If you ask me to, I can almost always stack rank a list of things.  Want to know who my best employee is, no problem.  Want to know the most important thing about investing, its reaearch (followed by patience).  Perhaps the only thing that you might not be able to stack rank is which of your children are your favorite (although I bet a lot of people could actually do this)

I run into this problem constantly at work.  People don't seem to understand that there are trade offs at work.  When faced with having to make one, these people seem to prefer not making one and letting the outcome be random rather than make a conscious choice to try and prioritize correctly.

Just this one requirement would make me not apply to a job.  It clearly shows me that at some point you would be faced with a lose-lose situation when something had to give and yet nobody would be willing to make the call.

Tuesday, February 9, 2010

Finally Got Card

It is Mid-February and I just got my ATM card from Schwab.  I almost canceled my account. I was so frustrated that I had not received my card in over a month but the last time I called they agreed to FedEx me another card.  It finally came, almost two months after I opened my account.  I can't fault Schwab's customer service, every time I called they were quite helpful.  It just didn't end up in good execution.