Columns
The cost of components
I recently heard about a doctor who was suing
his bank because they kept bouncing his checks. It turns out he was overdrawn
by $50,000. He complained that he went to medical school to become a doctor,
not an accountant. He was upset that he was expected to do more than practice
medicine.
His attitude reminds me of many technical people I know. We work hard
to understand technology and use it well. We rankle at the thought of
dealing with business cases, budgets and schedules. These things are just
not as clean and neat as technology.
Unfortunately, just like the doctor, we find ourselves embroiled in
tasks we would rather avoid. This becomes the case as we roll out component
technology at an enterprise level. In fact, it is unavoidable. As we move
beyond the realm of simple GUI components, we find ourselves in a technological
world that requires ever-increasing levels of infrastructure. These increased
levels of infrastructure bring additional costs to the enterprise. These
costs must be justified based on their impact to the business. Suddenly,
we're not in technology land anymore.
We can't do enterprise-level components without infrastructure. For
example, I've never heard Enterprise JavaBeans mentioned outside the context
of running in an application server. We talk about serving up HTML pages
to end users, but that in turn implies that we have Web servers to deliver
those pages. It doesn't end there. There are also the data transformation
tools of Enterprise Application Integration (EAI), message queuing systems
and transaction servers. All of these pieces of infrastructure have a
place in supporting the n-tiered distributed applications we develop with
components.
While we rightly tout the benefits of components, we also need to
point out the implications of needed infrastructure to the organization.
Infrastructure components can be very costly. There is more than a
single up-front software cost. |
A
good business sense about technology
is key to getting it purchased and adopted.
|
There are ongoing support, training and development tool costs. That
is not to say infrastructure components are not valuable or cannot be
justified. They certainly have a necessary role to play. What it does
mean is that we must spend more time creating the business case for our
technology. Like the doctor, we are pulled into tasks we would rather
avoid.
As developers, we often focus on what a technology can do for the company.
Our business customers are more interested in the bottom line. If we can't
explain how our technology will help the company from a business point
of view, they are unlikely to care about its technical benefits. A good
business sense about technology is key to getting it purchased and adopted.
Our challenge is to make the business case for the things we know make
technical sense.
A key task in developing the business case is to identify, as best we
can, the costs of the infrastructure. Some costs come immediately to mind:
development tools, software server licenses and hardware, for example.
Others are not so obvious. How will you pay for operational support of
the server? What about operational support for the tool itself? You may
also need to pay for development support. The scalability of the infrastructure
and your rollout strategy can also affect costs. Some parts of the IT
organization may view your deployment of new technology as an opportunity
to increase their staff. This is particularly true for support organizations.
Dollars for staff may be the price of their support. This is the corporate
version of pork barrel riders on congressional bills.
Issues
Most infrastructure projects have large up-front costs. The greatest
challenge we often face in deploying these technologies is determining
how they will be funded. Funding for infrastructure usually comes in one
of two ways: it is either centrally funded or it is done on a project
basis. Usually, it is easier to do a cost justification with a centrally
funded infrastructure. This is because you can use the whole enterprise
as the basis for justification. Unfortunately, this isn't always an option.
When funding is done on a project basis, you must find a project large
enough to pay the high initial costs. You can also seek the help of several
projects to provide the initial funding, but this is more of a challenge.
If you've identified an appropriate project, you still need to get buy
in to the technology. The best way to do this is to first involve people
in the tool selection process. This gives them a sense of ownership in
the tool. Next, develop a prototype with the selected tool that is oriented
toward their application. This lets them clearly see and demonstrate the
value the tool brings to their project. You can usually do a 30- to 90-day
prototype for little or no cost in software. What you learn in the prototype
can be used to calculate the benefit of the tool to the project and beyond.
Another issue is the need to ferret out hidden costs. For example, support
costs and types can be difficult to quantify. Companies may divide various
operational and development support roles between different parts of the
IT organization. This usually means that you need to gather the support
of several people to successfully deploy your technology. One key to their
support is clearly showing how their costs are fairly represented in your
analysis.
Have you thought about training costs? It's usually more than the cost
of training one or two developers. If you are creating an enterprise infrastructure,
you need to train the enterprise to use it. This implies training for
an initial development team, training for the support teams, and ongoing
training for the rest of the development organization as they adopt the
technology. Even if you plan to do training in-house, there are costs
incurred when developers aren't spending their time working on applications.
One of your greatest challenges in building the business case is to
make the intangible real. For example, we often believe, deep in our gut,
that a particular tool will benefit the company. If that benefit is savings,
the question then becomes how you capture and demonstrate those savings.
Sometimes organizational accounting practices make it very difficult to
do this. Also, projects may prefer to re-interpret the benefit as cost
avoidance and not savings. Regardless, the point here is to be aware of
what benefits you are trying to show and understand how you will demonstrate
them in a tangible manner.
In dealing with the issue of benefits and savings, we need to be careful
what we promise. Many of the business case presentations I've seen focus
on how time and money will be saved by replacing the old way of doing
things with a new technology. It rarely works out that way. Legacy systems
continue to use old technology. Some development teams never adopt the
new tools. In the end, adopting a new technology simply adds additional
costs, because old costs are never eliminated. If you claim the benefit
of saving time or money, be sure that existing processes and structures
will let you do so. Ask who will step up and let their budget or staff
be cut based on projected savings. This is when people start talking about
cost avoidance, not savings.
Organizational structures can also affect your business case. In most
organizations, each development team owns the skill sets and licenses
to use a tool. With a high-priced infrastructure, it is often more cost
effective to centralize development skills. This lets you reduce the cost
of training and the number of development licenses needed. This implies
that development teams can't own all of the resources for a project. However,
this runs against the grain in many development shops. Most project managers
want to own the resources working on their project. Still, the business
case often shows it is more cost effective to centralize these specialized
skill sets.
Once your tool is deployed, be sure to quickly demonstrate its value.
Focus on getting an initial success. You can then leverage this success
to get opportunities to demonstrate value. This is often the best way
to get development teams to adopt your technology. If one group succeeds
with it, others will want to use it as well. It's important to remember
that not all development teams will derive the same amount of benefit.
Look for opportunities that will allow you to maximize the value you claimed
in the business case.
One of the real joys of working in IT is the opportunity to explore
new technology and envision its value to the company. Along with the fun
comes the hard work of making the business case to those who don't care
about technology -- only the business benefit. If we do this well, everyone
benefits. How do you face this challenge? Write and let me know.
About the Author
John D. Williams is a contributor to Application Development Trends. He is president of Blue Mountain Commerce, a Cary, N.C.-based consulting firm specializing in enterprise, domain and application architectures. He can be reached via e-mail at [email protected].