HACKER Q&A
📣 cranjusmcb

How to Become a Contract Programmer?


I recently left my job, and while I will likely find a full time thing in the next few months I've decided to be a bit more picky about where I work this time around. (The last place wasn't terrible, but I found after about a year and a half that I was just very very bored). In the mean time I've been thinking of supporting myself by doing some contract programming, however, I've just never done this before so I'm completely out of my depth. What I'm looking for is:

a) Any good guides or books that I can read on the subject?

b) Are there standard contract templates that people generally tend to use? I imagine I could afford an attorney for this, but I don't really have one on hand and being unemployed at the moment I'd tend towards saving money where I can.

c) Any advice on places to find contract work? I have some professional contacts that might have some things for me, which I would prefer, but I don't want to limit myself to just my own network.

d) Any advice on red flags and things to avoid?

e) How do people generally structure payment? I'm guessing hourly, but I imagine also there might be safe-guards in place for both the client and myself if the project ends up being much larger in scope than estimated? (I've admittedly not been great at estimating projects in the past)

f) Just any general advice on this really

FWIW if it's relevant, I have a very broad skillset. I'm 37 and have about 15 years of industry experience. My previous job I was a Principle Software Architect, and my work was very heavy on K8s and containerizing a legacy Java application, while also developing microservices in typescript and nodejs. I'm a full stack developer, so I can do both frontend (react mostly), server, database (most familiar with postgres, mongodb and redis). I also have previous experience in game development, so I'm familiar with Unity, C++, C#, and writing OpenGL shaders and OpenGL code (I've recently been learning vulkan).


  👤 gus_massa Accepted Answer ✓
I'll repeat my usual comment in this cases: Read whatever patio11 wrote about this. In particular:

* "Getting Your First Consulting Client" https://www.kalzumeus.com/2012/09/17/ramit-sethi-and-patrick... HN discussion https://news.ycombinator.com/item?id=4533498 (173 points | Sept 17, 2012 | 45 comments)

* "Why Your Customers Would Be Happier If You Charged More" https://www.kalzumeus.com/2012/09/21/ramit-sethi-and-patrick... HN discussion https://news.ycombinator.com/item?id=4554669 (234 points | Sept 21, 2012 | 87 comments)


👤 GianFabien
I guess everybody's experience is different. I only found a few jobs through my network and ended up using contracting agencies. In my experience the agency's margin is comparable, and in some cases less, than the effective cost of my time in finding work, agreeing on the scope, invoicing, chasing payments.

👤 iExploder
books? ... use your contacts at first, this is important, you get your feet wet, get first successful project under your belt and probably will get paid on time and in full if your contacts are trustworthy

charging hourly is the beginning of contracting, but makes you count minutes and report as such which can be pain in the ass

level above that is setting up a daily rate

another level above is payment per milestone / project delivered - never tried this one, if attempted as solo contractor you can shoot yourself in the foot easily, as we all know software projects get underestimated all the time..

red flags? being hired on already running project to salvage it, because someone somewhere screwed something up by underestimating the complexity or their skills and now the deadline is close and budget was already drained ...


👤 mooreds
Can't recommend this book enough: https://www.amazon.com/Secrets-Consulting-Giving-Getting-Suc...

tl;dr (but really, read it): it's about the people, not about the code

If you want a contract, here's one that someone gave me years and years ago. I never had it vetted by a lawyer, so YMMV, but it is clear enough about the important things. https://www.mooreds.com/standardContract.html The Nolo books have contracts too.

I'd advise hourly billing and weekly or biweekly invoices getting started. There are lots of options but that is the simplest one for both sides.


👤 themodelplumber
a) They are out there but I personally never found them as helpful as even googling around. I'd connect with local contractors before that step.

b) Yes, they are available even at the standard office supply store. They can be purchased online very easily. Also some clients will send you their contract and you may have to be willing to push back and send yours, or find a way to compromise.

Be careful about attorneys. I took half a day to meet with one about a difficult situation. He nodded his head and listened. Then he said "well that (the other party's story) is a bunch of bullsh*t." Then later that week he copy-pasted a contract to use with future clients (I found the exact source), emailed it to me without including the items I requested, and billed me thousands of dollars for meeting + copypasta. He even got the duration of our meeting wrong and then rounded that figure up...and this guy was recommended to me by a professional! So then I ended up firing an attorney for the first time. lmao.

If you want a contract reviewed, IMO it's important to understand that a really analytical person can find holes in anything. And some attorneys pride themselves on analytical work. And so in effect, you can end up thinking you're paying for a contract, when in fact the attorney thinks the contract doesn't matter _at all_, and they think you're just in a weak position and want to pay for them to have your back. Just an observation though.

c) I went local and never regretted it. Faster turnaround on contacts, less impersonal, and better for building relationships in the community long-term. Local options for getting plugged in usually include connecting with college profs and students, clubs & user groups, email lists, DIY and amateur radio communities, and local online networking services like Alignable.

d) There are way too many to list for a beginner. Some tips that come to mind: 1) Generally don't talk about or give discounts, that's tacky and inappropriate for this work--rather, do your best work at a reasonable rate. 2) Draw up a spec (at least for yourself) and get agreement on the spec before talking project-term cost 3) watch out for people who seem to make things really personal, or mom & pop businesses, they can be the worst if they prefer to handle things with their house-style.

e) There was a great costs-money-PDF on this years back, I think it was called Double Your Freelancing Rate or something like it. IIRC the author encouraged billing by the project rather than hourly. But more importantly--you MUST be willing to stop work and say "hey look, the scope has changed and we need to discuss this" and you must have a way to record or annotate scope changes as they occur, so you can reference them later. Ignore this advice at your peril. Don't let a project "end up" anywhere if you can; catch it and gently but persistently call it out as it happens.

f) Network with people outside your area of specialty. If you think they'd be likely to recommend you to someone influential, no matter their field, talk to them.

Also listen to their advice, and ask for it when appropriate. A brand-new contractor DBA once contacted me to ask for freelance work. His rate was embarrassingly low and he insisted he was worth hiring because he was cheap and experienced. He also contacted several other colleagues, one of whom told me the DBA would not be hired for a job that he bid on, because his rates were suspiciously low. It was also telling that he was brand new but wasn't up to accepting any feedback on areas he didn't know anything about (contracting).

Hang in there, you'll hear people say you need to survive the first 5-7 years to know it'll really be a success. The real joy in this comes with putting yourself in control and keeping the control. Set policies, set boundaries around your time and pay. Good luck with everything.