I would like to use Elance.com to find a developer to create a website for me.
I have decided to split the development into two components:
the UI and the back-end, with each being developed by separate developers.
The technologies to be used for the back-end will be Spring MVC, Java, iBatis, MySQL/Derby/H2.
The technologies to be used for the front-end will be JSTL
Are there any patterns for partitioning a project like this?
How do I specify the project so that UI & backend will interoperate and be easy to integrate?
Don't split it. You said:
My primary motivation is the concern that handing the whole project to a single entity opens me up to the risk of the website being cloned easily or sold on to other clients with similar projects. I guess I thought that if it separated into to two components one isn't of much use without the other so, isn't much of a threat(competition-wise) if stolen. Like I said this is my first project, so I'm already learning that maybe doing things this way isn't standard nor advised.
It doesn't matter how unique you think that new site you are creating is, there are already some of those out there. Its not only the creation of the site that you need to be concerned with, but also how you will promote the service and any additional value that's beyond the site that you might add with your service.
If the project is as good as you think it is, other people will clone it anyway - and if they are experienced it will cost them a lot less than any 'random' team u pick ... they will do so, without the source. Its beyond the site, is the whole service and everything that comes with the business.
Ps. find a good team, break the project into functional pieces that can be published to production before everything is complete ... a good team should help u structuring it so u see progress weekly (or bi-weekly).
It's hard enough when you have different developers working together on the same project to interface and communicate. I'm not sure why you would want to make your project harder by splitting the development, when you seemingly don't have enough experience to hold the project together on your own. Even though it sounds tempting to split the development in two to gain some efficiency, I think the risk is significantly higher and it may ultimately make it take longer unless you luck out and find really excellent developers.
I suggest that you concentrate on find a developer for the backend who may be able complete both the back end and front end. You might want to see if the backend developer knows any frontend developers who could subcontract that portion of the project. At the very least if they have worked together previously you may have less communication issues. Even better see if you can find a small software development shop that may be able to take on the whole project.
In some sense I would liken this to a home improvement project. If you have enough experience and know how to do the job yourself, but don't have the time, you could work as your own general contractor and coordinate the work of the subcontractors. If not, then you're probably better off finding a good general contractor (software dev shop) who can run the project. If not, then at least you'd want to find the best contractor for the hardest part of the work and put that person in charge of the whole project so you only have to deal with one person.