On Consulting

I have worked for over a decade as a software consultant, and I have run ART Consulting, a small consulting firm. I started because I was an efficient programmer, but the business of consulting is largely about sales, collections, and recruiting.  These are my observations on the business.  

The way you get leads in consulting is to build a reputation.  To build a reputation, do things and tell people.  I have been fortunate to get a lot of work through word of mouth and professional connections. The connections are from past jobs and networking.  Being a part of high profile, successful projects helps.  You can also speak at local tech meetups of conferences, blog, write a book, contribute to open source.  Martin Fowler is an example in software consulting of someone building a reputation as an expert and promoting his consulting agency, Thoughtworks.  I think Watson winning Jeopardy is one of the greatest publicity stunts in the industry.  But you don’t have to be Martin Fowler or IBM, if you are competent, you can build a reputation within a small geographical or technical community with reasonable effort.  Consider positioning your company as expert in a field, perhaps an emerging programming language or an industry.

Selling consulting services is asking questions about the project.  The customer wants to tell you about the project and they want to see that you are interested and getting it.  If you have a baseline of credibility,  I don’t recommend spending a lot of time trying to sell your company or even worse, bashing the competition.  Bragging about your accomplishments and your team seems to be less effective than getting the customer to talk about their job.  When I go on a sales call I often start writing information about the project as if I had won the business.  

I have made sales mistakes. I was on a job and the sales guy encouraged me to upsell.  We had a meeting to consider buying BEA WebLogic (long before being bought by Oracle).  I launched into my pitch about how we had a guy that had been using WebLogic for 6 months.  Later, I learned everyone in the room had been using at their previous employer for 12 months.  Know your audience before you pitch.  Another amatuer mistake to make is criticizing the company’s past design decisions.  Often you will be speaking with the people that made those decisions.

Knowing negotiation tactics is invaluable.  I suggest reading Secrets of Power Negotiations.  I once knew a competitor that was winning tons of business, but they were overwhelmed with work and wanted me to help out.  They were charging rates that were too low and I couldn’t help them out.  Don’t be afraid to ask for higher rates, especially if you have too much work.

Schmoozing is fun.  I’m talking about taking people golfing, buying meals, giving them swag, getting tickets to events, bringing food to the office.  Some places have policies that limit employees from accepting gifts from vendors.  I think giving back and being generous is rewarding, if you feel unethical consider donating money to your client’s favorite charity.

An employee commission program is something to consider.  The first consulting firm I worked for offered a $100 bonus for setting up a sales meeting for anyone with a budget, and 1% of sales if it led to business.  Later they put a cap on it at $1,000,000 of sales, because a lead I had given them led to over that amount.  The next time I got an opportunity like that I started my own company.

If you hire a salesperson, consider the trade off of salary versus commission.  Lower salary and higher commissions incentives the sales people to close deals, but you don’t want them to be too desperate.  Most places base commision on a percent of sales.  However, I think it’s important to also have incentives for salespeople to negotiate good hourly rates.

Not collecting payment is a big risk, it can erase years of profit and put you out of business.  I have seen extremely risky measures taken to cover payroll.  Customers don’t pay for various reasons: quality issues, lack of funds, bankruptcy.  Once I saw a company not pay subs because they couldn’t collect from their client. I have heard big firms, like IBM global services, aim for 90% collection rates, but small firms usually seem to do well until they can’t collect a big bill.  

Here are steps you can take to mitigate this risk:
Consider the financial strength of the company before accepting the job.  Ask about their ownership and backing, profitability, and reputation.  I have never asked for a credit check, but it’s a common practice in some industries.  Talk with a credit manager, even in another industry, for tips.

Avoid using words like “fixing bugs” on invoices.  Customers hate to pay for that type of work.  Use words like modify and change.  If customers won’t pay and complains about quality issues, acknowledge any problems and reassert you expect to get paid….  for example:
customer: “this project has been a disaster.  I’m not paying for this crap”
response: “I agree we would have all preferred it go more smoothly, and we still expect to get paid.”  
It’s easier to get paid if you can competently handle quality issues.  That includes acknowledging problems, solving them and discussing plans to prevent that problem from recurring.  If you are in the unfortunate position of trying to collect while there are outstanding quality issues emphasize that you are working on them.  Avoiding responsibility, being defensive, and blaming others is typically not what clients want to hear.  If you repeatedly discount due to quality issues consider firing the employee or the client.

Typically, I bill every 30 days with 30 day payment terms.  Consider reducing the billing cycle and terms to 2 weeks for high risk customer.  Most of my clients pay before the 30 day terms.  Some consultants offer a 2% discount if you pay within 10 days.  It’s called “2 10 net 30.”  I typically don’t offer this but, it can incentivize companies to pay early and help reduce days sales outstanding.  If an invoice is late, ask when you can expect to get paid.  Often it’s an oversight.  The phrase “When can I expect that June payment?” is less confrontational than “Where is my money?  I want my money.”  Under the most generous scenario,  if a company is 30 days late I am likely to warn them I can’t afford to continue to work for them without prompt payment.  At 60 days late I would seriously consider halting work on the job.  I have never resorted to legal action.  I believe trust is important with clients and lawyers are the main winner in lawsuits.  However, it is standard practice in some industries to turn outstanding bills over to collection agencies at 90 days outstanding.  Typically, it’s a lawyer that will report them to a credit agency.  Warn them 10 days before you do and give them an opportunity to pay.  

I typically avoid any threats related to withholding source.  Trust is a key component of the relationship.  Also, if the customer is having cash flow problems, I want to do what I can to help them out.  The code you have already written is a sunk cost.  It’s usually better to see the code put to good use than withhold it.

If you don’t pay your sub-contractors or employees word will get around and it will be difficult to recruit.  Pay them, even if you can’t collect.  Keeping a reserve fund can help a company survive billing issues, but it is demoralizing to tap into it.  Taking on debt or investment is another way to survive, but you are raising the risk of long term failure.

Utilization Rates
Staying busy and not “on the bench” can be a challenge.  You may have to pay employees for sitting around doing nothing.
-Many firms use sub-contractors.  Cutting a sub is less damaging to your reputation than laying off an employee. I recommend the staff be 10% - 20% contractors, but base it on risk.  Also consider making new hires contractors for a period.
-The firm I worked for wrote it into their contracts that they needed 30 days of notice if ending a job.  That gave sales time to find new positions for employees.
-Hopefully you are doing a good job and will acquire long term customers or a steady flow of referrals.

Fixed Cost projects and Estimation
A big risk is accepting a fixed cost project, running over time estimates and effectively working at a very low rate.  I mitigate this problem is by rarely accepting fixed cost projects.  If you choose to do a fixed cost project,  I suggest doing a thorough specification.  The specification should be billable and insist that any changes after the agreed on fixed cost will result in a separate hourly based cost.  

Another reason fixed cost projects are so difficult is because estimating time is extremely difficult.  Even when I am billing by the hour, people often want estimates.  I always try to estimate the smallest amount of work possible.  The approach of breaking the work into smaller pieces lowers the risks of underestimating, and the process of fleshing out the details helps justify the estimate.  I have worked on projects where we billed for several weeks of work to do the estimate.   My goal is to under-promise and over-deliver, but it’s easy to be optimistic during the estimation.  Unforeseen problems are often the reason for overages.  A non-technical customer once asked for an estimate on how long it would take to debug a problem.  I told him “It’s like asking me how long it will take to find a set of misplaced keys.”  

Gross Margin
The profit in consulting is to increase the spread between the rate you pay workers and the cost you bill clients.  My first job in 1997, I was making $30k/ year (effectively $15/hour) and I was billing $90/hour.  That’s a good spread.  If you are paying out more than 75% of the hourly bill rate to the workers, it may not be worth the risk and effort. I think paying out 50% to worker is standard (i.e.100% markup).  Sales commission might run 10%-15%.  However, it varies for subs and employees and it’s all subject to negotiation.

If the spread is too out of whack it can create bad will on both sides.  That’s the reason I don’t recommend disclosing to the workers how much the company is billing per hour, but it often leaks.  Different places have different approaches but it’s key that you keep a balance between your rates and the quality of work you do.  

It’s a good idea to get your employees and subs to sign non-compete agreements.  Although it varies by state (California doesn’t uphold non-competes), that means if the employee or sub wants to work directly for the company you should get compensated.  The fee is subject to negotiation. You might place an employee for free, if a client that has paid a lot of money to you, and you have an ongoing relationship.  A high volume staffing agencies might want 15% of the first year salary, where as a lower volume more specialized recruiter might want 20% to  25% of the 1st year salary and signing bonus for a placement.  

One important rule is to not get involved in the politics of the company you are working for.  They are like a family.  They may bad mouth each other, but if a consultant from another company says something negative it will not be received well.  I have tried to make a habit of not saying things about people that I wouldn’t say to their face.  It has had the side benefit that I find myself saying more things to people because I already have rehearsed being diplomatic.  

Also be honest on hourly billing.  Don’t fudge.  

Incidentally, I hate doing time sheets.  And I wrote an iphone app that makes it easy if you are working on site.  The app is OnSite Time Tracker and it has location based features.

There are a lot of avenues for recruiting.  I usually hire people that I have worked with before.  Hiring people from your staff’s network is another sound approach.  A lot of companies have a bonus for recruiting.  One interesting approach I have seen is building rapport with CS professors and get referrals for the most promising students.  Increasingly people are turning to social media.  One of my friends hired someone off angel list.  Networking is another way to meet potential candidates.

Beyond that, people need to want to work for you.  Ask for good rates so you can be generous to employees.  A good bonus package can help attract talent, but it’s tricky. One way is to do a bonus as percentage of salary.  The upside to bonus as a percent of a salary is it can unify the company, and encourage team work.  The downside is that sometimes certain teams are making most of the money by working more.  In that case, it can create resentment.

If you are a customer of mine, don’t take this to mean you can not pay me for 60 days :)  These are rules of thumb, subject to conditions.  Let me know your thoughts on the business and if you need web or mobile development, contact me at andrewt at gmail.com.

No comments: