Programming cost question

  • Thread starter Thread starter Guest
  • Start date Start date
G

Guest

Not sure where else to ask this question . . .

As a small-time database programmer (I do jobs for several non profits) I
recently had a discussion about charging by the hour or by the job. I've
always charged by the job, but put my estimated hours on my estimates. I
have gone well over estimated hours, but rarely under, on various projects.
I've never changed my final bill to the customer to reflect that, or tried to
negotiate additional cost. The question was asked recently (as I completed a
phase of a project in about 4 hours less than my estimate) about whether I
should reduce my final invoice accordingly. Can I get some thoughts from the
self-employed programmers out there about charging by the hour vs. charging
by the job?
Thanks!
 
I first started Contract Programming in 1988.

The VAST MAJORITY of the time has been HOURLY. I can only remember a minute
few where I programmed by the job...and that was usually a very small job.

HTH - Bob
 
John

From your description, it sounds like you've come to realize that it is very
difficult to do an accurate job of predicting the future (i.e., how long a
job will take).

Given that under-guessing may be the only way to land a fixed-price
contract, the only way to not "eat the overage" is to have a rigorous
change-order process as part of the deal.

Or, you could decide to work hourly, and offer smaller, bite-sized
sub-projects as a way of ensuring that neither you nor your customer is
"out" too much at any point in time. That's the route I've taken.

--
Regards

Jeff Boyce
Microsoft Office/Access MVP
Microsoft IT Academy Program Mentor
 
John said:
Not sure where else to ask this question . . .

As a small-time database programmer (I do jobs for several non
profits) I recently had a discussion about charging by the hour or by
the job. I've always charged by the job, but put my estimated hours
on my estimates. I have gone well over estimated hours, but rarely
under, on various projects. I've never changed my final bill to the
customer to reflect that, or tried to negotiate additional cost. The
question was asked recently (as I completed a phase of a project in
about 4 hours less than my estimate) about whether I should reduce my
final invoice accordingly. Can I get some thoughts from the
self-employed programmers out there about charging by the hour vs.
charging by the job?
Thanks!

I would say you should charge as agreed, time or job.
 
Hi John,

I'm not a programmer, so I can't address your question directly, but I am
and have been self-employed for the past 22 years. Approximately 80% of my
jobs are fixed bid.

I think each job should be evaluated on its own merits. If it's a task I'm
comfortable pricing, then I'll price it (it's been my experience that most
clients prefer knowing upfront exactly how much damage you're going to
inflict on their pocketbook). If not, then I'll try to negotiate a "fair"
hourly wage, taking into account my SE taxes, insurances, and what all. In
the end, I'm usually no better off financially favoring one approach over
another. The major difference for me is who I'm answerable to with my time.
If I'm working by the hour, the client's perception of my efficiency weighs
heavily on my mind. If I'm on fixed bid, I'll certainly stress about my
efficiency, but at least I don't have to justify it to the client, only to
my wife!

As an aside, I think it's fine to put your projected time on the proposal to
justify your price; clients like seeing the cost breakdown, as it gives them
an apples to apples comparison should they choose to shop your bid. However,
once agreed upon by both parties, the price is the price, regardless of
whether you get killed or make a killing. There is no reason whatsoever to
show them your profit/loss sheet UNLESS you're trying to justify charging
them more than the agreed-upon contract price. In this case, assuming you've
stipulated, and they've accepted, the terms for handling extras, you'll need
to add these as "line items" on your invoice.

If for some reason, you do come in way under budget, and you feel that your
profit is too egregious, just reflect upon those countless jobs where they
were literally costing YOU money in the form of opportunity cost.

Anyhow, sorry if that was a bit OT.


Brian
 
I have to agree with Brian's comments.

My experience is in the management field. I have an MBA. Recently, I threw
in my day job and became self-employed as a programmer. I quote on the job at
hand based on what I think I can realistically charge for it. I won't
undercharge unless I can see future benefits arising from getting the job.

Don't be afraid to overestimate the time required to do a job. You must
build in a buffer. Remember that your clients are going to benefit greatly by
using a product that you create, and that benefit value is normally going to
be higher than that which you receive.
If you happen to bring the job in undercost, that is your cream. You will
very rarely find a client that is willing to pay more than the original
estimate, so why should you charge less if you happen to work harder or
smarter.

And even though you are doing this for not-for-profits, they will find the
dollars needed to do the job. Just provide them with a quote that they can
use to raise funds for the project. One of my management jobs was running a
not-for-profit, they run based on ordinary business principles and there are
huge amounts of money out there for them, so don't get pangs of guilt when
you feel that you are profiting from a charity.

Best of luck with your endeavours,

Nick
 
For very good reasons, details of which are probably not appropriate for
discussion in a technical newsgroup, I work only on a "time and materials"
basis.

Interestingly, that was the only way we worked in a very successful
corporate software contracting organization in which I spent half of my
corporate career, too.

Larry Linson
Microsoft Access MVP
 
Just 2 cents worth... no more and no charge if i go over!

If you plan to bid a job as a total price to accomplish the desired
task, it is imperative that you know "exactly" what the customer
expects. Unfortunately most of the time the customer himself doesn't
know what he really wants.
To protect your time and interests in that situation , you need to
spend a bit more time on the front end of the projection of completed
works before you bid the job. Ask lots and lots of questions, and ask
the right people...You need a clear picture of what the processes are,
and how your project will function in those processes.
Once you have an "accurate " picture you need to formalize the end
product in writing to the customer.. The final picture must be detailed
enough to be measured in progress and upon completion of the project.
Your bid for the project can be made based upon the end product picture
you have described in your bid.
In the bid document be sure to indicate that any major component
additions or significant changes to the project final details,after the
bid has been accepted and work hase been started, will be billed at an
hourly rate. ( this means the customer needs to give you the complete
picture of what he wants or he needs to be prepared to pay for it
later)

Good Luck
3 minutes over.....No charge!!
 
My 2 cents -

Your being paid for your knowledge with MS Access. You gave them a quote up-front for the job. You completed the job. The reason you were able to do it faster is because of your proficiency. You shouldn't lower the final price - especially if it was agreed upon before hand.

--
Robert L.
Not sure where else to ask this question . . .

As a small-time database programmer (I do jobs for several non profits) I
recently had a discussion about charging by the hour or by the job. I've
always charged by the job, but put my estimated hours on my estimates. I
have gone well over estimated hours, but rarely under, on various projects.
I've never changed my final bill to the customer to reflect that, or tried to
negotiate additional cost. The question was asked recently (as I completed a
phase of a project in about 4 hours less than my estimate) about whether I
should reduce my final invoice accordingly. Can I get some thoughts from the
self-employed programmers out there about charging by the hour vs. charging
by the job?
Thanks!
 
I agree...

.... the customer doesn't know what s/he wants and cannot articulate it
initially.

.... the customer changes his/her mind as s/he gets a good look at what was
(is being) produced.

.... the customer's world changes, as does the availability of appropriate
solutions/approaches.

.... the customer needs to pay for the work it takes to produce something
s/he can use.

All these tell me that, unless it is an insignificant small task, the
"specs" cannot be known up front.

.... and even if the customer thinks it is only an insignificant small task,
why is s/he hiring someone?!


--
Regards

Jeff Boyce
Microsoft Office/Access MVP
Microsoft IT Academy Program Mentor
 
Hi Phillipe,

the more you can educate/train your customers, the better they will
appreciate you.

Most people have absolutely no idea what goes into programming. As they
learn (as you teach them), they understand better. As for the hours
under on a phase -- stick with your hours not your estimate (even though
it would not be hours had it gone the other way) -- this builds trust.
You can also suggest they use those hours for training and questions,
which, undoubtably, there will be.

Tell them that the next job you do for them will be for a fair hourly
rate. It is rare that I will do more than one bid for a customer as I
always put way more time in (due to my pickiness about it being perfect
and building in all kinds of capabilities they did not ask for). Even
on a bid, I document hours so they see what really went in -- and I
never charge for my own learning or research.


Warm Regards,
Crystal
*
(: have an awesome day :)
*
MVP Access
Remote Programming and Training
strive4peace2006 at yahoo.com
*
 
Hi Phillipe,

as for how much per hour... depends on your overhead and your
proficiency (amazingly, those with not so many skills often think their
knowledge is more valuable and I have come in behind many of them and
cleaned up), cost of living in your area, available business, as well as
how bad you need the work <smile>

If you price yourself too low, others will think you do not know what
you are doing (unless you have already gained trust)

.... anywhere between 30 (as long as you are a VB programmer and not a
macro writer) and 120. Until you build business, go for the lower end
-- better to have work than not. If you do not have more than 5 years
experience, you definitely belong on the lower end.

Another way to protect yourself is to phase out the work with a clause
for changes. If you want a sample contract, email me.

Warm Regards,
Crystal
*
(: have an awesome day :)
*
MVP Access
Remote Programming and Training
strive4peace2006 at yahoo.com
*
 
Hi Strive
Thanks for the answer. I'm not actually a programmer or looking to start a
business at this. I just started seriously using Access less then a month
ago and in an effort to improve my skill I voulenteered myself to my BDE S1
to build him a database to track personnel strength. As I started to get
into it I began to realize what an enourmous undertaking it would be. There
are 27 different inputting users and 6 that pull reports from the inputs, all
at distributed locations. Anyway my question stemmed from wondering what
kind of deal the Army and the tax payer was getting since I get paid the same
reguardless.
 
Per Philippe Perrault:
How much per hour is someones knowledge of MS Access generally worth?

In my experience, anywhere from $30 to $125 per hour - depending on the person,
the location, and the customer.

I think the highest hourly rates come in urban/near-urban/megalopolis areas when
somebody is a mini-personality cult with the users (i.e. they like them, they
trust them, and they deliver) and their project is a little slice of a very
large pie.
 
Philippe Perrault said:
Thanks for the answer. I'm not actually a programmer
or looking to start a business at this. I just started
seriously using Access less then a month ago and in
an effort to improve my skill I voulenteered myself to
my BDE S1 to build him a database to track personnel
strength. As I started to get into it I began to realize
what an enourmous undertaking it would be.
There are 27 different inputting users and 6 that pull reports
from the inputs, all at distributed locations.

If by "distributed locations" you mean locations not on the same LAN, then I
hope you have done some research on how you intend to accomplish this -- the
split Access front-end, Jet back-end just does not work well, if at all, on
a WAN, and generally, never works at all over the Internet. Such an
arrangement can be designed/engineered to work by using Windows Terminal
Services, or by using a server database as the back-end, or by creating a
web-based application to do the communication with users accessing and
updating the database on a web server. Using Windows Terminal Services is
simple to implement for experienced network / system administrators; the
others are not in the "simple" category, so you should expect to be asking
questions here with some regularity.

I have introductory-level presentations on multiuser (split Access-Jet) and
ODBC client-server implementations that you can review at
http://appdevissues.tripod.com (they are several years old, but are still
generally accurate through Access 2003). Googling on client-server, and
visiting the websites of Tony Toews http://www.granite.ab.ca/accsmstr.htm,
Jeff Conrad http://www.accessmvp.com/JConrad/accessjunkie.html, Albert
Kallal http://www.members.shaw.ca/AlbertKallal/ and the Access Web at
http://www.mvps.org/access will lead to more information on the subject.

Larry Linson
Microsoft Access MVP
 
If by "distributed locations" you mean locations not on the same
LAN, then I hope you have done some research on how you intend to
accomplish this -- the split Access front-end, Jet back-end just
does not work well, if at all, on a WAN, and generally, never
works at all over the Internet. Such an arrangement can be
designed/engineered to work by using Windows Terminal Services, or
by using a server database as the back-end, or by creating a
web-based application to do the communication with users accessing
and updating the database on a web server.

Replication is also an option, though with fixed locations, Terminal
Server is by far the better solution.

These days, the only place I consider Jet replication to be
appropriate is with laptops (or workstations) that have to be used
in circumstances without a full-time network connection (either
LAN/WAN or Internet). Most of my replication projects are with
laptop users who have to edit data in the field and then come back
to the office and synch their changes with the "mother ship."
 
Back
Top