We are a husband and wife team with many years of experience with programming, web and otherwise.
The project: Joomla based ecommerce website selling 3 versions of highly specialized equipment.
Includes 3 different complex frontend and 3 different complex backend order forms customized for each type of unit and also customized for each of the three types of orderers (site visitors, admins, subcontracted phone order takers) where all kinds of specialized information is collected, offered for review, editable, recallable, printable, overridable. The forms include many cases, choices, some Ajax, etc. We’ve also created admin tools including a dashboard.
We have been working with this group for around 12 years to develop the business and site. We get $5 per unit sold which is beginning to add up as there is now much more call for this equipment.
Up until this past summer we had very little trouble with the group we work with except the usual client impatience, lack of understanding, etc.
In July they gave us an incredible list of changes and additions they wanted. We delivered many of them, but they have done nothing but complain that we are not getting the main project, basically a complete rewrite of the order forms with many complex additions (such as being able to order multiple units, each one customized, done and that it shouldn’t take this long. Well, we’ve done nothing but work pretty much 24/7 and are close to an end but they are getting worse.
Although we want to continue working with them, since we see an increasingly lucrative future, we want to tell them they can find someone else even though I know no one else is going to want to jump into such a project before it is finished.
What I need from you is some basic estimate of how much this type of extensive custom project is worth and how long such a project would take a "normal" web development shop would take to complete. I want to let them know how much they’d have to pay if they got someone else on board. And how much time would reasonably be allotted to it. And how much more time it would take since they would not be able to have someone immediately respond to their needs like we've done, not only correcting small errors but being able to jump right in to add features, etc., as soon as they ask.
Can anyone take a stab at some ballpark estimate? Or suggest a resource for us to get this sort of estimate?
I think the business model of getting $5 per unit sold might not be the best way to go, particularly if there's not much being sold, it means they can have you slave away for hours on end, with no risk to them if the site doesn't take off.
If you don't do the work, does that jeopardise your $5 selling revenue? If so, they've kind of got you over a barrel
If I were you I would figure out what hourly rate I want to charge to do the latest work, determine how many hours you think it would take, and go from there. Basically tell them, that you're happy to work with them, but considering the amount of work needed for these latest changes, you would require an hourly rate to get them done.
I guess everyone's hourly rate is different, and it varies greatly depending upon which country you're from if you look at the freelancing websites....
It does sound like the group you're working with are getting too good a deal.
You've been working on this code for years, no one is going to be able to give you a better estimate on how long it would take to code these changes than you.
Take the time and multiply it by a decent rate per hour (let's say $40 per hour as an example). And factor in the time necessary to learn the system, the business, etc... as well
Based on your description, I estimate that the project will be worth somewhere between $450 and $150,000 and take anywhere from a day to 2 years.
Sarcasm aside, you can't get even a ball-park estimate with the level of detail that you provided. To more effectively get a grip on your project you need to provide a clear picture of what, exactly, the requirements are so that we know what you need to build for them. These requirements/specification must have been agreed upon by the client (in writing) or they have little value.
Consider any operational/environmental issues you face (i.e. their hosting, training, etc.) and adjust accordingly. Consider how much overhead you will have from project management and other factors and adjust more. Then look at how you intend to bill the client (i.e. hourly, fixed) so that you can adjust for risk.
If you can provide that info, it should be fairly easy to ball-park the job!
just a side question to this, what is this kind of payment scheme called? what's the best word/phrase to describe it? is the word commission wrong?; reason i say that is, i know in the past (maybe still do i'm not sure) ad agencies have got their pay based on commission, which was a percentage of the ad spend by their customers, not a percentage of takings or profits their customers got after the ads had run, but then maybe the word commission might apply to both situations (percentage of media spend, and percentage of return)? if commission isn't the right word, or even if it is correct, what's a better word/phrase?
The question you ask is not possible to answer with any amount of accuracy, IMO.
It takes at least a few days (sometimes a month if the project is big enough) to flesh out all the detail required to even begin an estimate.
This is where many developers (myself included) go wrong, we wing it and upset ourselves and our clients when things go sour. The problem is, no clients are really willing to pay a week salary just for a quote, so small/medium business are naturally frustrating to work with.
Read up on programming methodologies, XP, Agile, Scrum. Learn about TDD and BDD. You absolutely need to break your project into finite specifications (which is why I prefer BDD).
Decompose the application into components, just as Joomla does.
List the CRUD-S functionality and estimate each one to within an hour's accuracy.
For instance, I can say without fail, that I can create a simple form with a 1:1 mapping to it's database table (and profit) approximately $5 per field. So if a form has 10 fields (all of which are stored in a single table) I can create the form (not-stylized) for $50 and implement the required actions (CRUD) at approximately 2 hour a peice (including unit tests) at my hourly rate, so a simple contacts component would cost:
(4 CRUD actions * 2 hours) * 40/hr = $320
That is how I calculate the base cost, now as I sit with the client I begin performing a more detailed system analysis, figuring out what business logic is required and charging accordingly per behavior specified in my tests.
- Does the contact have any required unique fields to prevent duplication?
If there are 2 or 3 fields which MUST be unique I need to likely perform 3 validations
- Does the contact require client verification, such as an email notification when the account is created/updated?
Anyway, as you break the system into components, you can begin to further divide and conquer a complex a task into many smaller more estimate-friendly tasks. This takes time, but if you do this in conjunction with a BDD framework you and your client reap the benefits.
BDD promotes a human friendly specification language which you can present to your clients and request a manager sign off on specifications to avoid feature creep or he said, she said arguments.
Any time a feature is requested, you break it into specifications first, estimate the time and factor that into the specs document and adjust your price accordingly.