Rails Consulting for Fun and Profit
joshsymonds.com
joshsymonds.com
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 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.
We're happy to take applications from developers elsewhere, but we might not be able to get back to you for a while.
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.
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!
I agree with your general point that an early-discount, as opposed to a late-fee, is an easier sell.
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).
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.
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.
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.
Absolutely we can complain.
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.
Apparently, the incompetent ones mentioned by the OP are regularly earning $100 per hour.
Yes, we can. The people being complained about are rarely the ones drawing paychecks.
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.
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.
Maybe it was a railroad engineer?
How do you find them?
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, with custom software. You can easily book yourself solid just doing that single task for every business you come across, and you will be providing an exceptionally valuable service. Suddenly the information which used to be in a stack of filing cabinets is no longer vulnerable to a office fire or a office flood (as long as you implement a good backup system--which is an upsell--and store their files in a remote server) and their giant collection of Excel files gets replaced with a database that's easy to search, with fine-grained access control and multiple users editing at once.
Write down 10 names and you'll probably learn about 7 different industries you knew nothing about.
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.
I've done some interviewing and it's pretty surprising how bad most candidates are for technical positions.
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 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.
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.
Also for fellow contractors, I built this free automatic time tracker to automate that clock-in/clock-out drudge: http://wakatime.com
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.
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.
>> 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.
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.
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.
Considering how much Rails does for you, that's crazy. Where is it like this?
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.
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.
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.
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.)
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.
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."
Fear, spouses, family commitments.
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.
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 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.
Many clients are not Ma's Diner. Many projects are not brochureware sites.
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.
There is something else going on here.
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.
Wow, I didn't like that line at all. What an arbitrary, immature, and harsh criteria to dismiss someone.