So Now I'm a Contractor / 16 Tips for Being a Contract Programmer

Skip my personal experience and go right to the list.

I realized, last week, that I am a contract coder.  I never intended to be one; I wanted a job with a regular boss and a 401k and a health insurance plan.  Sure, contractors earn more, but they also deal with a lot more instability in their daily lives.  As of right now, I'm not sure if I'll be employed next week.  I have a job lined up, but it's only a temp deal for around $1500 total.  That covers about a month of my living, if I stretch it thin.

Right now I have a desk and a job and an employer.  My employer doesn't seem to exist sometimes; I have very spotty (once-twice a week) contact with my boss, and I deal mainly with the customer over the phone.  My paychecks are irregular; I work 40ish hours a week and get my pay at intervals ranging from 6 to 42 days.  Right now my paycheck for the 1st was received on the 16th.  Over the past few months I've accrued over $600 in late fees due to instable pay.  This has all been on the same job with the same contract.  Well, contract is a funny word; I didn't sign anything.  Right now I go to work and do some stuff and then get paid an agreed-upon amount.  If myself or my employer ducks out at anytime, I've got no legal reprisal.  I doubt I'll even get 1099ed.

This life sucks.  Sure, my friends are making around $7-10/hour, and I'm getting ~$30, but I lose tons of my money to extras.  I have to buy my own computers, my own IDE (and add-ons), I have no automatic tax withdrawal, I have to get health insurance through a third expensive party.  I'm not guaranteed pay at all.  This is, by far, the worst possible career choice right out of college.  If I was at a startup, that'd be something different.  That'd be a common goal with the allure of hitting it big.  No, the best thing I have to look forward to is a slightly bigger paycheck that might on time and not getting nailed by the IRS.

I repeat: do not start contracting for yourself right out of college.  Unless you like the adventure and the unknowns or you just have a lot of extra money lying around (Like, taking out loans instead of paying them back, like I start next month), I would not recommend it at all.  If you do it on the side to get some extra cash?  That's fine; that's extra.  But when you first get on the scene and are trying to make some money to eat more then hot-pockets and beer, get a stable job.

If you decide to ignore my above advice, I have some other, possibly more helpful advice that I've learned (and wished I'd followed) as a contractor.  I've only been doing this about half a year, but I think it's worth it's salt.  It's born out of sweat and tears (well, not tears, but a nervous breakdown or two.  Well, the salt that would have been in the metaphorical tears, so lets go back to tears). 

Enough with the intro shit, lets get right to it*.

  1. Get your taxes done professionally.  There is a ton of stuff you (and I) don't know about that you can get money back on.  Well worth it.
  2. Sign contracts with your employers.  Starting out it's easy to use the line "Oh, sure, I'll write up that program for $15/hour."  Don't do it.  Nothing sucks more then bugging somebody for money when you don't have a written agreement.
  3. Don't write code without signed specifications.  Write your specifications jointly with your clients and agree what the program will and will not do.  Software Requirements from Microsoft Press is a great book, and a must read for any independent contractor.  Even if it's a simple list of 'This software will/this software won't', it's better then nothing.
  4. Make sure your employers give you the right tax forms.  In GA, if you do over $700 of business with somebody, they need to send you form 1099.  This may be a bigger issue with some people, but I find it pretty important.  I don't like living in fear of huge fines.
  5. Understand how software licensing works.  When I first got out of school, I had my wonderful MSDNAA academic licenses of Visual Studio, SQL Server, Visio, Windows Server, Access... well... every Microsoft product but Office.  Pretty much everything you do now will be under the 'unacceptable' category.  There's probably a few good resources on the web, but actually going through and reading the EULA before clicking Next does wonders too.
  6. Don't spend money until you actually have it.  If you send out an invoice for $1000, don't spend the money until it's back in your hands or in your bank account.  Don't assume all clients will pay prompt; calling them on the phone and telling them how you have to pay rent is remarkably unprofessional.
  7. Know when to say 'no' to new features and additional work.  Most customers do this unintentionally, but think critically about every little 'change' made to the software.  Even something as trivial sounding as upper-casing everything in the application can turn into a hassle; make sure they know it's billable.
  8. Keep track of your miles.  Start writing down all of your odometer readings when you drive to and from customer sites.  This is tax deductible/See #1.
  9. Track your finances and save all of your receipts.  For everything.  Get a filing cabinet.  Get some financial software.  I use MS Money (it's... decent.)  Another guy I know uses Quicken.  Apparently they both kind of suck, but you need to keep track of everything.  Hell, use ledger paper if you have to.
  10. If possible, use a separate email address for work purposes.  This makes categorizing everything when it sinks into your inbox.  Don't get client emails intermixed with forwards of forwards from relatives who just got the Internet.
  11. Keep business and friendship as separate as possible.  When you start out, chances are a lot of your customers will be friends, or friends of friends.  Remember, this is a business and your livelihood.  If they can't make pay that's acceptable to you (or want something for a ridiculously low price), don't do.  Friendship be damned, you have to eat.
  12. Know when a project is too big.  Don't agree to do something unless you're sure you can do it.  Right out of college, everything seemed easy to me.  I estimated a 6 month job at about 1 month.  Whoops.  Chances are, when you agree to do a small website for a local business over lunch one day, you're biting off a huge project.  The line 'I'll have to know about the project more in depth before I commit to anything.' has served me well.
  13. Make sure you have some sort of health insurance.  Car problems suck, health problems suck more.  One ambulance ride can set you back a few thousand.  Nothing will cut your profits faster then a trip to the hospital.  It is well worth the $100-$200/month.  (Monthly rates may vary, mine are much higher.  Damn accident-prone-ness.)
  14. Never ever ever ever ever stop learning.  I know this goes for programmers and IT guys and computer people double, but it goes quadruple for the self-employed.  Not only do you have to keep up with technology, but you have to keep up with running your own business and everything about your life.  You have no handy HR rep to go to.  Always be on the lookout for information.
  15. Keep your clients costs in mind.  All of the clients I've worked with are fond of fixed-price contracts.  Fixed price contracts are hell on developers.  We like hourly, in case unknown stuff pops up or your client keeps making changes over time.  If your client has a set budget, keep it in mind.  Bill hourly, but only work hours that will meet your clients budget.  If they have $2000 to spend on the program, and you bill at $10/hour, work 200 hours.  Cut the extra stuff, like input validation, and any other crap that doesn't fall into the primary use cases.  Yes, there is a matter of personal pride, but presenting a large bill to your customer with excellent software is probably worse then presenting the expected bill with some average software.
  16. Make sure to discuss long term client support options.  You might not be contracting forever; who is going to take care of the application after you move off across the country?  Not saying that anything needs to be decided, just make sure that all parties know how support is going to work.

* Bonus points for identifying the quote.

Edit:  A few days later, some guy on reddit posts this: 10 Absolute "No's!" for Freelancers

. Poor apostrophe-ing aside, it's a good read.
Print | posted on Monday, November 19, 2007 2:23 AM

Feedback

No comments posted yet.
Title  
Name
Email (never displayed)
Url
Comments   
Please add 4 and 8 and type the answer here: