Design philosophy

Hi Shay,

I just want to say how impressive Elastic Search is, well done!

As a young programmer, I am always trying to learn from people you are
more skilled than, I so I was curious if you could answer some
questions regarding your design? One of the things I have trouble with
is static methods, dependency handling, raw constructor usage (new),
etc. and deciding when to use one versus the other. Looking through
the ES code I see there is a mix of all of these. What is your
rationale for when to use what?

much appreciated and thanks again!