OT -- billing and estimating, good resources?

OK, so for most of my career, I’ve done everything on an hourly rate.
Recently somebody kind of pointed out that if you bill by the
milestone you can work on multiple projects simultaneously without any
ethical problems, so you get increased efficiency. Does anyone have
any good advice/URLs/books on how to do cost estimates on a project?
I’ve really always kind of avoided the issue as one of those boring
“business” details, but it’s looking as if I should really sort of
figure it out.

Giles B.

Estimating time frames is the hardest thing I have to do. I wish I had
an answer for this question, but I don’t.

On Apr 27, 2006, at 1:23 PM, Giles B. wrote:

Giles B.

The one thing i really learned from consulting is to bill by the
hour. For reasons Chris mentioned, the milestone thing never really
pans out, and can leave you in periods with little to no income
should a problem arise that prevents you from reaching that milestone
on time. There is no ethical problem with billing multiple projects
hourly, just as long as you’re not billing every project 8 hours/
day. Bill what and who you work for, keep track of everything.

Also avoid fixed cost if possible. This is a hard thing to sell to
many clients, especially if it’s the first project you’re doing for
the client. Software development is very dynamic and it is nothing
like buying a loaf of bread from the store. Make your clients
understand this and you’ll both be happier at the end of it all.

I also did the multiple projects at once thing,and found that it
wasn’t a great fit for me, personally. It might work for you, so I
wouldn’t discourage you from trying it, but keep in mind that it can
create pressures that you may or may not be willing to tolerate. It
also would depend on the size and scope of each project, I’d probably
avoid doing multiple “large” projects at once. Sometimes you might
have to shelf one for a few days or a week to reach a goal in another
(this problem could be exacerbated by milestone based payments), so
make sure you take that into account when making bids.

Most of all, have fun!



I’ve actually been reading every post as they came in, just didn’t
want to say too much because the responses have been very good, wanted
to let the stream continue. Chris’ comment about the negative effect
billing by the milestone can have on agile processes seems especially
relevant, and I’m reading that pricing blog right now.

In terms of my situation, I’ve been doing this for a long long time,
but usually through various agencies, partly because they find the
work for you, partly because I didn’t want to deal with paperwork or
taxes. Recently though agencies have flat-out sucked at finding work
while I’m getting more offers than I can handle through personal
referrals. Also, one personal interest I want to explore, the company
only provides developer information to actual companies (even though
licensing is free). So it’s looking as if forming a company might make
some sense.

Giles B.

I’ll just say +1 to all the above. For almost my entire career I’ve
worked for my own businesses and although there is an allure to fixed
price projects, the end result is that you rarely end up in a
situation where you’re ahead.

If there’s no pain to be felt on the client’s side, there’s rarely a
reason for expediency, which means you have to manage your money very
well to make it all work out in the long haul.

I work on many projects at once, currently too many, but it’s rarely a
problem when it comes to billing. The biggest issue is time lost due
to “getting your head around” the project you’re on at the moment. To
help with billing, I run a screen capturing utility, TimeSnapper, that
tracks what I’m doing and when. This is mainly just to cover myself,
because you don’t want to get to the end of the week and say, “Now
what was I doing on Tuesday between 2 and 4PM.” I’ve also had
situations where the client looked at an invoice and said “You wrote
the same thing twice, are you double-billing me by mistake here.” I’ve
been able to look back and say, “Ah, no I didn’t communicate that
well, blah blah.”

This is really outside of your original question, but since I’m
discussing it. I prefer an agile approach and most of my clients are
agreeable to that. I make sure it’s clear upfront that I prefer to
work that way. I tell them look, let’s do this for a month. After
that time we’ll reevaluate where we are. If you like what you see
we’ll keep going. that sort of flexibility doesn’t work well on a
fixed bid situation. I also involve them early on in the project.
Keeping the client involved is huge for me. It helps their confidence
level high and it forces them to make a personal comittment to the
project as well. They’ll help you push it along a lot better if they
feel involved.

Good luck.



On 4/27/06, Michael T. [email protected] wrote:

help with billing, I run a screen capturing utility, TimeSnapper, that
tracks what I’m doing and when. This is mainly just to cover myself,
because you don’t want to get to the end of the week and say, “Now
what was I doing on Tuesday between 2 and 4PM.”

Sounds like a great idea!
Is there an application for osx that can be used for that?


Christoph Sturm wrote:

Is there an application for osx that can be used for that?

ActiveTimer is one.



Not a Mac guy, not yet anyway, but:

  • TimeSnapper - indicates they’re coming out with an osx version.

  • Spector (http://spectorsoft.com/) - Will do what you want but pricey.

  • WebPeek (http://www.melonsoft.com/products/webpeek/) - Inexpensive
    and looks like it will do what you want. It’s positioned for
    uploading via ftp, but you can just do that locally I’m sure.

Good luck.


Michael T. wrote:

well, blah blah."
It’s funny… I took a look at that, thought “That’s a bloody good
idea… I wonder how I can do that in Linux?”

I’m now running this script every minute, in a cron job :slight_smile: Hope
someone finds it useful…

#!/usr/bin/env ruby
require ‘fileutils’

save_dir = ‘/home/alex/Desktop_Snapshots’

time = Time.now.to_a
day_dirname = sprintf("%d-%02d-%02d", *time[3…5].reverse)
time_filename = sprintf("%02d:%02d:%02d", *time[0…2].reverse)
day_dir = File.join(save_dir, day_dirname)
time_file = File.join(save_dir, day_dirname, time_filename)
time_img = “png:#{time_file}.png”
time_ps = time_file + ‘.txt’

if !File.exist?(save_dir)
FileUtils.mkdir save_dir
if !File.exist?(day_dir)
FileUtils.mkdir day_dir
import -display :0 -window root #{time_img}
ps euU alex > #{time_ps}

Change constants to suit, obviously… Apologies if this has drifted
too off topic :slight_smile:

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs