67 comments

[ 3.5 ms ] story [ 144 ms ] thread
Good article.

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

Fear, wives, families.

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

Or because you have to spend an egregious amount of time doing biz dev, and accounting, and software, and PM work, oh and don't forget about Wives, Families.

Not necessarily. A lot of Rails contracts tend to be multi-month, and if you play your cards right your rate should be upwards of $150/hr.

Doing just one 20-week project a year (FT) could net you around $120k, which leaves the rest of the year to do whatever with the family.

150/hr? Seriously?

Considering how much Rails does for you, that's crazy. Where is it like this?

A rate like that has little to do with "CS complexity" and everything to do with selling a solution that makes the client better off than they were without said solution.

I'm in near-rural Virginia and my last hourly consulting rate was over $200, and I'm not anything close to being an amazing Ruby developer.

Damn. I need to increase my rates.
Did you quote that hourly rate to the client ($200/ph and I expect it will take x hours), or did you quote a total for the deliverable?

What was the source of the client? If they went looking for a 'programmer', I'm curious why they weren't (like many others) lured by others who are cheaper per hour but worse in every other respect.

This is from a while ago, but checkout the script at the end of this post: http://planscope.io/blog/my-most-effective-newsletter-to-dat... This is how I landed many of our clients (I also did a lot of edu-seminars, etc.)

Whether I was billing by the hour or the week, I always estimated in a ballpark number of weeks a project would take, which translated to an estimated budget.

Great link, thanks!

I think my current job will be my last salaried position, at least for awhile. I have a broad range of technical skills and can talk to potential clients, but have always been a bit nervous about taking the plunge (Where will my next client come from? Will I just find cheapskates who want some website for $500 total? Etc.)

+1 for Brennan's response.

It's not about the technology used. It's never been about the technology. You're selling yourself. You're selling your track record. You're selling you.

It's always about the solution and the peace of mind you bring to the client.

Tokyo, New York, San Francisco, Chicago, Philadelphia, Austin, Nuremberg, London, Boston, Ogaki, and anywhere else you can convince a business owner or decisionmaker that you're solving a problem worth $X for some price which is $Y where $Y is less than $X.

There are projects which have the technical complexity of the Rails 15 minute blog demo which are worth $100k to the right business.

Concrete example: for example, the central SEO tool for Bingo Card Creator is "a purpose-built CMS which is superior in only one hyper-specific way over WordPress." (WordPress doesn't have a "turn this blog post into a bingo card" button. BCC's code does.) That tool comprises about, hmm, 500 lines of code. It has a crank attached to it that can be turned by anyone who has done teaching. That tool plus $3,000 of teacher time equals more than $200k of software sales. BCC is very much not the only software company in the world that can get that scale of benefit out of that scale of software complexity.

Or, lets see, you know ActionMailer? You know Rake? You know cron jobs? You know how you could have a cron job fire a Rake task which would send an ActionMailer email? That plus a few hundred words of copy plus a three line if statement can increase the yearly recurring revenue of some businesses by 7+ figures. You can charge $150 an hour if you can write that if statement given a description of the desired behavior. You can charge $30,000 a week (representative number, not a ceiling) if you can people what that if statement should say.

Back when I was a consultant, Rails was one tool in my bag of tricks and most of my clients were B2B software companies. It is very much not the case that B2B software companies are the entirety of the solution space for "clients who a computer system could make a shedload of money for."

Brisbane, Australia, for one.
It might be good to generalize that a bit.

Fear, spouses, family commitments.

I actively practice using gender neutral nouns whenever I write stuff. Sometimes I'll slip up, but I'm pretty confident this isn't the case with the HN crowd.

Using they, spouse or partner is pretty safe and only the only people that are likely to get offended are more than likely already a part of an entitled group anyway.

Should probably save this pedantry for elsewhere.
Not all full-time, salaried positions are bad. He mentioned he wasn't satisfied with the meetings and late nights, but that can't be the case for everyone. Some people like stability, don't want to deal with clients, and just want to code all day. That's fine for some, not for others.
I did it for a little over a year.

Here's my reasons, which include none of those

- Spent less time coding, but more time overall on overhead to make roughly the same amount when it's all said and done. That said, I was at the point where I could have begun raising my rates significantly.

- Nagging clients for payment. It's nice that payment is entirely decoupled from your work. Even if it happens every once in a blue moon it is somewhat disheartening, esp. when they give plenty of praise but "whoops, thought it was sent!" messages. This can be more of a reflection on their bankroll which should be less of an issue as you move further up the client food-chain.

- I hate to admit this, but damn that was lonely. Spending days in cafes, at co-working spaces, at the park, at home, etc, sounds wonderful at first - and it is - but the novelty of that can wear off quickly depending on how you carry something like this. For those less outgoing amongst us, a cool company with bright people is quite a nice thing to have around you.

- A unified 'big thing' to accomplish with said team. Working on very early stage internet startups to help get something off the ground is fun, but it lacks the depth of what I'm doing now.

I can see myself returning to consulting. But I don't see employment vs. consulting as one clearly being better than the other...

The loneliness thing is fixed for myself by working on-site for digital agencies. In terms of pay, I get to ask for 5x what I'd get full time, so it's worth it for me anyway :)
It's easy to be a product builder as a freelancer. It's hard to be a technology builder as a freelancer.

The chances are good that you won't be handling millions of requests a day on a freelance contract. You won't hit the limits of the standard Rails stack. You generally won't have to do much to scale the product.

That's why I stay put.

It actually isn't too difficult to be involved in a system handling millions of requests a day or hitting the limits of the standard Rails stack as a consultant. It probably won't happen if your client is Ma's Diner and you're building them a brochureware site.

Many clients are not Ma's Diner. Many projects are not brochureware sites.

For a lot of people health insurance is something they can't go without, and until recently, were unable to get for one thing or another. I don't know if the ACA changed that.
If the Affordable Care Act providers deliver what they seem to promise, it's tremendously helpful to small-scale entrepreneurship. Pre-ACA, once you had a family with any health claim history it became increasingly difficult, expensive and invasive to obtain individual health insurance. In some states, maternity coverage was not offered in any usable form. In short, the system was heavily in favor of being a slave to any company large enough to have a group plan. Not only does the ACA makes it easy with its "no questions asked" approach, pricing is 30-50% less than the real cost of similar pre-ACA products. Also, if you have a slow business year, you can get a substantial premium refund via the tax credit, making insurance no longer a primary reason to "get a job."
pricing is 30-50% less than the real cost of similar pre-ACA products.

sure, but for many people who didn't need the full scope of what is now the baseline ACA coverage, our individual health insurance bills are much higher. (mine has gone up nearly 3x.)

you win some, you lose some.

If it was health insurance, then you'd presume places with national health systems (like the UK) to have drastically more entrepenureship, which is not the case.

There is something else going on here.

Because of a desire to avoid "long nights, excessive meetings" even at an hourly rate. Not all salaried positions are nights-and-weekends affairs.

ETA: Rereading, it looks like the article implicitly adds "at a SF startup" after "full-timed, salaried positions". Maybe those positions always involve crazy hours.

I nickled-and-dimed a client on change requests, alienating that client and making myself appear less professional. ... 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.

It's interesting the OP lists this as a mistake. I'd say he made the right move, as some clients will "just one more thing" you to death. Once the changes go beyond the agreed-upon scope, you should start charging. Alternatively, adjust your estimate to take into account client changes.

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.

This was the real mistake.

Yeah agree. Death-by-a-thousand-change-requests is a more common norm. Every change costs money, they need a price attached, otherwise it's just free candy.
Agreed. At the very least, invoice the client and issue a credit note against it, so that the client can see with their own eyes the actual cost. Then they might thank you for it.
Great article overall. I particularly liked the three mistakes you pointed out:

I nickled-and-dimed a client on change requests, alienating that client and making myself appear less professional. ... I would have been better served by her loving me than making a little more money.

I completely agree. In fact, this is part of the reason new freelancers often regret setting their hourly rate too low. It's important that you set a high enough rate that you can throw in unbillable work now and then without destroying your earnings. The best freelancers consistently under-promise and over-deliver.

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.

Constant haggling will make every new project a frustrating experience. I usually recommend setting a fair rate and then holding the line when clients ask for a discount. That's tough to do with your first few projects, but becomes easier once you're more confident about your rate and abilities.

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.

This depends on what type of projects you're looking to take on. Landing pages and presentation work will probably pay more if you charge per project (since clients won't believe you can more 10x faster than cheaper devs), but building new product features for startups is probably better at an hourly rate (since startup clients always change what they're looking to build).

If anyone is looking to get started as a freelancer/consultant or just looking to expand their existing business, take a look at our startup: http://getlambda.com.

> I completely agree. In fact, this is part of the reason new freelancers often regret setting their hourly rate too low. It's important that you set a high enough rate that you can throw in unbillable work now and then without destroying your earnings. The best freelancers consistently under-promise and over-deliver.

I agree with your agreement, but... it's hard for new clients to understand that you will not nickel and dime them. My rate is rather high for my market, but I do not nickel and dime. But it takes people a while to learn that, no, I don't bill for that 10 minute phone call. No, I don't itemize parking costs when I come to a meeting downtown. No, I don't charge them double time for tackling an emergency on the weekend.

And... some times clients end up going with someone else with a 'cheaper' rate, and I know they end up paying probably just about as much as I'd be charging them with an hourly or daily rate (I have both, but most people still prefer hourly, and I don't turn them down yet because of that).

EDIT: "nickel and diming" on things I outlined above I don't do. Full on changes - "we need 3 new forms" - still get charged for.

Your company looks interesting, do you limit yourselves to a particular region or are your services open to other areas?
Most of our clients have been in NYC or the SF Bay area and they usually prefer local developers. Even if someone is working remotely, it's helpful to be able to meet once a week or so.

We're happy to take applications from developers elsewhere, but we might not be able to get back to you for a while.

Great additional advice, two other thoughts building on it:

1) Make sure the client knows that you're doing work that's out of scope, but that you're not charging for. Otherwise they just think it's part of the package, and will expect it next time. I've seen consultants get upset that clients didn't appreciate all the extra work they were doing, when the clients didn't even know it was extra.

2) Stay firm on your rates, but offer discounts to clients for things that cost them nothing and help your business. Knock 10% off if they pay up front: it gives you cash in hand, saves you from having to follow up with accounts payable, and makes it harder for them to cancel the project. Offer a discount as part of a retainer or an ongoing support contract. Show them where there are opportunities for someone on their team to do the work, rather than engaging you. If you show them that you're a partner in helping them reduce costs, they'll value your services more.

Your second point is also a good way to deal with late payment penalties - something which it can be hard to add to a contract (as in, $x if you pay within 30 days $x + 10% if you're late).

Selling it as a discount for paying early is generally going to be easier to get a client to agree to - who doesn't like a discount? So it's $y normally, but $y - 10% if you pay within 30 days.

It's no effect on your bottom line, but it does make for happier clients!

For the record, some regions have "late payment" (with interest & charge) laws. Notably the European Union. http://ec.europa.eu/enterprise/policies/single-market-goods/...

I agree with your general point that an early-discount, as opposed to a late-fee, is an easier sell.

The US also has usury laws, which I found fairly surprisingly when I was just starting out. I previously thought usury was a strictly a historic crime, like adultery or eating bacon on the sabbath. But some people are very much offended by the idea of lenders charging too high an interest rate.

They actually become relevant for late fees, since you usually do want your fee to be punitive enough to encourage timely payments. The usual practice is set your fee to 1.5% per month or the highest percent allowed by law (i.e. just below usury if that's applicable in your state).

Usury is a different thing to do with charging high interest rates on loans. Many places have limits. This is default late payment fees.
IANAL, so ask one first if that's your thing, but what I've done is offer 20% off if paid within 15 days. Set your billing rate higher to compensate.
I nickled-and-dimed a client on change requests, alienating that client and making myself appear less professional.

One of the many advantages of charging a daily instead of hourly rate is that you avoid this kind of nickel & dime haggling with clients that nobody enjoys. If you batch up change requests into day-sized chunks and you've both agreed on the daily rate then it's a non-issue. It's just important to make sure that you and the client are in sync about the number of days spent.

Are you working with remote developers or on-site only?
Great advice getting non-sexy clients with proven revenue streams. During my contracting experience I found startups usually easier to talk with but wanting to pay lower rates.

Also for fellow contractors, I built this free automatic time tracker to automate that clock-in/clock-out drudge: http://wakatime.com

This looks like a really good tool that I'll make a note to try! Just a pointer: you might want to elaborate more on how time is logged and show people how it works. At first I was thinking it was only measuring the time I was actually hammering away at my keyboard with maybe 30 seconds until it stopped the timer or something.

Also, I haven't checked the Vim plugin yet (so this feature might already be there!), but if it's possible, you want to have a little icon that shows when it's tracking time, and maybe even the ability to log time manually from within Vim. Having said all this, I've never written a Vim plugin, so I'm not entirely sure what's possible.

Thanks! Here's more info on how time is logged: https://www.wakati.me/help/faq/general#what-happens-when-im-...

Would you prefer:

1. embedded video on the website

2. interactive walkthrough after signup

> if it's possible, you want to have a little icon that shows when it's tracking time, and maybe even the ability to log time manually from within Vim.

Both those are possible. The status icon would be great as long as it works with all types of vim configurations. Logging time manually is possible but I probably won't build that since there are already many start/stop timers out there and my goal is to be invisible and just work.

I can't believe no one has yet commented on the quality of developers the OP has found. Did the Great Frameworks War end this afternoon? Even as a Rails dev, I have to both laugh and also think, "yeah, I could see that" to the OP's experience of interviewing a "Rails engineer" who didn't know what ActiveRecord was.

Maybe it was a railroad engineer?

Really great read.

Are there really Rails devs out there getting work who don't know what ActiveRecord is or what gems do? That's a bit shocking to me. Maybe it'll be easier for me to get work than I thought.

The only places they are getting hired are likely the ones that have hr do the hiring. I doubt there are too many places where someone who didn't know what active record was could get a job.

I've done some interviewing and it's pretty surprising how bad most candidates are for technical positions.

I once was told to help interview some potential developers to work with me, but I was then told I wasn't allowed to "ask any very technical questions." (and their threshold for "very technical" was very, very low)

Of 3 people who were hired (one, then another a two years later, then another a month after that) the 3rd one turned out well.

It was quite frustrating.

I think that might just be a really, really bad recruiter. Of the couple dozen or so developers I've been involved in interviewing I've never met a single one who was that clearly incompetent. And that includes a lot of junior candidates.

I definitely do not believe anyone is hiring devs that bad at $100/hr. That makes me deeply suspicious of the recruiter. Hiring for Ruby jobs can be difficult but it's not _that_ difficult.

I was at a Ruby meetup tonight. Out of maybe 20 people there, 6-8 said their company was hiring. I'm in Houston, which isn't exactly a hotbed for the Rails world. Given enough demand and enough developers who talk a good game, that's not that surprising.

Also this info was coming from a recruiter. It's entirely possible that's what the staffing firm was billing, in which case the developer wasn't making that much bank.

What's mind blowing to me is expanding this "terrible candidates" point to more than just web developers. Anything which gets into a similar level of skill work probably suffers from the same issue.

When I went to college, the school had recently introduced a writing test as a requirement for graduation because employers were complaining about poor writing skills of students coming out of the school. The first year of the test, a ridiculously high percentage of people failed it. Several years later, almost nobody could pass it on the first try. I took a technical writing class in which the instructor was one of the graders for the test. She told us that good writing is a skill very few people have and that we should all expect to fail the test the first time.

As jobs become more technical, this issue will become more important.

Also mind blowing is to wonder if the inequality of our economy is simply a reflection of this. If 8 out of 10 candidates for X job are shockingly incompetent, can we complain that the the wealth of the world is owned by so few?

It's so important to get the right education. We need mentors. We need technical training for the real world to supplement typical college course work. We need for the people involved in these programs to be working professionals. I hate that as I look back at my life there is so much I had to figure out on my own which really could have been taught in schools. If I didn't stumble upon these lessons myself, I had to get lucky and come across a teacher who would go off the lesson plan occasionally to tell us how things really worked.

> If 8 out of 10 candidates for X job are shockingly incompetent, can we complain that the the wealth of the world is owned by so few?

Absolutely we can complain.

> Also mind blowing is to wonder if the inequality of our economy is simply a reflection of this. If 8 out of 10 candidates for X job are shockingly incompetent, can we complain that the the wealth of the world is owned by so few?

You could make the argument that these people are attempting to get jobs above their skill level, or outside of a field which they could excel in provided training. The problem of course is this silly free will thing, but that doesn't mean that wealth should be as unequal as it is.

> If 8 out of 10 candidates for X job are shockingly incompetent, can we complain that the the wealth of the world is owned by so few?

Apparently, the incompetent ones mentioned by the OP are regularly earning $100 per hour.

> If 8 out of 10 candidates for X job are shockingly incompetent, can we complain that the the wealth of the world is owned by so few?

Yes, we can. The people being complained about are rarely the ones drawing paychecks.

I think you may be conflating a couple of different issues. The wealth of the world being held by a relative few seems to be a problem with our economic system, not the educational system. For example, using monetary wealth as a measure of ones education would imply that Bill Gates has literally a million times better education than I do. You could make arguments, but it seems likely that while he may have started out with certain skills that were better than my own, he also benefitted from some amount of luck and the momentum that seems to be generated by the formation of a corporation that has some initial success.

With regard to getting young people the right training, yes I agree. I don't think the purpose of school should be job training. It should be learning how to learn, how to critically think, and how to develop ones own viewpoint on the world. That being said, a lot of students can greatly benefit from finding an area of interest (that may not be available at school) that inspires them to learn and becomes the catalyst for increased effort towards their education in general.

It sounds like you feel strongly about this topic. I'd encourage you to get involved in fixing this problem. A lot of schools these days are looking for "industry mentors". Especially at the middle school and high school level, you can make a real difference in kids lives. Not only can it allow you to address the problem you brought up, but it is also incredibly rewarding to know you are changing the course of people's lives for the better, even if in very small ways.

> and one knew all this but had the interpersonal skills of a serial killer. The creepy kind, not the mesmerizing kind.

Wow, I didn't like that line at all. What an arbitrary, immature, and harsh criteria to dismiss someone.

Good interpersonal skills are a crucial part of most teamwork. The judgment here might be a bit over-the-top (referring to candidates as "serial killer"-like), but the idea of weeding out a candidate due to bad interpersonal skills is definitely one I agree with strongly.
Not immature. If s/he is going to be client facing at all, taking calls, sending emails, anything, then s/he needs to be able to not cause visceral discomfort just by speaking, or at least fake it for long enough not to alienate clients. I had to work with a contractor (non-programmer) for a while who was like this and eventually our boss got rid of the guy because people were physically avoiding him, and he was co-located with their desks.
> There are enormous industries out there that need skilled programmers but lack the sex appeal of a startup or coverage in TechCrunch...

How do you find them?

Seconded. Do you just go to all the local businesses with craptastic sites, offer to bill them introductory rates then hope network effects happen?
Definitely not, unless you want to be making brochure sites for the rest of your freelancing career (nothing wrong with it, and I did that for a long time, but that's not really my idea of fun and it's generally not where the money is, either). You possess the ability to build tools for businesses, which help them save/generate $X00,000 every year--don't waste your time building brochure websites for $2000 when you can be doing that. (Of course, for certain businesses the website is just such a tool--and those businesses will be willing to invest far more in their websites. But a business that currently operates with a "craptastic" site probably isn't that kind of business.)

Think of everyone you know, that you see or speak to on a semi-regular basis. Friends, family, colleagues, etc. Where do they work? Where do their spouses/significant others work? What did their parents do when they were growing up? Write down the answers that you know, and make a mental note of asking them next time you see them or speak to them. Then ask them more about it. (Oh, your wife works in the office at ___? What does she do, exactly? Actually, what does the company do, I've always wondered...) This isn't an interview, and these aren't "leads"--you're just getting used to talking to people about work things, and familiarizing yourself with different industries. You'll probably realize that you have several contacts working in the similar industries--that might be important later.

Now, register a business name. Print some business cards. Make yourself a really simple single-page site. You're a "software development consultant" and you help businesses increase their profits by increasing revenue and reducing expenses. You build tools that save employee time by automating repetitive tasks. You build tools that help sales & marketing departments identify their best leads. You build tools that increase public exposure and make it easier for consumers to buy from your client (if the client business is consumer-facing), possibly directly online (I'm talking about websites/mobile apps). Now, buy a ticket to an event sponsored by your local chamber of commerce. You'll be directed to a table (or pick one, I guess, depending how things are run). Introduce yourself to the people at your table. Give them your business card. Ask them questions about their business, and genuinely give a shit about what they say (if you can't do that part, at least most of the time, this isn't going to work).

No one is going to hire you after that first event, because none of them will understand what you had to say. Practice communicating what you do. Also, think about everyone you met and try to imagine the problems they must face in their business every day. (You should have asked them that when you met them. They may or may not have had any good answers.) You don't have to pitch them on your ideas, not the first time around--it's just a mental exercise.

Rinse and repeat. You will eventually find someone who has been looking for your services. They're your first client. Once you get the hang of building tools that make business owners richer, and especially once you gain a track record of doing so, your services sell themself. When you get to that point, it's just a matter of closing. You go to networking events, you talk to people and exchange business cards. Later that day you send them an email saying "Hey, after we chatted I couldn't stop thinking about the problem you mentioned. Would it work to [X, Y, Z with software]?" They will be interested, you'll then tell them you can do it. You set up a meeting to discuss specifics, then you sell them your services.

That's the secret!

PS. A helpful side note, which I probably picked from reading patio11 at some point: you should basically think of your business as trying to replace pen and paper, or giant Excel spreadsheets, wi...

Excellent distillation of dozens of patio11 posts. The key, and what I think is the blocker for so many potential consultants, is the amount of human to human conversation that it takes. It is certainly a stumbling point for me!
Walk down the street in any industrial park and write down business names and research them.

Write down 10 names and you'll probably learn about 7 different industries you knew nothing about.

Thanks for sharing your experiences. I would urge you (from many years experience in a "previous life") to look for clients who understand the true value of what you offer. That's the only way the client will have "warm fuzzes" in the end and you'll have warm fuzzes plus a healthy business.

If at all possible, I would try and work in some sort of agile process, where the client is paying you by the hour but has absolute visibility into progress and choosing which features to prioritise. In many cases, they will enjoy the experience and insight dragging features around in a kanban board gives them.