
Everything I wish someone had told me (about freelancing) - digitalnalogika
http://megrobichaud.tumblr.com/post/22147155867/everything-i-wish-someone-had-told-me-about
======
tptacek
This is a pretty good post; the latter half, I think, probably applies well to
all solo consulting practices.

I particularly liked how flexible her thinking was on billing. "Hourly, with a
cap" is one good way to do it; we tend to do "flat rate, fixed schedule" to
similar effect. My only critique is with using "hourly" as your time quantum.
Hourly sucks. It's probably some kind of standard in design, but even if
you're a designer, I recommend pushing it at least to "daily".

Has anyone else here obtained a "line of credit" (say from a bank)? Do we
think she just means "get an Amex card"?

Two other points I'd add:

* Incorporate: LLCs are (very) cheap and absorb most of the risks that are most likely to bankrupt you or take your house away.

* Get an accountant. Less cheap, but almost certainly cheaper than doing your taxes yourself; in several of the last 7 years, my accountant has made me money.

~~~
enobrev
While I generally agree with and recommend getting an accountant, I've found a
personal satisfaction over the past 8 years of doing my own taxes (10 years of
freelance development). It can be tedious and confusing, but it forces me to
stay in tune with the laws as well as my own income / expenses.

It doesn't hurt that it costs far less than an accountant, although that time
can be considered lost considering the billable time lost gathering
information, adding it all up and entering it properly (Mint.com has shaven
days off of this process for me).

Every year I tell myself I'll go back to having an accountant, but then I feel
I'll miss that couple days of better understanding where my money came from
and where it's gone. I also appreciate understanding the details behind the
chunk I send to Uncle Sam.

~~~
tptacek
Some people are like you. I suspect more people are like me. If you're not
sure whether you're going to enjoy / be good at doing your own taxes, screwing
them up is not a good way to find out. I managed to get myself into quite an
annoying hole by not delegating this particular business problem.

------
ChrisNorstrom
The biggest mistake I made when I started freelancing is I had NO plan on how
to take care of maintenance after I closed up shop.

Websites are living business cards that are almost always changing. So when
you take on 5 projects over a year. You're never really going to get away from
them. They are perpetual. You will always get calls later on about "fixing
this" and "changing that". And if you think you can simply give the client all
the code so they can go on to someone else, it's not that easy. Especially if
you're hosting everything for them (which I now understand is a big mistake).
Clients don't understand code well enough to be able to do that, and the
changes they need are sometimes so vital to their business, you'd feel like an
asshole for not giving in. Sure you can charge them for the changes but again:
If you get busy later on in life you'll always be haunted by your former
clients. It's hard to let go.

Learn from my stupid mistake. Before you even create index.php create a plan
on what you're going to do when you get sick of freelancing. Set everything up
around the idea that one day you will need to pass this all onto someone else.

~~~
goostavos
How _do_ you handle that sort of thing? Is there a cut-off or something? I've
never done any web development, but I can see how this would be a hairy
situation.

~~~
damoncali
You put it in your contract - it should be crystal clear. If at some point,
you don't want to continue (i.e. extend your contract), just refer them to
another developer. It's not that big a deal.

~~~
ChrisNorstrom
Oh it's quiet a big deal when you're not set up for it from the beginning, and
it costs you time and money to transfer your client to another developer.

When you handled everything for your client from domain registration to
hosting to ftp and email accounts and some of the scripts require relative
URLs (relative to your hosting account's directory on your hosting company's
server) and their mysql databases are with you. Surprise! You've got a few
hours to a few days of work ahead of you. Sure you can charge the client. But
again, if you're sick of that shit you can't just ditch them. If the other
developer wants to do it, they can't because there's no way you'd give them
admin access to your server. And since you're on a shared hosting server you
don't have the privileges to create a temporary admin account that only allows
access to the things that need to be transferred. You're stuck doing all this
work.

If you want to get rid of the client you now have to oversee that all these
things are successfully transferred. And no one can do this but YOU. The more
complex the client's site the more of a pain in the ass things become. Things
add up quickly.

Oh, Just a few things you need to do. :)

\- make backups of absolutely everything

\- Transfer the domain (up to 7 days)

\- Setup and reteach the client their ftp details

\- transfer email accounts and if they have an IMAP account, have fun backing
up all their emails and attachments and transferring them to the new IMAP
acount. Same applies to an archiving POP3 email account.

\- Go into all 3rd party scripts and reinstall everything

\- change all relative paths on all of those 3rd party scripts as well as
changing the mysql details (some scripts aren't simple "drag and drop then
reinstall" scripts) they are instead a pain in the ass to migrate because
certain options aren't stored in the mysql database that you just backed up.
Instead they're in the filesystem and you have to back that up and drag and
drop everything over, and if you re-install it you lose all those settings so
you have to spend a whole day planning out what exactly needs to be dragged
and dropped over.

\- transfer all backups little by little to their new destination

\- transfer over all the mysql databases

\- RE-train your client to understand ALL of these new changes and answer any
support emails when they have problems or something is wrong. (NO they won't
send emails to the new developer, they'll send them to you)

\- Answer emails from the new developer who doesn't understand exactly how
everything was done.

And a lot of this requires everything at the other host to be somewhat setup,
which requires a bit of cooperation between you and the new developer. And
when it takes most people 5 days to respond to an email because they're
overloaded with work (something I'm guilty of right now). A complete transfer
after ironing out all the kinks could take over a month.

If you were smart and planned ahead you would have just created a whole self
contained account with a host and had everything wrapped up together so when
you transfer your client to a new developer you just hand the new developer
the admin username and password to the control panel and leave. But you
didn't. You're Chris Norstrom and you're new to this crap and so you did
things the wrong and long way. ;)

~~~
damoncali
Ouch.

------
egypturnash
Learning to say no is one of the most important things IMHO.

In the Discworld books, there's a bit where the Best Smith In The World shoes
Death's horse. It's a thing he HAS to do now and then, because otherwise,
well, he's just not the Best Smith In The World anymore, is he? It's a little
weird and unsettling, but he does it, and he does it well.

Every now and then a job comes along that makes me feel like that. It's
something that the client is coming specifically to ME for, not just because
they like my style but because I am one of about three people in the world who
could do justice to this idea. And when one of those comes along, I make room
in my schedule for it. I warn the client that it may take a while - but it'll
be worth the wait.

But most of the time? Most of the time, I politely say "no". Once you've
gotten your head above water, this is not a luxury; keeping your workload
under control and not having twenty unfinished projects hanging over your head
makes you AND your clients happy.

(Underpricing yourself is also a terrible idea, and one this piece doesn't
address. Most of the stories of nightmare art commissions my friends tell are
of a too-cheap piece where the client demands endless re-dos for free.)

------
beosrocks
Steve Friedl's _So you want to be a consultant...?_ (
<http://www.unixwiz.net/techtips/be-consultant.html> ) is also a must-read.
Not only is Steve a Unix expert (and the brother of Jeff Friedl, regex
legend), he's an excellent writer as well.

~~~
pessimizer
That's the link that I needed most in this world right now. Thanks for posting
it.

~~~
beosrocks
My pleasure! Glad to hear you found it helpful. It played a large part in
shaping my course (and later success) as well.

------
54mf
If you're freelancing, you need to read Design Is a Job by Mike Monteiro. It's
an absolutely brilliant overview of the entire client/contractor relationship,
and how to operate in a way that protects both you and your client from any
potentially hairy situations. Can't recommend it enough.

<http://www.abookapart.com/products/design-is-a-job>

~~~
tptacek
Every time I read about this book I really want to buy it, but I hesitate
because I'm not a designer; how designer-specific is it? Like, the drama
involved in getting clients to accept a creative brief is interesting, but
it's not very relevant to what I do.

~~~
pacomerh
It's not designer specific. It feels more like the word 'designer' is being
used in terms of being a creative, rather than specifically a graphic
specialist. So it applies to freelancers who invent, but doesn't touch
developers issues either, so its weighted to professionals who need taste to
acomplish their job. It's a good book, I like Monteiro's no-BS approach to
things.

------
aantix
One additional note:

Automate wherever possible. Especially if you're a developer there are no
excuses. Automatically log your time using something like Time Sink (
<http://manytricks.com/timesink/> ). Adopt a convention for your git commits
so that you can use some of your git messages as line items for your invoice
(e.g. anything with "Feature: " in the front)

I wrote a gem called "Big Bucks No Whammies" (
<https://github.com/aantix/big_bucks_no_whammies> ) specifically for my
billing purposes.

~~~
tptacek
I'm a little confused by web developers' fascination with time tracking. In my
practice, if I'm working for you for a significant chunk of a day, that's the
day, gone. I am more likely to just do work for you for free than to bill in
less than 8-hour increments.

Do you really invoice clients for "11 hours, 3 minutes"?

I think I'd go so far as to say that the "N minutes" part of that invoice
actually looks a little unprofessional. (I'm sure you're a consummate
professional, though!)

~~~
patio11
I think time-tracking has fascination for a certain bracket of freelancers
because it is an easy, low-stress way to rescue waste from the business: you
are actually doing more work then you are invoicing, so if you actually
tracked it better your billings go up _and_ your client will be happy _and_ it
doesn't hurt any shadow beliefs about the evilness of making money.

There are better ways to accomplish these goals, like switching to daily rates
(or weekly rates). No client worth having cares what your work structure looks
like if you're capable of producing -- just move to a day rate, give them your
honest best effort, and deliver results.

e.g. Most of my clients are pretty happy with me. None of them would perceive
value from me slicing out 7 minutes from an invoice because, e.g., I wrote a
post on HN. (They just profoundly don't care about that, they care about the
deliverables, the feeling of happiness they get working with me, and --
ideally -- measurable results as a result of the engagement.)

~~~
seekely
"No client worth having cares what your work structure looks like if you're
capable of producing"

That is very easy to say when you are an established freelancer with work
being thrown at you. Just starting out though, there is a fine balance between
what's ideal and staying afloat.

~~~
tptacek
If you want to run your business suboptimally in the hopes that it will
attract your first clients, that's fine, but you shouldn't do so while
pretending that it's the right way to run a business. I have a hard time
thinking of clients who are particularly well-served by, say, 3-hour billings.
Customers that need sporadic work like this are probably far better served by
retainer arrangements. If you find yourself doing lots of 1, 2, and 3-hour
projects, you should consider a staff augmentation arrangement instead of
project billing.

For the most part, I think all consultants kid themselves about how productive
they are juggling multiple projects in a day. It's not as if this is some
great insight on my part. I'm a developer; I've read all the same stuff as
you. I just paid close attention to the stuff about getting "in flow". Re-read
Joel Spolsky's "Fire and Motion" essay.

------
chrisrhee
> You’re not your own boss, you’ve got about 30 different bosses

As a freelancer, you get to choose those bosses. Much harder to do at a
regular job.

> If you’re not on twitter, it reflects poorly on you. The design community is
> strongly linked to the start-up and web-dev communities.

Minor nitpick: _Our_ design community is strongly linked to the start-up and
web-dev community. But other design communities exist outside of the software
world :)

Good information in the article. Shared it with friends who are getting
started with freelancing. I'm sure they're in a better position now than me,
when I was starting out.

------
trucious
Post seems pretty enlightening, makes me wish I could find something similar
regarding software development specifically.

------
BillAtHRST
One not so minor point: you can't just "write off unpaid invoices" \- if
you're on an accrual basis (i.e., you record income when you bill), then you
can "write off unpaid invoices", but what you're doing is simply subtracting
the unpaid invoice from the income you earlier recorded; \- otoh, if you're on
a cash basis (i.e., you record income when you receive it), which is far more
common for small biz, then you never recorded the income for that unpaid
invoice, so attempting to write it off will get you in big trouble with the
IRS (or the equivalent in the Great White North).

------
dafritz
wow. thank you for that helpful post!

------
Mjux
real gem, in the mix. Oh, the definites, very. Thanks for the Joey Tribbiani
strictness.

~~~
lawnchair_larry
Of course we are not supposed to reply to spam, but this has me curious and
amused. Why is there a markov bot posting on HN? In hopes that it will be
coherent enough to get enough upvotes to be useful to someone?

------
typicalrunt
The "Fuck You. Pay Me." slide aggravates me. No matter how you dress it up
with asterisks, you're still swearing and showing a lack of class. I agree
that a large part of freelancing is making money (getting paid), but there are
nicer ways to say it. The rest of the presentation is really well put
together, but this particular slide seems out of place.

~~~
jwwest
This is a reference to an infamous talk given by Mike Monteiro who's infamous
in the design community.

<http://www.youtube.com/watch?v=vZGra65Nob4>

~~~
SkyMarshal
Which in turn was a reference to Goodfellas:

<http://www.youtube.com/watch?v=5ydqjqZ_3oc>

