Document, document, document

Phil Wainewright posted one of the IT commandments today: Thou shalt document all thy works. This is a perfect followup to my post yesterday about SOA and data, although it may not appear obvious at first. Problem: application developers don’t use services when they should; in yesterday’s post, I was talking about how they squirrel away data in their own application-specific silos, but the real issue is more widespread than that. Wainewright hits it on the head:

Failure to document is thus one of the biggies of ZDNet’s IT Commandments, high up in the mortal sin rankings with the likes of ‘Thou shalt not kill’. For if you don’t document your work, how is anyone else supposed to reuse any of it? From your greater sin flows a multitude of others’ lesser transgressions.

In addition to yesterday’s more easily defeated arguments that developers don’t use services because the data may not be accurate or it make take too long, we add this one that’s harder to counter: the developers don’t use services because they’re not properly documented. This is often blamed on developers having a “not invented here” attitude, and wanting to build everything themselves, but I disagree (in general).

I’ve been a developer, and I used anything available to me as long as I understood how to use it, how it worked, and its limitations. In other words, I used third-party code/services if they were properly documented, and I could determine from that documentation that they suited my needs. If they weren’t documented and I had to walk through the code (if that was even available) to figure out how it worked, then I was more likely to just rewrite it myself, on the basis that if someone couldn’t write proper documentation then maybe they couldn’t write proper code either. Later, when I ran a development team, I made the developers write the documentation first. They bitched about it, but we had a high level of code reuse.

There is no way to achieve SOA without reusable services, and there is no way to achieve reusable services without proper documentation of those services.

A bit of meat to go with the whine

Yesterday, I posted a rather whiny entry about rude customers (and Bob McIlree was kind enough to give me a comforting pat on the shoulder, virtually speaking — thanks Bob!) so today I decided to get a bit more productive. Moving from whine to wine, I finally made my first cut of a Squidoo lens about Australian Wine in Toronto (yes, I’m a geek and this is how I spent part of my Sunday). Sort of a niche topic, true, but that’s what Squidoo lenses are all about: it allows you to quickly build a one-page portal with links to other sites, Amazon products, eBay, RSS feeds, and a number of other kinds of information. Since it’s all on the web, you can update it anywhere, which is why I’ve moved quite a bit of information about both wine and BPM from my websites to my two Squidoo lenses.

I want to add a bit of meat to this post to offset the whine of yesterday, and coincidentally (before I saw his comment), I was reading Bob’s post on SOA and Data Issues and the need to maintain a source system of record (SSoR) for data. In particular, he discusses a conversation that was passed along to him from another organization:

A, the SOA implementer, argues that application-specific databases have no need to retain SSoR data at all since applications can invoke services at any time to receive data. He further opined that the SOA approach will eliminate application silos as his primary argument in the thread.

B, the applications development manager, is worried that he won’t get the ‘correct’ value from A’s services and that he has to retain what he receives from SSoRs to reconcile aggregations and calculated values at any point in time.

Since I’m usually working on customer projects that involve the intersection of legacy systems, operational databases, BPMS and analytical databases, I see this problem a lot. In addition to B’s argument about getting the “correct” value, I also hear the efficiency argument, which usually manifests as “we have to replicate [source data] into [target system] because it’s too slow to invoke the call to the source system at runtime”. If you have to screen-scrape data from a legacy CICS screen and reformat it at every call, I might go for the argument to replicate the mainframe data into an operational database for faster access. However, if you’re pulling data from an operational database and merging it with data from your BPMS, I’m going to find it harder to accept efficiency as a valid reason for replicating the data into the BPMS. I know, it’s easier to do it that way, but it’s just not right.

When data is replicated between systems, the notion of the SSoR, or “golden copy”, of the data is often lost, the most common problem being when the replicated data is updated and never synchronized back to the original source. This is exacerbated by synchronization applications that attempt to update the source but were written by someone who didn’t understand their responsibility in creating what is effectively a heterogeneous two-phase commit — if the update on the SSoR fails, no effective action is taken to either rollback the change to the replicated data or raise a big red flag before anyone starts making further decisions based on either of the data sources. Furthermore, what if two developers each take the same approach against the same SSoR data, replicating it to application-specific databases, updating it, then trying to synchronize the changes back to the source?

I’m definitely in the A camp: services eliminate (or greatly reduce) the need to replicate data between systems, and create a much cleaner and safer data environment. In the days before services ruled the earth, you could be forgiven for that little data replication transgression. In today’s SOA world, however, there are virtually no excuses to hide behind any more.

Customers that I’d like to fire

I’ve had two “inconsiderate customer” incidents this week; actually, both are customers who I’ve done quite a bit of work for in the past but have been inactive for some time.

With customer #1, I contracted in as their business and application architect for several months; even though they didn’t really get what enterprise architecture is all about, I spent most of a year trying to do some internal education on the necessity for EA to help sort out the legacy linguine that was rampant in their organization, as well as the lack of business-IT alignment. A while after leaving, on April 29th 2005 to be exact, I dropped my key contact there an email about the (then) new report from BPTrends on EA tools, saying the following:

…there’s a new report out from BPTrends on enterprise architecture that you can download for free. I gave it a quick review on my business blog, which includes a link to the report. Although the product information in the report is nothing that you can’t get from the vendor’s sites, the first 25 or so pages are a great overview of enterprise architecture, process modelling and simulation tools that provide good background material if you’re ever promoting a related project. I did an earlier post on their report on BPM suites that you might also find interesting.

Usually this type of email at least gets a “thanks”, or “hey, it’s been a while, let’s meet for coffee”, but nothing came back from this. No big deal, customer #1 is a busy person. Then on Tuesday of this week, 340 days after my original email, it arrives:

With customer #2, I did the architecture and design of their original BPM system, and they now need some analysis and design assistance to further increase efficiencies (which presumably would more than pay for my engagement there). Their internal IT architect contacted me in November 2005, we chatted on the phone and by email, then he connected me with the project manager. Long pauses in the conversation ensued, punctuated by several emails and voice mails from me to the PM. Responses took as long as six weeks, or never came at all. Finally, they made a request to have me fly to their site this coming week — the week leading up to Easter, with Friday a holiday here in Canada, and Saturday being when 13 members of my family will be descending on my home for Easter dinner. That, of course, is my problem, so I said yes. Turns out that no one had the funding approved, however, so I received an email two weeks ago saying that the trip was off. I immediately responded with some suggestions on how to restructure the project to reduce the funding issues while still providing value. Their response? Silence, so far.

The thing that frustrates me is that I’m not an unknown salesperson cold-calling these people, I’m a geeky engineer type who worked on site as part of the in-house team with both of these customers for several months and did significant amounts of work that were well-received. Are they just snowed under with the amount of email that they receive, and ignoring all of their business contacts equally, even if they were the one to initiate the conversation? Or, because I’m a contractor/consultant, don’t they consider it worth their time to reply to my email (or even open it for almost a year)? At least I’m pretty sure that they’re not reading this blog entry…

Gender blogging

I realize that women bloggers in Toronto aren’t exactly my main reader demographic, so you guys in Nebraska and Bangalore can just skip this, but there’s interest brewing in having a BlogHer North in Toronto. Spurred on by a post from Elisa Camahort (cofounder of Blogher) about how the upcoming web 2.0 conference in Toronto, mesh, couldn’t manage to find more than 6 women out of 50 speakers, Kate posted about the potential for a BlogHer North.

Count me in. If you’re interested, add a comment to Kate’s post or send her an email.

Who’s the dinosaur now?

Do you hate the Microsoft “dinosaur” commercials as much as I do? If so, you’ll love the skewering that they receive at the hands of the Economist‘s illustrator this week, accompanying an article entitled Spot the dinosaur (paid subscription required):

The article, of course, discusses the world of online software and what Microsoft is doing — quite late in the game — to join the party.

European BPM conferences

I went looking at last year’s BPMG conference webpage to find out about this year’s conference, and was surprised to see that not only have they moved their conference to September, but they’re headlining a European Gartner BPM summit in June on their conference page. I saw Steve Towers at the Gartner summit last week, so there’s obviously some cooperation going on between BPMG and Gartner, but is there really a market in London for two major BPM conferences within three months of each other? Or is this a case of Gartner just barging in, and BPMG scurrying around to try and salvage their mindshare?

Another process blogger

My evangelism has paid off again, and I’ve convinced Sharon Boyes-Schiller of SkyScape Solutions to start blogging. Sharon and I met at the BPMG conference in London last year and have had a few conversations via email and Skype since then, many of them about blogging as a type of online portfolio for our small businesses. Her business focusses on analysis and optimization of processes, and I look forward to more of her posts.

The Sins of Patrick Morrissey

With that title, you can just imagine the black-cassocked priest striding across the Irish moors to confront his personal demons… or maybe I have an overactive imagination from watching a rerun of The Thorn Birds last night.

Anyway, this isn’t about Father Pat‘s own sins, but the sins that we all commit during the act of BPM. As a follow-up to Bruce Silver‘s comment on my previous posts about the Seven Deadly Sins of BPM, here they are, hot off the Savvion press:

  • Don’t model your current process
  • Don’t understand people and system requirements
  • Treat BPM as an IT problem
  • Focus on “architecture” in SOA rather than “service”, which ensures that the business doesn’t care about the project
  • Commit unnatural acts with existing applications
  • Hardwire your BPM application
  • Implement automation [of low-value processes] only

I was going to highlight a couple of these as sins that I’ve seen committed, but have to admit that I’ve seen them all, although have rarely committed any of them myself. I can’t even single one out as being the key one: they’re all killers.

The true path to BPM is clear: repent of your sins!