Advice on doing business with non-programmers.

Real world scenarios (here "you" means "I") : 

 1. You are doing undergraduate "research" (in reality programming) for a theoretical CS professor who is a lousy programmer in general, let alone in the language that you will be using.
 2. You are trying to help a friend with an IT aspect of his/her startup idea.
 3. You are trying to pick up a programming gig on craigslist while in-between jobs.

Things that these people ***actually*** say:

 1. The math is all done, you just need to add some GUI codes to it. I think that you just need this class and that class and ... shall will meet in two weeks?
 2. Hey Hamish, here is a web site that I like. How difficult/long/much would it be for us to make something like that? Or ... hey take a look at this product. It is not that fancy; they just added GUI to it and made a website with some pretty graphics. I think we can make something similar or better in Visual Basic quickly.
 3. I looked at your resume and I must say Wow! It will probably take you like 30 minutes to do this. Here, I attached two excel sheets with 15 pages each. The data is all in there. I need to keep it as it is but just put it all on the same sheet so that it is all right there in front of you, you know what I mean? What will this quick job cost me?

I can think of several ways to communicate back:

 1. (wrong) "Yeah, let us meet in two weeks" (only to leave that next meeting with an "oh sh!$" face).
 2. A) Use scare tactics to set their expectations right - "Well, a good web developer makes 100k per year, and there are usually several people on the team, and good graphics designers are really hard to find, and outsourcing is an option, but is very risky, and most places ask for a very detailed spec that you need to sign, or else they will not make it for you, and that means we better start drawing exactly what we want the page to look like." B) Imply that they suck at programming - "You know, back when I took that VisualBasic class I though I was God and that I will moved mountains, and after X years of coding full time I look back with a smile and realize how much I sucked, and I bet my senior colleagues still look at me with a smile and think that I suck. Just imagine what a difference there is between two classes of programming and 20 years of experience. There is a reason why some contractors can pull up to $200 / hr.". C) Try to quit = "Look, I took up this work thinking that I would be done by now but boy did I underestimate - I cannot even quantify what fraction of a percent is already complete. You know, feel free to just take what I have and find someone who is better at this stuff. I will not charge you a cent. I have been skipping beach on the weekends too much lately, and sorry, but I do like chilling now."
 3. Give a high (but realistic, given uncertainty) estimate that is surely going to make their jaws drop.
 4. (Desired) Find a way to manage the expectation of this non-programmer person carefully in such a way that they do not think that you are a lazy slob or charge orbital fees.

Have you ever been in these shoes and actually manage to make things work out? Please share what you know.

Advice on doing business with non-programmers.
===


Real world scenarios (here "you" means "I") : 

 1. You are doing undergraduate "research" (in reality programming) for a theoretical CS professor who is a lousy programmer in general, let alone in the language that you will be using.
 2. You are trying to help a friend with an IT aspect of his/her startup idea.
 3. You are trying to pick up a programming gig on craigslist while in-between jobs.

Things that these people ***actually*** say:

 1. The math is all done, you just need to add some GUI codes to it. I think that you just need this class and that class and ... shall will meet in two weeks?
 2. Hey Hamish, here is a web site that I like. How difficult/long/much would it be for us to make something like that? Or ... hey take a look at this product. It is not that fancy; they just added GUI to it and made a website with some pretty graphics. I think we can make something similar or better in Visual Basic quickly.
 3. I looked at your resume and I must say Wow! It will probably take you like 30 minutes to do this. Here, I attached two excel sheets with 15 pages each. The data is all in there. I need to keep it as it is but just put it all on the same sheet so that it is all right there in front of you, you know what I mean? What will this quick job cost me?

I can think of several ways to communicate back:

 1. (wrong) "Yeah, let us meet in two weeks" (only to leave that next meeting with an "oh sh!$" face).
 2. A) Use scare tactics to set their expectations right - "Well, a good web developer makes 100k per year, and there are usually several people on the team, and good graphics designers are really hard to find, and outsourcing is an option, but is very risky, and most places ask for a very detailed spec that you need to sign, or else they will not make it for you, and that means we better start drawing exactly what we want the page to look like." B) Imply that they suck at programming - "You know, back when I took that VisualBasic class I though I was God and that I will moved mountains, and after X years of coding full time I look back with a smile and realize how much I sucked, and I bet my senior colleagues still look at me with a smile and think that I suck. Just imagine what a difference there is between two classes of programming and 20 years of experience. There is a reason why some contractors can pull up to $200 / hr.". C) Try to quit = "Look, I took up this work thinking that I would be done by now but boy did I underestimate - I cannot even quantify what fraction of a percent is already complete. You know, feel free to just take what I have and find someone who is better at this stuff. I will not charge you a cent. I have been skipping beach on the weekends too much lately, and sorry, but I do like chilling now."
 3. Give a high (but realistic, given uncertainty) estimate that is surely going to make their jaws drop.
 4. (Desired) Find a way to manage the expectation of this non-programmer person carefully in such a way that they do not think that you are a lazy slob or charge orbital fees.

Have you ever been in these shoes and actually manage to make things work out? Please share what you know.
