I’m absolutely convinced of the benefits of Enterprise Architecture (EA), but there are many reasons why an EA effort might get derailed and it’s really challenging to articulate and demonstrate the benefits to organisations when there are so many things competing for CIO ‘mindshare’. This is especially true in the current economic conditions…EA budgets feel a bit like marketing budgets - they get squeezed out as non-essential and ‘we can live without it for a while’. But, just as is often said for marketing spend, it can be argued that EA budgets are even more critical to maintain during the ‘hard times’ as your enterprise architecture programme is the thing that will identify and bring home costs savings, efficiency improvements and revenue growth.

Slow motion car crashes are really frustrating to watch…

Robin’s rule - if you can’t easily grasp what a product does in 10 minutes of reading the datasheet, there’s a problem. This is currently case for me on the relatively new WebSphere Business Services Fabric. I understand all the words on the IBM web site, but it’s had to articulate in a snapshot what it all means.

It seems mainly like a packaging of all the bits from the WebSphere integration/BPM landscape that know and love such as Process Server, WID, Monitor, Modeller, WSRR, etc but there are some new bits thrown in such as a new Eclipse perspective for managing extensions stored in WSRR and other stuff.

Or I’m just dumb - for which I apologise.

An area of technology that seems to be getting more publicity of late is that of ‘unified communications’, or UC. Hopefully it won’t get over-done and treated as the next bandwagon, but there is a risk of that approach hurting what is actually a useful area for business improvement.

As a systems integrator and consultancy, we of course are working with UC as end users, developers and business change architects. With a view that this isn’t only about technology, we are categorising our approach as that of ‘Business Communications Transformation’, or BCT. Expect a future blog of three about the value we see in this approach for enterprise architecture.

I see that IBM are using a different term for their approach, which is ‘UC2‘, for ‘Unified Communications and Collaboration’. That ties in with their positioning of the Lotus product brand for collaboration. See www-306.ibm.com/software/lotus/unified-communications/ for their strategic definition.

This triggered thoughts about other acronyms that may get created in this area, such as ‘UC3‘ for ‘Unified Contacts, Communications and Collaboration’. A colleague of mine then came with thoughts of using ‘e = mc2′. Finding a suitable set of words to correspond to that acronym/equation can be an interesting exercise.

To pinch some of the IBM terminology, how about:
 ‘Enterprise = Mobility, Communications and Collaboration’?

Other suggestions welcomed. The closer to the real world, the better!

I’ve been involved in a project for a client recently that uses WebSphere Process Server and a DataPower XI50 to service enable a legacy system. Maybe I’ll post something about the fun and games I’ve had with Process Server v6.1 some other time… - for now I want to talk about DataPower.

For those that don’t know, it’s a 1U hardware integration appliance that performs functions what may have traditionally been done with an app server, e.g. secure service exposure, XSLTs etc. It does lots more than this which I won’t go into now - really quite a powerful beast.

Anyway, when Smart421 first got into DataPower and got a number of staff certified in its use - I must admit to being rather sceptical. Having now used it on a project though I have seen the light - looks like my colleagues were right all along! Easy and quick to setup, lower TCO, great performance, and good sales organisation support also.

Don’t you just hate it when that happens :o)

As a systems integrator and consultancy, we at Smart421 frequently have to justify to potential clients why they should use us, and explain what value we provide to their organisation.

Thinking on this point, which is primarily an issue for sales and marketing types, you will also realise that this applies at a personal level too - as an individual, during regular personnel reviews, or if you are job hunting, people need to explain the value that you bring to a company. I’m not gong to discuss the approaches that bring best results in these particular aspects (hey, we are all in competition at some level or other, but if you want to make a pitch to join Smart421 you can certainly check on our job openings and apply - a good pitch from you can get you into the team).

Back to the consultancy aspect, a prospective client has to feel comfortable that we will provide a level of service that they will be happy with, and that helps them in achieving something that they may not otherwise be able to do at that time. So what are clients buying? Two things, I would say. First is the approach that we bring in working to resolve their problems. Second is the experience and expertise that we hold as a company.

Smart421 has expertise over the whole area of the software lifecycle, right from strategy, enteprise architecture and analysis through to application design, development, delivery and support. We also handle migration and retirement of systems at the end of their useful life too. Within that whole range, we have knowledge of numerous software products and platforms, alternative project management approaches, quality controlled processes for delivery and service management as well as our own controls for staff and finances as required for any company.

If a single person held all of these skills, how valuable do you think they would be to your company?

An application from someone that could list and validate all of this knowledge on their C.V. would seem almost unbelievable. But that is what you get if you use our services - access to all of that knowledge and expertise, provided on either an individual or team basis.

Any commercial agreement will of course define the terms of each particular engagement, so you don’t get endless access to all of this just through using an individual consultant. That consultant does however have this backup to refer to, increasing their value substantially to the end client. For a team of consultants, that provides more of the same, through greater points of contact and an enhanced collective viewpoint. If you could create a small internal team with this large amount and range of knowledge, imagine the potential benefits to your business.

When project work is handled by Smart421, this same set of skills and knowledge will be used to assure reliable delivery, using best practice and with our commitment to providing the best solution to meet client needs.

Enough of the sales pitch. I just thought it worthwhile to put forward some viewpoints about the value of using at Smart421, especially from the point of view of being part of the team that has to deliver on our promises.

So next time you are considering the use of third-party resources and question the value over that of internal resources, or plain hired-in contractors, this should provide some food for thought about what you are actually buying from such a consultancy.

I’m sat on a train at the moment, from Norwich to Ipswich. This train will take 39 minutes to reach its destination. It’ll then take me 7.5 minutes to walk to the office, 1.3 minutes to make a coffee. I’ll be ready to work at 08:17:48. Obviously, I’ll stop to take a sip of coffee at 08:17:57, 08:18:20 & 08:18:50, and a large, cup emptying slurp at 08:19:20. Other than that though, it’ll be working straight through ’till 17:30:00. I will not get peckish and stop to raid the snack machine. There will be no interruptions. Nobody will, at short notice, book a meeting or pitch up at my desk for an impromptu chat about the current status of Project X or Initiative Y. My fiancé will not send me an SMS asking me to pick up a bottle of wine on the way home, and absolutely no recruitment consultants will call. All my days are like this. I never have a bad day, never fail to get my head around the task at hand first time, never struggle to think where to start. All my tasks are predictable, have well defined goals and require no assistance from anybody who might be having a bad day. Of course, in this environment, I deliver what I said would, when I said I would with 100% certainty, every time.

Of course, I’m dreaming.

The reality is that nothing about the average day of the average employee is in any way precise. My train might take 39 minutes, or it might take 41, or if I’m lucky and there’s a northerly wind, it might take 38 minutes and 59 seconds. My walk will be marred by traffic lights, and I (shock) will have bad days. If I were to use the fingers of every occupant of this rush hour train to count the number of times I’ve been asked by a project manager over the last 10 years “How long will this project take? How much will it cost?”, I’d probably have no more than two fingers left to type the remainder of this post.

The trouble is, you see, I don’t know.

Don’t get me wrong, I can estimate things as well as the next guy - it’s just counting widgets at the end of the day, but I know I’ll be wrong. Of course, project managers are reasonable people, they say things like “Well, we have to be 100% confident in this estimate, so we’ll add 10% contingency to your total, ok?” No. Not OK. The issue here isn’t that I under-estimate routinely (although that might well be an issue), it’s that adding ten percent will not make any estimate 100% confident, and nor will adding thirty, one hundred or even three hundred percent, regardless of how good an estimator I am.

Anyone who remembers the whale and bowl of petunias from Douglas Adams’ Hitch-hikers Guide to the Galaxy will remember that according to Adams, the sudden appearance of flora and fauna in deep space is unlikely, but none the less has a real finite probability. Perhaps somewhat shockingly, this sort of thing is a reasonably well accepted side effect of quantum mechanics; this could happen at any time in any place. You could be just tucking into a medium (sorry, Grandé) cappuccino at your local Starbucks when something, anything, appears. House, car, cat, dog, frog, you name it. Now, just to stop you panicking over your caffeinated beverages, the chances of this happening are infinitesimally small, but it serves to illustrate the point that you never know what might get in the way of your project.

So, finally, to the point of my post. I think it’s time estimating grew up a bit, and stopped pretending that it knew all the answers. What’s needed is a way of estimating the cost and duration of a project that softens the boundaries a bit, and gives a truer picture not of how long a project will take, but how long it might take. Imagine for a second that a programme manager knew that there was a 66% chance that the project would be in by Christmas, and a 88% chance it’d be in by June. He’d probably be much more likely to give the board a sensible message than if all he had was a vague message from you that it could conceivably be done before the turkey gets cold. Equally, those of us who sometimes work on fixed price contracts would have a much better way of assessing the risk of a given project, allowing us to reliably turn a profit while offering a good deal for the client.

It strikes me that there are two approaches that could be taken to this:

  • Use probability theory to attach a probability distribution to every input parameter in the estimating model, and then carry these through the model and give a final probability distribution at the end. Complex, nasty, not much fun unless you have a PHD in applied statistics.
  • Make the input parameters to the model fuzzy (more on what I mean by this later) and then run the estimating model over and over again, collect all the answers and build a histogram (chart) out of the results.

I’ve thought long and hard about this over the last few years, and frankly the former option is beyond the capability of my AS-level statistics. Even if it wasn’t though, I’d be recommending the latter, and here’s why: It’s intuitive. What you’re doing is running the project over and over again, and seeing how long it takes. Project leaders can be old and wise without being old and wise; they’ve already done this project 1000 times (albeit in the mind of a machine), so they’ve got a good idea how long it might take.

Using this approach, you could build absolutely anything into your model; Productive day averages 6 hours, but varies between 2 and 20 hours on occasion? Sorted. 0.04% chance of aliens abducting your senior developer? No problem, at least for the project. The options are endless.

Nicer still, because this approach uses simulation rather than algebra, we don’t need to be too anal about how the parameters are set. If it’s easier to say “95% of the time it’ll take 5 hours, but 5% of the time it’ll take a random value between 8 and 10 hours”, then that’s fine. We don’t have to put together some strange combination of probability distributions that models this; we just run with it. Equally, if you have a set of example data to use as a basis (well, this system has N classes, and it took X long), then these values could be used directly, without having to build a complex model from them first. That said, if the guys doing the estimating do understand probability, then they can use a Poisson distribution to determine how many use cases will be delivered by a week next Friday if they so desire.

Equally, because we’re actually running the project, we can apply all sorts of interesting things to the model that would be impossible using a purely statistics driven approach. For example, in an agile project, we can simulate the team size and length of sprints against the simulated sizes of the products to determine the optimum length of a sprint for the project. We could simulate the quality of deliverables based on whether code reviews are expected, and use this to estimate the impact on the length of the test cycle. Obviously, this stuff is a bit trickier to achieve than answering the usual how long/how much question, but it’s always good to know there’s scope to develop things further in the future.

The architecture underlying this kind of estimating machine is pretty trivial. I’d say, with 100% certainty, you could deliver the underlying engine in 27 hours, 5 minutes. Elephants and petunias not withstanding.

I’ve finally got round to reading this article on developerWorks. Things of interest that caught my eye:

  • There are some changes to the BPC Explorer such as more meaningful column names etc - worth knowing about as it has user impact.
  • Install time is supposed to be 1/3 what it was. Hurrah!
  • Maximum business object sizes for various deployment platforms are stated in the document as follows - “In a 64-bit environment the maximum size is now 500MB, while 32-bit UNIX systems can handle 100MB objects. Windows has a limit of 50MB due to the smaller heap size.
  • Cyclic flow activity - the ability to loop back to previous points in a process was a real pain in the past on a project I worked on, and this new BPEL extension makes this easier. It is an extension though, so needs to be used with caution I guess.

In general the feel of it is that IBM are gradually adding some of the capabilities there are available in MQ Workflow and Interchange Server, but which were too low down the priority stack for inclusion in a previous release.

Having recently done some work using WebSphere ESB and MQ, I came up with a list of IBM Redbooks that serve as useful references. Some of these are ‘must have’ documents for developers; others are good for additional background information. I’ll leave you to choose which.

All of these are available as electronic downloads (PDF files) from the IBM web site http://www.redbooks.ibm.com/ and are (mostly) identified with an eight-character id. I’ve included this id, plus a shortened form of the Redbook title, in the list below.

  • sg246963: WebSphere Product Family Redbook
  • sg247369: SOA Patterns, Design using WMB V6 and WESB
  • redp4191: WAS V6.1 Technical Overview (redpaper)
  • sg246451: WAS V6 System Management and Configuration
  • sg247413: WESB and WPS Production Topologies
  • sg247406: WESB SOA and SCA Connectivity
  • sg247212: WESB V6 Getting Started
  • redp4041: WPS and WID Technical Overview (redpaper)
  • redp4304: WBI V6.0.2 Performance Tuning (redpaper)
  • amqtac06: WMQ V6 for Windows, Quick Beginnings
  • csqzaf09: WMQ V6 Clients
  • amqzan09: WMQ V6 Using C++
  • csqzaw12: WMQ V5 Using Java
  • csqzal11: WMQ V6 Application Programming Guide
  • csqzak10: WMQ V6 Application Programming Reference
  • amqnar10: WMQ V6 Pub Sub User Guide
  • amqzag09: WMQ V6 System Administration Guide

There are plenty more in addition to this list, but I found these most relevant for the piece of work I was involved with.

You may also find it useful to view the set of SOA Patterns as published by IBM. These naturally focus on the use of IBM products, but even if you aren’t using their platform, the overall patterns still make sense. For instance, you can substitute your own flavour of ESB or messaging technology, your choice of application server environment, plus your web technology.

Comments on a topic I had previously posted about on my own blog http://john-rutter.blogspot.com/2007/12/websphere-message-queue-utilities.html but worthy of some repetition here.

 If you are using WebSphere Message Queue (WMQ), then a quick checklist of utilities you may find useful:

Other IBM blogs and web pages provide plenty of other useful information on WMQ and WebSphere ESB/Process Server, such as:

http://hursleyonwmq.wordpress.com

http://mqseries.net

http://www.ibm.com/developerworks/websphere/zones/businessintegration/wmq.html

http://soatipsntricks.wordpress.com/

 http://webspherecommunity.blogspot.com/

http://www.redbooks.ibm.com/rss/websphere.xml

Thanks to Andy Piper (http://andypiper.wordpress.com/) for pointing out some of these to me before.

I’ve just attended a webinar panel discussion run by eBizQ about Web 2.0 and SOA.

I found the relationship between the two subjects kinda hard to see, hence I attended the webinar to understand it better. I wasn’t much more convinced afterwards. However, one interesting point was that as we expose more and more services in an enterprise, then users can create their own mashups from a variety of data sources, so I can see this relationship. This has the potential to create chaos as users compose their own ’super-services’ though - with usage of underlying services becoming unpredictable and harder to manage.

Another interesting point made by one of the panelists was that Web 2.0 provides the presentation layer on top of an SOA - and whereas the services of an SOA is the technology part of an enterprise architecture, Web 2.0 provides the ‘human’ part. By this I took it that he meant that users can create their own compositions of other services which are customised for them, and would never be identified as good candidates for reuse and so would never exist otherwise.

A lot of the webinar really focused on web 2.0 and what a good thing it can be for an enterprise, which I agree with. My pride was somewhat hurt though as my question to the panel (asking about productivity concerns with offering Facebook/IM etc inside the enterprise, with users “throwing bananas” at each other rather than working) was thoroughly ridiculed by the panel… :o(

Next Page »