I am looking to hire a freelancer for a big web application. The budget for this project is a little over $20,000. The programmer will develop in asp.net MVC C#. Are there any usual things I should pay attention to or watch out for. i really don't want to hire the freelancer and when he/she is done with the project it is not what i expect. I have heard horror stories where the programmer delivered a fantastic product but the code was not commented and parts of the software was hidden behind DLLs. Is there anyway to avoid situations like this? I am sure I cannot think of every possible scenario when i write the project description. Also, is it advisable to hire a lawyer to write the contract?
views:
391answers:
10My two cents... baby steps... big projects should be subbed to people who have done successful smaller projects for you in the past if possible. Perhaps even worth breaking the big project up into smaller pieces (provided the nature of the project lends itself to being broken up into parts - many do).
You can't hire a freelancer and expect to get exactly what you want unless you tell them exactly what you want. The more time you spend up front writing specifications, the less room for horror stories you'll be leaving yourself.
It would be highly advisable to have a lawyer write the contract so that you are covered in the case that the freelancer tries to cut corners or otherwise not perform as you wish. That being said, don't be offended if the contractor also consults his lawyer on the terms of the contract - any knowledgeable and experienced contractor will do so before signing a contract.
To avoid most of the problems altogether, consider hiring someone whose background you know and trust, or at least can get glowing positive references on from people you know and trust. Ultimately, no project will be completely risk free.
Watch out for the Gravy Train. Some less honorable programmers will try to ensure that they and only them can maintain their projects, this forces you to keep coming back to them to get things done.
Obviously this is a two-way road, freelance programmers want you to come back to them, and if they're too lax, there's nothing to stop you from hiring an outsource / student to maintain. (Although it's probably stupid)
Generally I'd say that you should discuss product ownership and software licencing with your freelance programmer. Try and find a good in-between that puts some safety on your side so you can dump a crappy programmer and keep your code, and that'll make him feel like he's not being screwed too.
Also set deadlines for milestones, and schedule periodic status updates, etc. Bake it right into your contract so you can ensure production goes smoothly, but be open to flexibility if needed. This typically would be to prevent a project for dragging on, but obviously things come up and adjustments can be made.
Also make sure you know what you want. Customers & Programmers often don't speak the same language, make sure you're both on the same page before work starts.
Don't contract a developer for $20,000 to deliver a big application; contract a developer for $1,000/week with weekly deliverables - functional software and the accompanying source code. If it doesn't work out, it becomes apparent very quickly, and it's very unlikely to be a total loss.
I guess someone you have worked with would be the best. Another tip, small deliveries.
If you ask it fo small parts of a same thing is easier to track its work.
Apart from the obvious project management hurdles that any software delivery project include, I'd like to answer some of your smaller concerns:
parts of the software was hidden behind DLLs
Suggest you ensure that your agreement includes ALL of the source code rights. And ensure that you've set-up the appropriate source code repository before hand to avoid such issues.
Before they leave, get them to show that a fresh development environment can be used to cleanly build and deploy the application.
The complaint you heard above is usually just the maintenance developer trying to build straight off the deployed code...
code was not commented
It depends whom is saying it's not commented. A developer whom is new to code will almost always think it's not well documented until they understand it properly - no matter what level of documentation you end up with someone will always whinge.
Plus you get what you pay for here. Documentation can be incredibly time consuming such that self-documented code is really the key to a good middle ground.
Other ideas
- A quarter of the way in (or there-abouts), hire someone else to review the architecture, design, and code quality. Even if just for a day or two. You can use the feedback to either keep/fire the contractor and also to put them back on the right track if they're deviating a little. Don't skimp on the reviewer though - they're worth it!
A few thoughts:
What do you mean by a big web application?
20K for a big web application is a pretty small budget for a freelancer, unless it's a pretty straightforward and ordinary web application, or customization of an application someone already wrote. My definition of big would not cover that; maybe your idea of big is different than mine.
Expect to have to do the work of writing the detailed specs yourself, as womp stated.
As you write the specifications, lay out a series of milestones with specific functionality and documentation required. Pay when the deliverable is received and checked for quality. You need people on staff to support this application; they should be involved in this process.
Make sure you can check it quickly. For a 20K budget, waiting an extra 2 weeks for deliverables to be approved by someone can be a budget buster.
As far as the software functionality being in DLLs, that's normal. Just make sure you get the source code. That's part of the deliverable. Work out ownership of the code in the initial contract. For 20K, don't expect exclusive ownership of the whole thing, just your parts. A lot of the code will have been developed by other people.
Also, some coders take code without paying for it. Ensure the coder warrants that he has the right to provide you with a license to the code.
It is very much advisable to hire a lawyer to write the contract. Just make sure your lawyer understands your needs and wants.
Ask for daily updates, no really big docs but a 5 min mail explaining the things done. Get a good contract that keeps you safe and is fair for you and your freelance. Small milestones with respective payments, correct bugs and then take the next part. Dont be afraid of changing the freelancer if you start seeing things you dont like (probably you gonna have to do it anyway at a later time, bad attitude or whatever tends to get worse as time passes) Dont let him/her forget you are the boss, you can have a friendly chat but thats it, you are his/her boss.