Kickoff for a procrastinator - are you a top down, middle out, or bottoms up kind of person?

I'm a software architect with the Archtecture Strategy group at Microsoft.  I've been working up to starting a blog for some time now, and have finally run out of excuses to put it off any longer.  Mind you I like blogs and gets lots of value out of what they have to say...just been waiting for that ultimate nugget of wisdom I could impart on everyone that would convince them that despite my lousy spelling, I really do have something worthwhile to say.  Well I've given up on discovering that one and decided to just plow ahead.

I'm fairly new at Microsoft - I just crossed over my one year boundary.  Its been a tremendous learning experience for me.  I have a varied background - having worked in embedded systems, consulting and a string of startups in the last 15 years in software development.  I spent five years out of college in the Navy as an officer in the nuclear power program.  I'm always looking for new challenges, and working at Microsoft definitely fits into that category - I am most fortunate to be associated with a great team of non-egotistical really smart people.  Boy, how often does that happen? 

One of the challenges that I've encountered here in this group is thinking in the abstract.  I always thought I was good at abstract thinking until I came here.  .  Now I think I'm still pretty good at drawing abstractions out of one or more concrete problems, refactoring those abstractions as the system evolves - that I've done all my career - but taking it to the next level just isn't the way my brain works.  I need that concrete problem or set of problems to start with.  If I can't draw the line from the abstraction to some vague implementation approaches in my mind, then it just doesn't work for me.  I think it's kind of like the difference between an innovator and an inventor.  Someone like Pat Hellend who can generalize in the abstract and come up with an elegant model of how it ought to be referring back to a very general problem space is amazing to work with - and it all makes sense to me when he presents it and applies it against specific instances - although elements of his thinking in some cases is beyond what technology can effectively deliver today, pointing to what we need to plan and strive to accomplish tomorrow (I'm sure anyone reading my lowly blog has perused Pat's long ago).  After the last year of working within this group, if I hadn't had prior experience working with bottom's up person I would think that I must be one of those.  But I have definitely been there working with a few bottoms up people.  That's the person that when I arrive at some moderately elegant system architecture diagram with some pretty pictures in PowerPoint and Visio catches the few key leaps of faith I made when I doing my hand waving around my vague idea of implementation, and has saved my rear-end more than once.  Now that I interface with lots of top down thinkers, I seem to be feeling that bottom-up thinker's pain as I struggle to draw the lines, but I'm definitely getting there as I'm being stretched.  Thus I decided I must be a middle out kind of architect.  If you ask me how I would realize my ideas, I'll have some semblence of how that may be translated to actual implementation.  I'd like to think I've brought some value to the group as a result by being the pestering guy always asking the questions - kind of like my bottom's up compadre always did to me - and helping keep everyone honest.  The most effective organizations have characters with each of these skills IMHO.  Those that can traverse all of these levels effectively are few and far between.  I had a chance to interact recently with Jack Greenfield, and I really like the thinking going on with domain specific langauages and software factories.  This will give us a more formal and effective mechanisms for transcending these levels of abstractions and help reduce this friction.

Anyway, that was my soft, non-controversial touch-feely kind of introduction to convince you I'm a nice guy.  From now on I'll try to get down to the really interesting (and more concrete) issues and avoid any further speculation about abstract issues ;-).  To start with, in the tradition of being middle out, I'm going to do my first series of blogs starting this week based on managing Security Context Token's in a load balanced web farm with WSE2, discussing first the options within a farm for this problem, pluses and minuses of each approch, then dive into some code snippets.  Since I hate to take credit for work someone else has done, I want to acknoweldge up front that the thought leadership for this work came out of a collaboration I had with Fred Chong, an excellent architect also in the Architecture Strategy group, and is based primarily on elements of a proposal that Fred generated.  Stay tuned if you are interested...