supporting platform independence. In our situation,
this was a feature not in the requirement and would
never be utilized because we require our users to use
IE 6.0 or later. Clearly, this decision was heavily
influenced by the PM's “enterprise level software”
mentality without closely examining the real needs.
3.3 Lesson 3: Development Tools
Matter
We believe that the selection of Java increased the
duration of our development cycle in several ways.
First, none of the business logic related code from
the previous version, which was in C#, could be
reused without converting into a different
programming language; doing so required a much
deeper understanding for the algorithms and resulted
in expanses on a large number of avoidable tests.
Second, many of the component that came with
Visual Studio .NET 2.0, such as the data grid, had to
be re-implemented using Java. Third, all the above
not only extended the development time, but also
increased the time necessary for testing and
debugging. The decision of not using component
based software development approach future
contributed to the project's cost (Microsoft, 2002).
Heard our questioning about the PM and
architecture team, our clients questioned IT's
decisions about using Java and complex backend
infrastructure. Interestingly, the end users were told
to let the IT team to make IT related decisions. It
seems to us that only internal IT team would use this
line of reasoning. Let's say we were building a
house, would the decision on what grade of lumbers
to use be a decision solely made by the builder?
We are not here to promote one stack over
another. We have participated successful projects
where Java were used. What we want to emphasize
is that programming language selection can affect
the backend infrastructure and programming tools.
As a result, this decision will affect the final project
cost and is not as simple as just a "preference issue."
3.4 Cheaper Rate ≠ Lower Overall
Cost
The backend infrastructure decisions were made
without considering existing engineers' skill set. The
next logic solution was to outsource. The company
procurement division forwarded two software
companies: Company X, a CMMI level three
certified, and Company Y that was not certified and
was now to us. Our PM selected the Company Y
because its initial quote was much lower than
Company X. Most importantly, Company Y
accepted most of our conditions. One of them stated
that we would contract a third company to perform
quality control at all levels, including conducting
some unit tests. The interesting observations were
(1) if we did not trust Company Y to generate solid
code, hence the necessity of third party quality
control, why would we hire it, and (2) if we were to
outsource our development, why not select a
programming language already proven to be suitable
by the previous version of the system?
3.4.1 Quality Control Should be Part of
Software Development
It is clear now that this approach of separating
software development with quality control did not
work well, especially in terms of costs. The reasons
are simple. First, high quality software hardly ever
results from testing.
Second, the QA company and the software
vendor have very different agendas. The QA
company wants to conduct more tests, finding more
defects (not necessary significant), and has an
overall goal of spending more time testing the
software so it could realize more revenue. On the
other hand, the software vendor was constantly
bombarded with defects not necessarily significant.
So, the two companies spent a lot of time in
meetings discussing and reclassifying defects. At the
same time, our client is paying parties on their hours.
Third, the QA company engineers, as superior as
they were, did not have a good understand regarding
the end users’ needs and preference, nor did they
understand the code provided by the software
engineers. So, they cannot create elegant test cases.
As a result, they can only come up with some simple
tests and did not have the ability to interpret the
testing results without the help of end users or
software engineers. This hindered the effectiveness
of their tests and generated a great deal of extra
work to both end users and software engineers
resulting in increased costs in several areas.
At the end, the cost for QA costs counted for
about one-third of the total procurement expenses,
partially because the QA company is located in
North America and commanded a higher rate. Did
the QA company positively contribute to the quality
of the final system? I believe it did. However, we
recommend project managers search for alternatives
before commit to this approach, especially when the
system specifications are not detailed enough.
The bottom line is that if you outsource, then
select a company you can trust that will do a good
job, even it may cost you more hourly.
TO CONTAIN COST, LET'S NOT OVER BUILD OUR SOFTWARE SOLUTIONS
271