2

I'm a 20 year old computer science student. I've been programming for the past decade or so. My dad got me a programming job at his work, writing front and back end website stuff (Java, JavaScript, etc.). I make 20 dollars an hour there, and I work 20 hours a week. Since the past college semester started, I've been on hiatus because I can't offer the time they need from me, but as soon as I'll have time again, they are willing to take me right back. I have no degree yet, so I feel ridiculously blessed to have this opportunity.

I got another job offer. This guy will have small projects for me to either accept or pass on, depending on my college schedule. It'll be like a contractor situation. This is better for my college schedule, obviously, because I don't need to commit to 20 hours a week and I can turn down any job I don't have time for.

I'm going to lunch with this guy in an hour or two, and I'm not sure howto talk about payment. My brothers work with this guy, and they say he's really slow about giving raises. He said he was willing to pay me competitively with my main job (though he expects me to work both if I have the time. They aren't mutually exclusive), so I think I can get 20 dollars an hour worth, but I am worried about having no mobility. And since their only other developer just left, I'm kind of their only option at the moment. I'd think that gives me some leverage, but he has been told what I make at the other job, which I believe has cost me some leverage.

How do I negotiate payment? I'm a capable developer but I am still early in my college's program. Should I aim for the 20 dollars an hour? My brothers said I need to know what I want and be firm. "This job would be worth putting into my schedule if I was getting x in compensation." How do I get paid by the hour if it's contract work? Will he want to pay me per project? If so, is that good for me? Should I ask for more?

5
  • 3
    Does this answer your question? How can I determine a reasonable salary to ask for?
    – gnat
    Commented Dec 27, 2019 at 18:31
  • In which State are you located in? Commented Dec 27, 2019 at 19:12
  • @StephanBranczyk I'm in Arizona
    – Howzieky
    Commented Dec 27, 2019 at 19:22
  • @Howzieky Not really an answer but I finished my CS degree at your age but the more important thing is that I didn't start learning how to program until I was 17 and I sucked at it until I was about 19. I did one summer job for a startup and made one quite the static website during my studies for AIESEC. I got a job at a big bank right after finishing the degree. I was no brainiac, I sucked at programming a couple of years earlier. I'm still there 7 years later. You've got a decade of practical experience. Don't think about your age. Think about your experience and ask accordingly.
    – Jonast92
    Commented Dec 31, 2019 at 10:24
  • @Howzieky Finally, people don't get offended when you ask for more than they are willing to pay. Especially when you're young. If you aim too high they know it's because you're inexperienced at these negotiations and at worst they'll just tell you how much they're willing to pay you. At best you get pretty close to what you wanted or exactly that. It's important to start as high as you can. Companies can justify hiring you above market rate but higher ups can be very hesitant to high salary increases once you've started, although your first rise should be one of the biggest ones.
    – Jonast92
    Commented Dec 31, 2019 at 10:26

2 Answers 2

13

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.

1

For balance between work and other parts of life (including studies), being the only programmer and being paid per task is tricky. Sure, it depends on various variables. You are the boss of your time, but time estimates are always tricky at this field. Maybe the specification is vague, maybe you overlook something in design or you sometimes debug a stupid mistake like using a wrong variable. Be sure all of this happens more often than you would want. If you cannot ask your colleague for a help (second pair of eyes, more experienced colleague or a colleague just having time for that), you have to fight it yourself. At this time, you might need to sacrifice your school or the project deadline. Well, sometimes you can ask in a forum, but it takes time to get a reply, so you don't always want it. Moreover, you probably don't want to ask some kind of questions in a forum, e.g., specific design decisions.

If the projects are reasonably small and you do not take multiple project at once, it can be manageable. I have done so roughly at your age and I don't regret. I didn't earn much of money that time, but I got valuable experience: First, I got some debugging skills and can-do attitude. Second, I realized what I don't want to do in long term. Having a fixed schedule can be quite more convenient.

I strongly suggest against taking multiple projects at once. That way, you can easily get in a situation where multiple projects get delayed and the you school-related tasks get sacrificed at the same time.

The working in a team can be valuable in some other ways. You can get some knowledge and insights from more experienced developers when they review your pull requests or when you discuss design decisions with them. You can also get more experience with version control systems (like Git) than when working alone.


The final decision is your. Neither option seems to be bad at all:

  • For money point-of-view, being paid per hour is likely better, as suggested by Stephan Branczyk.
  • For time management, being boss of your own time can be good, but it is not easy. If you are not good at it, it can be actually more challenging.
  • For experience, they will likely provide something different. Without a further knowledge, I cannot tell which one is more valuable for you.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .