Re: Estimates

Posted 05 December 2011 - 06:02 PM

If you think you can produce the product within one hour than charge them for one hour of labor. If you think it's going to take you 50 hours then charge them for 50 hours of labor. There isn't some science to coming up with cost estimates. although there are systems out there to help you make more accurate estimates based on your previous performance.

just try to take into consideration all of the work and tasking required to fulfill the customers requirements. those time estimates are solely up to the individual fulfilling requirements. what takes one developer 20 hours might take another developer 5 hours.

part of coming up with an accurate time and cost estimate is to extract clear and complete requirements from your customer. once you know what the requirements are it should be easy to give an estimate.

All of these are meaningless to me because it's incredibly vague. a minor change could mean 1 day of work or 2 weeks of work. just depends on the context. "unfamiliar to you" is also vague. HOW unfamiliar are you with that technology? is it going to take you 2 hours to learn or 70 hours?

Re: Estimates

Posted 05 December 2011 - 06:15 PM

Technology unfamiliar, for example you were asked to do an e-commerce website with the Spring Framework even though you know nothing about it.
I guess I should do more to learn more so that I could say when I could finish something.

5 minutes for a minor change in the system like a validation that slipped. What if there is a detailed work plan but you were not asked if it is possible for you to do it in that time frame?

Re: Estimates

I would advise you NEVER try something new you haven't learned on a project.

One of my clients requested the money must be in bitcoins using a specific system he used (he wanted to use that system, nothing else). Me being excited, accepted.

There were no documentation for this system. Luckily, it wasn't too confusing and ended up being some curl-type thing that sent post data to a page which processed all of the stuff. But this also left me in the dark. I had VERY little to go off of their dead support forums. A month or so later and I finally got it down to a science and figured it all out. Finished the project and turned it in and got a perfect 10. But still, that was dangerous and I will probably never try it again unless I'm certain I can complete it and understand everything they are asking first.

Spoiler

I sorta remembered the bank info for the bitcoin account (it was a gambling site. all of your money was put inside of a "bank" that the website used for dealing) and wanted to see how the guy's doing or if he at least changed the password. Went to that bitcoin service website, turns out they're closed now. Somebody beat the system and scammed a bunch of people out of bitcoins using the site's provided API.

As for my own rates, I would never do something where I have to edit existing software. I just don't roll with that. I end up being put inside of some jumbled mess that's impossible to read, but hey, if you're good at that stuff by all means you can try. If it's just a site (which I rarely do, I suck at design), it'll be around $100 - $200 (granted they accept that I use Twitter's bootstrap css/html framework in my solution, otherwise I won't do it). Larger sites that require more operations and a database are around $400.

You gotta start small though. That bitcoin gambling site required a lot of my time and a lot of code, yet it was only for $85. And that was before vworker took a big, juicy bite out of it (however I can't complain, vworker's services are superb).

As for right now, the bid started out as a parsing engine which parses data and stores it in a database. My client mentioned something about wanting to turn it into a website and me being the nice person I am said that I'd do it for an extra $50 (putting the result at $450, a good price if you ask me). And this was after vworker implemented a new system where it calculated the cost and put that into the price, so I'm receiving the full $450 (if all goes as planned).

But what it really boils down to is how much time it'll take you, and how much time you think you're worth. Of course you can't just spew "I'm the best programmer ever! Hire me!" because you have no proof. Start out small and gain yourself some reputation (which is why using freelancing sites are great) until you can work on huge projects. And don't think all freelancing bids are small $20 homework scripts, cause I've seen some rather large bids (including a $50,000-$100,000 one for an amazon clone, wanted to bid but I was rather frightened by the price).

Re: Estimates

Posted 05 December 2011 - 11:14 PM

Estimating is difficult - I wouldn't want to rely on my estimates for a living, to be honest.
But you can practice it, if you've got good record-keeping skills and you're honest with yourself. Follow tlhIn`toq's suggestion above, but start by breaking down the project into pieces, and try to estimate how long each piece will take. Write it all down, then start working on it. Repeat, and compare the estimate to the reality after you finish each one. Over time, you'll start to get good habits, and you'll get faster, and you'll also start to get a good feel for how long a thing takes.

You might want to start by making yourself a time clock, so you can keep track of how long it takes you to do a thing. If you're really clever, you'll make your second project a bug tracker/feature list, and you'll tie the one into the other, so you start to automate your record keeping. Clock in, work on a feature until you finish the feature, clock out, repeat.

Don't be afraid to reinvent wheels, don't drop projects, schedule your working time, and schedule time away from the computer. Try to write a reasonably detailed requirements spec for everything you build, so you know when you're done.

Re: Estimates

Posted 05 December 2011 - 11:22 PM

You need to be honest with yourself. Prioritize. Allocate more time to the projects you know have a higher priority. Make honest estimates (my mum makes me do this all the time) - she asks me "how long do you need for this" I say "45 minutes" and in 45 minutes I have the job done.

Re: Estimates

I like this - "Boss, this five minute job is really important, so I'm going to take two hours on it. See you after lunch... I mean, when I'm done."

This actually happens all the time, but it's incorrect. In terms of maintenance, priority is a derived measurement, calculated from other factors, like severity and effort required. Severity is, basically, the time scale in which a fix is required. Think in terms of "emergency" (ie, right now), today, tomorrow, this week, next week, next month. Difficulty is measured in hours: is this a one-hour problem, an eight-hour problem, or what? Fold in any roadblocks (I need security approval to deploy this, and they take a week to get around to anything) and you can see that a low-severity ("this month") and low-difficulty (one hour) job might get higher priority than a higher-priority ("this week") and more difficult ("eight hour") job. If the former job has a week-long roadblock for security review, you should knock it out and put it in the queue for that review before you start in on the latter job, even though the latter job has a closer time frame and will take you longer.

In terms of development, the picture is different, of course, but similar factors apply. If I know that I'm going to need to pick one of three different libraries to accomplish a task, and that decision is due in a month, I need to start evaluating them now, even if it bumps tasks whose deadlines are nearer and which look like they're "higher-priority" right now. It's just as important that that decision be made a month from now as it is that this feature be implemented this week. Just because one is further off doesn't mean it can get put aside for another day - if you do, that day will never come, and you'll miss that milestone.