RE: [AM] [dm-discuss] ZZZ Farewell Fellow Agilists

"Gaythorpe, Dagna" <[email protected]>
Newsgroups gmane.comp.programming.modeling.agile
Message-ID <[email protected]>
My comments in line, prefixed with DG. I also put a few headings in (this is
getting to be more like a paper than an email.) If you are going to read the
whole thing, this may be a good time to get a cup of coffee. It also took
while due to distractions (work) having to be done...

> -----Original Message-----
> From: Paul Oldfield [mailto:[email protected]
<mailto:[email protected]> ]
> Sent: 02 February 2004 16:38
> To: INTERNET:[email protected]
> Subject: RE: [AM] [dm-discuss] ZZZ Farewell Fellow Agilists
> 
> 
> (responding to Dagna)

<snip>

WHY WAS Y2K SO HARD?

> > Remember Y2K?
> 
> Indeed.  I didn't hear of any really bad horror stories,
> but loads of potential for things to go wrong.  What I'd
> like to do is take that as a driver for making that sort of change
> easier.  Why was it so hard?  Can we do things now to make
> any future change of that sort easier?

DG: It was hard because there is a huge amount of very old code still in
use, which was originally written when storage was expensive. Someone
(Martin Butler?) calculated that the cost of the Y2K changes was less than
the extra storage would have cost over the years if the dates had been
written with four-digit years in the 60s and 70s. (I think the calculation
also involved Present Value, which I was taught in accounting classes way
back when PASCAL was new.)

LEGACY SYSTEMS ARE THE ONES YOU WISH YOU COULD LEAVE BEHIND YOU

> 
> > It is a fairly extreme example - we had to find and change
> a load of
> > columns, and then test everything. And have people standing
> by in case
> > anything got missed.
> 
> I'm not sure I understand the full ramifications of the
> problem, but it seems to me that a large part of the problem 
> in this case was the failure to uncouple the meaning of the 
> data from the implementation.  Applications are going 
> straight into the database rather than going through an 
> interface. Say, using embedded SQL rather than stored 
> procedures. (No doubt there are other ways to provide such 
> an interface).

DG: All the things that seem so obvious and easy now were once pretty
revolutionary. Consider that most companies do the important and/or time
consuming processes first, so the stuff the business really depends on
(order processing, producing bills, recording customers) is often the
oldest. Replacing these systems is a scary prospect - they hold business
rules and processes as well as data - so new developments have to fit into
the existing landscape. Working out what there is, how it fits together,
what it all means, and how to insert new stuff in so that the ugly joins
(transformations) are minimised, is what keeps me in gainful employment. I
have the impression that few (if any) new companies bother with a formal
data or application architecture - they are small enough that they know how
it all fits together, and they only have one billing system, order
processing system, HR system... Ten years and/or a few takeovers and mergers
on, the picture is very different, and the Architecture Team appears in a
corner somewhere. (A nice, quiet team, no trouble to anyone. Trust me, I'm
an Architect!)

Two examples. I changed employers in 1999; my old employers had a major
system (one of two that the company totally depended on) which celebrated
its 21st birthday in about 1995. It was written in Assembler. My new
employers had a major system that stored its data on magnetic tape. (That
isn't this employer, BTW). The data from both of these systems got sent all
over the place, and any change to either could have an impact on the rest of
their systems. Even a small impact per system adds up when you hit a high
enough percentage of the 120-odd systems you have. (I have a theory that 120
is a magic number - having worked at three large companies all with about
that many major applications.)

A lot of these old systems don't have databases - they have files. They
don't always have indexes. Updates are FUN. (Especially when the storage
medium is absolutely serial - mag tape.)

I think that Y2K inspired many companies to bite the bullet and replace
their old systems with the modern, relational or OO version. But my
impression is that most companies didn't - when a system has been in place
for ten years or more, maintained in house, then the likelihood that anyone
knows everything it does and what, exactly, each little wrinkle in the code
is for, is slim. Even if the documentation exists, it can be tough to put
all the pieces together and work out what the new one needs to do and how
the data is migrated. My first warehouse project, one of the two source
systems was a fifteen year old, in-house, major system. To be sure that we
knew how it worked, we had an experienced analyst have her own copy and put
individual transactions through and check all the data files after every
program in every batch to see what it did. As she found things, I modelled
them and then we talked to the developers and said 'is that right' - a lot
of the stuff was things that had been forgotten over the years. We had
documentation going back to the original file layout sheets, and the
original developers were still with the company (one was head of IT), and we
had very experienced developers working on the system and doing the
analysis. It still took us a year - two people, one full time, one most of
the time. (Experiences like this are, I think, what make some of us old
hacks nervous about Agile methods, or anything else that seems to promise
speed - we are afraid for the documentation and have too many grey hairs
gained in maintenance over the years.)

Encapsulation can fix all this! The database gets hidden, and you just see
the API... So you go and see the users, and tell them that you want to
encapsulate your major databases, and that it will cost x thousand/million
and they won't notice the difference. You have to have pretty clued up users
if they are going to see that this should be done before their new toy
(sorry - tool) gets bought, and that it is worth doing something that they
won't notice. Or you can try to steer the conversation so they first see the
problem, then they ask 'what can be done'. This will take time (days or
weeks, often years). If you can get them sold on the scale of the problem,
then getting buy-in for encapsulation is much easier - it is way cheaper
than redeveloping the original app. (Based on gut feeling rather than
metrics).

EVERYONE NEEDS TO KNOW EVERYTHING!

> Anyway, the basic problem from my point of view is that
> I'm not sure I understand.  I may be good at 'agility' but I
> am not a DBA.

DG: Unless you need to know how the DBMS works, you don't need to spend too
much time discovering the fine details (although a general understanding is
essential, IMHO). That's what the DBAs are paid for - and part of their job
should be helping people who don't need to know the details, work stuff out
that they need to do. I firmly believe that what we all need is the ability
to understand the other person's concerns and viewpoint. Even if we don't
agree with it (it makes arguing and persuading much easier). Next time a DBA
has a hissy fit and refuses point blank to even consider doing x - ask them
why, and explain that if you understand the reasons it will make both your
lives much easier in future. And when they have explained, you can maybe
rephrase your request or redo it in a way that won't bring western
civilisation down by the end of the day. (As the aforementioned DBA
explained would be the inevitable consequence of your new column.)

And, sometimes, someone is horribly overworked, incompetent, in a bad mood,
lazy, or just hates you. 

> 
> > But any change to a database has to be checked to see
> > what else uses it - other apps, interfaces, user reporting tools
> > (Business Objects, Excel, Access...) And if the DBA misses one, the 
> > project that asked for the change probably won't get users phoning 
> > them up and screaming down the phone... Which is one reason 
> why they
> > don't like changing columns 'on the fly'.
> 
> My thoughts are that if everyone went through stored
> procedures, then you'd only have them as clients of the 
> database.  I guess the picture isn't so simple for some 
> reason, but why not?

DG: If every new development uses stored procedures, then life will get
easier. And, eventually, all the old apps will get replaced (the tape drives
will get too expensive to maintain, the people who write assembler will come
up to retirement and no-one will want to take a job using it, the companies
will get taken over and the either the take overer or the take overee will
have a spiffy new system and there will be a corporate will to move from a
dozen billing systems to only two or three, and then the old data will get
migrated or dumped. And there will be world peace. <g>)

And one day, an old hack will be someone who remembers Java. (Currently, an
'old hack' is likely to be someone who remembers paper tape, punch cards,
and that you could play Smoke on the Water on mainframe core memory.)

DATA WAREHOUSING

<snip>

> > I have been involved in four data
> > warehouse projects - two built, one abandoned when the company was 
> > sold, one may still be going on as it was for the company 
> that sold my
> > then employers.
> 
> Does Data Warehousing have special problems?  Again, I
> don't know enough to comment on what approaches would be good.

DG: Yes. The big special problem of data warehousing is data quality. Things
like: 

1. Name has different lengths, structures and contents on every system -
some have surname/initials, some have free-format text, lengths vary from 20
to 1024 characters (hey, it's a Varchar, it won't use what it doesn't need,
so let's be safe!), so you need to look at each one and work out how to
transform it and what to do when it fails (name is blank, for example). Then
there are addresses. Always a source of fun for the ETL programmers.

2. Identifiers aren't unique across systems, so they all have to be
converted to a unique Warehouse id. And some of the source systems have
different id formats (number, alphanumeric, formatted
alpha/number/alpha...). And the same customer can have different ids on
different systems and there is no cross-reference to identify the matches.

3. What do you do with the rubbish? Stick it in anyway, or reject it? And
how does it get fixed, in either case? These questions have to be answered
for every table. Different tables may have different answers. (This is
emphatically not a development team decision. It has to be made by the
users, who have to realise the consequences of their decision. Resist all
attempts by the users to push it back to you.)

The other warehouse problem is the size of the thing. The first iteration
will take a long time (whatever value of 'long' you use), because that's
where you set things up so the next bits just add in and use the
infrastructure (way of generating ids, links back to source systems, etl
tool, database instance, etc) that you decided on and set up in phase 1.

If you are developing a warehouse, you need a full time data
analyst/modeller/architect on the project who knows the data, knows why it
was done like that, knows what can be changed (so when you want to change a
format, they either say 'OK', 'OK but...', or threaten you with extreme
violence), and knows what transformations are needed, have been done, or are
near enough like the one you are starting that you can re-use the old one,
and they know who to go to when the feed you have finished, tested,
installed and are running live is suddenly changed. (Because you are
re-using existing interface files and someone, somewhere, needed a change
made. You can probably sell tickets to this meeting, to anyone who isn't too
squeamish.)

> 
> > I joined this list to find out more about Agile methods,
> and see where
> > Enterprise Architecture fits in (I think I know, and when I
> am sure, I
> > will post my ideas).
> 
> Always good to have another point of view.  If you don't think
> we're talking sense, yell.  Somebody will learn something,
> with any luck.  Either we'll learn to express our ideas better,
> or we'll learn to express better ideas   ;-)

DG: Thanks. I will try to keep future replies  a little shorter.


Regards,

Dagna
Dagna Gaythorpe
Data Architect
International IT
> tttt COLT TELECOM GROUP PLC
> Beaufort House, 15 St Botolph Street,
> London EC3A 7QN
t   (+ 44) 020 7 390 7896
f   (+ 44) 020 7 947 1176
e [email protected]




*************************************************************************************
COLT Telecommunications
Registered in England No. 2452736
Registered Office: Beaufort House, 15 St. Botolph Street, London, EC3A 7QN
Tel. +44 20 7390 3900


This message is subject to and does not create or vary any contractual
relationship between COLT Telecommunications, its subsidiaries or 
affiliates ("COLT") and you. Internet communications are not secure
and therefore COLT does not accept legal responsibility for the
contents of this message.  Any view or opinions expressed are those of
the author. The message is intended for the addressee only and its
contents and any attached files are strictly confidential. If you have
received it in error, please telephone the number above. Thank you.
*************************************************************************************

For more information about AM, visit the Agile Modeling Home Page at www.agilemodeling.com
--^----------------------------------------------------------------
This email was sent to: [email protected]

EASY UNSUBSCRIBE click here: http://topica.com/u/?bUrKDA.bWnbtk.Z2NtYS1h
Or send an email to: [email protected]

TOPICA - Start your own email discussion group. FREE!
http://www.topica.com/partner/tag02/create/index2.html
--^----------------------------------------------------------------
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.