<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Rays Development Blog - Requirements</title>
    <link>http://www.enterprocity.com/blogs/</link>
    <description>A look into the mind of a VB Developer</description>
    <language>en-us</language>
    <copyright>Raymond Cassick</copyright>
    <lastBuildDate>Fri, 05 Nov 2010 16:48:11 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.1.8102.813</generator>
    <managingEditor>rcassick@enterprocity.com</managingEditor>
    <webMaster>rcassick@enterprocity.com</webMaster>
    <item>
      <trackback:ping>http://www.enterprocity.com/blogs/Trackback.aspx?guid=21d038a2-5c6a-4f71-9915-d692d501522a</trackback:ping>
      <pingback:server>http://www.enterprocity.com/blogs/pingback.aspx</pingback:server>
      <pingback:target>http://www.enterprocity.com/blogs/PermaLink,guid,21d038a2-5c6a-4f71-9915-d692d501522a.aspx</pingback:target>
      <dc:creator>Ray Cassick</dc:creator>
      <wfw:comment>http://www.enterprocity.com/blogs/CommentView,guid,21d038a2-5c6a-4f71-9915-d692d501522a.aspx</wfw:comment>
      <wfw:commentRss>http://www.enterprocity.com/blogs/SyndicationService.asmx/GetEntryCommentsRss?guid=21d038a2-5c6a-4f71-9915-d692d501522a</wfw:commentRss>
      <title>Judge, Jury and Executioner - The life of a QA analyst</title>
      <guid isPermaLink="false">http://www.enterprocity.com/blogs/PermaLink,guid,21d038a2-5c6a-4f71-9915-d692d501522a.aspx</guid>
      <link>http://www.enterprocity.com/blogs/2010/11/05/JudgeJuryAndExecutionerTheLifeOfAQAAnalyst.aspx</link>
      <pubDate>Fri, 05 Nov 2010 16:48:11 GMT</pubDate>
      <description>&lt;p style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;
&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face=Calibri&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;So,
I have experienced what I feel is a failure of a project that I was recently a part
of in my personal life and have been thinking about it a lot lately. Partly because
as an systems architect it is my job to always be trying to understand where I can
improve myself and ensure that I do not repeat mistakes, but also just because, well
darn it, I hate failing.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;
&lt;o:p&gt;
&lt;font color=#000000 size=3 face=Calibri&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;
&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face=Calibri&gt;Who the heck doesn’t hate failing?&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;
&lt;o:p&gt;
&lt;font color=#000000 size=3 face=Calibri&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;
&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face=Calibri&gt;Really, I am not counting this
as a ‘failure’ per-se because I did bring it up as an issue at the onset of the project
and even noted my personal objections to it in the review notes that were taken in
the meetings I had. I am noting it as a time of shame in that I allowed my PERSONAL
level of professional conduct to be driven by an outside group instead of recusing
myself and just walking away. In short, I let go of my principals and am now paying
for it.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;
&lt;o:p&gt;
&lt;font color=#000000 size=3 face=Calibri&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;
&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face=Calibri&gt;Not a mistake I will be making
again.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;
&lt;o:p&gt;
&lt;font color=#000000 size=3 face=Calibri&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;
&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face=Calibri&gt;How did I come up with the title
of this entry? What does a QA analyst have to do with the legal system? Just so you
know I am a huge fan of the TV series Law an Order. Not so much the recent off shoots,
but the old shows with Jerry Orbach (Lennie Briscoe), Sam Waterston (Jack McCoy),
and one of my personal favorites, Chris Noth (Mike Logan), but I digress…&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;
&lt;o:p&gt;
&lt;font color=#000000 size=3 face=Calibri&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;
&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face=Calibri&gt;I have always been fascinated
by the law. I almost decided to become a layer ate one point but decided that I was
not hard enough (or perhaps too hard) to take the role. I looked at it for a while
and decided that there were potentially too many gray areas to have to deal with ethically,
so I took the IT route instead. Hehehehehe, yeah, who knew?&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;
&lt;o:p&gt;
&lt;font color=#000000 size=3 face=Calibri&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;
&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face=Calibri&gt;So, the relation here is this.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;
&lt;o:p&gt;
&lt;font color=#000000 size=3 face=Calibri&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;
&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face=Calibri&gt;In the &lt;b style="mso-bidi-font-weight: normal"&gt;legal
system&lt;/b&gt; you have several areas of a legal issue, each on represented by a specific
area of expertise looking at the case in a different way. The accused is, by matter
of the same legal system that is currently citing them as a ‘bad guy’ provided a way
to prove their innocence before a panel of impartial people, and is offered representation
to help them. There are people on both sides that defend their position, present their
case and in the end the judge and jury make a decision based upon a preponderance
of the evidence if the accused is guilty or innocent, and what the method/mode of
punishment should be. Remember, the legal system is represented by the scales held
by lady justice’s left hand with a sword in her right, and her eyes covered with a
blind fold giving the indication that she is unable to be influenced by any outside
party, and are driven only by the written matter of law currently established.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;
&lt;o:p&gt;
&lt;font color=#000000 size=3 face=Calibri&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;
&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face=Calibri&gt;In the &lt;b style="mso-bidi-font-weight: normal"&gt;project
system&lt;/b&gt; you have several areas of a project issue, each on represented by a specific
area of expertise looking at the problem in a different way. The project is what it
is, being defined by the specifications that were approved by all the parties involved
upon its initiation. There are people on both sides that defend their position, present
their case, and in the end someone makes a decision if the delivered system met the
requirements or not, and how to correct what needs to be corrected moving forward.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;
&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face=Calibri&gt;In a business environment, the
business owner comes to IT with a need. They understand (probably very well) what
needs to be accomplished and can usually state those goals very well in what are referred
to as High Level Requirements. These requirements are used to establish a baseline
timeframe and budget that is then referenced by the business plan to check validity
to the established mission and cash flow for the year to determine if it can be(or
even should be) &lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;perused. Once they get
the green light it moves on.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;
&lt;o:p&gt;
&lt;font color=#000000 size=3 face=Calibri&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;
&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face=Calibri&gt;In the IT environment an architect
is assigned the project, provided the business requirements, a basic timeline and
a budget framework and told to go off and design, then come back with more specifics
to move forward. Once they do the design and pass it back to the company for final
approval (timeline and budget) the project then gets assigned to developers to complete
according to the specification.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;
&lt;o:p&gt;
&lt;font color=#000000 size=3 face=Calibri&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;
&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face=Calibri&gt;The developers do the work based
upon the design of the architect; perform some base level tests to make sure that
what they release meets the stated objectives, and then release a build for testing.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;
&lt;o:p&gt;
&lt;font color=#000000 size=3 face=Calibri&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;
&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face=Calibri&gt;Here is where the problem ALWAYS
happens.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;
&lt;o:p&gt;
&lt;font color=#000000 size=3 face=Calibri&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;
&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face=Calibri&gt;The business will sometimes NOT
want to include a QA test resource.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;
&lt;o:p&gt;
&lt;font color=#000000 size=3 face=Calibri&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;
&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face=Calibri&gt;WHY? I am not sure. Usually the
business says that they are too busy to be bothered with anything. They are, after
all, the ones making the money for the company, why should they want to do anything
else? But I have heard more than a few times that THEY want to be the test people
on the project because THEY know the DATA better than ANYONE and can be the best judge
of the system processing quality than a QA persona can ever be.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;
&lt;o:p&gt;
&lt;font color=#000000 size=3 face=Calibri&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;
&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face=Calibri&gt;It was HERE where I was bitten.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;
&lt;o:p&gt;
&lt;font color=#000000 size=3 face=Calibri&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;
&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face=Calibri&gt;I fought hard and lost my battle.
I was made to allow this abomination into my project. I was provided with the business
requirements, I created the low level design, handed that off to developers that created
their individual designs and had them reviewed by other developers, then implemented
them long with a series of basic test cases that they deemed were required, and then
handed the ‘completed’ project over to the business for THEM to test. The business
ran their TESTS (I have yet to see an established – IE: written – test plan or results
document) and signed off on the completed work. The total time for QA testing ended
up being about 4-6 hours.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;
&lt;o:p&gt;
&lt;font color=#000000 size=3 face=Calibri&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;
&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face=Calibri&gt;My right eyebrow rose a bit but
it was apparently not for me to say anything and the project went into production
where it was run for the first time and the resulting data set was sent off to the
next step of the process (not something that I have any control over at all there),
and within hours THEY saw issues in the data that they were presented with as a result
of this projects processing and kicked it back to us. The business took a look at
the data (that they already saw by the way, remember, they ‘QA Tested’ this system
just hours before and had ‘signed off’ –approval via email- on its viability and correctness). 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;
&lt;o:p&gt;
&lt;font color=#000000 size=3 face=Calibri&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;
&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face=Calibri&gt;The reaction was shocking to say
the least. The business came back and questioned the systems correctness. I was shocked,
but not at all that surprised, but still a bit ticked off. I am not a person that
enjoys assigning blame, but when I am asked to explicitly locate a problem, that job
gets done for me. I find the error and the fault is assigned by the simple act of
doing that. Who did that work gets the ‘blame’. &lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;In
my opinion though the blame should be shared by the developer and the person that
did the review of the code, and ALSO the QA Analyst that either missed a test case
or did not execute one correctly. In this case we had NO QA Analyst, or in reality,
I was getting asked BY THE QA Analyst (the business unit in this case) what the problem
was. Again, I was a little miffed, but took it. The problem ended up being something
that I knew was going to be a potential issue, and that we had even discussed in meetings
as part of the implementation and design. A direction was decided upon between me
and the PM that the business (err… QA) would manually process through this data list
and perform some further cleanup that would take a significant effort in dollars,
time and specialized software to accomplish in an automated manner, and that we would
look at other more automated solutions in the next round prior to this process needing
to be used again next year. Being the diligent architect that I am kept this all documented
in the projects documentation, partially because I am just a thorough person, but
also as a way to provide some CYA to both myself and the next unlucky architect that
got any revisions the next time this project needed to have changes made to it.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;
&lt;o:p&gt;
&lt;font color=#000000 size=3 face=Calibri&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;
&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face=Calibri&gt;The manual processing was done,
requiring the business to manually look through every record and try to remediate
possible duplicates. I figured this would FORCE them to look at each and every record
and if there were any OTHER errors they would see them. They were after all ‘the best
people to judge the correctness of the data’ hence the reason that they mandated themselves
as the QA team in the first place. I again, shook my head, scratched a bit, and let
it go. They completed their manual processing, removed about 1000 or so records that
they felt were dupes and handed the file back to me to get converted over and sent
back to the vendor for processing. That being done, the project was run, my involvement
was closed out, and I was assigned on to other work.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;
&lt;o:p&gt;
&lt;font color=#000000 size=3 face=Calibri&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;
&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face=Calibri&gt;Ding dong, the alarm bell rings
again as a new problem is found, and then another.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;
&lt;o:p&gt;
&lt;font color=#000000 size=3 face=Calibri&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;
&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face=Calibri&gt;Once again I am asked to look
at the data. Amazingly enough, I am asked by the same team that certified this exact
same data, and even had to read through it all manually record by record in their
last cleanup effort, to find the ‘problem’. I found the problem, a common mistake
in this type of processing (the order that records are placed in when a lookup is
performed) that was not caught by the developer, the reviewer of their code, nor the
QA team that certified the data TWICE now before it was allowed out the door.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;
&lt;o:p&gt;
&lt;font color=#000000 size=3 face=Calibri&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;
&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face=Calibri&gt;So, what’s the result here? I
am going to spend my weekend looking over the data between what we HAD then and what
we HAVE now as the result of a change made to address the issue and try to determine
what to do next.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;
&lt;o:p&gt;
&lt;font color=#000000 size=3 face=Calibri&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;
&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face=Calibri&gt;Being a process oriented guy and
always one to try to learn from my mistakes I have taken a hard look at this and made
a determination that I was right at the start and I am not going to ever accept a
project that does not have QA resources assigned. Could I be potentially signing my
own walking papers? Perhaps, but at this point it is a case based upon principles
and not just me being a whiney architect not willing to take blame. In fact all I
have been asking all along is that someone who is impartial to the business process,
design of the solution, and the development of the solution look at the data going
in, the processing, and the data coming out, and TELL ME if there are problems.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;
&lt;o:p&gt;
&lt;font color=#000000 size=3 face=Calibri&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;
&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face=Calibri&gt;I welcome being told there is
a problem so it can be addressed BEFORE we ship. That’s the idea of testing, to catch
problems before they make it to production. I just fail to see how people cannot understand
that. Just as Lady Justice stands outside of every courthouse to ensure fair and impartial
judgment on the application of the rules of law, so should QA be allowed to stand
and judge the usability of a system before it is relied upon to perform its tasks.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;
&lt;o:p&gt;
&lt;font color=#000000 size=3 face=Calibri&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;
&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face=Calibri&gt;Now I ask you, how many people
ASK to be judged like this?&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;
&lt;o:p&gt;
&lt;font color=#000000 size=3 face=Calibri&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;
&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face=Calibri&gt;Am I wrong?&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.enterprocity.com/blogs/aggbug.ashx?id=21d038a2-5c6a-4f71-9915-d692d501522a" /&gt;</description>
      <comments>http://www.enterprocity.com/blogs/CommentView,guid,21d038a2-5c6a-4f71-9915-d692d501522a.aspx</comments>
      <category>Business</category>
      <category>Design</category>
      <category>Expectations</category>
      <category>Planning</category>
      <category>Requirements</category>
      <category>Roles</category>
      <category>Testing</category>
    </item>
    <item>
      <trackback:ping>http://www.enterprocity.com/blogs/Trackback.aspx?guid=74562da3-2eeb-46ff-8652-6b2ace9fbfa0</trackback:ping>
      <pingback:server>http://www.enterprocity.com/blogs/pingback.aspx</pingback:server>
      <pingback:target>http://www.enterprocity.com/blogs/PermaLink,guid,74562da3-2eeb-46ff-8652-6b2ace9fbfa0.aspx</pingback:target>
      <dc:creator>Ray Cassick</dc:creator>
      <wfw:comment>http://www.enterprocity.com/blogs/CommentView,guid,74562da3-2eeb-46ff-8652-6b2ace9fbfa0.aspx</wfw:comment>
      <wfw:commentRss>http://www.enterprocity.com/blogs/SyndicationService.asmx/GetEntryCommentsRss?guid=74562da3-2eeb-46ff-8652-6b2ace9fbfa0</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I just found this so funny I had to share it. Although things like this have happened
to me in code before so I probably should not be casting stones, I do still admit
that I find it funny and point an occasional finger and giggling allows me to vent
sometimes :)
</p>
        <p>
I received an email the other day from a company (nameless - unless you happen
to recognise the email :) )that provides a daily supply of white-papers and other
technically oriented and marketing type documents for us geeky folk to read in our
volumes of spare time.
</p>
        <p>
I just found it sooo funny when I got to the bottom of the page and read the last
item on the list...
</p>
        <p>
          <font color="#a9a9a9">(website link and company name clipped to protect the <strike>innocent</strike>goofy)</font>
        </p>
        <p>
          <img border="0" src="http://www.enterprocity.com/blogs/content/binary/irony.jpg" width="590" height="345" />
        </p>
        <p>
I'm really sorry, but I have to admit that I spent a good 10 minutes laughing at this
and finding great joy for some reason.
</p>
        <p>
So, let this be a lesson to everyone out there, and me too. People WILL laugh at you
for making a goofy mistake. How do you want your marketing efforts to be remembered?
</p>
        <p>
Hmmmm...
</p>
        <p>
Maybe they did this on purpose?
</p>
        <p>
Nah... I doubt it...
</p>
        <p>
Note: Yes, the actual link to the document DID work, and it was actually pretty good.
</p>
        <img width="0" height="0" src="http://www.enterprocity.com/blogs/aggbug.ashx?id=74562da3-2eeb-46ff-8652-6b2ace9fbfa0" />
      </body>
      <title>Irony!</title>
      <guid isPermaLink="false">http://www.enterprocity.com/blogs/PermaLink,guid,74562da3-2eeb-46ff-8652-6b2ace9fbfa0.aspx</guid>
      <link>http://www.enterprocity.com/blogs/2010/10/15/Irony.aspx</link>
      <pubDate>Fri, 15 Oct 2010 02:07:56 GMT</pubDate>
      <description>&lt;p&gt;
I just found this so funny I had to share it. Although things like this have happened
to me in code before so I probably should not be casting stones,&amp;nbsp;I do still admit
that I find it funny and point an occasional finger and giggling allows me to vent
sometimes :)
&lt;/p&gt;
&lt;p&gt;
I received an email the other day from a company (nameless -&amp;nbsp;unless you happen
to recognise the email :) )that provides a daily supply of white-papers and other
technically oriented and marketing type documents for us geeky folk to read in our
volumes of spare time.
&lt;/p&gt;
&lt;p&gt;
I just found it sooo funny when I got to the bottom of the page and read the last
item on the list...
&lt;/p&gt;
&lt;p&gt;
&lt;font color=#a9a9a9&gt;(website link and company name clipped to protect the &lt;strike&gt;innocent&lt;/strike&gt;goofy)&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img border=0 src="http://www.enterprocity.com/blogs/content/binary/irony.jpg" width=590 height=345&gt;
&lt;/p&gt;
&lt;p&gt;
I'm really sorry, but I have to admit that I spent a good 10 minutes laughing at this
and finding great joy for some reason.
&lt;/p&gt;
&lt;p&gt;
So, let this be a lesson to everyone out there, and me too. People WILL laugh at you
for making a goofy mistake. How do you want your marketing efforts to be remembered?
&lt;/p&gt;
&lt;p&gt;
Hmmmm...
&lt;/p&gt;
&lt;p&gt;
Maybe they did this on purpose?
&lt;/p&gt;
&lt;p&gt;
Nah... I doubt it...
&lt;/p&gt;
&lt;p&gt;
Note: Yes, the actual link to the document DID work, and it was actually pretty good.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.enterprocity.com/blogs/aggbug.ashx?id=74562da3-2eeb-46ff-8652-6b2ace9fbfa0" /&gt;</description>
      <comments>http://www.enterprocity.com/blogs/CommentView,guid,74562da3-2eeb-46ff-8652-6b2ace9fbfa0.aspx</comments>
      <category>Customer Interaction</category>
      <category>Error Handling</category>
      <category>Expectations</category>
      <category>Requirements</category>
      <category>Testing</category>
    </item>
    <item>
      <trackback:ping>http://www.enterprocity.com/blogs/Trackback.aspx?guid=14d4d568-297e-4937-8755-d3cc5f8c79e1</trackback:ping>
      <pingback:server>http://www.enterprocity.com/blogs/pingback.aspx</pingback:server>
      <pingback:target>http://www.enterprocity.com/blogs/PermaLink,guid,14d4d568-297e-4937-8755-d3cc5f8c79e1.aspx</pingback:target>
      <dc:creator>Ray Cassick</dc:creator>
      <wfw:comment>http://www.enterprocity.com/blogs/CommentView,guid,14d4d568-297e-4937-8755-d3cc5f8c79e1.aspx</wfw:comment>
      <wfw:commentRss>http://www.enterprocity.com/blogs/SyndicationService.asmx/GetEntryCommentsRss?guid=14d4d568-297e-4937-8755-d3cc5f8c79e1</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Oddly enough I just noticed today how annoying this IE dialog box is:
</p>
        <p>
          <img border="0" src="http://www.enterprocity.com/blogs/content/binary/window_current.jpg" />
          <br />
        </p>
        <p>
The example above shows an attempt made by a web page that I visited to reach out
on my behalf and open a web page that I happen to have on my ‘Trusted site’ list within
IE8. Yeah, I put FaceBook on my trusted sites list because I got tired of having to
allow certain things every time I went there and I do trust it enough, because I regulate
very closely what features I have enabled and what I use FB for, on my own.
</p>
        <p>
I imagine more and more of us are seeing this nowadays as we are becoming entrenched
in the draw of sites like FaceBook and other socially oriented sites and that other
web sites are leveraging them as ways to get their sites noticed and voted for, etc…
I imagine that it is going to be happening more and more as the line between sites
with links such as these gets blurred more and more. Rank this, rate that, yadda,
yadda, yadda…
</p>
        <p>
To be honest, I am not 100% clear on the VALUE of this type of cross linking yet,
or if it is really more of a passing fad that will soon fizzle out in favor of the
next cool ‘thing’ that comes along. But I digress.
</p>
        <p>
The point I want to make is for all those UI centered development folks out there
(myself included I am afraid) that often times maintain a somewhat shortsighted focus
on the task at hand and perhaps don’t look forward a little bit further and ask the
next question:
</p>
        <p>
“What else would make sense to include here as part of the design?”
</p>
        <p>
So, I ask you, what else do YOU think would make sense here as part of this design?
</p>
        <p>
          <em>
            <font color="#a9a9a9">Theme to Jeopardy playing quietly in the background…</font>
          </em>
        </p>
        <p>
BUZZ!
</p>
        <p>
How about this as a suggestion?
</p>
        <p>
How about offering the user (me) the ability to ADD the currently ‘Un-trusted site’ to
the ‘Trusted sites’ list from here?
</p>
        <p>
To me, this is a HUGE miss in this design. Why? Because had the simple question been
asked there are so many easy ‘quick hitter’ options that could have been done to enhance
the user experience here with very little effort.
</p>
        <p>
          <strong>The current state</strong>
        </p>
        <p>
As it sits right now, the user has the ability to click the ‘Yes’ button and tell
IE to trust this link request. The problem is that if there are multiple areas of
the currently un-trusted linking to trusted sites you have on your list, even if the
URL is the same, you get asked each and every time if you want to allow it. 
</p>
        <p>
This can cause two problems.
</p>
        <p>
          <strong>First</strong> - if the site address does not change the user can either think
that they didn’t click properly, or maybe they moved the mouse as they clicked, something
that people with physical issues often have problems with, and the click didn’t register
so they get frustrated at themselves and the user experience as a whole.
</p>
        <p>
          <strong>Second</strong> - they get stuck in a cycle of having to click on so
many boxes that they accidentally allow a site that perhaps they really didn’t want
to.
</p>
        <p>
In addition to this really poor user experience it is frustrating to think that the
only way to avoid having to do this <strong>again</strong> is to write down or remember
the address of each of the sites that popup (probably write them down manually?) and
then add them to my trusted sites list latter as a manual effort.
</p>
        <p>
NOT a great UX to say the least.
</p>
        <p>
          <strong>What could we do here?</strong>
        </p>
        <p>
So, being the proper engineer here I always have in mind the idea that before I go
to someone and say ‘you did this wrong’ I should take the responsibility to bring
along my ideas on methods on how to make it right. After all, it is easy to point
a finger and laugh, it is harder to think about possible ways to suggest how that
problem be solved. Pointing and giggling just makes you an annoyance, offering viable
solutions makes you part of the process of solving the problem.
</p>
        <p>
          <u>UI Option #1</u>
        </p>
        <p>
Provide the user with a button in this window to allow them to just jump right over
to the ‘Internet Options’ and then the ‘Trusted sites’ dialog box with the URL filled
in and just offer the user the chance to add the site to their list if they want to.
</p>
        <p>
          <img border="0" src="http://www.enterprocity.com/blogs/content/binary/window_enhance_1.jpg" />
        </p>
        <p>
          <img border="0" src="http://www.enterprocity.com/blogs/content/binary/window_enhance_1a.jpg" />
        </p>
        <p>
          <br />
          <u>UI Option #2</u>
        </p>
        <p>
The second option is very simple. Just provide the user with the ability to add the
site to the ‘Trusted sites’ list using a simple check box on this dialog box as I
have shown here:
</p>
        <p>
          <img border="0" src="http://www.enterprocity.com/blogs/content/binary/window_enhance_2.jpg" />
        </p>
        <p>
          <br />
I am sure given a bit more time we could come up with a few more ways to make this
work, but the point is that it appears as if the effort was not made at all, and even
a small step would have provided some fantastic user level value with a minimal amount
of design, code and testing efforts.
</p>
        <p>
You could even go one step further and have the OS keep track of how many times you
have allowed a specific URL access and provide the user with a pop-up dialog box in
the system tray area maybe once a week or so and let them know that hey, they trusted
this site x number of times over the last weeks or months, maybe they want to consider
adding it as trusted.
</p>
        <p>
There are so many options that would be simple, add some real value, and enhance the
UX in this case, and through so many releases of the OS and IE I have yet to see this
addressed once.
</p>
        <p>
If there is someone out there from MS reading my blog (yeah, I am sure there are 
- NOT!) then let me know if you think I am saying makes sense. Actually, if there
is ANYONE out there reading my blog (I know there are a FEW – I watch my daily logs)
then reach out and comment here.
</p>
        <p>
Do you agree with me or not? If not, then let me know <strong><font color="#ff0000">why</font></strong>.
</p>
        <p>
I am always open to others opinions in cases like this, and since I do design as well
write code, I ALWAYS welcome user feedback.
</p>
        <p>
Let me KNOW what YOU think would be the best way to address this.<br /></p>
        <p>
 
</p>
        <img width="0" height="0" src="http://www.enterprocity.com/blogs/aggbug.ashx?id=14d4d568-297e-4937-8755-d3cc5f8c79e1" />
      </body>
      <title>Dialogs and Usability</title>
      <guid isPermaLink="false">http://www.enterprocity.com/blogs/PermaLink,guid,14d4d568-297e-4937-8755-d3cc5f8c79e1.aspx</guid>
      <link>http://www.enterprocity.com/blogs/2010/10/02/DialogsAndUsability.aspx</link>
      <pubDate>Sat, 02 Oct 2010 19:52:33 GMT</pubDate>
      <description>&lt;p&gt;
Oddly enough I just noticed today how annoying this IE dialog box is:
&lt;/p&gt;
&lt;p&gt;
&lt;img border=0 src="http://www.enterprocity.com/blogs/content/binary/window_current.jpg"&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
The example above shows an attempt made by a web page that I visited to reach out
on my behalf and open a web page that I happen to have on my ‘Trusted site’ list within
IE8. Yeah, I put FaceBook on my trusted sites list because I got tired of having to
allow certain things every time I went there and I do trust it enough, because I regulate
very closely what features I have enabled and what I use FB for, on my own.
&lt;/p&gt;
&lt;p&gt;
I imagine more and more of us are seeing this nowadays as we are becoming entrenched
in the draw of sites like FaceBook and other socially oriented sites and that other
web sites are leveraging them as ways to get their sites noticed and voted for, etc…
I imagine that it is going to be happening more and more as the line between sites
with links such as these gets blurred more and more. Rank this, rate that, yadda,
yadda, yadda…
&lt;/p&gt;
&lt;p&gt;
To be honest, I am not 100% clear on the VALUE of this type of cross linking yet,
or if it is really more of a passing fad that will soon fizzle out in favor of the
next cool ‘thing’ that comes along. But I digress.
&lt;/p&gt;
&lt;p&gt;
The point I want to make is for all those UI centered development folks out there
(myself included I am afraid) that often times maintain a somewhat shortsighted focus
on the task at hand and perhaps don’t look forward a little bit further and ask the
next question:
&lt;/p&gt;
&lt;p&gt;
“What else would make sense to include here as part of the design?”
&lt;/p&gt;
&lt;p&gt;
So, I ask you, what else do YOU think would make sense here as part of this design?
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;&lt;font color=#a9a9a9&gt;Theme to Jeopardy playing quietly in the background…&lt;/font&gt;&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
BUZZ!
&lt;/p&gt;
&lt;p&gt;
How about this as a suggestion?
&lt;/p&gt;
&lt;p&gt;
How about offering the user (me) the ability to ADD the currently ‘Un-trusted site’&amp;nbsp;to
the ‘Trusted sites’ list from here?
&lt;/p&gt;
&lt;p&gt;
To me, this is a HUGE miss in this design. Why? Because had the simple question been
asked there are so many easy ‘quick hitter’ options that could have been done to enhance
the user experience here with very little effort.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;The current state&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
As it sits right now, the user has the ability to click the ‘Yes’ button and tell
IE to trust this link request. The problem is that if there are multiple areas of
the currently un-trusted linking to trusted sites you have on your list, even if the
URL is the same, you get asked each and every time if you want to allow it. 
&lt;/p&gt;
&lt;p&gt;
This can cause two problems.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;First&lt;/strong&gt; - if the site address does not change the user can either think
that they didn’t click properly, or maybe they moved the mouse as they clicked, something
that people with physical issues often have problems with, and the click didn’t register
so they get frustrated at themselves and the user experience as a whole.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Second&lt;/strong&gt; -&amp;nbsp;they get stuck in a cycle of having to click on so
many boxes that they accidentally allow a site that perhaps they really didn’t want
to.
&lt;/p&gt;
&lt;p&gt;
In addition to this really poor user experience it is frustrating to think that the
only way to avoid having to do this &lt;strong&gt;again&lt;/strong&gt; is to write down or remember
the address of each of the sites that popup (probably write them down manually?) and
then add them to my trusted sites list latter as a manual effort.
&lt;/p&gt;
&lt;p&gt;
NOT a great UX to say the least.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;What could we do here?&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
So, being the proper engineer here I always have in mind the idea that before I go
to someone and say ‘you did this wrong’ I should take the responsibility to bring
along my ideas on methods on how to make it right. After all, it is easy to point
a finger and laugh, it is harder to think about possible ways to suggest how that
problem be solved. Pointing and giggling just makes you an annoyance, offering viable
solutions makes you part of the process of solving the problem.
&lt;/p&gt;
&lt;p&gt;
&lt;u&gt;UI Option #1&lt;/u&gt;
&lt;/p&gt;
&lt;p&gt;
Provide the user with a button in this window to allow them to just jump right over
to the ‘Internet Options’ and then the ‘Trusted sites’ dialog box with the URL filled
in and just offer the user the chance to add the site to their list if they want to.
&lt;/p&gt;
&lt;p&gt;
&lt;img border=0 src="http://www.enterprocity.com/blogs/content/binary/window_enhance_1.jpg"&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img border=0 src="http://www.enterprocity.com/blogs/content/binary/window_enhance_1a.jpg"&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
&lt;u&gt;UI Option #2&lt;/u&gt;
&lt;/p&gt;
&lt;p&gt;
The second option is very simple. Just provide the user with the ability to add the
site to the ‘Trusted sites’ list using a simple check box on this dialog box as I
have shown here:
&lt;/p&gt;
&lt;p&gt;
&lt;img border=0 src="http://www.enterprocity.com/blogs/content/binary/window_enhance_2.jpg"&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
I am sure given a bit more time we could come up with a few more ways to make this
work, but the point is that it appears as if the effort was not made at all, and even
a small step would have provided some fantastic user level value with a minimal amount
of design, code and testing efforts.
&lt;/p&gt;
&lt;p&gt;
You could even go one step further and have the OS keep track of how many times you
have allowed a specific URL access and provide the user with a pop-up dialog box in
the system tray area maybe once a week or so and let them know that hey, they trusted
this site x number of times over the last weeks or months, maybe they want to consider
adding it as trusted.
&lt;/p&gt;
&lt;p&gt;
There are so many options that would be simple, add some real value, and enhance the
UX in this case, and through so many releases of the OS and IE I have yet to see this
addressed once.
&lt;/p&gt;
&lt;p&gt;
If there is someone out there from MS reading my blog (yeah, I am sure there are&amp;nbsp;
- NOT!) then let me know if you think I am saying makes sense. Actually, if there
is ANYONE out there reading my blog (I know there are a FEW – I watch my daily logs)
then reach out and comment here.
&lt;/p&gt;
&lt;p&gt;
Do you agree with me or not? If not, then let me know &lt;strong&gt;&lt;font color=#ff0000&gt;why&lt;/font&gt;&lt;/strong&gt;.
&lt;/p&gt;
&lt;p&gt;
I am always open to others opinions in cases like this, and since I do design as well
write code,&amp;nbsp;I ALWAYS welcome user feedback.
&lt;/p&gt;
&lt;p&gt;
Let me KNOW what YOU think would be the best way to address this.&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.enterprocity.com/blogs/aggbug.ashx?id=14d4d568-297e-4937-8755-d3cc5f8c79e1" /&gt;</description>
      <comments>http://www.enterprocity.com/blogs/CommentView,guid,14d4d568-297e-4937-8755-d3cc5f8c79e1.aspx</comments>
      <category>Design</category>
      <category>Interfaces</category>
      <category>Requirements</category>
    </item>
    <item>
      <trackback:ping>http://www.enterprocity.com/blogs/Trackback.aspx?guid=da09a384-7e37-4738-b7e1-4d9bdfcdac58</trackback:ping>
      <pingback:server>http://www.enterprocity.com/blogs/pingback.aspx</pingback:server>
      <pingback:target>http://www.enterprocity.com/blogs/PermaLink,guid,da09a384-7e37-4738-b7e1-4d9bdfcdac58.aspx</pingback:target>
      <dc:creator>Ray Cassick</dc:creator>
      <wfw:comment>http://www.enterprocity.com/blogs/CommentView,guid,da09a384-7e37-4738-b7e1-4d9bdfcdac58.aspx</wfw:comment>
      <wfw:commentRss>http://www.enterprocity.com/blogs/SyndicationService.asmx/GetEntryCommentsRss?guid=da09a384-7e37-4738-b7e1-4d9bdfcdac58</wfw:commentRss>
      <title>Build Vs. Buy - Innovation or stagnation?</title>
      <guid isPermaLink="false">http://www.enterprocity.com/blogs/PermaLink,guid,da09a384-7e37-4738-b7e1-4d9bdfcdac58.aspx</guid>
      <link>http://www.enterprocity.com/blogs/2009/06/21/BuildVsBuyInnovationOrStagnation.aspx</link>
      <pubDate>Sun, 21 Jun 2009 04:31:35 GMT</pubDate>
      <description>&lt;p style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;
&lt;font color=#000000 size=3 face=Calibri&gt;Let’s be clear, to innovate you need to reach.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;
&lt;font color=#000000 size=3 face=Calibri&gt;There are many companies that I have run into
over the years that have continuous innovation as one of their core values, but have
a buy instead of build mandate. They want to reach for the stars, but they feel they
need to (or even can) do it using existing technology.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;
&lt;font color=#000000 size=3 face=Calibri&gt;Why are people so build averse?&lt;/font&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;
&lt;font color=#000000 size=3 face=Calibri&gt;One thing that I have noticed is that even
when you are in a ‘buy’ environment you end up building, the building is simply different.
Instead of building UI, databases or business rules you end up building glue. Glue
code that connects disparate systems. Glue code that moves data between stores. Glue
code that provides services to secondary consumers. Glue code to allow enterprise
level reporting where reporting was not available in the purchased system.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;
&lt;font color=#000000 size=3 face=Calibri&gt;So explain to me again why people are so build
averse?&lt;/font&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;
&lt;font color=#000000 size=3 face=Calibri&gt;Innovation starts with the ability to take
a risk and move in a different direction. &lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;It
is difficult to consider moving an industry in an entirely different direction when
you are building on top of existing applications that fit into a different paradigm. &lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;After
all, are you not looking to do something different? Are you not looking to accomplish
something that the industry is not yet fully ready for in order to get a jump on the
competition? &lt;/font&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;
&lt;font color=#000000 size=3 face=Calibri&gt;If you answer to these questions is yes then
how do you expect to be efficiently innovative using what already exists to move forward
in a different direction?&lt;/font&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;
&lt;font color=#000000 size=3 face=Calibri&gt;I know that it is simpler to buy something
off the shelf and place the responsibility to make it work on the shoulders of a vendor.
I also know that it may seem to be cheaper to buy a bunch of cots products and spend
time to data integrate them using tools like Informatica, and other data integration
methodologies. But once you stray from being able to open a shrink wrapped box and
being able to simply install and use you have strayed into a build situation, like
it or not. It is similar to putting a ton of effort into deciding what car you want
to buy then once you take ownership you drive it right over to the custom shop and
have the engine replaced with one that has more power, the interior redone to what
you really wanted, and the exterior modified. If the car you bought was under powered
and the interior was not what you wanted and the exterior was also not to your liking
then why did you buy it?&lt;/font&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;
&lt;font color=#000000 size=3 face=Calibri&gt;Consider also what gets induced when you spend
your money to glue stuff together and the industry changes. It sounds like you are
insulated in cases like this because you feel that the vendor is responsible for bringing
the application you purchased into regulatory compliance, and they are, but what about
all that glue that you built? The vendors responsibility ends at their borders and
whatever you have done to augment your systems over the years is not their responsibility.
When push comes to shove they are not responsible for how you use the system and are
only bound to deliver to you a system that fulfils the legal and regulatory requirements
of the line of business as well as the stated requirements and features of what you
purchased. They can’t be held responsible for what you glued onto their product, and
nor should they be.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;
&lt;font color=#000000 size=3 face=Calibri&gt;Additionally you cannot predict how they are
going to make changes as time progresses so you are stuck working your changes to
their time-lines and schedules. You will find yourself having to wait for their release
cycles and then your install, evaluate and test cycles to complete before you can
even start any decent planning to make changes to your internal systems of glue code
before you move a new version into production. If your processes are not fast enough,
or your vendors release schedule very aggressive, you can find yourself stuck in an
endless cycle of install, test, modify, and move to production, a process that can
place some very high stress on both people resources as well as hardware and software
costs, not to mention the potential for harm to your business if things do not go
right.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;
&lt;font color=#000000 size=3 face=Calibri&gt;I am not saying that it always makes sense
to build. No one can say that. Buy Microsoft Office and be happy that you did. Buy
an accounting package and be happy that you did. But if your business is unique, or
you need to make it unique as a differentiator, then consider the build task, even
if you need to live with a coddled together bought system in parallel as you do it.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;
&lt;o:p&gt;
&lt;font color=#000000 size=3 face=Calibri&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.enterprocity.com/blogs/aggbug.ashx?id=da09a384-7e37-4738-b7e1-4d9bdfcdac58" /&gt;</description>
      <comments>http://www.enterprocity.com/blogs/CommentView,guid,da09a384-7e37-4738-b7e1-4d9bdfcdac58.aspx</comments>
      <category>Design</category>
      <category>Requirements</category>
    </item>
    <item>
      <trackback:ping>http://www.enterprocity.com/blogs/Trackback.aspx?guid=e7f326d0-57a7-454e-a566-cc8864364dd7</trackback:ping>
      <pingback:server>http://www.enterprocity.com/blogs/pingback.aspx</pingback:server>
      <pingback:target>http://www.enterprocity.com/blogs/PermaLink,guid,e7f326d0-57a7-454e-a566-cc8864364dd7.aspx</pingback:target>
      <dc:creator>Ray Cassick</dc:creator>
      <wfw:comment>http://www.enterprocity.com/blogs/CommentView,guid,e7f326d0-57a7-454e-a566-cc8864364dd7.aspx</wfw:comment>
      <wfw:commentRss>http://www.enterprocity.com/blogs/SyndicationService.asmx/GetEntryCommentsRss?guid=e7f326d0-57a7-454e-a566-cc8864364dd7</wfw:commentRss>
      <title>Requirements Traceability</title>
      <guid isPermaLink="false">http://www.enterprocity.com/blogs/PermaLink,guid,e7f326d0-57a7-454e-a566-cc8864364dd7.aspx</guid>
      <link>http://www.enterprocity.com/blogs/2008/10/30/RequirementsTraceability.aspx</link>
      <pubDate>Thu, 30 Oct 2008 23:13:03 GMT</pubDate>
      <description>&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;font color=#000000&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;Been
doing a lot of thinking recently about tractability and how far it should really be
taken. I have talked to a wide range of people over the years, ranging from project
managers, development managers, team leaders and guy-at-the-desk implementers and
am getting a wide range of answers.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;font color=#000000&gt;Typically
requirements traceability is critical to the success of a software project simply
because it helps you ensure that you are doing what’s needed to satisfy the customers
need and no more. But, as with may ‘processes’ in the SW realm, I think it can be
taken a bit farther than it should be. I have been told by some project and development
managers that having a concrete way to trace requirements all the way down to the
code that implements them is critical. The ability to look at the code and know exactly
why something was put into the system, and more importantly what will be impacted
by making a code change, is a ‘must have’ in any good development system. In a traceability
graph this usually ends up looking like this:&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://www.enterprocity.com/blogs/content/binary/trace1.png" border=0&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;font color=#000000&gt;While
I can start to see the benefit of that I also start to see where it breaks down a
bit.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; tab-stops: list .5in; mso-list: l0 level1 lfo1"&gt;
&lt;font color=#000000&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: Arial"&gt;&lt;span style="mso-list: Ignore"&gt;1)&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;Code
is often used massively between functional areas so it leads to a very large traceability
tree. In my opinion once you get past a certain number of branches (a number I have
not really quantified yet but I will know it when I see it) the code simply gets qualified
as ‘important’ and traceability at that point really looses some value.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; tab-stops: list .5in; mso-list: l0 level1 lfo1"&gt;
&lt;font color=#000000&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: Arial"&gt;&lt;span style="mso-list: Ignore"&gt;2)&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;The
current state of tools at this point really offers no way to store this metadata in
the source in a simple, and automated, manner. This leaves it up to the developer
to perform this task (usually in the comments) and that means that the developer gets
more work to do. As we all know, the more time something takes that does not give
the person doing it much (if any) direct value, the more likely it is that the task
does not get done. This means that the traceability data can immediately become suspect
causing no one to believe it and thus again it looses its value.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; tab-stops: list .5in; mso-list: l0 level1 lfo1"&gt;
&lt;font color=#000000&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: Arial"&gt;&lt;span style="mso-list: Ignore"&gt;3)&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;Why
do we really care that &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;FunctionX&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt; was
written to explicitly fulfill functional requirement F-101 and thus Business requirement
B-203?&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;font color=#000000&gt;I
personally think that this deep traceability is only there to fulfill management needs
to see neat charts (ok, maybe I could have worked on the color scheme a bit) and graphs.
I also think that this is a way for managers to feel that they are ensuring value
from their developers by making sure that the developers are only writing what is
needed to satisfy the requirements and not a line of code more. In fact many developers
seem to be from my side of the camp, but some of them take it way to far in the other
direction. Their opinions are that unless the system can be ensured as ‘good’ why
track any of it at all? They know what the requirements are, they should be left on
their own to implement the code in a way that satisfies the requirements and that’s
it. Why do they need to justify their work at all as long as the end product works
well and satisfies the stated requirements?&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;font color=#000000&gt;What
you end up with here is this:&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://www.enterprocity.com/blogs/content/binary/conflict1.png" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;font color=#000000&gt;Who
wins form this? No one does. Most of the time when you have an all or nothing strategy
the outcome is completely non-productive. Is it good idea to have requirements traceability?
Sure it is. I think most sensible developers and managers alike will agree that knowing
why you are doing something, what the impact of changes are, and how things get tested
are all good (great) ideas. The frustration comes in trying to come up with a solution
that satisfies both camps. Something that gives both the managers and developers what
they want.&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;font color=#000000&gt;I
think that something is a very tight level of traceability between all levels of requirements,
both up and downwards, but then to augment that into the code by completing the traceability
down to the test cases and stopping there. With this you get something that looks
like this:&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://www.enterprocity.com/blogs/content/binary/trace2.png" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;font color=#000000&gt;Notice
that you now have traceability form business requirements all the way down to the
test cases just like you did before but you have left the code out of it. Some folks
might say that this is missing the need (want) to trace requirements to the code that
implements them but take a closer look and you will see that it really does not. The
code traceability has not been skipped over, it has been preserved due to the physical
connection to the test cases.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;font color=#000000&gt;Consider
this. Every test case should be there to explicitly support a use case, or at least
one part of a use case. This means that every test should be traceable back to some
code that it is testing. This ‘traceability’ can be seen in one of two ways. First,
most test cases that reference no code inside them are easy to spot, since they have
no code inside, and second, you can easily run an automated tool to check the source
code of a test case that fails to reference any code. Clean, simple and it leaves
the developer out of it which is good.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;font color=#000000&gt;Now
consider the other use of full traceability down to the code level. The ability to
potentially spot dead code, or code that does not specially trace back to any requirement.
You have not lost here wither since you can again use an automated tool to run a call
tree backwards from all the test cases and ensure that you have no code written that
is not reachable by a test. Actually this should be part of a normal test regime anyway
and is part of what is called code coverage analysis, making sure that as much of
your code is tested as possible.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;font color=#000000&gt;Have
you lost anything? No. Well maybe some work. In fact if you take a look back to your
test practices you are already probably doing this almost 100% if you are using code
coverage analysis. If you are not doing code coverage, start. Look at what it gives
you. Management gets what they want, development gets what they want and everyone
is happy. This is a classic win-win scenario that I think everyone can live with.&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.enterprocity.com/blogs/aggbug.ashx?id=e7f326d0-57a7-454e-a566-cc8864364dd7" /&gt;</description>
      <comments>http://www.enterprocity.com/blogs/CommentView,guid,e7f326d0-57a7-454e-a566-cc8864364dd7.aspx</comments>
      <category>Design</category>
      <category>Requirements</category>
    </item>
  </channel>
</rss>