The difference between the almost right word
and the right word is really a large matter.
Mark Twain, Author
Mark Twain, Author
I am a big fan of COTS products that allow
for extensive product configuration. I think that custom development has its
place, but with the toolsets available to engineers now there is little need to
have an entirely custom solution. I see the value in building specific modules.
However, I believe that custom development solutions are less effective once
the entire software lifecycle; long-term retention and updating are factored
into the cost.
The COTS route also prevents a scenario where
the mission critical system in your organization is 15 years old, runs on a
legacy Novell server through IPX/SPX with a lone wolf system administrator who
sits in the basement and is the only one who knows how it works. Here are a few
observations on vendor selection.
Often, after all requirements have been
gathered, documented and validated (a process that can take anywhere from a few
weeks to months), the first stages of system design start to take shape. It’s a
beautiful experience. All the engineering powerhouse brains start brainstorming
and some vague representations of what it may look like in the end start
appearing on airport bar napkins.
Regardless of the industry, the requirements
are somehow communicated to third parties and something is expected in return,
regarding how the requirements will be met and how much it will approximately
cost. If a requirements matrix is sent out, it is a safe bet that any vagueness
in requirement interpretation will allow each vendor to decisively declare that
they meet that requirement and put a check mark next to it.
Since we are still in very early stages of
solution design, a vendor bake off or a proof of concept may not be practical
or may not fully validate how the requirements are met. As such, I have found
it necessary to grill vendors extensively on how the product works, in order to
find any deficiencies. Sometimes, I wish I had a lie detector that I could hook
sales people up to, but since I don’t, I have to rely on my technical prowess.
Almost every software package has certain
core competencies. That is, what the product does very well. These core competencies are usually the main
focus of the company when it is first started, and are what the product is used
for most of the time. As a product matures and existing clients make software
change requests, the vendor tacks on additional
functionality to meet those specific requirements. Most of the time, the
added functionality is put in place with little afterthought to how it will be
implemented. In addition, due to the competitive nature of business, vendors may
tack on yet another layer of capability so that they can add check marks next
to items of requirements matrixes. This is called sales functionality and is generally not suitable or flexible
enough for most implementations. In a
nutshell, a product usually does about half of the advertised functionality
well.
Usually, the adequate and sales claims
functionality is actually present. However, the specific way in which the
functionality is implemented may make it impractical for use, or may not scale
very well to an enterprise-level system.
A practical scenario is a project where my
team had to implement both a case management and business process management
solution. One of the requirements was that cases and documents had to be routed
via business logic to a user for approval. Naturally, most of the product
suites we evaluated had this functionality. However, the way that some vendors
implemented the routing decision was poor and did not allow for dynamic token
selection. As such, their products would have required large data sets of If… Then… Else statements to decide
which person the case had to go to. This was impractical for a system with
thousands of users where dynamic routing decisions where necessary. Also, dynamic
routing decision requirement could have been interpreted in so many ways that
even If… Then… Else statements would
have met the criteria on a requirements matrix.
Make sure that high priority requirements are
in the core competency of the product.
No comments:
Post a Comment