Skip to content

Comment on How can you estimate time for something you've never done before?

Comments

Overestimate.

Yesterday I was asked to integrate Sendgrid with our analytics server over cURL in a cronjob.

Not only had I never used Sendgrid before or even seen the codebase for our analytics server, I've never used cURL Multi before - so I was walking in knowing nothing.

I said it would take me "about 2 days", which seemed "fair" to my manager, in the end it only took me about 5 hours, so they were happy to get it early and I had all the debug time I needed.

rbsnOP

I try to overestimate, but then I worry that I may be seen as wasting time or being grossly inefficient. Obviously there is a balance. This is something I worry about much.

If you get work done before the due date, how could it be seen as inefficient?

rbsnOP

My problem is that if I say it would take me 2 weeks and my colleague says he can do it in just one - though I am overestimating, he will most likely seem a better, more efficient employee.

If they consistently estimate less effort than you do AND they consistently delivers on those estimates, then they ARE more efficient. However, you will find in most cases that the people who give lower estimates, tend to miss deadlines more often too.

rbsnOP

How did you decide that it would take you about two days? Was it just a number or did you try and break down the task into sub tasks and decide how long each would take?

Well, I took a look at the Sendgrid api page, and decided whether to use their built in API or their web API over JSON, and since I had used cURL quite a few times, it seemed a simpler task to implement it myself.

I then took a look at the analytics and the database makeup and a break down of tasks which I needed to accomplish were as thus (I was told by my manager to make product_name work with Sendgrid - that's it):

- Connect to the database

- Query recently added "leads"

- Grab lead email information and funnel_id

- Grab template and cache it (multiple emails can use the same template, and there are standard templates, making a query for every single template would make database IO a real issue)

- Build up the emails in to an Array, complete with template reference and replaced [TAGS] (full name, etc) required by each individual email

- Actually initialize cURL, create the multi_curl_init objects and loop through, check each request for the {success} JSON object returned by Sendgrid and reschedule / show an error in our logs for that email funnel

- Clean up after ourselves, rinse and repeat 10 minutes later for the next lot of leads.

- debug

In all honesty, the only way I knew the length of time required was breaking down an estimate for each individual task and then adding them all up and doubling it. It was an "intuitive guess".

yep, that is the best way. I always take how long I `think` it will take and multiply it by 4 (I'm an "optimist" ;) your multiplier may vary)

AboutSource Built by g1lg1l

Hackerly is an independent reader for Hacker News, built on the public HN API. Not affiliated with Y Combinator.