Need to track customers' orders on your Web site? Or create
a customized internal billing system? Unless you're technically
inclined, trying to develop custom applications for your business
is like ordering dinner in a foreign country-but with more
risk. It's one thing to waste money on a meal you didn't
realize you asked for; it's another thing altogether when your
company makes the mistake of pouring thousands of dollars into a
project that doesn't pan out.

No matter what software development project you want, you can
make it succeed even if a technical person isn't on staff. Here
are some tips for working with outside developers:

Know what you want. You should have a clear idea of what
you expect in the application you're looking for. Drafting a
document that details its purpose and desired functionality will
convey those expectations to any development firm. If you're
converting from a manual process, it's useful to have samples
of forms and reports you use and a detailed description of the work
flow. Sketching out the way the material could translate onscreen
will help the developer understand what you want to get out of your
software and could even inspire suggestions to improve efficiency.
You might be surprised to see how many manual steps can be
eliminated and done automatically via software.

In your first consultation with any developer-include people
familiar with your current applications and those who will be using
the customized software. Current users can offer additional insight
into your software needs, while new users may be better able to
explain the specifics of the desired functionality.

This should not be the only meeting you have. Just handing over
a list of needs and expecting the developer to determine what comes
next could be disastrous. Provide a lot of input in terms of
developing the on-screen displays and the actions users should be
able to take on each screen. Although awkward interfaces may work
fine technically, they can result in dissatisfied users. To get the
best results, you and others on your staff should constantly play
an integral part in the development process.

Seek multiple options. In most cases, you'll have
several choices for carrying out your project. Different software,
programming languages and even varying sets of skills can be used
to accomplish the same result. As you interview potential firms to
handle your project, ask why certain approaches are recommended,
why they're better than others and what the drawbacks of their
recommendations are.

Focus on the build vs. buy recommendation. While some
developers will recommend that they build your desired application
from scratch, others will work with an existing application and
build on top of it. By building an application from scratch, you
have the ability to specify exactly what you want, but it might
take more time to create. Taking advantage of an existing
application can result in quicker turnaround with less expense, but
it could also mean limitations in either functionality or
interface.

Regardless of the method you choose, make sure to ask potential
developers what they think will be the trickiest issues to resolve.
Even if you don't understand everything they talk about, you
can definitely get a sense of how well-thought-out the
recommendations are by the developer's ability to explain his
or her position.

Find out how the software will grow with you. In this
ever-changing age of technology, you don't need software that
can't change with the times.

Find great developers. Look for developers who are
well-versed in the programming languages you'll need. Ideally,
they'll have built similar applications previously; it's
recommended that each person working on the project has at least
two years of hands-on experience with the required language. While
this should not be a determining factor by any means, it
doesn't hurt to find out whether they've provided similar
services for other companies with needs like yours. If they've
been down the same road before, they're familiar with its dips
and bends. Always ask for-and check-references.

Compare the services offered by different developers and try to
get the most for your money. But look beyond their skills; expand
your focus and consider the overall software development package.
You might not realize where the saving graces will actually lie.
For example, one developer might offer to provide several
prototypes for you along the way and then use your feedback to make
necessary changes before the code is locked down. In the
unfortunate event that you need a major redesign on the software,
such a provision can save you from potentially draining costs.

Still, a successful project requires more than just great
programming. Whether you work with a freelancer or a team of
people, you should seek out developers who can create a formal
specification-that's a document that details the functionality
from a functional and technical perspective. Also look around for
developers who "comment code" well-that's tech talk
for adding notes that describe what the code does. It's money
well spent to ensure that others can extend your application in the
future.

Test the software thoroughly before bidding your developer
farewell. Even though the software developer should have taken
care of this task before delivering the product to you, it's
ultimately your responsibility to make sure your new software works
correctly. Have qualified staff test the software, have the
developer test it in front of you at your company, or hire an
independent testing lab to go through and make sure everything
works properly.

Despite the many hours spent poring over your needs and the
desired results, it's almost a given that changes or minor
adjustments will have to be made to the application after
installation. Will the developer be able to handle those
adjustments after he or she gets your initial feedback? And how
will that factor into the price? Don't be caught by surprise at
the tail end of this arduous process by a series of
"extras"-get answers about costs in the beginning.

The other side of testing is fixing mistakes, or debugging. Will
your developer be able to assist with this after the software is
installed? Some firms bundle implementation and training into the
software development package, so this might just be part of the
deal. If it's not, make sure you have a trouble-shooting plan
in place before your developer heads for the door. Going one step
further, ask your designer what skills are needed to tackle these
issues in case you end up scrambling to hire someone specifically
to fix the bugs.

Get it in writing. Avoid the blame game by covering
details about such niceties as project due dates, payment
milestones, code ownership and quality guarantees. If you'll be
sharing sensitive information, having potential partners sign a
nondisclosure agreement is wise.

It's particularly critical to establish ownership of the
software when discussing a software development agreement. You
might be surprised to know that ownership of the intellectual
property is not an automatic inclusion in the transfer of the
software from the developer to the client. Depending on your needs
and wants, you could negotiate to be the sole owner, to merely have
a license to use the software or any number of options in
between.

Start your search. You might want to start with my Web
site at www.buyerzone.com/professional_services/consulting/buying_options.jhtml,
to determine whether you need a firm or a freelancer. For a project
that requires a variety of skill sets, consult firms that can
provide a team of people. If your work is not as time-sensitive or
as broad in scope, a freelancer should be more than able to address
your needs. Rates range from $60 to $175 per hour, or you may want
to negotiate to have fees tied to performance or the meeting of
deadlines.

Software Developer Lingo

Application (app): a synonym for software program or
software

Architecture: refers to the design of software or
hardware, or to how the software and hardware work together to
perform tasks. The architecture of a software program maps out the
complete functionality of the application.

CAD (computer-aided design): CAD programs have replaced
the drafting board as mission control for industries in need of
multifunctional modeling and design systems.

CBT (computer-based training): software that allows users
to create multimedia applications. Authors can combine text, audio
and other elements to create a training manual, interactive resume
or any number of other programs.

Client/server: This type of software enables your
computer to communicate with a centralized server. Client/server
software is critical if a company wants all employees to have
access to information without loading that information onto every
computer in the office.

GroupWare: software that allows users to share ideas,
exchange information or work on the same project from different
locations

License: A license is often what you actually pay for
when you buy software. You aren't buying the software, but
rather the license that gives you the right to use it on one
computer (though some licensing agreements vary depending on the
situation).

MiddleWare: refers to programs that connect two separate
applications. MiddleWare is often used as the glue between database
and Web-based applications-sometimes referred to as
plumbing.

System requirements: a general term used to describe the
capabilities a computer must have in order to successfully run a
particular program. Most system-requirement information includes
the minimum needs for memory (hard drive and RAM) and processor
speed, what type of operating system the program can run on, and
whether a CD-ROM drive or Internet access is required.

User interface (UI): User interfaces are what you see
when you use a program, such as taskbars, pulldowns, scroll bars
and so on.

Mie-Yun Lee is the founder and editorial director of
BuyerZone.com, the Internet purchasing hub for small businesses.
Doreen Vianzon contributed to this article.