Sunday, December 2, 2012

Courage

Courage

This is a word that has been showing up around me now for a number of months.  This word would sometimes show itself to me deliberately, maybe as part of a conversation I was having, and sometimes would show itself to me in casual ways by showing up around me in my reading or in posts from friends. I had not been giving the word a great deal of thought though until this past day or two - which is ignoring my own rules about coincidences that go on around me.

So why am I bothering to write about it now? Life seems to be pointing me this way - so doing it seems appropriate now.

Courage is defined like this:

Courage, n.
  1. The ability to do something that frightens one.
  2. Strength in the face of pain or grief.
But I think courage goes quite a bit deeper than this definition. I think courage involves a great deal more than just overcoming something that scares or frightens. I think courage may involve a life time of things built up that may require being torn down before it can surface in a singular moment of overcoming what has been placed before you.

I would say that courage is not something that exists alone - it comes with fear, it comes with baggage and experience of ones past that can magnify the effect of a situation far beyond the regular "I don't want to get on that roller coaster." sort of fear.

Courage is something that seems to get harder as you get older due to carrying emotional and physical scars from everything that came before. Courage seems to grow to be hard because we all grow up and our social interactions start to take on apparent enormous meaning.

"Be who you are and say what you feel because those that mind don't matter and those who matter don't mind." - Dr. Suess

The people in your life that matter will be taking the time to understand who you are - they are the ones you don't have to careful around. Unfortunately we seem wired to also care about people who will not take the time to get to know who we are - we worry about bruising egos and causing trouble with the words we say. I am not saying that we shouldn't be observant enough to know when 'not' to speak, rather I am saying we are far more careful than I think makes sense.

From the movie "Finding Nemo":
Marlin: Now it's my turn. I'm thinking of something dark and mysterious. It's a fish we don't know. If we ask it directions, it could ingest us and spit out our bones.
Dory: What is it with men and asking for directions?
Marlin: I don't want to play the gender card right now. You want to play a card, let's play the "let's not die" card. 


Dory spends time attempting to help Marlin to loosen up and to try things he has not or would not normally try. Throughout the movie Dory is challenging Marlin to see things in a different way - to see the things that are being missed rather than the things he is purposely doing. This constant pressure from Dory is forcing Marlin to ask 'WHY NOT' in relation to trying things - or allow others to try things. Dory is asking Marlin to bend his own internal rules, built up over time and as a result of Marlins having lost his wife. We can all get caught up with following the rules, when the rules are mostly self imposed and are not always in our best interest.

My point - doing anything courageous involves occasionally (ok, more than occasionally) overcoming a great deal of built up opinion, and baggage accumulated across our entire lives. The first moment of being courageous is hard, like going on a roller coaster for the first time, but each occasion there after gets easier and easier because we can see the positive benefits of having that courage in the first place. We have to be able to let go - and be ok trying the same thing more than once. We have to be willing to experiment with our lives, sometimes risk things more than we may like, but it is the only way to succeed in getting past things that may have hurt us in the past. Its painful to keep trying, and it can hurt - but you can not let it discourage you from doing so because the worst thing you could possibly do is give up.

 

Saturday, December 1, 2012

Forward compatible data consumption

Forward compatibility means ignoring new fields should they arise ... passing them through if possible, ignoring them if they can't be passed through.  i.e. FOCUS ONLY ON WHAT YOU ALREADY KNOW and ignore the rest.

This means in XML parsing, if you are using annotation based parsing - tell it to ignore fields and objects it doesn't understand and continue with the rest, or if manually parsing to only concentrate on known objects and ignore the rest.

Same thing for json, annotations (like Jackson) need to be told to ignore fields that can't be mapped into the objects in a known way and to proceed with everything it does understand.

This way other systems can include new information that could be consumed at some later date without impact to the system at hand.

Why is all the above at all relevant or important - these steps are vitally important to the compatibility of APIs that you might be developing. In order for the API to be forward and backward compatible as changes to it are made the API system must be able to accept new things or ignore things it does not currently understand. APIs have to hold themselves accountable for what they 'know' they can do - and things that can safely be ignored.  If the API you are developing can't ignore things it doesn't understand, then errors get returned to the clients that may have otherwise resulted in a useable response from the API.