It is commonplace in America for smaller programming houses to take on new clients when they have no resources to do the actual work. They typically do this either because they can not predict their future workload, or because they intentionally want to have a large backlog of orders so their staff will not be sitting around with nothing to do.
Unfortunately, what these companies typically do is to take on a new client, and immediately put them on the back burner. The client will have to wait months to get one week’s worth of work done. Lies, deceit, and other manipulative exchanges of reasons will accompany the sluggish work. The question is, how do you ensure that your new software company will not put you on the back burner?
(1) First of all, SMALL software companies don’t care about the long term business – by definition. Because if they did, they wouldn’t be small for long. They would treat their customers well, acquire new ones, but not lose the old ones that often. Smaller software companies typically mishandle all of their clients and lose them as fast as they come in. That guarantees that they will remain small (and inept) forever, until the market changes in which case they would simply vanish.
(2) Companies with offices typically get more done than companies where employees work from home. This is not a hard and fast rule, but I have many examples in my mental database of work-at-home scenarios. If the company is a large and reputable company and workers work at home, that might work. But, for small companies that don’t have a solid reputation, you are asking for trouble if people work from home. Companies with 1-5 people tend to be completely un-businesslike and irresponsible. Pair that with working from home and you have a disaster. If they have an office, and the office has not been populated by them for more than five years, they lack what Indians call: “Being well settled”.
On the other hand, companies who have had offices for years and have 6-12 people who work in the office daily, my experience has been that they are not perfect, but will get some serious work done. Companies with 20+ workers will get tons of work done. The size of the population inhabiting the office (during business hours) is directly proportional to how much work will get done on your project.
(3) Companies LIE about how many employees they have. You need to VERIFY that they really have 500 employees. Ask the boss to NAME THEM all and tell you a little about each of them. I am not joking. At least do this with the employees whose business pertains to your work. VISIT their office to make sure it really exists and that they really have 30 Java programmers with 10 years of experience per person, and not 4 Java programmers where the lead programmer has 3 years of experience who is leading a bunch of inept clowns with 1 year of experience.
(4) TEST these companies out. Give them a few test projects. Perhaps ask them for an estimate on a job. See if the amount of hours they need is reasonable. See if they ask good questions. Ask them to do a quick project to see if they actually do anything. How quick? You are paying for your test, so it is as quick as you like. A 1-hour test might be enough to see if they get off their rear!
(5) Getting programmers to deliver is similar to getting building contractors to deliver. They are notoriously late every step of the way, and two month projects generally take two years. A PENALTY contract might be hard to get them to sign, but it is at least something to think about if time is money. There needs to be a distinct penalty for sluggish or uncooperative behavior. They can ruin your company’s development plan for months if they don’t cooperate.
Potential Damages for Carelessness
Imagine that you hire a company who gets you to get involved in a long project and they stall half-way through. You will be put in the position where you have a choice of firing them mid-way (which is expensive and complicated) or waiting indefinitely for them to finish. You are at risk, and most software companies couldn’t care less about stringing you up and keeping you waiting indefinitely. Proceed with caution!