| 
What I've learned so far... PDF Print E-mail
Tuesday, 31 October 2006
I've taken a few days off to spend time with my son (it was half-term last week), but I feel I owe you something. So here is something.

I've worked for over 18 years in the IT industry most of it in CM and related disciplines, working with companies to improve their IT system's development and management. In all that time I've thought I have had a clear conception of what is was I did and how I did it.

While writing this book I've discovered many things about myself. Amongst these things is the fact that things I thought were crystal clear to me are in fact a little murky when I start to explain them on paper. Taking a critical look at your subject, trying to distill what you do on a daily basis into a simple but useful lesson for someone else is very difficult.

I am determined to make my book more than a description of what IT systems lifecycle management (or, as a core subset of ITSLM, configuration management) is. I want it to be more than a simple checklist, I want it to be a toolkit. I want my readers to take away a set of useful knowledge and skills that can be applied flexibly, not simply a set of wrote responses. This is proving to be challenging.


Take the idea of identification, simple huh? Well, no. Actually there are all sorts of things we can say about identification. Firstly we have three aspects to identification:

  1. What are we identifying?
  2. What form does the identity take?
  3. By what process do we select things to identify and assign identities to them?

Then there is the crossover of topics. When you talk about identity in the broader sense you start talking about changes (which leads you into version histories). Then you start talking about identifying composites and relationships between the things you identify (and this leads you into configurations). Argh!


Okay, case in point; here I am working away on identification...


What follows is not verbatim what is in the book, there's a lot more explanation in the book, but I hope it illustrates some of the issues I'm hoping to tackle.


Does this belong under identification? I believe it does because, as I hope this brief outline illustrates, the identities we assign to “things” and the identities we assign to specifications (configurations) have different characteristics.


Why is all this important to me? I am trying to illustrate a very important distinction between the specification of a thing (its configuration) and the thing itself. I want to ensure that when I talk about these things later in the book the reader is clear on the distinction even when I talk about electronic files where it is easy to confuse the distinction.


I start by using a concrete example of two PC sitting on two desks. I stick a label to each PC. On one I write PC-A and on the other I write PC-B. I enter PC-A and PC-B into a register, noting the PC-A is assigned to you and PC-B is assigned to me.


What have I identified? I have identified two physical entities, the two PCs. Great.


Are these two PCs the same? In the simplest sense the answer is obvious. No. They are two different physical entities, consequently they are different things. However, I now provide context to my question.


I will define a specification PCspec-1. PCspec-1 contains the following information:

  • 2Gb RAM
  • 300Gb hard-drive
  • 3Ghz Pentium IV processor
  • 19” monitor
  • keyboard
  • mouse

I now state that PC-A and PC-B both meet PCspec-1. Again, are PC-A and PC-B the same?


The answer is a little less clear this time. If the context of the question is wholly defined by PCspec-1 then the answer is yes PC-A and PC-B are the same. If, on the other hand, we are still considering the physicality of PC-A and PC-B then they remain different (they are different PCs).


I now have three identifiers in my system:

  • PC-A - one of the PCs
  • PC-B - the other PC
  • PCspec-1 – the specification I am using to define PC-A and PC-B.

I'm going to jump ahead of myself now (that is I'm going to skip a lot of stuff I discuss in the book) and consider identities in the context of version control because I think this raises interesting questions.


Suppose I remove 1Gb of RAM from PC-B. Without going into all the detail of how I would manage this in real life what I have implicitly done is create a new specification:

  • 1Gb RAM
  • 300Gb hard-drive
  • 3Ghz Pentium IV processor
  • 19” monitor
  • keyboard
  • mouse

This is obviously not PCspec-1, so I'll identify this specification as PCspec-2. Now, PC-A is an instance of PCspec-1 and PC-B is an instance of PCspec-2. But wait! When I change the specification I created a new identity (PCspec-2), why not also create a new identity for PC-B, after all I have changed this also.


The identifiers PC-A and PC-B differ from the identifier PCspec-1 and PCspec-2. PC-A and PC-B are Artefact Identifiers (they identify “things”, or instances of specifications), while PCspec-2 and PCspec-2 are Configuration Identifiers (they identify abstractions). This distinction accounts for the difference in the way the identifiers are handled.


It is perfectly feasible, and sensible, to say that PCspec-1 and PCspec-2 exists at the same time. It makes no sense to say that PC-B “then” exists at the same time as PC-B “now”, PC-B can only every exist “now”.


What would happen if I did decide to use different identities? Suppose I labeled the PC as PC-B-1 when it conformed to PCspec-1 and PC-B-2 when it conformed to PCspec-2? As soon as PC-B-2 comes into existence PC-B-1 ceases to exist. I would need to track this somehow (possibly showing PC-B-2 superseding PC-B-1). If I were using this identity to track the asset (the physical PC) then I would need to update all references to PC-B-1 to PC-B-2. This would, in real life, be intolerable. PC-B as an identifier serves to identify a physical entity, it does not say anything about how that entity is configured (that is the job of the specification provided by the corresponding PCspec-1 or PCspec-2). When I change the physical configuration of PC-B all I need do is update my asset register (or possibly my CMDB) to show that PC-B now conforms to PCspec-2.


This whole identity thing becomes potentially more difficult when we replace the physical PCs with electronic files. It becomes more difficult not because the situation is intrinsically more complex but because we make a number of false associations with the properties of electronic files.


Okay, suppose we set up the same starting conditions as our PCs but using electronic files. We have two files (FILE-A and FILE-B) which both conform to the specification identified by FILEspec-1. FILEspec-1 defines the essential characteristics of the files (just as the PCspec-1 specification did for PC-A and PC-B). What is in FILEspec-1?


If I am to usefully construct instances of the FILEspec-1 it must contain instructions for generating the content of FILE-A and FILE-B. The simplest way to do this is for FILEspec-1 to contain a copy of this content. The conceptual error many people now make is to say something along the lines of, “Hang on! Surely FILEspec-1 is just another copy of the file then!”


Well, yes and no. Yes, in the sense that I need some way to create FILE-A and FILE-B and the simplest way is to maintain a “master copy” of the files content. No in the same sense that PCspec-1 is not itself a PC. It is essential to distinguish the specification of the file from instances of the file.


Why must we maintain this distinction between the abstract specification (what I will eventual call a Bound Configuration, but again we're getting ahead of ourselves) and its concrete instances? Firstly, maintaining this conceptual distance between the specification and its instances allows use to talk consistently about the difference in managing a configuration and managing assets (but we'll get to this much later). More importantly, everything I said previously about the relationships between the PCspecs (PCspec-1 and PCspec-2) and the PCs (PC-A and PC-B) applies equally to the relationships between the FILEspec (FILEspec-1) and its instances (FILE-A and FILE-B).


If I change FILE-B then it becomes a different file (in the context defined by FILEspec-1), we can label this FILEspec-2 so that now FILE-B conforms to FILEspec-2. FILEspec-2 contains within itself the content of FILE-B so that I could now create a new artefact FILE-C which also conforms to FILEspec-2. FILE-B and FILE-C are different files, they occupy different locations on my filesystem, however they are the same in the sense that they both conform to FILEspec-2.


Still with me? Well done! With a fair wind (and assuming I get an editor sorted) I'll be publishing a draft of the identification chapter online before the end of the month so you can see all this in context.

Trackback(0)
Comments (4)add comment
1687
mbools: ...
Paul:
To answer your questions: yes, yes, and "it certainly would".

Yes, I do keep the book in a VCS (Subversion as it happens). Yes, I take periodic snapshots of the book (particularly just before I make a large change) just as I would when coding. And yes, these snapshots could be viewed quite literally as the configurations of different books - albeit they are all incomplete in some sense at the moment smilies/smiley.gif.

And yes, the irony would be overwhelming if I were not doing this smilies/smiley.gif.
1

December 05, 2006
Votes: +0
23979
paul.coste: ...
So as you change the configuration of your book as you write this blog, and as you edit and rewrite, it follows that you are actually creating a new book each time. I hope you're putting all of these books in a source control repository of some kind. The irony would be overwhelming... smilies/smiley.gif
2

December 05, 2006
Votes: +0
1687
mbools: ...
In brief, I think that CM takes a certain temperament (and work done by Mario Moreira http://www.cmcrossroads.com/content/view/6904/120/ seems to support this conjecture).
As to whether there are expected prerequisites, I would not say prerequisites so much as common background. I often find that IT CM people have a development background simply because their CM position is borne of necessity. Someone on the team needed to perform the CM functions and they ended up doing it. After a while it becomes a career choice for some, others continue with development or move into project management for example.
So, no I do not think it is a prerequisite but I do think that candidates for what I would loosely term ?technical CM roles? (that is CM roles that are closely tied to software or hardware development, rather than the more service management oriented configuration management) benefit from a development background. I find that they can communicate more easily with developers and have more of an idea ?what is going on? at the coal face.
Conversely, for service management oriented CM roles I would favour good project management or other general management background because these are the skills this sort of role demands.
Who should ?take up the mantle?? This answer is in two parts. Firstly, I would argue that in most development teams CM should be everyone's responsibility. As for who should drive the CM adoption, that should be the most senior person available. The second part of the answer is that in any sufficiently large team (more than seven plus or minus two) the need to have one person designated as the ?CM guy? becomes more important. This should be someone respected in the team, but not usually your to developers. It is too easy for people in this role to become more and more busy with CM activities as the project progresses that you effectively lose them as a development resource. Of course the main characteristic to look for is someone who actually wants to do the task.
I hope that answers your questions.
3

November 21, 2006
Votes: +0
0
Tim: ...
Hi Mark,

Do you have an answer to this -
Can anyone be a CM or are there some expected pre-requisits e.g. development background? Who should take up the mantle of being the CM for a developemt team?
4

November 21, 2006
Votes: +0

Write comment
smaller | bigger

security image
Write the displayed characters


busy
Last Updated ( Wednesday, 01 November 2006 )
 
< Prev   Next >
If you already have an account on CM Crossroads, Login Now. If you do not, register using the link below...

NOTE: Once you register you will need to activate your account by clicking the link sent to you by email.

Video News