Friday, August 10, 2012

TOGAF and the Art of Compromise


Almost all my life I have been a passionate software developer. Since I finished the wrong university (studied engineering instead of philosophy) and I had to re-qualify on fly under a strange combination of lucky stars and unexpected opportunities, till now, when I can consider myself a seasoned professional with a good nose for what’s good and bad in any software technology. This last statement takes me to a quote I read many years back and sounded something like: A man of culture is someone who forgot everything he ever read. So are the things with a seasoned software professional: he is a guy who has no more hands-on abilities, forgot how to write good code (the lack of practice being one to blame) but developed a genuine instinct that tells him immediately what’s going wrong in an application, or what could make it better.

During my formation years I was ecstatic about using the keyboard and the monitor, writing lines of code that were processing for minutes and were coming up with something silly in the end: like the result of a calculation by using formulas that nobody needs using in the practical life (Pythagorean triples?), or a graphic built out from printable characters, or a tinny, shrilly sound made by low quality speakers. Trivial things that at that historical time (the beginning of the software programming as a separate discipline) meant the world not only for me, but many other geeks trapped into a passion that soon was to become addiction. Afterwards, during few years of professional ferment and innovation craziness, myriads of new software tools and technologies spread all over the place like an outbreak whose nature and intensity nobody could have predicted. The tiny, shrilly sounds became symphonic media, the simple graphics made from printable characters became splendid illustrations hosted by a screen instead of a book cover, and the calculations which matched up the light speed were soon used to re-calculate the light speed. The transformation was total: the technology took over everything. The beginner had already stashed in his private workshop of software tools hundreds, if not thousands, of different applications that were meant to cover everything one would ever put his mind with. And if I’m allowed to use a metaphor here, the mountain we started to trek and climb was actually a binary heap, a tall  technological riddle, with thousands of different paths possibly leading to the peak. All you had to do was to pick one that suited you.

In the process, the lonely software programmer who was sweating and swearing in his cubicle with the smell of basement, struggling to build automated solutions for people who still preferred the wads of paper stashed in their patent-leather briefcases, found himself surrounded, without even noticing, by a regimen of newly hired co-workers who were now wearing the hats he used to wear before: some of them were doing testing only (or quality control and assurance), others were writing down the business needs (or business analysis), others were organizing teams of people in order to deliver a software solution (or project managers), and last, but far away from least, there were those guys who needed to take a breath before starting to write code and think through: For this kind of business requirements, do we need to build a piece of software, or we can buy? And if we build it, how complex would that be? Or what if I use this technology instead of that? Wow, that would save me a few good bucks. Wait, wait, I don’t even need to introduce the new technology, I can re-use one that we already have in the field. These are the architects, the people with an organ for conceptual thinking, in abstract terms, in generalities that can quickly trensform from business prose to technological poetry.

Where did these people come from? Almost all of them, without exception, came from the developers’ ranks. Those developers who had become so prolific in their field of activity that the people started to look at them with trust and respect (some were calling them "geeks" and they meant it!), and asked their advice when in need of a reliable solution. And this is where the things got a bit more complicated. Once a developer, always a developer, as the saying goes. This little axiom remains valid for thousands of architects that have been tossed on the land of opportunity by the huge wave of change. They love the coding, they love the tools, their addiction to hands-on programming is still there, and may never disappear. And what does this mean? Is this a good or a bad thing? The answer is: depends.

If the architect is part of a small shop where they actually need a smart developer to do some design work, then by all means, the guy must know how to code, or at least how to read the code written by others. And that’s okay: he loves with passion the tools, he loves the code crafting activity, he enjoys seeing at work the things he created. He will thrive in such an environment and definitely be up to the expectations

If it’s a bigger shop where the money the shareholders put in the enterprise matter, and their expectations are heavy in terms like accountability, productivity, efficiency  then the last person they'd need in their shop would be a tool lover. What they need are architects, of the best breed if possible. True architects. People with a strong technological background, with an acumen for conceptual thinking, maybe former exceptional developers who realized that there is more to running a business than introducing fancy applications developed by the in-house IT departments. People who love to take care of the forest, instead of counting the trees. People with the touch for globality, for universality, for integration, which in business world are all alternate terms for enterprise.

It’s not easy to find these people. Some of them may love the idea of a conceptual, abstract thinking applied to the enterprise boundaries, but do not have technological acumen. Some others have strong technological background, but they luck the orientation in the business meandres and the deep understanding of the processes and their management at the corporate level. The people who have both are a rare species, but they exist out there. They are called enterprise architects. And for them they built TOGAF. Who are they? A group of people who like to think abstract, to apply structure to the corporate mess, to look at the same business entity from different perspectives (they call that viewpoints.) They got together through an online call, I assume, and they stick a label to their group: Open Group. These guys did a terrific job by working together at a product called TOGAF, which is a framework, or a way of thinking, rather than a set of tools. By the way, TOGAF stands for The Open Group Architecture Framework, and there's nothing fancy about this name, with a Teutonic resonance. Those tools' aficionados who like to call themselves software architects will reject TOGAF because they will find it dry, uninteresting, un-awarding. TOGAF is not for them anyway. It’s for the people who wish to come up with solutions that cross the tight boundaries of the technological citadels, go out there and try to answer to the real needs of the business drivers, and not to their own desire to feel good about what they do and produce.

Being an enterprise architect is not an easy thing, because first off you have to listen to sometimes (what do I say, many times) contradicting feedbacks, face clashing interests, witness the lame shows put up by ignorant, still self-confident individuals, go patiently through a wide spectrum of disciplines, get to know their terms and jargons, and finally building a bridge that can be walked on by everyone who has a stake: this is called negotiate solutions. A negotiated solution will have to be always in the middle, at that point where all parties cease of being unhappy, although they are not happy yet. And they may never become happy. This is called compromise, and the people who achieve this are artists of compromise. From this perspective alone, the enterprise architects are the artists of compromise, and in their hands the compromise could become an art. The art of negotiating solutions.

TOGAF is by all means more of a philosophy and by no means  a tool. Although there are people, very smart people, who had built a tool to support TOGAF. Again: to support it, not to replace it. The tool is called Sparx EA (stands for Enterprise Architect) and using it is a pleasure of mind and (professional) soul. If TOGAF is a religion then Sparx EA is its bible.  This tool combines the best from two worlds: the crystal clear structure of TOGAF (called otherwise an Architecture Development Method) and the capability of UML 2.0 to capture in a diagram the design thinking. This tool makes happy both the architects who enjoy the conceptual thinking and the architects who are still passionate after the software development tools.

Sparx EA is the right terrain vehicle that takes us over the slopes and ditches of the rough landscape of the corporate processes to the flat, serene patch of equilibrium and efficiency called enterprise architecture.