Hi, I’m Josh Symonds

I blog about Ruby on Rails, coding, and servers

Rails Consulting for Fun and Profit

Reading time 6 minutes

2013 was a great year for me specifically, and my web development shop (Symonds & Son) in general. Though I initially fell into consulting accidentally, I’ve aggressively parlayed it into a successful business – and my only regret has not been doing so sooner! A lot of developers I know are on the fence about striking out on their own. I’m going to lay out how 2013 changed me from a full-time employee to owner of my own business, and in doing so hopefully persuade a few people that the benefits to being in business for yourself far outweigh the risks.

Becoming a Mercenary

At the start of 2013, I was a salaried employee working at a startup. The rate was fine, but I spent a lot of time working – long hours in the evening to make aggressive sprints, and many meetings during the day to discuss development priorities and investor relations. I wasn’t happy, but it was a job, and I was satisfied with it.

A few months into my tenure, I was offered a salary adjustment to help make my company’s bottom-line more attractive. Instead of taking it, I proposed an alternative arrangement: I would become a consultant at a rate very similar to my old hourly and I’d work part-time. After some negotiation, a deal was struck, and I was officially a free agent.

But I wasn’t happy – indeed, quite the opposite. I spent weeks beforehand freaking out. I had the extra hours available to make up my cut income, but I’d need clients to actually pay me for that time. Otherwise I’d need to find another salaried position, and fast, since I didn’t have much in the way of savings. Disaster was looming, and I spent sleepless nights trying to figure out how I’d find a client, how I’d convince them to actually pay me, and, if that failed, how I’d explain a gap on my resume to future potential employers.

Yet almost immediately upon taking the plunge, an old client wanted me to do new work for them. They recommended me to another company, who told one of their clients about me, and very shortly after I became part-time, I was full-time working for my clients. It took me almost all of 2013 to understand what had happened.

Charge Them and They’ll Thank You

In case you didn’t know, Rails developers – specifically, good Rails developers with experience in modern tools, an interest in improving themselves, and an aggressive talent for development – are extremely hard to find. In fact, finding developers who are capable of programming in their chosen language at all is a challenge.

But why accept a generalized statement when I can give you a specific example? I’m presently working with a client to vet Rails engineers. The rate they’re willing to pay is really quite good, yet the candidates their recruiter finds are just terrible. This might be a topic for a separate post, but of the dozen people I’ve interviewed:

  • One didn’t know what Rubygems were,
  • One didn’t know what ActiveRecord was,
  • One had no idea how to sort an array in Ruby (and was surprised when I pointed out Array#sort),
  • and one knew all this but had the interpersonal skills of a serial killer. The creepy kind, not the mesmerizing kind.

Yet the recruiter says these people are snatched up all the time, at a rate of roughly $100 an hour. I honestly have absolutely no idea how this happens. I’m not exaggerating even a little bit when I say I believe that none of these people can code at all – they have no GitHub profiles, no code samples, absolutely nothing to their names.

(Incidentally, can you do better than these idiot candidates? Let me know, I have a pile of money with your name on it.)

I’ve come to believe that these people are why I’ve succeeded. If you bring dedication, honesty, and actual, real skill to your clients, they will recognize your contributions, keep coming back to you, and tell all their friends about you. And they’re willing to pay your hourly rate for long nights, excessive meetings, and even just listening to their plans and helping them improve their processes.

But if that’s so, then why do most engineers, even the good ones, stay put at their full-time, salaried positions?

Success, Outside the Bubble

I think a lot of it has to do with the startup culture in San Francisco presently. Weirdly, I think it has the effect of keeping engineer salaries artificially lowered.

Our industry is dominated by talk of the tech bubble: all the press is about acquisitions, huge seed funding rounds, and successful entrepreneurs’ new projects. But the amount of money in Silicon Valley is really quite limited. There are enormous industries out there that need skilled programmers but lack the sex appeal of a startup or coverage in TechCrunch – yet they have applications in Rails and backend infrastructure needs too.

And they also have way, way more money. Most of my clients are not extremely large businesses in their fields, but the amount of capital they have dwarfs that of even established startups. And they actually have business models that have worked for them for many years, so I worry less about revenue stream issues (or, heaven forbid, them folding overnight).

Even better, to these companies, you aren’t just an engineer with a set salary: you’re solving a business problem with software. Your value to them is measured in the millions of dollars you saved their company, not the amount they’re expecting to pay to a Rails engineer. And by charging on the former, not the latter, you can turn a very tidy profit indeed.

When You Try to Fly, Sometimes You Fall

Of course, the process of getting my business up and running hasn’t been all sunshine and roses. I’ve made some mistakes and wished I’d handled a few things differently.

  1. I nickled-and-dimed a client on change requests, alienating that client and making myself appear less professional. Said client did not have a whole lot of money, and while the initial contract amount was commensurately very low, she really didn’t appreciate me charging additional for some very minor changes. I should have just sucked it up and done the work, leaving both of us with warm fuzzes in the end, even if I took a slight loss on the contract. Most of my clients hear about me from other satisfied clients, and I would have been better served by her loving me than making a little more money.

  2. For pricing my services, I need to start high and work my way down. I generally start client conversations on my hourly rate at what I would consider a reasonable ultimate number, and then allow myself to be driven down from there – generally because the client wants a long-term contract and expects to save on my hourly based on the length of the engagement.

  3. More projects, less hourly. When starting as a consultant, I was really selling only my hours. Now Symonds & Son is a business in its own right, and I’ve hired designers and developers to help with my workload. Working with other talented individuals makes much more sense on a project basis, where I can package their (and my) hours together.

I’m Sold: How Do I Do This?

“Shut up already Josh, I think this is a great idea and want to become a consultant too! What’s next?”

Make sure you have a good track record and established public credentials. Verify your friends (and your ex-employers) will vouch for the quality of your code and the quality of you as an individual. Go to meetups, write blog posts, have open-sourced code on GitHub – the more stuff you have on record, the better. Your clients will want to know everything about you they can before they even meet you.

Have a backup plan in case everything goes wrong. Mine was “find another full-time Rails job,” something that I’ve never traditionally had a problem finding. At least think about a safety net so that taking the plunge is less scary.

And consider if you really want to be a mercenary. Many talented coders I know work for peanuts, but they do so for non-profits, amazing startups, and benefit corporations. They don’t care that they’re not taking home tons of money; they are making a difference in the world, which matters more to them than any paycheck ever could.

But if the idea of consulting appeals to you, then I encourage you to take the plunge. As engineers, our services are as in-demand as ever; if you are a competent engineer, you can turn your skills from a salary into a solution, and companies pay much more handsomely for the latter. And if you try to fly and fail, you have a good chance of landing at another job anyway – so really, the risk is pretty minimal. And if you take off and soar away, let me know: I always need exciting new companies to work on big contracts with!

Josh Symonds performs devops and server wrangling on cloud-scale infrastructures, deploys amazing web applications with Ruby on Rails, and creates awesome iOS apps with Objective-C and RubyMotion. He is founder and CTO of Symonds & Son, a development shop focused on quality and excellence.

Josh Symonds