Inefficiency of your company's existing software or the need for
specialized software functions particularly suited to your business may prompt
you to seek the services of a software developer. Your business may require
custom software for applications such as contact management, invoicing or
inventory. The mere thought of selecting a developer can be daunting if you are
not technically minded, but be assured that your role in the selection process
is one of assessing the developer, rather than that of assessing software
technology. Successful software development relies heavily on a strong
partnership with the developer. Thus, picking the right developer is crucial,
and the following suggestions will assist you in hiring a reputable and
proficient developer.
Establish your software requirements
Software development cannot occur without a well structured and clearly
defined set of your business's software requirements, as the work is in
essence a process of addressing needs and solving problems. Consequently,
development success will depend largely on the time and effort you dedicate to
this stage of the process. It is only by analyzing needs and desired functions
that a developer can provide you with as accurate a job proposal and cost
estimation as possible.
Be extremely thorough and precise at this stage, including key
employees suggestions and needs, and compile a comprehensible
requirements document, separating the mandatory needs from the optional. Draw
up a list of potential developers by asking businesspeople you know for
recommendations or by researching web directories. Send them the requirements
document, as well as information about your company (such as business
objectives) and your budget, so that they can in turn provide you with a job
proposal and quotation.
Assess the candidate developers
A preliminary assessment of developers' written proposals and
quotations should give you a good indication of their suitability in addressing
your needs, but a final decision should be determined by in-person interviews
as well. Meeting face-to-face is crucial in evaluating not only the
candidates' services, but their personalities and communication skills
too. The latter two are vital aspects in ensuring a strong collaborative
partnership with the company, which will largely determine the success of the
software development. In your assessment of the potential developers, consider
these factors:
Experience and expertise
You will obviously want to hire someone who is proficient in the field and
keeps abreast of the latest software technology trends and discoveries. Be sure
that the candidate is a genuine software developer able to suggest solutions to
your problems, and not merely a programmer who wants exact instructions on what
program he or she should write. Also be careful of developers who are
preoccupied with their particular area of technology specialization at the
expense of your particular needs. A good developer should provide you with the
type of technology most suited to your requirements.
It is preferable to choose a developer who is both experienced in their own
domain and familiar with your particular industry. The reason for this is that
they will be aware of the common types of needs (both clearly stated and
implied), problems and general expectations in your line of work.
Visiting a candidate's website should give you a good indication of
these aspects, but the best and most direct way to determine a
candidate's experience and expertise is to contact former and current
clients. Ask them specific questions about the development company's
general service delivery, response to problems, and the efficiency of the
developed software.
You can ask to see samples of software, and test it yourself to see whether
it is user-friendly (although remember that training will be provided) and
effective.
Industry awards are also obviously a good indication of a company's
expertise.
Size
There are advantages and disadvantages to both big companies and sole
proprietor situations. A big company may house all the skills and services
needed by your requirements, but you run the risk of getting lost among many
clients. The opposite is true for a small company or sole proprietor.
Therefore, size is not an important deciding factor. Rather, make sure that the
developer you choose can cope with the size of your company, and either cover
all your requirements or be able to outsource specialized skills to reputable
contacts.
Personality and communication skills
This may sound trivial, but your instinctual like or dislike
of the person or group is significant in the selection process. You
will be working in close partnership with the developer, discussing problems
which can become draining and difficult, so it is vital that you get along. The
ability to communicate clearly and patiently, without loads of jargon, is also
imperative. Software development entails your description of needs and problems
being translated by the developer into functional solutions. Misunderstandings
are inevitable in such a complex communication situation, therefore be sure
that a good basic level of interaction is evident from the start.
Note too their interest in the work and in your vision. Passion for a
subject will generate creative problem solving.
Support
Your company will need technical and administrative support during and after
software implementation. This includes staff training, user-manuals or help
documentation, and debugging of software. The company should also be committed
to the general improvement of your software and the software should support
integration with your existing applications and major systems, and comply with
all platforms. These issues, along with specifications of the amount of support
provided, should be clearly stated in the contract.
Price
This is another factor which should not solely determine your choice of
developer. Software development is a complex process and you should expect to
invest a substantial amount of money in the process.
More important issues of price in choosing a developer are those of costing
methods and charging for changes. Avoid companies that charge hourly rates
without specifying the amount of time that the job will take. A good developer
should be able to make a fairly accurate cost estimation that constitutes fixed
fees, providing that your requirements have been clearly and completely stated.
Be prepared, however, for possible added costs later in the development process
if changes are needed (which they usually are). Changes cannot be predicted,
but be certain that you understand the developer's means of dealing with
and charging for changes (this should also be stated in the contract).
Legal issues
An important aspect that should be stated in the contract is that of
licensing. Ensure that you will be able to use the software on all the
computers that you need to, and be aware of any specific copyright claims the
developer might have.
A guarantee as to the product's effectiveness should also be stated.
Begin the development
After considering all these factors in the evaluation of candidates, you
should be able to hire one that you are happy with. After signing the contract
and starting the development, remember that communication is key. Address
problems and announce required changes as early in the process as possible.The
beginning of development will involve a more in-depth analysis of your company
needs by the developer. This may include interviews and observation, and should
demand a fair amount of your time. Keep in mind, however, that this is the most
crucial phase of development and therefore a sound investment of time. The
developer should then provide you with a functional specification of your requirements,
which can be signed off to commence the project. Make certain, however, that
signing off the requirements does not bind you to them, but allows for changes to
be made for an added fee. The remainder of the process entails the development
of prototype(s), testing, implementation and post-development training, support
and maintenance.