Warning: include() [function.include]: Unable to access /var/www/html/rogue-development/blog2/wp-content/advanced-cache.php in /var/www/html/rogue-development/blog2/wp-settings.php on line 62

Warning: include(/var/www/html/rogue-development/blog2/wp-content/advanced-cache.php) [function.include]: failed to open stream: No such file or directory in /var/www/html/rogue-development/blog2/wp-settings.php on line 62

Warning: include() [function.include]: Failed opening '/var/www/html/rogue-development/blog2/wp-content/advanced-cache.php' for inclusion (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/html/rogue-development/blog2/wp-settings.php on line 62

Notice: add_option was called with an argument that is deprecated since version 2.3 with no alternative available. in /var/www/html/rogue-development/blog2/wp-includes/functions.php on line 3468

Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in /var/www/html/rogue-development/blog2/wp-includes/functions.php on line 3382

Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in /var/www/html/rogue-development/blog2/wp-includes/functions.php on line 3382
Schedule « Marc’s Musings

Archive for the 'Schedule' Category

Scheduling meetings

Scheduling meetings through outlook might be one of the worst practices I need to deal with on a daily basis.  It saves us a ton of time in the meeting-planning department but has huge drawbacks.

Problem number one, it’s WAY too easy to schedule a meeting with someone.  Since the bar is lower, more meetings happen.  Since there’s more meetings, they’re often individually less valuable.  Since they’re less valuable people don’t treat them with the respect they deserve.  Nobody prepares beforehand.  Meeting agendas are the exception, not the rule.

Secondly, it’s not an efficient way to schedule a meeting.  Wait, let me revise that slightly.  It’s not an efficient way to schedule a set of meetings.  The normal process that is often used is to put everyone on an invitation.  Find a block of time everyone is available.  Book it.  Later, that process is repeated for the next meeting.  Even later it’s repeated again.  Since different people go to different meetings, individual schedules get “fragmented”.  Back in the days of personal assistants (or back then I guess the term was “secretaries”), they would handle the process of defragmenting schedules to make them make more sense.  This leads to situations when individuals have an hour meeting, an hour to work, an hour meeting, an hour to work, etc.  Without bigger blocks of time to work it’s impossible to tackle certain problems.  Even worse, a high priority meeting might get pushed back because other meetings were scheduled earlier.

Combine those two problems, and it actually gets hard to book a meeting.  Since there are a lot of them.  And since there is fragmentation in people’s schedules, finding an open block that everyone can join can be really hard to do.  This means scheduling happens further and further out.  If you need to talk about something with 10 people and the only time slot to get them all in a room is a week away, that sucks.

A side-effect of this is that when you receive a meeting request, you often really feel obligated to accept it.  Especially if the sender knows you have a free block of time.  That means you’re not asking yourself  ”Is me attending this meeting the best way for me to spend my time to advance/improve/help the organization?”  I think we should be asking that question all the time!

How to define an ideal solution?

If we’re going to explore other options, it’d be helpful to have some evaluation criteria.  Here’s what I would look for in a meeting scheduling system (in my order of priority).

  1. Ability to schedule meetings without conflicts.  (including resource and people conflicts)
  2. Schedule more important meetings sooner than less important ones.
  3. Minimize the number of chunks of free time each user has.  (In other words, maximize the average length of non-meeting time)  This one is really important for knowledge-workers.
  4. Encourage productive meetings.   (Clear purpose, set agenda, everyone comes prepared … )

What other properties might an ideal solution have?

So what’s one solution?

First, here’s a technical solution.

The first problem of meetings being too easy to schedule is tough.  It really requires training people to act differently.  Without designing a technical solution that somehow discourages meetings, I’m not sure what to do about that.

The second problem could have a technical solution.  Imagine a “smart” scheduling system.  You need to schedule a meeting?  Submit the details of the meeting to some computer system.  Tell it

  1. Who needs to attend
  2. Any time constraints that must be upheld.
  3. What resources do you need.
  4. How important is it?

But the important thing is that you don’t specify when it happens.  (There may be time-constraints for some meetings that do dictate a time.  Like if a client is arriving, it has to happen in a given time slot.  Or if there is a release planned for thursday, the release planning meeting must happen before thursday.)

Then the system is free to schedule that meeting whenever is “best” by some smart criteria.  It tries to maximize individual people’s free time blocks.  It tries to schedule more important meetings sooner.  It moves existing meetings when new ones are scheduled so there’s always an optimal solution planned.

The downside?  Meetings move.  It’s hard to plan ahead.  Someone needs to develop a complex scheduling system.  The time that meetings happen becomes “voodoo magic” to some people.  It’s possible to game the system.  It’s not flexible.

Solution #2

Now, here’s an organizational solution that I want to try out here at TSP.

1) Meetings that HAVE to happen at a certain date/time are scheduled as normal.  Got outsiders coming in?  Meeting to watch the pat’s game?  Go ahead and schedule those as before through outlook.  Hopefully that’s the minority of meetings for you.  (If you’re the guy meeting with outside clients all day long, you’re pretty much screwed any way you look at it.)  A certain class of exceptional or emergency-meeting falls in here too.

2) Got a meeting that doesn’t HAVE to happen at a certain date/time?  You’re not allowed to just schedule that through outlook.  Instead, at your daily scrum we schedule those as a group.  With one more constraint.  You only schedule meetings for tomorrow.  It’s either important enough to schedule for tomorrow, or it isn’t.  That’s a much easier, concrete decision to make than scheduling a meeting next-week.  Some meetings lower on the priority list might not fit.  That’s fine, try to get them on the list again tomorrow.

To actually create this schedule, you’re likely looking at outlook as a group.

Benefits:

  1. You can intelligently schedule meetings.  Since you’re only looking at a day at a time and you’re considering all the meetings together it’s easy.
  2. You get to decide which meetings are more important than others.
  3. You get to weigh the benefits of a meeting against non-meeting things.  It’s easy to schedule a meeting a week in advance for a trivial matter.  It’s really hard to schedule that meeting *tomorrow* if there’s more important things to do.
  4. It makes people think about meetings and whether or not they have to happen.
  5. Since a meeting you’re invited to is only ever a day away, it’s more on your mind and you might prepare for it instead of being surprised by an outlook reminder.

Down sides:

  1. Boy does this require a lot of buy-in from everyone involved.
  2. Participants have limited time to prepare (The person calling the meeting has as much time as they need to prepare since they could just wait another day if needed)
  3. Since your group is scheduling a day in advance, it can be hard to get ahold of resources that other groups might be scheduling weeks in advance.  There’s likely solutions to that, but I’ll stay away from them for now.

I’d only consider using this for larger (4+ people) meetings.  Still feel free to have impromptu talks whenever they’re needed.  Still feel free to try an resolve issues at the scrum, or by sticking around after your scrum.  In fact it might encourage a quick post-scrum discussion instead of a meeting.

Side-Note: I heard a rumor that Warren Buffet only schedules meetings a day in advance.  I have no idea if if is true or not.  But that’s where I got the idea from.

Caveats

Replace “Outlook” with any other “dumb” scheduling solution out there.  Lotus Notes?  Google Calendar?  Whatever.

Don’t complain that I call it outlook and not Exchange or whatever the entire-system should be called.

My solution assumes you have a short daily meeting.  It would suck to have to introduce that if you don’t.

What else?

There has to be better solutions to this.  What do you do?

The Essential Guide to Open Source Flash Development

The book I’ve been working on, The Essential Guide to Open Source Flash Development, is now out in stores.  It’s hard to believe that I started working on it about 11 months ago!  It’s really great to see all of that hard work finally in print.

So What is it about?

The book does a few things.  First, about a third of the book introduces you to some open source tools for doing flash development.  Things like FlashDevelop, MTASC, SwfMill, ANT, and ASDT.  It’ll show you how to create an AS2 and an AS3 based flash application using completely free and open software.  This goes all the way from installing the tools, creating a sample app, writing up some unit tests for it, and then to publishing it to the web.  Along the way it’ll give you a brief introduction to each tool, explain what it does, and then give a quick example of how to use it.  (That’s the 5 chapters I wrote)

The remaining 2/3 of the book dedicates a chapter to various open source projects going into a little more detail about them.  There’s a chapter on Papervision 3D, SWX, FUSE/Go, HAXE, AMFPHP, two for Red5 and a couple more.

This was a lot of fun to work on, and my only regret is not getting to know the other authors better.

If you’re looking for a place to buy it, check out Bookpool.   I worked for them for a year and they’re really stellar guys.  They offer good prices, but more importantly;  as long as the book is in stock, they do their damndest to get it on a truck the day you order it. (Of course, you’re at the mercy of the publisher if it’s out of stock)

AgileAgenda – New Version

Posted a new version of AgileAgenda over the weekend.  Fixed a few minor bugs, redesigned the opening screens, and put in our new logo.  The entire initial user experience should be better now.   Here’s a quick glimpse of what it looks like now:

AgileAgenda – New Version

For those of you new here, AgileAgenda is a project scheduling application built on Adobe AIR.

There’s a new version of AgileAgenda now available on the website.

It’s been updated for AIR Beta 3, and includes a lot of bug fixes and minor enhancements, with a couple large feature improvements thrown in for good measure. You can read the list on the project blog.

The biggest change for me is file open/save dialogs work on OSX Leopard! Yay.

OSX Flex app is slow…

So I tried my scheduling software on my mac today. It took about 18 seconds to calculate my schedule on my duo-core 2ghz MacBook Pro.

My home WinXP 2.1ghz DuoCore2 based machine takes 2 seconds. A 9x improvement.

But the shocker… my work WinXP laptop with a 1.7ghz Pentium M, a MUCH slower machine, takes about 4 seconds.

Why is the Mac so much slower on compute intensive actionscript?

I’ve heard of it being slower on graphical animation type things, but not something like this.

Getting closer to beta … AgileAgenda

I think I have all the functionality working that I care about for a closed beta. I’ll take a few more days to poke at it to make sure it’s all working and then release something.

For now, here’s a WINK screencast of some of the functionality:
http://www.agileagenda.com/

-Marc

Agile Agenda – Web View

While AgileAgenda will be a desktop application, it will have tight integration with the AgileAgenda.com website. From within the application you’ll be able to publish a version of your schedule to share with colleagues.


Once you do that, you can share your personal url with people who you wish to view the schedule.

http://www.agileagenda.com/view.php?schedule=1_6d9624696a3447404913dc0dd964e64a

Right now, the view is very bare-bones, but it’ll turn into a full featured viewer in the near future.

This feature gave me a chance to try out AMFPHP, something I’ve long since wanted to give a spin. It turned out to be a lot easier to use than I could have imagined.

By making the web view it forced me to make a Flex/browser compatible version of the software. That gave me a chance to try out the new FB3 profiler, and using that I was able to get the compute time of my (rather large) sample schedule from 15 seconds down to 2 seconds.

AgileAgenda is born

Yesterday I asked for name suggestions for my scheduling software, and was disappointed to only get a single response.

Luckily, that single response rocked.

http://www.agileagenda.com/

Thanks Steve. (If you want your free copy when I get around to release time, leave a comment with some contact info in it.)

Name my project (Scheduling Software)

I need a name for my current project. It is a project planning & scheduling tool (Much like MS Project) aimed at software developers.

I’m looking for a name that embodies one or more of the following:

– Project scheduling
– Treating the project plan as ever changing instead of something you create once at the beginning.
– Using the tool every day for short amounts of time to keep the schedule up to date. (Continuous planning)
– Planning software based projects.
– Intelligent scheduling algorithm

Bonus points go to:
– Names that I can get the .com domain name
– Names not used by other similar projects
– Catchy names
– Professional sounding names

If you care to read about it more, some thoughts are in the “Schedule” label of this blog.
http://www.rogue-development.com/blog/labels/Schedule.html

Just post in the comments. If I choose your name, I’ll give you lifetime free updates to the eventual product :)

Update on Scheduling Software

Past few days I’ve been blogging about my new project-scheduling software I’ve been working on. Yesterday I implemented the “welcome” screen when you open a project. Eventually, I’ll extend this screen so it captures all of the quick tasks one need to do on a day to day basis with a schedule. But for now it has:

  • Project Summary – # of tasks, completion date, etc.
  • The next 3 upcoming milestones, with expected completion dates.
  • Tasks currently being worked on, and by whom.
  • Tasks that are currently late.
  • “Latest News” box – pulls data from my website for info about new versions, etc.

Both the task-lists have a button to quickly mark them as completed.

The software is to the point where I’m going to start using it at work. Hopefully within a week I’ll have it to a point where others could use it.

I also implemented a feature that will let you easily share the schedule with anybody, but I’ll keep specifics of that secret until we’re closer to release. It’s cool.