J
Jeff Wiseman
<<lots of great software corporation bashing deleted >>
And yet those types of people frequently work in overlapping
roles at the office in a totally compatible fashion! That means
its the application creating divisions that have the
problems--usually by attempting an overly simplistic solution to
an inherently complex problem.
The statement I have a bit of a problem with (as I would assume
John does too) is "Word is designed in three layers". No. That
implies that a cohesive set of layered functions existed that the
product was designed around. The layer concept has been
introduced later to an already legacy product.
The pre-existing functional controls of Word have been
arbitrarily shoved into three groupings of increasing complexity
that MS wants to call "layers". New functions have been added
against such layers which does improve there cohesion some.
However, these layers were invented after the fact--they do not
really reflect an internally layered infrasturcture of essential
operations and their relationships. The nitty-gritty
inconsistencies in the UI's presentation of these functions is
evidence of this.
In MS's defense, this again is a good (correct) approach but at
the core of the thrust, they need analysts/architects with
tremendous abstraction modeling capabilities, the drive to
maintain cohesion (i.e., fight software entropy), and keep
marketeers on leashes.
Entropy begets entropy and structure begets structure. If you
start off with a scrambled product, in general, it will only get
more scrambled and will enjoy a short evolutionary life until it
reaches a point that no one dares change or add anything for fear
of breaking it. On the other hand, a product who's architecture
is highly structured around its application will actually get
better over time with less effort since the structure tends to
become "stronger".
The Mac OS is an example of this. It's entire structure was
forced into an "object oriented" mode because a non-programmer
was specifying what the UI was supposed to do long before the
concept of OO even became common. UNIX is another example with
its application being development driven.
To drop reduce the entropy level on a product until it reaches
"critical mass" so that it begins to restructure itself in an
evolutionary fashion is very difficult. I've seen it happen on
one product in my life so I do know it is possible (it was in
fact a product that I worked on). If a large enough "chunk" of
software is added to a legacy product that has been very highly
(and CORRECTLY) strucutred to the problem domain of the product,
it can actually cause the future maintenance of the product to
start becoming easier. In the product I worked on, once we added
the structured piece, over the next 2 years many times adding new
features wound up resulting in the compiled size of the product
being less than the previous release with fewer features in it.
Creating a layered system only works if there are true layers in
the problem domain for the feature set (i.e., the layers are
truely cohesive in their definition). Implementing it can be a
problem it corporate minds don't look long term and analysts
don't understand the long term evolution of application feature
needs.
It cost them THAT much to discover that?
Of course, the corollary is that if you design a product that's
foolproof, only a fool will want to use it...
Ooops. Silly me, I was thinking of efficiently providing for the
end customer If we let marketing drive it we can keep
developers employed changing things that weren't needed,
improving things that weren't implemented completely, regression
testing release after release after release. And don't forget the
customer service people trying to explain how all these simple
features in overly complex user interfaces are really suppose to
work (assuming that they are not all in India, etc.) since no one
reads the huge documentation sets that must be upgraded and
tested from release to release.
Oh heck! I just realized..."getting it right the first time"
through effective analysis only gives folks like ME any job
security. Everyone else is out of luck!
I see what you mean John. Bummer.
Actually, I'm talking about engineering analysts. Basically
system architects that aren't allowed to do design. Business
analysts usually lean more in the marketing areas. The trick is
to get the senior developer *OUT* of the Design role and into the
spec role. Hard to do since they usually don't find it as much
fun
Or ONE high power CEO and an offshore development team
Right. But you ARE allowed the next 3 years to fix what you
screwed up. That's ok, the customer backlash can be handled,
they've done it before...
Again, I'm proposing a function in the Engineering realm that can
provide feedback in the distilled fashion needed by senior
management.
True, but cohesive specs should really be done with pictures
anyway. I took a 73 page spec for a telecomm product security
system that no one could really understood anyway and condensed
it into a one page entity relation diagram that everyone could
understand. It also within 1 hour of being distributed revealed 3
long term security holes that had been in the system for years...
Good structural analysis is wonderful. It can be applied to just
about anything. People think in a certain natural structure
(i.e., things and how they relate). If you can reduce any
description of a system down into this simple form, it is far
easier for others to understand and communicate it.
However, the concept is a lot like a flowchart. Just about anyone
can read or understand them. They are simple creations. However,
actually creating one yourself that is GOOD and clean can be very
difficult sometimes.
OK, now here is where you and I have a philosophical departure from the Word
design teams. Firstly, Word is designed in three "layers" -- "Unskilled
User", "Power user", and "Solution Designer". Three completely incompatible
user groups being served by three sets of often mutually-incompatible
features.
And yet those types of people frequently work in overlapping
roles at the office in a totally compatible fashion! That means
its the application creating divisions that have the
problems--usually by attempting an overly simplistic solution to
an inherently complex problem.
The statement I have a bit of a problem with (as I would assume
John does too) is "Word is designed in three layers". No. That
implies that a cohesive set of layered functions existed that the
product was designed around. The layer concept has been
introduced later to an already legacy product.
The pre-existing functional controls of Word have been
arbitrarily shoved into three groupings of increasing complexity
that MS wants to call "layers". New functions have been added
against such layers which does improve there cohesion some.
However, these layers were invented after the fact--they do not
really reflect an internally layered infrasturcture of essential
operations and their relationships. The nitty-gritty
inconsistencies in the UI's presentation of these functions is
evidence of this.
In MS's defense, this again is a good (correct) approach but at
the core of the thrust, they need analysts/architects with
tremendous abstraction modeling capabilities, the drive to
maintain cohesion (i.e., fight software entropy), and keep
marketeers on leashes.
Entropy begets entropy and structure begets structure. If you
start off with a scrambled product, in general, it will only get
more scrambled and will enjoy a short evolutionary life until it
reaches a point that no one dares change or add anything for fear
of breaking it. On the other hand, a product who's architecture
is highly structured around its application will actually get
better over time with less effort since the structure tends to
become "stronger".
The Mac OS is an example of this. It's entire structure was
forced into an "object oriented" mode because a non-programmer
was specifying what the UI was supposed to do long before the
concept of OO even became common. UNIX is another example with
its application being development driven.
To drop reduce the entropy level on a product until it reaches
"critical mass" so that it begins to restructure itself in an
evolutionary fashion is very difficult. I've seen it happen on
one product in my life so I do know it is possible (it was in
fact a product that I worked on). If a large enough "chunk" of
software is added to a legacy product that has been very highly
(and CORRECTLY) strucutred to the problem domain of the product,
it can actually cause the future maintenance of the product to
start becoming easier. In the product I worked on, once we added
the structured piece, over the next 2 years many times adding new
features wound up resulting in the compiled size of the product
being less than the previous release with fewer features in it.
Creating a layered system only works if there are true layers in
the problem domain for the feature set (i.e., the layers are
truely cohesive in their definition). Implementing it can be a
problem it corporate minds don't look long term and analysts
don't understand the long term evolution of application feature
needs.
Microsoft has literally hundreds of millions of dollars worth of research
that proves conclusively that most of its users not only do NOT want to
learn their product, they will strenuously resist any attempt to teach them.
It cost them THAT much to discover that?
Of course, the corollary is that if you design a product that's
foolproof, only a fool will want to use it...
When not allowed to do so, you get a spike in local unemployment, consisting
largely of "programmers" ...
Ooops. Silly me, I was thinking of efficiently providing for the
end customer If we let marketing drive it we can keep
developers employed changing things that weren't needed,
improving things that weren't implemented completely, regression
testing release after release after release. And don't forget the
customer service people trying to explain how all these simple
features in overly complex user interfaces are really suppose to
work (assuming that they are not all in India, etc.) since no one
reads the huge documentation sets that must be upgraded and
tested from release to release.
Oh heck! I just realized..."getting it right the first time"
through effective analysis only gives folks like ME any job
security. Everyone else is out of luck!
I see what you mean John. Bummer.
Oh, dear, you *have* been out of the loop for a while, haven't you Let
me disabuse you with some of the sadder realities of software as it is
thrown together these days...
1) The skills you are talking about belong to good software architects.
Software architects get paid four times what top business analysts get, so
nobody with those skills is going to be sitting there analysing
requirements.
Actually, I'm talking about engineering analysts. Basically
system architects that aren't allowed to do design. Business
analysts usually lean more in the marketing areas. The trick is
to get the senior developer *OUT* of the Design role and into the
spec role. Hard to do since they usually don't find it as much
fun
2) Microsoft has a software development budget approaching eight billion
dollars. They can afford the right people
Or ONE high power CEO and an offshore development team
3) In the modern software development environment, you are not going to
"get" the six months it would take you to derive requirements this way. You
got a month to do this, Joe...
Right. But you ARE allowed the next 3 years to fix what you
screwed up. That's ok, the customer backlash can be handled,
they've done it before...
4) The more you analyse the problem, the more information you collect. But
the more senior the manager, the less they have time to read. It's a fact
that anything over five pages won't be read -- anything over ten pages is
wasted typing.
Again, I'm proposing a function in the Engineering realm that can
provide feedback in the distilled fashion needed by senior
management.
5) There's no point in producing this information because nobody with the
chance of influencing the decision is going to read it! I won't say where
or when, but quite recently I saw the "Specification" for a 60 million
dollar system development. It was six PowerPoint slides. They removed two
True, but cohesive specs should really be done with pictures
anyway. I took a 73 page spec for a telecomm product security
system that no one could really understood anyway and condensed
it into a one page entity relation diagram that everyone could
understand. It also within 1 hour of being distributed revealed 3
long term security holes that had been in the system for years...
Good structural analysis is wonderful. It can be applied to just
about anything. People think in a certain natural structure
(i.e., things and how they relate). If you can reduce any
description of a system down into this simple form, it is far
easier for others to understand and communicate it.
However, the concept is a lot like a flowchart. Just about anyone
can read or understand them. They are simple creations. However,
actually creating one yourself that is GOOD and clean can be very
difficult sometimes.