[UPHPU] Software Development Scheduling advice

Jonathan Duncan jonathan at bluesunhosting.com
Tue Jan 30 15:48:57 MST 2007


On Tue, 30 Jan 2007, Mac Newbold wrote:

> Today at 1:43pm,  Victor Villa said:
> 
>>> Estimates for any project that is even moderately long are just
>>> fantasies.
>> 
>> These are might true words.  Not sure how people like Mac Newbold set
>> accurate timelines and achieve them, though that is prolly a good uphpu meet
>> topic.
> 
> Well, Victor, thanks for asking...
> 
> My philosophies on this are all based on being up front with the client. If 
> it may take you 10 hours, or may end up taking 20, tell them it will take 
> 10-20 hours, and for price tell them 10*hourlyrate to 20*hourlyrate. If there 
> are certain aspects of uncertainty you can pin down, like the first 3 hours 
> is research to find out what problems you might run into, then you can say 
> that after the first 3-5 hours you'll be able to give a better estimate. 
> There's always the chance that you'll run into something completely 
> unforeseeable, and when that happens, tell them what's up, and give them 
> enough info to make an informed decision about how to continue (like slogging 
> forward anyway, changing course, or aborting that part of the mission as "not 
> worth it").
> 
> All of the proposals/bids/estimates we do here at work are price ranges (and 
> time ranges) and are only estimates. If they make changes or there are 
> unforeseen circumstances, it's all subject to adjustment, and any additional 
> work is billed at an hourly rate. This eliminates all the hassle of change 
> orders and figuring out how much extra it will cost to add in a given change. 
> Estimating takes time too, so the less you have to do it the more time you'll 
> be able to spend actually programming. It allows for much more flexibility 
> for the client too. It is rare that a project will finish with the exact same 
> specs and scope as it started with, because you'll have better ideas and 
> information once you get into the project. It is more cost effective to do 
> iterations like John suggested, since you don't spend time working on stuff 
> that won't be necessary in the end. Think about taking a trip. If you're 
> trying to chase down a car, and they're at location X, do you plan a path and 
> drive to location X? Or do you check periodically on the way toward location 
> X to see if they have moved? If they have moved, or a road is blocked off, or 
> whatever, you may have to take some detours or change course or destination. 
> The more often you check your progress (as long as you can do it quickly) the 
> less likely you will be to waste effort in unneeded tasks.
> 
>> Me, I feel like Johnny Carson when somebody asks me for a deadline.
>> (putting the envelope against my forehead and coming up with the wildest
>> latest date possible that is somewhere between reality and the day before
>> they go nuts if it isn't delivered.  Though, mainly for me the problem comes
>> from projects expected of me that have components from other people in the
>> company.
>> 
>> Who knows?
> 
> These are all good points. Conservative is good, but they tend to be happier 
> if you give them a reasonable "best case" and a conservative "worst case" 
> estimate, so they know that there are things that can't be known from the 
> beginning, but it will likely end somewhere between those two. It also works 
> really well if you can back up your numbers. When you've got to estimate on a 
> big project, come up with a rough outline of a plan. Break it down into its 
> major components or steps, and estimate all of those, then add them all up. 
> Estimate times and costs, and you can use your times to determine a schedule, 
> based on how much time will actually go toward this project in any given 
> week/month.
> 
> One that really can get you into trouble is not factoring things you'll need 
> that are beyond your control. If you will have to wait for someone to test, 
> approve, decide, or gather information for you, put that in the schedule. 
> Make a reasonable guess of how long it will take them to get back to you with 
> answers you can use (sometimes a day, sometimes a week, sometimes more). 
> Don't forget about the graphic design, excel files, PDFs, images, or other 
> stuff that you need in order to build the site but aren't your 
> responsability. They generally will end up late. The other advantage is it 
> lets your boss put pressure on the right people. If you can't move forward 
> because you're waiting for a decision or action from the CTO or the graphic 
> designer, or the sysadmin, then you can point him at the right place to apply 
> pressure instead of it all coming down on you. Trust me, his pressure on them 
> will do a lot more than his pressure on your and your pressure on them will 
> do.
> 
> The smaller you can break up a task, the easier it is to estimate, but if you 
> get too small (less than a couple of hours) the estimating error can really 
> add up. (You might be able to do 4 tasks in a hour or two, but if you 
> estimate them each at an hour, then it will be a high estimate.) Be 
> especially careful about things that multiply, like putting in bodies for 100 
> hand-coded html/css pages. You could say an hour each, but some might be 10 
> minutes, and others might be 5 hours. Guess on a good average, and remember 
> to give a range that covers you.
> 
> If you constantly come in on the high end of your ranges, you may need to 
> back it up with what happened and why it wasn't best case. It depends on the 
> client/boss on how likely they are to get picky about the details. This is 
> especially true when it throws you off the timeline and the budget. But if 
> you can back up what you've done, most rational people will be understanding 
> about it and will realize you're doing your best and doing good or great work 
> for them in tough situations.
> 
> Don't forget to include things like quality assurance. Testing and debugging 
> take extra time on top of what it takes you to build it in the first place. 
> Debugging can be 1-2% of the total time, if you're lucky or really good, or 
> it could be 10-20% on a particularly troublesome piece of work. Testing will 
> take some time no matter what you do or how good you are. I recommend testing 
> a lot as you go (unit testing) so that you can test the small pieces before 
> you build on them to make big pieces. If you know the small parts work right, 
> it is much easier to debug the big parts, since it narrows down where you're 
> looking for the problem. Then you should always make sure to do some whole 
> system testing whenever you finish anything big or anything that works 
> together with other parts. Then, it really helps if you can have someone 
> other than the main developer on the project try it out, especially if they 
> understand well what the desired result should be. Keep in mind the Principle 
> of Least Surprise: if your tester is surprised by a behavior, it might not be 
> the right behavior.
> 
> What percentages you need to estimate for QA, testing, and debugging will 
> depend on you and on the project probably, and on how picky the client is. 
> Many clients underspecify, and expect you to just choose something, but then 
> always want the thing you didn't choose, and often want you to change it for 
> free. Don't let them yank you around, but make sure if that might be the 
> case, that you factor that into your estimate. You may want to plan on a 
> margin of about 10% of the total time for testing and debugging everything, 
> and all the final fixes that the client will ask for.
> 
> Well, those are some of the ways I usually do it. The more you do the more 
> you'll learn, especially if you really track the actual results, and adjust 
> accordingly in the future. New clients are harder to judge because you don't 
> know them yet, so if you want to be safe, use a larger range than usual, and 
> make sure that there's an hourly rate in there for extra work they request, 
> and that you document everything they ask for that falls outside the original 
> plan. Then you can back up why it went over budget, because they changed a 
> million things.
> 
> Anyway, there's a lot of buzz going on in #uphpu on IRC too, so you might 
> want to check http://ibot.rikers.org/%23uphpu/ tomorrow if you're not in 
> there. Or of course, come join us and you can ask questions too.
> 
>

Excellent and very helpful insight.  Thank you.  This is a good topic.  I have 
recently beening required to do the same thing.  It truly is something that 
comes with experience.

Jonathan


More information about the UPHPU mailing list