I did a little e-mail interview thing recently with a Ukranian Rubyist named Dmitry Belitsky. I didn't realize it would go on his blog and so I used my customary level of caution while speaking, which is to say none at all. The most embarassing part is that Dmitry also interviewed Jamis Buck and Yehuda Katz, apparently aiming to collect the three Ruby developers in America with the most unusual first names. That in itself is not embarassing, it's very flattering to find myself in that group somehow, but the embarassing part comes when you compare our answers side by side:
How much time a week you work and how you keep yourself productive and focused?
Yehuda: I work 40-50 hours a week at Engine Yard and probably another 40 hours a week at home.
Jamis: I try pretty hard to stick to a 40 hour work-week, and sometimes it's even less than that.
Giles: I work like 10 hours a week and I have no cash at all.
I go onto justify myself:
This is kind of unusual, though. Usually I work 40 hours.
However, the reality is, it's "unusual" in the sense in that it's been this way consistently for only one year so far. And whenever I have a full-time job, I usually end up working 35 hours a week, not 40. I'm happy to bust ass on personal goals - I wouldn't be surprised if stress from all the conference travel I did in 2008 contributed to my hospital visits in 2009 - but I've always been greedy about my own time, and for the past year, I've been working part-time to free up time for my own projects.
I've discovered a number of things in the course of this year, the most obvious being that you should be careful what you wish for, and another one which I feel I kinda should have seen coming, which is that if you're determined to do your own thing, it's a good idea to understand business. Because of this, a lot of my recent reading has revolved around business, and what I've discovered leads me to the second thing I said in Dmitry's interview that might be a bit controversial:
What you want tell to past yourself from present moment about working with Ruby, clients, how to find good clients etc.?
I would say that there really is no such thing as a good client. Consulting is actually not a great business model.
It's true. Of course some clients are better than others - some are nicer people, some invite you to nicer parties, some pay better than others, some have cooler projects - but if you were to compare a bunch of options that all suck, fringe benefits don't change the suck, and when it comes to consulting, the suck is off the charts.
Consulting can be a fantastic way to learn. You get to work on a wide range of projects for a wide range of people, you see a lot of different examples of what works and what doesn't, and when you think about how you should approach projects, the question instantly becomes how to approach any and all projects, because you see so much variety in your work that you need a good general-purpose solution. This is why so many prominent consulting firms are leaders in things like Agile practices and testing frameworks. Consulting is a great way to focus on the fundamentals of your industry.
Consulting is also a great way to get income while you figure out a good business model, but it's a terrible business model, because a business model isn't about income. A business model is about equity. You set up a business because you realize it's better than having a job. You don't want to be in the position of having an idiot boss, quitting your job, working for yourself, and discovering that your new boss is an even bigger idiot.
I've been there and done that, and I can tell you, it stings your pride. But there's a much bigger flaw with it. The whole point of owning a business is that it makes money for you while you're doing other things. If you've got a business and you make less money while working harder, you don't own your business, your business owns you.
Anyway, a business model is about equity, and consulting is only useful for income. This is why consulting is a terrible business model. It's like going to a vegetarian restaurant for a hamburger. What you need is not on the menu.
I went to an interesting conference this summer. It was a conference of artists and art students interested in the entertainment industry. The speakers were concept artists from Transformers 2, prop and set designers from the latest Indiana Jones, and people like that. A veteran storyboard artist there said something that crosses the boundaries of industries. It fits the programming world just as well as it fits artists in the entertainment industry:
"You have two budgets, money and time."
Anyone who's ever had any kind of role in making a project succeed can see the truth in this. But ask yourself what it must mean, if this is true. It implies that both money and time are forms of wealth. And if that's true, then maybe my answer about how many hours I work isn't that embarassing after all. Maybe I've traded one kind of wealth for another (although maybe I would be smarter to get both). But if all these things are true, then you have to ask yourself, what are consulting firms doing, when they build income without building equity?
A consulting firm, any and all consulting firms, burns their time budget to pad their money budget. That's just another of saying that consulting is good for income and bad for equity. Things which make money for you not only give you money, they also give you time. But if you're only getting income, and you're not getting equity, your books only balance if you pretend the time budget isn't there.
I think every Rails consulting firm I know of is aware of this to some extent. Many have their own Web apps or are planning to. The 37 Signals idea of building something on the side is not exactly a new meme, and there's better writing on that topic out there already. People don't usually put Heroku in that category, but the founders of Heroku had a consulting firm before Heroku, called Bitscribe - I worked for them there - and one of the major wins for Heroku is that if you're a consulting firm, hosting and deployment can murder your profit margins. Working on an income-only business, the Heroku founders spotted an equity opportunity. That's the core of what 37 Signals did as well.
If you're a consultant and you relish your independence, I'm not trying to harsh your buzz. Setting your own hours is a wonderful thing, and defining your own work process won't just teach you about your industry, it'll teach you more about who you are. But I can't call it a good business model. A good business model brings you both equity and income, and makes sense not only in terms of money but also in terms of time.