From the "common sense is not so common" department:
Being a contractor myself, I have seen this happen to many of my
sub-contractors, and I admit I have even fallen into a few of these
traps myself in times past. While the solution is not always obvious,
these answers may seem deceptively simple. Don't let that fool you!
Triple-check these things on every project.
NOTE:
The following solutions are preventative and should happen during the decision making process prior to awarding the contract.
The very best solution is to look for any negative customer
feedback. Find out if there are repeat offenses or patterns in the
complaints, and ask the provider directly about it. Unless you have a
backup plan, if their answers make you uncomfortable, you are probably
better off selecting another provider.
-
Unresponsive
;
ignoring all contact, unable to get ahold of, did not provide contact information.
Look for email/im/phone and physical address contact information. Look
for regular business hours and make sure they work for your time zone.
-
Incompetence
;
cannot deliver; considering bankruptcy, fly-by-night, lying, inexperienced, too busy, etc.
Look for a pre-compiled list of core competencies or services offered.
You are always better off selecting a provider who specializes in the
area you need, and has been for at least 2 years, so they are not
learning on your dime. Also look for any industry peer
certifications/awards, client testimonials, and of course a portfolio
[or lack thereof] which is probably the most telling of all.
-
Unrefundable
;
took money and ran, death, termination of
employment, surprise discovery of obstacles or additional work required
outside of budget and scope, etc.
Get the terms of payment signed in writing clearly. If possible, use a
third-party escrow service and only release payment upon demonstrated
progress broken up over multiple milestones. Ask the provider about
their refund policy if it is not clearly spelled out anywhere. Do not
be unrealistic; in many cases you are paying for their time, not for
deliverables. It is not uncommon to receive only up to 50% in the event
of catastrophe. The solution is simply not to pay that much up front
without seeing some progress.
-
Poor communication
;
surprises, misunderstandings, missing pieces, must be told repeatedly, losing things, hard to get ahold of.
For large projects, pay for some systems analysis and design services
up front and get the entire project planned out on paper before you
even think about investing a dime in the development. This is possible
to do using software products like IBM's Rational Rose to produce UML
Diagrams which leave little/no room for unforeseen consequences or
technical error and are worth the cost. Get all your requirements and
ideas written down on paper in a neat and organized electronic format.
Attach this documentation to your Request for Quote (RFQ) that goes out
to every provider you are inviting to bid. You will find that the more
specific your requirements are, the more specific your bids will come
in, and this leaves little room for misunderstanding. There will be
providers who cannot understand your requirements--these are the novice
and huckster providers you are precisely aiming to avoid.
-
Poor quality
;
bugs, provider's work was unusable, had to
be redone, end-customers' perception of product as visibly cheap
affecting resale value.
With shoddy providers, acceptable quality is always implied, but rarely
defined and enforced. Good providers will usually have some quality
guarantee somewhere in their marketing materials. It essentially says
if anything is broken as a result of their failure to perform (e.g.
consistently late, betrayal of confidences such as an NDA agreement,
turning in shoddy or mistaken reports, forgetting to test prior to
demonstration, etc.), that they will either fix it promptly and at no
additional cost even after final payment or they will issue you a
refund in full. Unless you are technical enough to do it yourself, only
work with providers who can insure your investment with this guarantee.
Then just pick a provider who's portfolio matches the quality and style
you are looking for.
-
Slow
;
consistent failure to meet milestones/deadlines, taking forever to get small things done, never available.
Get
milestones and deadlines in writing prior to initial payment. Add
something in the agreement along the lines of 6% being deducted from
the total cost for every day that passes beyond the date. These high
stakes will raise the bar for your provider, so be sure to also relieve
a little pressure by loosening up on those deadlines. Realistically,
the provider should be charging you +30% for emergency deliveries, so
allow the provider to set dates and times that are realistic under
those terms and don't argue on them. Then, if your provider is quoting
times that seem long, compare it to the other bids you have and choose
one that fits closer to your timeline.
Also, consider whether what you want has ever been done before. Many
clients pay providers to reinvent the wheel. By getting more bids, you
increase your chances of finding providers with pre-existing solutions
that are quickly/easily adapted to meet your needs. Utilize open-source
technology whenever possible. These techniques will substantially lower
development time and cost.
-
No support
;
something is broken, its proprietary or very poor quality so only the provider can fix it, no maintenance agreement
.
Ask about the support/maintenance agreement. Get the price for this
service in writing when you are drafting the proposal before you even
start on the project. Some providers can really gauge you with low
introductory pricing on the project, but then coding it all proprietary
so that only they can support it and then charging you an arm and and a
leg for that. Avoid awarding large projects to providers who have never
supported anything before.
-
Beyond jurisdiction
;
no intellectual property
protection/privacy/security, contracts mean nothing, would cost way too
much to actually go to court, international law contradictions, some
laws may not apply in other countries, etc.
Make sure you get your provider to sign a Non-Disclosure Agreement
(NDA) and/or a Non-Compete Agreement (NCA) if and when it is
appropriate. Don't be too shy to ask about the company's internal
structure as far as how they plan to have their workers keep these
agreements, as well. And I am not a lawyer, so definitely make sure
you're seeking competent legal advice to be sure that the documents in
use are sound and written in your favor whenever possible.
-
Limited resources
;
great for a little while then suddenly
too busy for you, prices raise on a whim without added value, waiting
in huge lines, receiving little/no attention, always low priority.
These are typically symptoms of one person in the company trying to fit
too much in too little time (e.g. Superman). This is common among
sole-proprietors, especially when they are doing it part-time. Look for
a provider with either a firm structure (e.g. more than 1-2+ people
employed by the organization) or even better an agency structure (e.g.
10+ sub-contractors or partners affiliated with the company) where the
option to dedicate more [human] resources to your project is a real
possibility. Organizations of this type have the ability to rapidly
scale up and down to meet demand, so you rarely if ever run into these
types of problems.
-
Expensive
;
rates are low but quote time is high, rates
are ridiculously high, payment terms are unrealistic, surprise charges,
undisclosed fees, etc.
Look for fixed rates and/or product pricing listed plainly on the
website. Many providers change based on interest, availability, or
whatever cool toy their dart lands on that day. Be sure to get a wide
variety of bids on your project to choose from (e.g. try for at least
10) so you have a clear picture of who is padding and who is
desperately unrealistic. Once you have enough information to make an
informed decision based on actual market values, pay what it costs;
nobody likes a tightwad, and you get what you pay for.
About the author...
Mike Smullin began his technical career in 1997 after receiving his A+ Certification and graduating with honors from the Salt Lake City School District's Applied Technology Education program.
One of Mike's first jobs as a development specialist was for a privately-held small business startup company providing discount LASIK eye surgery to healthcare participants nationwide, applying open-source Linux, Apache, MySQL, and PHP (LAMP) technologies to develop Internet-based Customer Relationship Management (CRM) software managing over 1,000,000+ customer relationships nationwide.
Shortly after founding his own company, Smullin Design and Development LLC, his career took off as a leading provider of IT solutions for individuals and small-to-medium size businesses worldwide. He never looked back.
Mike is a highly respected developer, artist, online consultant, and Internet entreprenuer residing in Eagle Mountain, Utah, United States.