* Lead qualification. This is an enormous problem. Lots of people want revenue sharing deals, etc., and it takes too long to work out whether they're serious about the project and whether I'm the right fit. What do they do for a living? Is this a corporate or personal project? etc.
* Client acquisition cost. Most of the options out there for advertising, etc., don't have a good ROI. It's super difficult to measure advertising effectiveness because you only have a handful of "conversions" (new clients) and thus your results are never statistically significant. It's all black magic and voodoo.
* Pricing. We do 99% fixed quote so hourly rate isn't really the issue. In my market, you adjust the scope to fit the budget, not adjust the budget to fit the scope. The problem is that clients play very close to the vest on what they want to spend, meaning I have to guess what they want to spend. If I guess right, I get the project, if I guess wrong, I will never hear from them again. The whole market is a game of chance, not a game of skill.
* Slow clients. It doesn't matter if the feature takes 1 hour or 5 hours if the client takes 4 weeks to get back to you. Tightening up our business process has improved this considerably from what it used to be, but I imagine a number of contractors experience this schedule unpredictability.
* Client education. Milestones, scope, test builds, etc., are just not in the vocabulary for non-software-background clients. Why the Estonian firm quoting $2000 for a $20k project is lying. How to collect crash reports. How to describe issues so that we can reproduce them. etc.
These problems are WAY bigger than anything you've listed. But about those:
* Project length - Rarely have I thought about this apart from the "Slow client" issue. There are no projects too short, or too long, for me to do, particularly if it's well-paying work.
* Good requirements - we usually write them. Being in the fixed quote business, we're pretty good at it.
* Scope creep - this is a minor problem for us, but we've tightened up the business process and are close to completely eliminating it as a problem.
* On-time payment - Another minor problem, recent changes to the business process are close to eliminating it.
* Negotiating the rate - we rarely do hourly work, so our version of this problem is the "Pricing" problem above.
If you are working on a startup in this space, please sign me up to give you feedback, as I could go on for hours :-)
Now, does he really have that kind of dough laying around (ie: angel funding), or will I never here from the client again because he was hoping to get it done for $200? (Or worse: profit sharing / equity arrangements. Equity doesn't pay my rent.)
It certainly helps sometimes in picking out project infrastructure ("I have to do this cheaply, so let's get inventive")
"You want a database on the web, that you can customize yourself, for $600? Great, let's grab a copy of FileMaker Pro, or sign up for Quickbase.com and get going" Yes, those solutions may limit potential of the app down the line, but they might actually be the right fit.
I'm another hourly-rate-all-the-way guy, but if I can extract the budget out of the client, then I can decide (essentially), "Given the client's other requirements, will a RAD/off-the-shelf/OSS-package-with-a-custom-theme work for this project... or do I just politely tell the potential client to get bent?"
In situation A it is usually because they see my hourly rate a pricy and so they give up their max budget, as a negotiating tool. In which case I tailor the solution to that budget.
In situation B they generally have a budget in which they don't see my cost as even making a dent in.
Finally in C generally we would have never had a meeting of the minds in the first place. I don't compete on price, there was a point where I had the price shoppers filtered out of my sales pipeline, but as we are bringing on new clients again, we do end up in situation C from time to time.
I may be jaded about this because so many of our bids are competitive, and even a simple bid takes a couple hours to put together. We win most of them, but you get used to sinking time into deals that don't pan out and build it into the process.
I think this has two advantages: I don't put that much time into "no real business here" leads, or (if there is business there), there's no way I know the whole scope of a large project in one conversation.
I've actually revised my standard "potential lead" email based on some of the conversations in this thread. I now make it explicit that (a) I can help put together an Agile product backlog, for those larger project, and (b) make my hourly rate for this project manager/product owner work very explicit (to filter out those that don't actually have money)
I think there's a little bit of culture shock going on here between our particular contracting fields.
If you're doing enterprise-ish security contracting, you're not going to get an unemployed person in your lead pile by accident. I get three e-mails from unemployed people a week. I get 20+ leads a month from questionably-funded "startups". The number of revenue sharing posts per day on Craigslist is competitive with the number of police stations in the metropolitan area. etc.
Just to have a 30-minute conversation to determine if somebody is funded or not simply does not scale to the number of interested parties. Even reading all the e-mails and throwing them away is a massive time sink. Let alone estimating anything, thinking about the feasibility of anything, etc.
(Seriously asking because I'm curious).
1) The sort of people who pass through the existing filters I have in place (I show some prices on the contact form) who have unfunded projects will claim that they are funded. The question has a shannon entropy of zero.
2) Everyone, funded or not, is cagey about the actual budget. In the iOS world, "funded" can mean anything from $500 to $500,000. If I say "So, what are you looking to spend?" they will reply "I'm not really sure what the project will cost, can you estimate it for me?" You get this line the same from a CEO or from an intern, from a bank manager or from an unemployed person calling on a payphone. If I say "Our average project cost is X", I am turning away some projects we could legitimately do for less than X with a very comfortable margin while accidentally dangling a carrot in front of a client who has a project that's really 3 * X. The former is an invisible cost, the latter may mean lots of time spent on useless estimates instead of actual billable work.
3) I used to have an e-mail autoresponder that would inquire about budgets, but on a typical day I started spending more time reading replies to my autoresponder than writing actual code. asking the question isn't scalable.
Effective or not, I've been struggling to think of ways to advertise a small contract development business to enterprises other than adwords and seo.
Find some local networking groups that deal with the industr(y|ies) you target, and start to infiltrate their ranks :)
P.S. "low/no cost marketing" is one of the sessions at http://indieconf.com this year :)
(Thankfully, revenue sharing doesn't make sense for our business).
The other big problem you touched on that isn't in the poll is client scheduling; clients will slip and slide all over the calendar, and it's nothing to them (they're used to slipping), but for an outside firm, it's havoc.
I think I'm batting roughly a 50% average on getting paid without sending the "uh, where's my money" email. I always get paid eventually and without complaints, so it's not as if people are trying to avoid paying; it just seems that people who hire me almost universally suck at doing paperwork.
And really, that's a bad way to suck. I suck at doing paperwork, but I at least pay my bills promptly.
I've had some clients I've worked with start off by saying (couple times a bit rudely) "now look here, we can't pay the day you submit an invoice - don't even think that's going to happen - it'll usually be 2-4 weeks before you get a check!". I figured they'd been burned pretty badly by people pestering them for money.
Turns about about 1/3rd of my subcontractors pester me the same, and I encouraged it because I used to paypal money the same day or next day after getting an invoice from them. I can do it, but there are times when I'm dealing with a lot of people, and other work, and simply don't have the time to deal with 'paperwork' but maybe once per week. I don't get the rudeness from people as much as the 'hey, i really need this money to buy food this week' stories. Word to the wise - don't pull that on me - it makes me want to find someone else who won't put me in that position.
So... maybe that should be another issue on the list of things you hate about contracting - dealing with subcontractors :)
Or work in blocks of money on account (eg for a $50k job, you have the client send you $10k in advance and when that is near depleted you have them wire you the next $10k, etc)
Breaking projects into billable milestones is a good idea for other reasons (it's a buffer against scope creep, providing you with periodic scope/schedule resync points), but it doesn't solve the payables problem. It's bad business to tell a client "I'm not going to proceed on milestone 3 until you pay me at least milestone 1".
I'm sure there are people on HN who are shocked-shocked! to hear that suggested. But you can safely assume that HN consistently undervalues what is probably one of the most valuable assets a consultant can have, which is "ease of working with".
When you commit to 4 milestone phases, and you client says your payment is in process, you have to keep working. The client is depending on the job getting done. You may be tempted to reply "but I'm depending on being able to afford dinner tonight". Your client doesn't really believe that it's their problem that you're not well capitalized.
And when you get 3 on time payments, and then the 4th is slipping you have to wonder if it's because they are having trouble getting the money. If they're having trouble getting money, why on earth would you waste your time working on a project that you won't get compensated for?
I think it's totally appropriate to expect on time payment if they can expect on time work. There's no reason it should be a one-sided agreement. How you reinforce that is up to you. But I don't think that communicating that their late payment is making you nervous and uncomfortable with the project is out of the question.
On a previous gig, this worked well on. I started seeing issues on his end with paying on time and it was rooted in ability to get the cash. Danger! He needed the project done asap, and couldn't afford me putting it on hold as I waited for money to come through. I communicated nervousness, so he had to hustle to get the cash.
Of course, once my work was done, it took quite a while to get final payment. It makes me wish I had a way of putting the design files in escrow of some sort, so that at least the pain was shared.
There's not a whole lot you can do about it, is there? It's usually not your direct contacts who have anything to do with it, so it harms the relationship to complain to them about it (they have better things to do). Tracking down the right person in accounting or purchasing to get things moving is a waste of your time. For a long time, before we had a dedicated finance person, we just built these delays into our process.
The thing which annoys me is that I get paid promptly... after I nag. And it seems that 50% of the time, if I don't nag, I don't get paid at all. (I once had an invoice go unpaid for 6 months because I lost track of which ones were still outstanding. Invoices I sent to the same client in March, April, May, and June had been paid, but the invoice I sent in February hadn't.)
I've also been hearing of this from my other clients who are running their own businesses. It seems to be endemic at the moment.
Assuming you don't want to burn bridges I'd play it this way. Invoice them for late payment and if they call you complaining tell them that it's automated by the invoicing software you use and you'll let it slide this time. That sends them the message that prompt payment matters. If they do it a second time screw em.
Both for our own products, and partner products, we like to begin beta testing apps at quite an embarrassing, early stage in the process. We also basically refuse to spec anything but the most basic features of the app, until we hear from users.
In almost every case, the partner agrees to this structure, but then when it comes down to it, they see what we want to release to beta (50-100 users), and then they push back and try and get us to implement features they think are important, or fix bugs they believe matter. They are somewhat incredulous when we push back and decline to bill them hours.
It always works out in the end. When the partner starts hearing the incredibly valuable things users say when they test the apps, they immediately understand the value, and it's smooth sailing from there.
But trying to get a company to release crappy, buggy, unfinished software to 100 of their real customers seems to always take some doing.
We've never had an issue getting paid, and we always require money up front. I did have to struggle once to get 10% of a contract, but I honestly believe it was just accidentally FUBARed.
It's all about networking and talking a good game. It doesn't come natural to engineers I admit but once I decided to just go for it I found it can be fun.
On the plus side you do get to meet a lot of interesting people and discover interesting ideas for apps.
Getting a deposit up front definitely helps with clients paying on time the first couple of months.
I work with a lot of "green field" projects though, and it seems like many clients operate under the impression that the site is going to start making money right away without any marketing or advertising. I usually help them put together a plan for that (and help them with AdWords), but they are for some reason reluctant to actually start making calls, sending emails, reaching out to bloggers, etc.
After a few months, they inevitably start paying later and later as they start to get concerned about running out of money.
The thing I didn't like most about contracting was having my time split up so much between different projects. I like to work on one thing for days at a time, and this wasn't always realistic with several projects going at once.
That's why I created this gem, Big Bucks No Whammies, to automatically generate my invoices from my git commits.
https://github.com/aantix/big_bucks_no_whammies
Here's a sample invoice : https://github.com/aantix/big_bucks_no_whammies/blob/master/...
The amount of Groupon clones I've had come in front of me with "a special twist that will take the market by storm" is ridiculous.
He had a mechanism in place that would have a group buying percentage rating, and naturally lower profit per sale for the person filling the order.
The first thing I said to him was, customers don't know what they are buying... they are gambling that companies supply something good.
From a companies point of this is a great mechanism to drop stock that isn't selling... which for most people would be stock people don't want... I doubt there would be many $99 Touch Pads, and mostly as seen on TV products...
He refused to acknowledge his system could be abused in this manner I suggested and the customer experience could end up quite bad (received products below the quality they expected).
I asked for some sort of spec, or numbers, or anything around what he wanted and I was presented with "I've told you everything, and you have the designs". The designs where ball point pen sketches he left on a piece of paper we found in a cafe where we had our first meeting.
I got a tad concerned at this point and pushed him for some other questions around his funding and sales men.
No sales staff, and he was taking out a loan to develop the work. At this point I said I wasn't interested as I got concerned that when money didn't start rolling in I might not get paid.
He got really angry with me after I declined and I felt a wave of relief as I assume he would have been the sort of client who would never have been wrong, and would have probably tried some stupid law suit blaming me for bad business decisions.
Also, LinkedIn seems to be a very good tool for self-marketing nowadays, I hear a lot of people get work through it very regularly.
I actually made a pretty big mistake in that I took on a client that bought all of our capacity for the last 2 years. It was great while it lasted but many of my smaller clients have since moved on. So now that that project is winding down, I am back to the high signal to noise ratio while I build back up my client base.
IME, most consulting work is just grind, no interesting problems, and the pay rarely really makes up for the real amount of work.
When I was on the other side of the table, and an employee working in a dev team that also consisted of contractors, the only reason I didn't quit and demand to be rehired as a contractor on 200% of my salary is because the firm only used contractors for grind work. I knew that all of the work that would be interesting and furthering would be farmed out to the employees out of loyalty.