Wisdom pulled from a variety of sources
- Always have the technology installed and comprehended before making estimates
- Don't reinvent the wheel.
- If the customer has given you full access to the site, straight up mirror it. Download everything and just change the configuration file that connects the database.
- When taking on a project, first write down all the steps necessary. Figure out what the Minimum Viable Product is with the customer and go from there.
- Never have the live site on your terminal unless you are entirely awake.
- If the customer says "it takes me 1 hour to do...", they mean it actually takes 4 hours
- Get actual deadlines in writing. Verify them with the customer throughout the project.
- No matter how small the project, always put it in Git
- Only work on the things you've agreed on with the customer. If they want the extras, they'll say so.
- If you patched anything, try to send that upstream. It shows familiarity with project to potential employers.
- Always ask for double or more the rate you would get working full-time at a company
- Documentation, documentation, documentation
- If you think you offer $100/hr service, then CHARGE $100/hr service
- Automation, automation, automation - just keep your standard forms (quotes, bills) in Google Docs, have them do the number crunching for you.
- Don't do support - it's not worth the hassle, not worth the headache, not worth the money
- Just because they're your friend, doesn't mean you have to charge them less.
- Always have the hourly rate in your mind. Don't compromise. If they can't pay it, you don't want it. Really.
- Set a reputation for quality, not cost.
- Have a precise system for clocking your hours. Only give freebies for screw-ups. Easy work is still work.
- Don't have more than 2 gigs plus full-time - there is no room for balance after that. Mental well-being is more valuable than money.
- Don't bite off more than you can chew - if an opportunity comes along but you're too busy/tired, get the rest. There's always more opportunities.
- You *cannot* do real work in front of a television. Work, or watch TV.
- Neil Gaiman's rule: be easy to work with, make really good stuff, deliver on time (just 2 out of 3 is enough)
- A really good lawyer is essential to professional contracting. Interview several and find the right one.
- Make internal allies within the customer when you can.
- Try to resolve conflicts in person. Often a cup of coffee is enough to sort out issues.
- When firing a client, it is important that you do it in writing and mention which part of the contract has been violated.
- Set clear expectations and clear definitions. Put them in a contract.
- If the customer refuses to pay, don't appeal to emotion. Get a lawyer, instead.
- If the project changes, either amend the existing contract or settle up the existing contract and create a new one.
- In the contract, state non-failure to pay means inclusion of attorney costs if they lose lawsuit.
- A contract is in place to protect *both* parties. Negotiation makes it fair.
- Don't start work before you've signed a contract. You will lose critical leverage.
- Don't blindly accept the client's terms. Often they are just boilerplate, and sometimes just wrong.
- Don't back down on the important stuff:
- IP transfers on full payment (if they use your work before full payment, you can sue for that).
- A kill fee for project termination (amount the client will have to pay for an unreasonable termination of project - ensures no wasted time) - be sure to have multiple phases written in the contract.
- Liability (transferred after project acceptance by client)
- Have the project deemed 'accepted' after the deliverable has been given for 5-10 business days
- Be specific and confident about money. Sound like you know what you're talking about, even when you don't.
- Have penalties after non-payment (net-d)