How to calculate project timescales and costs
Wednesday, May 16, 2007 2:42:04 PM (GMT Daylight Time, UTC+01:00)
We’ve gone around in circles at The Site Doctor trying to decide the best
method to calculate project costs and timings, historically I would look at the
project brief, have a think about how much I wanted to work for a client and then
I would –in effect- pluck a figure out of the air.
As your company grows however you will need to think about a more scalable, resilient
solution that reduces the chance of under quoting and I think we have a fairly nice
solution so I thought I would share it :)
Firstly, read up on how to set your base rate (see:
Pricing your work).
Once you have calculated your base rate, you will need to download
this spreadsheet when offering the client various options,
each option is given its own row on the summary table which is calculated off a
dedicated sheet of times.
The formatting is fairly simple and mainly for your own use but basically the main
areas of development (i.e. the front end, my account or admin areas) use a grey
background. The sub sections of these (i.e. Product management) use a yellow background
and all other items have a white background, the main reason for this was when you
have a large project it made it a lot easier to identify where you were. The top
columns are not set but they’re just what we most commonly use, you can alter these
as needed on the summary sheet.
How to use it
- Add all your site elements (usually based on your sitemap) into the first column,
separating each one out onto its own line.
- Go through each item, estimating the time required to complete the task. Remember
that the spreadsheet is using decimal hours:
- 0.02 = 1 minute
- 0.08 = 5 minutes
- 0.17 = 10 minutes
- 0.25 = 15 minutes
- 0.33 = 20 minutes
- 0.42 = 25 minutes
- 0.50 = 30 minutes
- 0.58 = 35 minutes
- 0.67 = 40 minutes
- 0.75 = 45 minutes
- 0.83 = 50 minutes
- 0.92 = 55 minutes
- 1.00 = 60 minutes (1 hour)
- Switch over to the summary page and update the hourly rates to your rates
- Et voila you have your project’s estimated cost :)
You’ll be surprised how quickly project costs mount up when you use this method
but it does ensure that you don’t get caught out, if it is still too costly for
the client, why not show them the breakdown as it quantifies your efforts nearly.
If that doesn’t work see how tweaking your hourly rate or removing the timings works
out but don’t be a busy fool ;)
Project time estimate spreadsheet
Time on the phone –wasted time?
Tuesday, May 08, 2007 6:13:32 AM (GMT Daylight Time, UTC+01:00)
After a somewhat hectic week last week, with most of it being spent on the phone (which is becoming a more regular occurrence) I asked myself “has all this time on the phone been wasted time?” Well, I spent time talking to clients, developers, friends and family and this is important. Although it may cost you a little development time, talk is cheap (that’s what the telecom’s companies want to tell you isn’t it?)
Rather than looking at it negatively I think it’s best to look at it from another point of view, I could have spent developing some weird and wonderful new creation for a client however, this phone time was doing something else –it was promoting my business. Admittedly the business couldn’t survive if we all spent all the time with the phone glued to our ear, but once in a while I believe is a good thing.
Why am I looking at it like that? That’s simple, if you make time for your clients, friends and family in any context it shows that you care for them beyond a pay check and at the end of the day, if they need some development they’re more likely to think of you in a good light.
What do you think? Do you feel time spent on the phone is wasted time or a business investment?
Paddlathon 2007 -whassat then?
Friday, May 04, 2007 7:56:27 AM (GMT Daylight Time, UTC+01:00)
Ok, I promise to post something technical and interesting shortly (yes I know, that’ll be a first yada yada…) but I want to get some information up here about Paddlathon 2007. I’ve written a very quick site which I will be adding more information to shortly but it already has a lot of information about our charity canoe race and more importantly a donation form so once you’re done reading this pop over to www.paddlathon.co.uk and have a look.
I wanted to compete in the Cheshire ring race 2007 for a few personal reasons but the initial motivation was that I missed out on taking part in the Transpennine race –this was stopped the first year I was old enough for my canoeing club to allow me to participate so ever since I’ve wanted to take part in a long race (preferably overnight etc) as I felt it would be fun so when I was handed a flyer for a 96 mile canoe race last season at Bristol I decided it was the perfect choice! There is another long race called Devizes to Westminster which is around 124miles at Easter –which didn’t leave enough time to train or find a partner.
The Cheshire ring race is a 96 mile canoe race but at the end of June which meant more time to train and as it was nearer to summer it would also be warmer. Until a couple of seasons ago, I paddled with my canoe coach –and long term friend Paul Rose but sadly he damaged his back (thanks to me) going over a weir. He’s getting back into canoeing, but having vowed to paddle together again I suggested the Cheshire ring race as a worthy race.
Paul was immediately up for it and once we had got chatting we thought it had enough of a “wow” factor to be worthy of sponsorship and so Paddlathon 2007 was conceived… a 96 mile canoe race is without a doubt a bloody long way and knowing he may still have issues with his back over that sort of distance we decided doing it as a relay race would be better so we decided to get my two brothers Sam and Pat on board as they’re both keen paddlers and are always up for a challenge.
Originally we were going to raise money for a single charity but decided as there were four of us, it would be better to pool our collection efforts and raise for four charities together. The charities we’ve chosen are:
Samantha Dickson Brain Tumour Trust
Multiple Sclerosis Society
Mac Millan Nurses
To my knowledge, I’ve never asked for anything for the information I openly share on my blog –and I probably never will (beyond the Google AdSense that appears in the design that is) but I would very much appreciate it if you were generous enough to donate a couple of quid as there are some great charities who dearly need your help.
I’ll post more information on the charities, the team and the boat over the forthcoming weeks but the race is June 30th – July 1st, if you fancy coming and seeing us off –or having a pint with us after the race that would be awesome.
Read more or donate online at: www.paddlathon.co.uk
Joost invites for all...
Thursday, May 03, 2007 4:46:11 PM (GMT Daylight Time, UTC+01:00)
I found out this morning that my Joost account has been credited with 999 invites (I kid you not) so feeling all summery I thought others might want to join in the Joost fun and I’d share them around a little.
I’ve only got 999 Joost invites so it’ll have to be strictly on a first come –first served basis (as if I’m ever going to get rid of them all haha).
I don’t want anything in return but if this offer is too generous or you feel I’ve helped you in the past and you’re debted to me, why not click some of the Google Adverts –or even better, make a donation to our 96 mile canoe race (the Cheshire ring race) in aid of the Samantha Dickson Brain Tumour Trust, Multiple Sclerosis Society, CLIC Sargent and Mac Millan Nurses, I like to think of it of a “You scratch my back, I’ll scratch your back” arrangement.
Regardless of whether you want to donate to our worth cause or not, drop me an email (or leave me a comment) and I’ll send an invite over ASAP.
For more information on our 96 mile canoe race (the Cheshire ring race) in aid of charity go to www.paddlathon.co.uk or read my blog posts about the Cheshire ring race.
Tim vs. a Swan
Wednesday, May 02, 2007 7:05:00 PM (GMT Daylight Time, UTC+01:00)
Those of you who have me on MSN Messenger (and use a client that displays my little sub messages) may have noticed today’s caption reads “Tim vs. a Swan : Tim 1 - Swan 0”. A few of you have asked what it is all about so I thought I’d just post it here (shame on those of you who didn't!).
For those of you who are new to my life I’m rather into my canoeing* and what with the forthcoming Cheshire Ring Race drawing closer I’ve been getting out on the water as much as possible. My new routine is now gym one night, canoe the next and last night was a canoe night. Stacey’s also training atm so she came out for a run with me.
I’ve thrown this all into a little map (see below - thanks Google Earth!) so you can better understand what I’m talking about. I usually dock near a swans nest and although around this time of the year they get a little arsey (they’re brudy or have chicks so that’s ok) we have a fairly amicable relationship –I don’t like them, they don’t like me. Last night was something different, when I got onto the water I could only see one of the two swans, the male (who is the nasty one) was no-where to be seen so we carried on (he usually potters off up a side route etc).
No sooner than I had passed under the bridge but I saw the male at the end of the straight and he started flapping to take off. Now, I don’t know if you’ve even seen a swan taking off but they’re big gits and it takes them a while so I figured he would just fly over the top of me.
I kept thinking that until he was about 20ft away from me when he angled right for me and it was clear he was after me haha. Knowing that they can cause serious damage (though we’re still debating the “Can a swan break a man’s leg” rumour) I decide to get over to the bank and wait it out there –in the tiger (my very unstable racing kayak) I wouldn’t have stood a chance in the middle of the canal.
It was a close call to be fair, he was about 5ft in front of my boat by the time I got over to the side at which point he stopped flapping and swam past hissing at me something chronic. The funniest bit of it was that Stacey had taken my paddles off me and was poised over the stingers and spikey things ready to beat him if he came close –I just wanted them back in case I needed to use them!
I’ve had swans come for me before but never fly down 0.2miles to “get” me, that was quite something else! I’m still chuckling about the thought of “You know what, I don’t think he’s planning on flying over me…”.
*Some would say this is an understatement
A GREAT! New resource for freelancers and others starting out
Wednesday, May 02, 2007 7:24:54 AM (GMT Daylight Time, UTC+01:00)
I can’t recall how I came across FreelanceSwitch because it was one of those links you see on a mailing list, open to read later and forget to read until a couple of days/weeks later, but nevertheless FreelanceSwitch is well worth a read as they have a tonne of massively useful advice and they seem to be adding stacks more!
Scott Wills also posted an interesting read on getting the price for your work right. This article on pricing your work, Scott briefly touches on how to set a base rate for your work but concentrates more on estimating your time etc so if you’re interested in calculating your price or calculating a base rate for your work, have a read of my article on pricing your work (see: Pricing Your Work) as I feel it covers calculating a base rate for your work in more detail. Scott's article can be found here: The Price is Right on FreelanceSwitch.
FreelanceSwitch also gave my article on business start up advice a shout the other day which was most flattering –I hope I’ve managed to pick up a few additional readers! Hello if you're new :). You can read the list of other useful links and see mine at: Linkswitch -a roundup of great links across the web 3.
The long and short of it is to keep an eye on the FreelanceSwitch website at: http://freelanceswitch.com/.
ASP.Net Membership SQL Roles access
Tuesday, May 01, 2007 8:41:48 AM (GMT Daylight Time, UTC+01:00)
We have recently moved over to SQL Server 2005 and as part of this transfer I decided to aggregate two separate ASP.Net Membership databases that were created purely out of error.
For those of you who don’t already know, you can happily run more than application’s security from a single membership database as long as you correctly configure the web.config’s security settings –for more information on doing that see my post on having dual records in the ASP.Net authentication table (see: Dual Records In The ASPNet Authentication Table). The important attribute/value set to configure if you are planning on running more than one application from the same roles database is “applicationName”. If you do not set “applicationName” you will find that users can log in across all your applications, roles/access levels will get mixed up and a whole bunch of other hullabaloo!
Luckily for me, the only records stored in one of the membership databases were two users, both of which I knew the password to so I decided I would simply update the web.config with the new database connection string and add them manually.
The next thing I wanted to sort however was the specific SQL Login’s access to the membership database, previously I simply added the user to all the various aspnet_ roles that were in the database which worked fine. As I’m looking to use this database for other applications in the future and I don’t like sharing usernames/passwords across applications, adding the roles each time would become a real PITA so I decided to add a new role with all the access required for the database so I could simply add the user to this new role. I called the role IIS_User.
A number of our applications build on the foundation of the ASP.Net Membership database with application specific values and so I tend to have another table for the application’s users within the applications specific database to store these values. The user has the usual UserId (usually an int) and a uniqueidentifier which allows me to link the two database together. With this in mind, I need additional access to the ASP.Net Membership database –SELECT permission on the tables. I don’t like adding more permissions to a role than needed but I needed a method of doing this quickly –assigning EXECUTE and SELECT permissions to the new role on the various tables/stored procedures. In time I’ll revisit this and work out which are needed by the role and remove the permissions not needed but for now this’ll do :)
The quick and dirty T-SQL DECLARE @SQL nvarchar(4000), @Owner sysname, @objName sysname, @Return int, @objType nvarchar(5), @rolename nvarchar(255) SET @rolename
= 'IIS_User' -- Cursor of all the stored procedures in the current database DECLARE
FAST_FORWARD FOR SELECT USER_NAME(
xtype FROM sysobjects WHERE (
xtype = 'U' OR
xtype = 'P' ) AND LEFT([
= 'aspnet_' OPEN
cursStoredProcedures -- Get the first row FETCH
cursStoredProcedures INTO @Owner, @objName, @objType -- Set the return code to 0 SET @Return
= 0 -- Encapsulate the permissions assignment within a transaction BEGIN TRAN -- Cycle through the rows of the cursor -- And grant permissions WHILE ((@@FETCH_STATUS
= 0) AND (@Return
= 0)) -- Clean-up after the cursor CLOSE
cursStoredProcedures -- Check to see if the WHILE loop exited with an error. IF (@Return
BEGIN -- Exited fine, commit the permissions COMMIT TRAN END ELSE GO