From: Jonathon McKitrick
Subject: How to bid on Lisp project (again, and for real this time)
Date: 
Message-ID: <1136756434.785072.259530@g14g2000cwa.googlegroups.com>
It's looking very possible that I might be able to use Lisp on my new
web project.

We are importing data into mysql and generating pdf reports including
graphs.  It's not a high-traffic site, so the guts will be an ajax web
app that sets up the queries to produce the reports.

I started with php, and can continue that way if I have to.  But I
finally got Lisp working with CLSQL, and would most definitely prefer
that route.  Since the libraries I need are pretty simple (just xml,
ajax, pdf) php doesn't offer much.  Except maintainability by someone
other than me.

The big question here is how to bid on a Lisp project.  I have no idea
how to tell how many hours it will take and how much to charge.
Actually, I could gestimate the hours, but I'm not sure how accurate it
would be, and how much I should charge per hour.

Any thoughts?

From: Pascal Bourguignon
Subject: Re: How to bid on Lisp project (again, and for real this time)
Date: 
Message-ID: <87fynxwpc1.fsf@thalassa.informatimago.com>
"Jonathon McKitrick" <···········@bigfoot.com> writes:

> It's looking very possible that I might be able to use Lisp on my new
> web project.
>
> We are importing data into mysql and generating pdf reports including
> graphs.  It's not a high-traffic site, so the guts will be an ajax web
> app that sets up the queries to produce the reports.
>
> I started with php, and can continue that way if I have to.  But I
> finally got Lisp working with CLSQL, and would most definitely prefer
> that route.  Since the libraries I need are pretty simple (just xml,
> ajax, pdf) php doesn't offer much.  Except maintainability by someone
> other than me.
>
> The big question here is how to bid on a Lisp project.  I have no idea
> how to tell how many hours it will take and how much to charge.
> Actually, I could gestimate the hours, but I'm not sure how accurate it
> would be, and how much I should charge per hour.
>
> Any thoughts?

Bid the same as any other project, and cash the profit! :-)


-- 
__Pascal Bourguignon__                     http://www.informatimago.com/

"Logiciels libres : nourris au code source sans farine animale."
From: Jonathon McKitrick
Subject: Re: How to bid on Lisp project (again, and for real this time)
Date: 
Message-ID: <1136811095.131226.41560@g43g2000cwa.googlegroups.com>
Pascal Bourguignon wrote:
> Bid the same as any other project, and cash the profit! :-)

Okay, then, let me clarify:

This is my first-ever freelance project.  I've never bid on *any* kind
of a software project before.  The closest I've gotten is my old boss
and I meeting for 2 hours in the conference room, drawing all over the
dry erase board, and ending with 'so how long before we can have
something working?'

Do I just do the same thing, multiply by my desired hourly rate, and
submit that figure?  Could it really be *that* easy?  ;-)
From: Peder O. Klingenberg
Subject: Re: How to bid on Lisp project (again, and for real this time)
Date: 
Message-ID: <ks4q4dr200.fsf@beto.netfonds.no>
"Jonathon McKitrick" <···········@bigfoot.com> writes:

> Do I just do the same thing, multiply by my desired hourly rate, and
> submit that figure?  Could it really be *that* easy?  ;-)

You need to multiply by pi^n to account for changing requirements,
delays and unforseen problems.  N depends on how well you know the
client and how confident you are in your time estimate.  Then you need
to multilpby by a kiss-up factor < 1 depending on how badly you want
to win the bid.

Getting the values of N and the kiss-up factor right is what separates
good salespeople from bad.

...Peder...
-- 
I wish a new life awaited _me_ in some off-world colony.
From: Jonathon McKitrick
Subject: Re: How to bid on Lisp project (again, and for real this time)
Date: 
Message-ID: <1136814619.433742.167330@g14g2000cwa.googlegroups.com>
Peder O. Klingenberg wrote:
> "Jonathon McKitrick" <···········@bigfoot.com> writes:
>
> > Do I just do the same thing, multiply by my desired hourly rate, and
> > submit that figure?  Could it really be *that* easy?  ;-)
>
> You need to multiply by pi^n to account for changing requirements,
> delays and unforseen problems.  N depends on how well you know the
> client and how confident you are in your time estimate.  Then you need
> to multilpby by a kiss-up factor < 1 depending on how badly you want
> to win the bid.

The good news is the project is broken up into smaller deliverables
rather than a huge finished product that would take months to complete
and would introduce many more unpredictabilities.  Also, the kiss-up
factor = 1, since I already have the job.  I'm just pricing the next
stage.

> Getting the values of N and the kiss-up factor right is what separates
> good salespeople from bad.

What are valid ranges for N?
From: Peder O. Klingenberg
Subject: Re: How to bid on Lisp project (again, and for real this time)
Date: 
Message-ID: <ksr77hpkwi.fsf@beto.netfonds.no>
"Jonathon McKitrick" <···········@bigfoot.com> writes:

> What are valid ranges for N?

I would use at least >= 1, but I'm not a good salesperson :)

...Peder...
-- 
Sl�v uten dop.
From: Pascal Bourguignon
Subject: Re: How to bid on Lisp project (again, and for real this time)
Date: 
Message-ID: <87slrxv5xk.fsf@thalassa.informatimago.com>
"Jonathon McKitrick" <···········@bigfoot.com> writes:

> Peder O. Klingenberg wrote:
>> "Jonathon McKitrick" <···········@bigfoot.com> writes:
>>
>> > Do I just do the same thing, multiply by my desired hourly rate, and
>> > submit that figure?  Could it really be *that* easy?  ;-)
>>
>> You need to multiply by pi^n to account for changing requirements,
>> delays and unforseen problems.  N depends on how well you know the
>> client and how confident you are in your time estimate.  Then you need
>> to multilpby by a kiss-up factor < 1 depending on how badly you want
>> to win the bid.
>
> The good news is the project is broken up into smaller deliverables
> rather than a huge finished product that would take months to complete
> and would introduce many more unpredictabilities.  Also, the kiss-up
> factor = 1, since I already have the job.  I'm just pricing the next
> stage.
>
>> Getting the values of N and the kiss-up factor right is what separates
>> good salespeople from bad.
>
> What are valid ranges for N?

If you will be programming in object-oriented style, you could apply
this formula which was published in JOOP between 1990 and 1996, IIRC.

#+emacs
(defun ooestimate (project-name
                   key-class-count ;; 1+
                   reusable-domain-objects ;; 0+
                   user-interface-complexity ;; 1,2,3
                   person-count ;; 1+
                   experience-ratio ;; [0.0 .. 1.0]
                   )
  (interactive "sProject name: 
nKey Class Count: 
nReusable Domain Objects: 
nUser Interface Complexity (1 2 3): 
nPerson Count: 
nExperience Ratio [0.0,1.0]: ")
  (let* ((person-day-per-class (+ 15 (* 2.5 (- 1.0 experience-ratio))))
         (total-class-count    (* key-class-count 
                                  (+ 1.0 user-interface-complexity)))
         (total-person-days (* total-class-count person-day-per-class))
         (total-months (/ total-person-days 20.0 person-count)))
    (insert
     (concatenate 'string
       (format "OOEstimate for Project %s:\n\n" project-name)
       (format "   key class count:           %6d\n" key-class-count)
       (format "   reusable domain objects:   %6d\n" reusable-domain-objects)
       (format "   user interface complexity: %s\n"
         (cdr (assoc user-interface-complexity
                     '((1 . "simple") (2 . "medium") (3 . "complex")))))
       (format "   person count:              %6d\n" person-count)
       (format "   experience ratio:          %6.1f\n" experience-ratio)
       (format "\n")
       (format "   total class count:         %6d\n" total-class-count)
       (format "   person day per class       %6.1f\n" person-day-per-class)
       (format "   total person days:         %6d\n" total-person-days)
       (format "   total months:              %6d\n" total-months)  ))))


But I must say that when I tried it on a client he didn't like the prediction...

-- 
__Pascal Bourguignon__                     http://www.informatimago.com/
Kitty like plastic.
Confuses for litter box.
Don't leave tarp around.