– First Impressions



Another Short, Free E-Book on a vital Topic – Service Oriented Architecture, Getting it Right

Implemntors Guide to SOAUltimately, I imagine we have Seth Godin to thank for all these wonderful, free books. Here is another one – this one is about implementing SOA, and from Joe McKendrick’s description, it is part implementation guide, part inspiration to get started now, not wait for the mythical day when your organization’s blueprints for the Hanging Gardens of Babylon of enterprise architecture are finally complete.

The e-book is available as a free download here, and a print version can be purchased for $20.00 here.

Evaluating Expressions at Runtime in .NET (C#)

Beginner’s Mind

Shunryu Suzuki, one of the pioneers of Zen Buddhism in the United States, said this in one of his lectures:

“In the beginners mind there are many possibilities, in the experts mind there are few”

This statement was part of a talk about something a bit closer to the pulse of life than the practice of software development (namely about the practice of finding the pulse of life) but it is nevertheless a resonant concept when applied to any cross section of our human experience, software development included.

Jeff Atwood and Scott Hanselman write about this eloquently. Karl Seguin recently published an e-book about ALT.NET, and in the introduction to the book relates his experience of being able to truly grow as a programmer only after shedding the illusions that he was an expert programmer.

I’m not interested in driving that point home any further. The argument was made very well by the authors above and rehashed endlessly in the comments of their respective blogs.

However, I thought it might be interesting to describe my personal experience of coming to that realization in my own career, and how it has altered (opened up) my view of our industry. image

After many years of writing software for the same company with a tight focus on the task immediately at hand I decided to tune in to some of the chatter of the social web, rather than just digging through it on an as needed basis to solve one particular problem or another. I’ve always been an avid reader of technical books but technical books, especially ones about established (or even emerging) technologies, are very focused on their subject matter. They are, as advertised, about a specific technology, not about the art and practice of programming. I’ve also read a number of the classic books on the art and practice of programming, such as The Pragmatic Programmer, Code Complete, various patterns books, books on Agile, Domain Driven Design, and so on. Those are more enlightening than a technology specific book, and they help you improve your craft in a much more general way, but by and large they weren’t reflective enough to show me how little I knew.

Then I started to pay attention to this gigantic, amazing conversation that is always unfolding in the “blogosphere,” and, slowly, groggily, I started to wake up, to understand how expansive and fluid the world of creating software actually is.

The experience can be described as spending several years climbing a mountain you were born at the foot of, all the while assuming that the mountain was the whole world. As you near the tree line, you begin to catch glimpses of something larger flickering through the gaps between the trees, and then all at once you break through the tree line and behold the entire, sprawling mountain range extending out in all directions and any illusion you may have had about mastering your environment immediately evaporates and you find yourself in awe, and maybe a little bit frightened at the unexpected vastness.

In my case I was faced, on the one hand, with the fact that the sum total of the knowledge I had acquired thus far (struggled to acquire and felt such a sense achievement for acquiring) was barely a drop in a very big bucket. On the other hand, the universe I spent most of my waking hours in just grew without warning to unimaginable size, and now I got to explore it. There are certain times in life where being humbled is the only way to continue to grow, like a rose bush that must be cut back each season before it can bloom.

The first thing I noticed when I broke through the tree line, after recovering from the sheer size of it all, was that each of the other mountains, and the valleys between them, were crawling with fellow explorers. Sure, I had passed a few people on the way up my mountain, and a few people had passed me, but all of a sudden there were thousands upon thousands of other technologists scurrying about everywhere, sporting fanny packs, pocket protectors and laptops. Most were sweating and stomping steadily up the myriad well worn paths, but others were running far ahead, hacking through underbrush, madly scribbling notes as they went,  tossing them over their shoulders by the  fistful; others gave loud, grinning sermons as they strolled along while throngs of followers cheered or broke into raucous fistfights, and still others would stop regularly to draw detailed maps of where they had been, their theories about what lay ahead of them, and very often enough take the time to give lectures and make screen-casts of their experiences pioneering in this enormous, shared adventure of being a technologist.

Personally, I find it to be quite beautiful, and tremendously inspiring.

Of course, not everyone is helpful. There are plenty of angry, impatient and elitist explorers too, yelling at one another from peak to peak, certain their mountain is Mount Sinai, the others are cheap decoys, yadda yadda. This part of the culture is best served by the religion metaphor, though, and there is no avoiding the phenomenon: humans are extremely religious creatures and programmers, to their chagrin, are not immune. How can it be helped? Human life is an absolute mystery, religion is inevitable.

And of course these countless throngs have organized into cliques, tribes, nations, hold elaborate rituals, build massive idols and sprawling temples, go to war, cross-breed, and so on. The same microcosm of human society that is repeated in every other industry, or nation, or religious sect or body politic across the planet and throughout time. Obviously the universe uses design patterns, too.

Anyway, mostly I wanted to relate my experience in order to express my newfound appreciation of our profession, and particularly the staggering social generosity of the luminaries, pioneers, and everyday developers who devote so much precious time and apparently limitless energy to clearing the paths and building the roads on which the rest of us are able to make such amazing progress.

I will close this post with another quote from Suzuki Roshi. This one I’ll leave up to you to interpret.

“My lecture for tonight will be very short, especially after having a good dinner of noodles, which were very long. Our transmission should be a very long, long one. And our transmission is a special noodle.”

Fine, SOA may not be a City. What about a religion?

Rob Eamon has offered some compelling, well cited arguments (corrections?) in regards to a previous post of mine describing the image of SOA as a city/society that I selected from among various alternatives to use as a mental model. See the comments of that post for a full record of his take on things.

I can’t help but wonder, though, assuming his understanding is the original understanding, that the original “scope independent” definition he has laid out for the term SOA is mutating or fracturing into a different meaning, or more probably collection of meanings, as the concept is becoming more and more mainstream. Perhaps the mutation, if is real, is fueled by relative “laymen” from such out of the way places as the SMB (such as myself) as we attempt to understand SOA and become practitioners, which perhaps wasn’t common until more recently.

Or perhaps I say that entirely defensively, not wanting to believe I could have missed the mark by such a large margin.

In any case, I certainly have no other option than to concede that I was incorrect in my naive belief that I had found for myself a way of thinking about SOA that, at least in a purely conceptual fashion, could exist at an abstract level above all the tumultuous debate.

Perhaps believing in an image of SOA that encompasses all possible schools is as foolish as believing in an image of god that includes all other religions. I never get used to how much technology feels like religion to me at times.

Maybe things would be more straightforward for everyone if there were named schools of thought one could subscribe to, and then it wouldn’t be so tempting to say “This, well THIS is SOA, and that, well that is something that may resemble SOA(maybe), but in fact it is nothing of the sort.” Rather I could just say “I am a Soascopist” and you could say “I am a Soastylist” and, like religion, an argument about which is right would inevitably continue to rage. But, when the uninitiated like myself walk into a room of people shouting different definitions over each others heads, we would clearly know we needed to pick a school, learn the dogma and start shouting back, or we could state ourselves as agnostics, but we would be less inclined to try and synthesize the “truth” from all of the various contradictory opinions, which turns out to be a rather futile effort.

Then, when the holy war breaks out (and perhaps it already has), the SoaScopists, the SoaStylists and all other various sects of Soaists will take up arms together beneath a common standard and ally themselves against the RPCists. Gifted with superior agility, close strategic and financial alignment with the emperor, and extraordinarily loose coupling, the Soasists will relegate RPC to the level of an outcast technology, kept on life support on the outskirts of the kingdom via a flimsy service adapter, until some data center technician coldly pulls the plug, changes a value in a routing table, and the lights go out for good.

Of course, however it shakes out, we’ll still always prostate ourselves before the dollar, one way or another.


(BTW, the holy war is just a joke, not my new personal metaphor for the relationship between SOA and RPC)

The .NET Framework Client Profile

is a trimmed down version of the .NET framework aimed at providing a leaner deployment package for systems that are just intended to run .NET client software. It ends up being around 23mb and should make it easier to deploy on the web to computers that might not have the latest version of .NET installed. Below is a link to a blog that has a link to a list of assemblies included in the profile 🙂 

POKE 53280,0: Pete Brown’s Blog : What’s in the .NET Framework Client Profile?

An Agile Approach to Software Specification


This came from the home page of some startup Jeff Atwood is launching, and I had to share it. I’ve had this feeling before.