

Ethics for Freelance Programmers - mcavaliere
http://mikecavaliere.com/ethics-for-freelance-programmers/

======
tptacek
An easy way to get out of the trap of having to intricately track your hours,
and at the same time get paid more, is to bill by the day instead of the hour.
All projects that you charge money for get a 1-day minimum. I've written a lot
about this:

[https://news.ycombinator.com/item?id=4101355](https://news.ycombinator.com/item?id=4101355)

[https://news.ycombinator.com/item?id=8706929](https://news.ycombinator.com/item?id=8706929)

[https://news.ycombinator.com/item?id=3420203](https://news.ycombinator.com/item?id=3420203)

(and, like a hundred more).

I get a mail from a contractor about every other month telling me how much
happier they are for having switched from hourly to daily. Daily should be
your default.

(Advanced skill: daily->weekly).

~~~
nlh
I argue a similar thing often -- we're all fundamentally driven by incentives,
and hourly billing creates a direct financial incentive to work more slowly
(and a financial disincentive to work more quickly), no matter how
honest/honorable we want to convince ourselves we are. Even if it's the
teensiest, tiniest, most subtle ping, there's a little ping in the back of
your head that will always say "if this takes me 2 hours, I earn $200. If it
takes me 1 hours, I only earn $100."

I know per-project billing is fraught with its own issues, but I'm much more a
fan of that vs. time-based billing. It may work out to cost the client more,
but it removes that layer of distrust ("is my engineer taking longer to
squeeze more money out of me?") and sets the incentive on the worker to get
the job done as quickly as possible, since now taking longer becomes the
disincentive.

I believe the only folks who should bill hourly are the ones who do jobs where
performance of work duties is directly correlated to hours spent working --
i.e. where doing a job "faster" doesn't change the time required. Security
guards, retail workers, etc.

I'm sure there are a ton of fallacies in the above arguments, so let's hear
'em...

~~~
kohanz
I often hear the touting of project-based billing, but the reason I'm afraid
to make the jump is that in my field (developing prototypes, often novel, for
scientific applications), the requirements are just not well-defined enough to
give an accurate estimate. If I went project-based, just to cover the risks
involved, I might have to charge 2x or 3x what it might actually take me. This
may work if your clients are big corporations for whom 10k is the same as 20k
is the same as 30k, but not when you're working with startups, boot-strappers,
etc.

I know the next thing people will say is find better clients, but some people
just have expertise in areas where the clients tend to be smaller and more
cash-strapped. Thankfully the work is interesting.

Right now I give estimates, but still provide hourly billing as a safety net.
Once I'm confident that my estimates are consistently accurate, I might move
to project based billing, but it also feels a bit sleazy because what I would
do at that point is just take ESTIMATE x SOME MULTIPLIER. In other words,
project-based billing sometimes sounds like a hand-wavy way to charge the
customer more without them being able to tell.

~~~
tptacek
I don't think project-based billing is necessarily the right way to go. Most
of the projects I've done have been time & materials.

------
dopeboy
Good points Mike.

"Be honest about what you can and can’t do."

Yep. Got burned on this once in my short time freelancing. Got cocky and
thought I could pull off implementing something in a technology I've never
used under a fixed contract. Live and learn.

"Question whether you’re building the right thing – within reason."

I really appreciate this point. I deal with mostly non-technical clients who
sometimes don't always know what they want. Being able to get to the core of
what they're after and say no to things that would make me a lot of money but
be useless to them is crucial.

~~~
c_moscardi
To me, the interesting bit here is that you have to be honest with yourself
about your limits as well - and in particular, be very good about
understanding those limits.

I think in this instance, ethics and economic incentives align - your
expertise is part of your value-prop to clients, and having a good grasp of
your limits makes you substantially more valuable. You get things done on-
time, with clear expectations set, and do a prompt and thorough job providing
what you're being paid for.

Personally, as a natural optimist, one thing I need to be especially careful
about is _not_ saying "yeah that's doable!" and setting expectations too high
- it can potentially lead to a messy situation. That said, one of my favorite
parts of freelancing is that I get confronted with new, unique challenges that
I've never dealt with before - there's a balance to be struck here.

------
quadrangle
Yet another site where the content is nothing but static text, but it doesn't
even show without JavaScript. Fix this.

------
V-2
While solid advice, this is not really specific to freelancing. Perhaps the
freelancing model offers more opportunities to _violate_ this code of conduct,
but that's it.

With some cosmetic rephrasing most of it would apply to developers with
regular jobs just the same. Only your customer becomes your employer.

Okay, we're not paid by the hour, but don't we still "owe it to the [employer]
to not burn their money unnecessarily", and isn't it still true that "time on
the phone with your girlfriend" isn't what one gets paid for? (I'm not saying
anyone is supposed to, or capable of flinging code for 8 hours straight -
obviously not, the boundary is a matter of common sense)

Not to mention honesty, doing a good job etc.

~~~
mcavaliere
I wasn't thinking about that while I wrote it, but yeah it's totally
applicable for non-freelancers as well.

~~~
V-2
Yeah, I think so. But I agree that this sort of moral compass is probably more
needed by a freelancer - more freedom, more decisions to make, so in this
sense I can see why you'd qualify it as such, even if these guidelines are
more universal...

------
bdcravens
I use Freshbooks with the Chronomate add-on. It lets me start a timer, pauses
during inactivity, letting me determine to keep/remove idle time, and easily
start/stop. It lets me document time in small chunks, so that each of those
chunks shows up as a line item. Not the only solution like this, but I've
found this combination to work the best for me.

------
borng
Use something like the free [http://rescuetime.com](http://rescuetime.com) or
[http://manictime.com](http://manictime.com) to track time spent.

Highly recommended whether working for yourself or a client.

------
mcavaliere
I wrote up some thoughts on this topic since it's something I don't see often
talked about.

~~~
DebasishPanda
Agree with the points. While billing hourly & tracking time on my own I tend
to keep going back to the timer application to pause or start for every small
occasion, depending whether I am working on the project or doing something
else, even if its for a minute or two, coz distractions are omni-present & I
can not work on something straight for 60 minutes at a time. That actually
increases my anxiety.

So I much prefer to bill per work/project basis as a whole.

One thing regarding ethics, sometimes a client will want to 'copy' a feature
they saw on another website, including the visual feature as well. That makes
me uncomfortable, I try to make variations of it, although I have never denied
work for this reason. May be next time I will atleast object strongly when its
a blatant copy.

~~~
fencepost
More years ago than I like to think about while I was working corporate, I
threw together something to track my active window titles. That may not work
to track vim in tmux, but I'd you're doing anything with website development
it should give you a decent overview (which may also surprise you and motivate
you to change your habits).

~~~
_neil
There's tools for this like RescueTime. There's also Editor plugins like
WakaTime that just track the time you spend on specific projects within your
IDE. Not sure if they have vim options, though.

------
amelius
I'm wondering if there are freelancers out there who hire somebody to find new
programming jobs for you?

~~~
scmoore
I haven't tried it, but there are services like
[http://letsworkshop.com/](http://letsworkshop.com/) which are similar to what
you're talking about.

------
sarciszewski
> Clients pay us by the hour, and we tend to cost per hour more than permanent
> employees.

My clients pay me by the day. You lost me already.

------
sakabaro
"time on the phone with your girlfriend is generally not."

Maybe avoiding gender specific comment, should be part of your ethics as well?

~~~
mamon
And maybe avoiding obsessing about genderism should be part of general human
ethics too? Just because 0.5 % of humanity is homosexual does not mean that we
should feel guilty when using words like "girlfriend"

~~~
V-2
Social justice warriors never lose revolutionary vigilance!

