How do I negotiate compensation for a job I don't know if I deserve?
I have no degree yet, so I feel ridiculously blessed to have this opportunity.
This is completely normal.
It's called the impostor syndrome.
Will he want to pay me per project?
Yes, he will want that. They all want that.
That's like being paid $2 an hour, because of course, the requirements will be super vague to start with and the scope will always expand.
It's like trying to measure the jagged coastline of California. The more you zoom into the coastline, the longer the coastline becomes. The length of the coastline becomes infinite that way. It's basic fractal math.
Normally, you ask 5 times what you think the project will cost, but at your age, you're bound to lose out even if you ask for that amount because you don't know how to gather good requirements or charge for all the so-called "little changes".
Whatever you do, do not accept that kind of arrangement. Projects always end up getting inflated. Also, keep in mind that even if a project is 80% or 90% done, the last 20% to 10% is always the toughest and the most elusive.
Also, be wary if he wants you to use someone's legacy code after that person has already quit the project. If someone quit before actually completing the project, there is usually a reason for that and that doesn't bode well for the code that got left behind. And if you haven't seen the legacy code he wants you to use, don't give your hourly rate until you've seen that code, or double your hourly rate just to be safe.
What you want is a "Time & Materials" contract:
time and materials (T&M) contract. An arrangement under which a
contractor is paid on the basis of (1) actual cost of direct labor,
usually at specified hourly rates, (2) actual cost of materials and
equipment usage, and (3) agreed upon fixed add-on to cover the
contractor's overheads and profit.
Look for a standard Times and Materials contract on the internet. Look for one that looks favorable to the contractor. If you show up without one. He'll have his own version, and it won't be very favorable to you. Or worse still, he won't have a contract at all, and entering into an agreement without a signed contract is not a good idea if you want to get paid.
Remove any mention of you accepting liability if things go wrong. Those contracts do exist, but they're only for senior developers that know what they're doing. They charge way more money than you will ever charge, plus they require malpractice insurance (which is definitely not cheap).
Ideally, you should look for a Time and Materials contract that makes no guarantee or warranty of your work, and that accept zero liability if things go wrong.
Should I aim for 20 dollars an hour?
Not for contracting because you'll have to pay your own taxes, possibly provide your own computer, keep your own books, you'll have to invoice your own hours, and you may even have to hunt him down to get paid (because unlike an employee, there aren't good protections for contractors when it comes to collections).
If your goal is $20, you should collect $40 an hour. But if you start negotiating at $40, he'll talk you down from that. Better you start the negotiation at $60 an hour at the very least. Or ask for $120 an hour if he forces you to use someone else's broken code that he doesn't want to let go of.
And do not tell him how much you're making right now. Just say that this information is not relevant and repeat that line as many times as you need. And do not let him compare you to an elance contractor, if he wanted one, he would hire one, but there is a reason he's not going that route, or most likely there is a reason he's no longer going that route.
Just to give you a personal example, the Android multiple-choice test on elance is four years old. So not only elance is testing developers on out of date information, but anyone and everyone, even most non-developers and most non-English speakers people can ace it since the questions haven't changed since 4 years ago and others have published their answers online.
Also, if I were you, I wouldn't volunteer the fact that it's your father that got you your current job (unless he already knows).
And last but not least, if something doesn't look right, or if the offer is too low, be willing to walk away. There is no shame in walking away. Sometimes, potential clients are just too stingy or unrealistic with what can be done.