At Your Service You can't custom-order an outside software developer, but you can still find what you need.
By Mie- Yun Lee
Opinions expressed by Entrepreneur contributors are their own.
Need to track customers' orders on your Web site? Or createa customized internal billing system? Unless you're technicallyinclined, trying to develop custom applications for your businessis like ordering dinner in a foreign country-but with morerisk. It's one thing to waste money on a meal you didn'trealize you asked for; it's another thing altogether when yourcompany makes the mistake of pouring thousands of dollars into aproject that doesn't pan out.
No matter what software development project you want, you canmake it succeed even if a technical person isn't on staff. Hereare some tips for working with outside developers:
- Know what you want. You should have a clear idea of whatyou expect in the application you're looking for. Drafting adocument that details its purpose and desired functionality willconvey those expectations to any development firm. If you'reconverting from a manual process, it's useful to have samplesof forms and reports you use and a detailed description of the workflow. Sketching out the way the material could translate onscreenwill help the developer understand what you want to get out of yoursoftware and could even inspire suggestions to improve efficiency.You might be surprised to see how many manual steps can beeliminated and done automatically via software.
In your first consultation with any developer-include peoplefamiliar with your current applications and those who will be usingthe customized software. Current users can offer additional insightinto your software needs, while new users may be better able toexplain the specifics of the desired functionality.
This should not be the only meeting you have. Just handing overa list of needs and expecting the developer to determine what comesnext could be disastrous. Provide a lot of input in terms ofdeveloping the on-screen displays and the actions users should beable to take on each screen. Although awkward interfaces may workfine technically, they can result in dissatisfied users. To get thebest results, you and others on your staff should constantly playan integral part in the development process.
- Seek multiple options. In most cases, you'll haveseveral choices for carrying out your project. Different software,programming languages and even varying sets of skills can be usedto accomplish the same result. As you interview potential firms tohandle your project, ask why certain approaches are recommended,why they're better than others and what the drawbacks of theirrecommendations are.
- Focus on the build vs. buy recommendation. While somedevelopers will recommend that they build your desired applicationfrom scratch, others will work with an existing application andbuild on top of it. By building an application from scratch, youhave the ability to specify exactly what you want, but it mighttake more time to create. Taking advantage of an existingapplication can result in quicker turnaround with less expense, butit could also mean limitations in either functionality orinterface.
Regardless of the method you choose, make sure to ask potentialdevelopers what they think will be the trickiest issues to resolve.Even if you don't understand everything they talk about, youcan definitely get a sense of how well-thought-out therecommendations are by the developer's ability to explain hisor her position.
Find out how the software will grow with you. In thisever-changing age of technology, you don't need software thatcan't change with the times.
- Find great developers. Look for developers who arewell-versed in the programming languages you'll need. Ideally,they'll have built similar applications previously; it'srecommended that each person working on the project has at leasttwo years of hands-on experience with the required language. Whilethis should not be a determining factor by any means, itdoesn't hurt to find out whether they've provided similarservices for other companies with needs like yours. If they'vebeen down the same road before, they're familiar with its dipsand bends. Always ask for-and check-references.
Compare the services offered by different developers and try toget the most for your money. But look beyond their skills; expandyour 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 severalprototypes for you along the way and then use your feedback to makenecessary changes before the code is locked down. In theunfortunate 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 greatprogramming. Whether you work with a freelancer or a team ofpeople, you should seek out developers who can create a formalspecification-that's a document that details the functionalityfrom a functional and technical perspective. Also look around fordevelopers who "comment code" well-that's tech talkfor adding notes that describe what the code does. It's moneywell spent to ensure that others can extend your application in thefuture.
- Test the software thoroughly before bidding your developerfarewell. Even though the software developer should have takencare of this task before delivering the product to you, it'sultimately your responsibility to make sure your new software workscorrectly. Have qualified staff test the software, have thedeveloper test it in front of you at your company, or hire anindependent testing lab to go through and make sure everythingworks properly.
Despite the many hours spent poring over your needs and thedesired results, it's almost a given that changes or minoradjustments will have to be made to the application afterinstallation. Will the developer be able to handle thoseadjustments after he or she gets your initial feedback? And howwill that factor into the price? Don't be caught by surprise atthe 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. Willyour developer be able to assist with this after the software isinstalled? Some firms bundle implementation and training into thesoftware development package, so this might just be part of thedeal. If it's not, make sure you have a trouble-shooting planin place before your developer heads for the door. Going one stepfurther, ask your designer what skills are needed to tackle theseissues in case you end up scrambling to hire someone specificallyto fix the bugs.
- Get it in writing. Avoid the blame game by coveringdetails about such niceties as project due dates, paymentmilestones, code ownership and quality guarantees. If you'll besharing sensitive information, having potential partners sign anondisclosure agreement is wise.
It's particularly critical to establish ownership of thesoftware when discussing a software development agreement. Youmight be surprised to know that ownership of the intellectualproperty is not an automatic inclusion in the transfer of thesoftware from the developer to the client. Depending on your needsand wants, you could negotiate to be the sole owner, to merely havea license to use the software or any number of options inbetween.
- Start your search. You might want to start with my Website at www.buyerzone.com/professional_services/consulting/buying_options.jhtml,to determine whether you need a firm or a freelancer. For a projectthat requires a variety of skill sets, consult firms that canprovide a team of people. If your work is not as time-sensitive oras broad in scope, a freelancer should be more than able to addressyour needs. Rates range from $60 to $175 per hour, or you may wantto negotiate to have fees tied to performance or the meeting ofdeadlines.
Software Developer Lingo
Application (app): a synonym for software program orsoftware
Architecture: refers to the design of software orhardware, or to how the software and hardware work together toperform tasks. The architecture of a software program maps out thecomplete functionality of the application.
CAD (computer-aided design): CAD programs have replacedthe drafting board as mission control for industries in need ofmultifunctional modeling and design systems.
CBT (computer-based training): software that allows usersto create multimedia applications. Authors can combine text, audioand other elements to create a training manual, interactive resumeor any number of other programs.
Client/server: This type of software enables yourcomputer to communicate with a centralized server. Client/serversoftware is critical if a company wants all employees to haveaccess to information without loading that information onto everycomputer in the office.
GroupWare: software that allows users to share ideas,exchange information or work on the same project from differentlocations
License: A license is often what you actually pay forwhen you buy software. You aren't buying the software, butrather the license that gives you the right to use it on onecomputer (though some licensing agreements vary depending on thesituation).
MiddleWare: refers to programs that connect two separateapplications. MiddleWare is often used as the glue between databaseand Web-based applications-sometimes referred to asplumbing.
System requirements: a general term used to describe thecapabilities a computer must have in order to successfully run aparticular program. Most system-requirement information includesthe minimum needs for memory (hard drive and RAM) and processorspeed, what type of operating system the program can run on, andwhether a CD-ROM drive or Internet access is required.
User interface (UI): User interfaces are what you seewhen you use a program, such as taskbars, pulldowns, scroll barsand so on.
Mie-Yun Lee is the founder and editorial director ofBuyerZone.com, the Internet purchasing hub for small businesses.Doreen Vianzon contributed to this article.