Programming and Starting a Web 2.0 Company
If you do not have programming skills, but you have excellent business skills and a burning idea for a web 2.0 company? Outsourcing your code development might just be for you.
Not everyone who comes up with great ideas has an idea on how to write a line of code. Talk about header files, java script, .cs files, web.config, all of it Greek to the businessperson. That is when finding a good reputable outsource code group might make a lot of sense.
The concerns with outsourcing your code development cover four basic areas, functional, confidentiality, coding practices and communication.
Functional specifications are the base concept to building any type of code. The businessperson or idea person has to be able to get down into the weeds and go through every thing that the user will be able to do. From expected input, expected output, interlinkages to the back end logic systems, to UI design, to even how to install it once it is done, and what platform it needs to work on. The choice of technology, ASP.Net or PHP, java script or vbs all should be spelled out. Wire frames for web components and UI is a good place to start developing what you want the project to do. All this needs to be decided within the functional specification. The more detailed that the functional specification is, the more the code developed will meet what the expectation is.
Then get competitive bids for the work, there are multiple companies with excellent reputations that will bid on projects and do excellent work both here in the USA and worldwide. It is up to your ability to communicate and price that will end up deciding where in the world you have your code developed. Normally I would recommend staying and developing code in the country of origin, that way there are not as many communication issues as there would be doing cross-nation state work.
Everything you are developing and outsourcing is essentially your business broken down into lines of code that does work. It is the heart of your service or product. The company that you outsource should have excellent security, and you should ask for the results of their last security audit as well. If your code is stolen, then so is your idea, and maybe your business to boot. Find out if the outsource company carries insurance against hacking activity, ask if they have ever been hacked, get their history. Visit them if possible to see the working conditions (are there computers left open and unlocked when you are walking around the office on tour?). You can tell a lot by physically visiting the place and discussing the project in person. Keeping communications at e-mail, webex or VTC can give everyone a false sense that the companies are listening to each other.
Always have a security evaluation of the code built into the project, and have someone else do the security evaluation. There are many companies that can verify that code is built according to modern safe coding practices, and that the acceptance testing is not just a functional test, but a core review of the code in raw form and in use. Many good solid companies do this kind of work and will work with you and the developers to find a solution to the problems discovered. If the code is not written well or securely, your code may exhibit unusual behaviors that will let a hacker deep into your network.
Functional testing, make sure the code meets all the functions that were originally contracted for. Never accept incomplete code, the outsource company should be insured against non-delivery of the project. If the developer defaults, you loose time, but should be able to get back your investment in the code via insurance, and maybe even get what code they did write.
Make sure you are having at least phone meetings once a week with both sides of the contract on the team. That way you can track to see where the project is, where they say it is, and any milestones that are coming up or might be missed. This bit is important because if you change the functional specs, or they are going to miss a dead line, everyone needs to know about that now, and the negotiations can begin over what is going to happen, what gets dropped, and where the contract is at any given moment in time.
Make sure you have a common language to speak to each other.
Make sure that the company is insured against non-delivery or non-performance for the cost of the contract.
Make sure that the functional specifications that you hand the coder express what you really want them to make for you.
Get competitive bids from multiple companies.
Get a 3rd party security review of the raw and compiled code.
Make sure communications are ongoing and honest; know where the project is and where it is heading.
Got your coding company yet?