I have some questions about using Excel, though. While I'm no fan of MS Project, once I figured it out (about 8 hours worth of banging my head on the wall and 2 hours on the phone with MS tech support), it was able to do some fun things that I haven't figured out how to do with Excel, noteably calculate dates and critical paths for multiple people. Once I had the raw data entered, it was easy to juggle tasks from person to person and than rebalance until everyone was going to finish at roughly the same time. How can I use Excel to do that?
My response to Chris:
As for rejuggling tasks -- if you have to do this at anything other than the most macro level, chances are that juggling will wind up actually changing the duration of the task in a dangerous way. For example, if you asked me to write code for an EXE that connected to a web site, checked if a new version of the EXE was available, and if so, downloaded it and replaced the EXE on the hard drive (even while the EXE was running), I would estimate that at "1 day" because I wrote code like that two weeks ago and it took me 1 day. Among other things, I know how to use the WININET functions for reading a web page; I've done stuff like this in the past so I know to wrap the version number result from the server in XML so some clients don't get "version 404" as the result; I know how to replace an EXE on the fly and have code snippets to do this.
On the other hand, assign that task to almost anybody else and it will almost certainly take 3 or 4 times as long, even for a good programmer, because their particular set of 'memorized' skills is probably radically different. If you asked Don Box to do some bizzaro thing with ATL and apartment model COM threads that uses MTS, he would do it in 20 minutes. It would take me 2 weeks, and I would cry a lot during the process.
Now... you still sure you want to reassign tasks *after* a programmer has estimated it (based on their own particular skill set?)
But: to answer the actual question you asked, the way you do it with Excel is to make a column called "Person" with the person the task is assigned to, then use the SUMIF function to make a quick table of hours-per-person, and "rejuggle" until they're close. But reality check: unless you're doing particularly boring work that your team has all done millions of times before (teaching COM classes? ;) it ain't a gonna work.
You’re reading Joel on Software, stuffed with years and years of completely raving mad articles about software development, managing software teams, designing user interfaces, running successful software companies, and rubber duckies.