Archive for the 'Project Management' Category

A brief history of time (management)

Saturday, July 19th, 2008

This started out as a review of the new OmniFocus app for the iPhone. I was going to talk about it being the first time I can have powerful task management on my main computer and not abandon it at my desk. I was going to explain that I have always either tied myself to a solution that was too simple, but portable, or an awesome desktop app that was only truly helpful when sitting at my desk. Being too analytical, I started out by thinking out the history of my to-do list, and I realized that explained why I like OmniFocus better than my actual article. So, I present to you my (mostly) chronological evolution of to-do lists.

Day Runner

My first love…

My mom got me my first Day Runner when I was 13 (possibly younger). Really. I begged for it in the office supply store as only a future nerd could. She eventually gave in to my geekiness, and I got my first taste of organization. It seemed infinitely extensible, yet structured in a powerful “business professional” way. You’re thinking there was no way I thought about that when I was 13, but you could not be more wrong. I loved a fully-stocked planner, and I still kind of do. My wife replaced her Palm Pilot with a big planner last year, and she couldn’t be happier (although her iMac is replacing it). My problem? I write down way too much with my whole “ubiquitous capture” obsession, and I can kill many a planner.

Paper

…and then I couldn’t afford the refills.

Inevitably, at some point I wore out multiple planners and went through way too many refills. I realized that I could manage just as well with a good spiral notebook, and then I could stop crying quietly at night thinking about how much I was spending on that specially-formatted-just-because-we-can paper known as “refills”. Yes, I could have just printed my own refills, but that wasn’t nearly as easy/popular/economical in the olden days. I normally just ran out of the to-do list refills and ended up shoving a napkin with a project plan into the pocket.

Palm Pilot

Project management in my pocket.

I have had six different PDAs. I even had a Sharp Zaurus SL-5500, which gives me way too much geek cred. I used little project management apps like “progect” to organize my tasks. The thing I loved was that it was in my pocket all the time (seriously, all the time). I just ran my task list from my pocket, and never cared about syncing issues. This was good because I had Linux in the bad old “can’t-really-support-usb” days that involved modifying and compiling your own drivers (I did), and I tended to like Palm apps that could only talk to the ugliest desktop apps on the planet.

Paper 2.0

I guess I just need paper again.

At some point I realized that the un-sync-ability of my task apps made them about as “powerful” as pen and paper and less extensible. Obviously, my next step was to go back to paper with a vengeance. I mean, at least on paper I could organize things the way I wanted them, and I had started to work out my own GTD-like system with projects on one page, and today’s task list on another. I just had a great big list of tasks, and I narrowed that down to a smaller chunk every morning on a separate piece of paper. It was simple, but it didn’t always scale. Once my “big list” reached two pages, a lot of important projects got lost in the shuffle.

Palm Pilot w/iCal

Okay, I can kind of sync.

I had a brand new Powerbook, and it could sync! This didn’t really solve the scaling issue, but it was a start. I imported everything into iCal, and then I’d flag the top 5-10 tasks to work on each day. It was almost exactly like the paper system, but I could scan it faster and it could easily talk to my Palm Pilot. This worked great until my task list reached 265 (I’m now at 423). At that point, I lost perspective, got depressed, and started going on all-night organizational benders.

Kinkless GTD w/iCal

I can kind of sync, and I’m getting organized about it.

After taking a long weekend to “clear my mind” and “stop screaming at inanimate objects”, I found some great sites like 43folders.com that gave me enough tips to talk me off the ledge. I discovered Kinkless GTD, and then I read “Getting Things Done” by David Allen. I decided that GTD wasn’t “the way” or a cult, but it was a good place to start in actually, you know, getting things done. All of a sudden, life was a little bit easier. I had less stress. I could sync with— no, I could kind of sync with my Palm Pilot. I synced a couple times. One day, my iCal messed up it’s own records, synced with Kinkless, wiped out Kinkless, and then in “data seppuku” wiped itself out. I lost my 265 tasks into oblivion. This happened twice before I buckled down and bought Missing Sync.

iGTD w/iCal

I can kind of sync, and I have a GUI.

Unfortunately, I fiddled too much and got tired of pressing the sync button all the time. I completed something, so I pressed the sync button. I changed something, so I pressed the sync button. I forgot if I had forgotten to sync in a while, so I pressed the sync button. It was a natural result of Kinkless being a script, and you can’t blame Ethan for that. I wanted GUI goodness, though, and I tried iGTD. I used iGTD for quite a while, but I just couldn’t commit to it. I wasn’t managing my projects with the same top-down view I had grown to love. It was just built for people who think differently than me. At least I could still sync, though.

OmniFocus

I love my app, but I’m not mobile.

I joined the alpha testing for OmniFocus, and I loved it. It had more of the “big picture” views that I needed, and it even had some basic iCal syncing to tide me over. It wasn’t perfect, but it worked. It worked, at least, until I got my iPhone. I loved my Palm TX, but I just couldn’t resist the charms of the iPhone. I needed my task list, though, because I still have a few moments every day (maybe not today) that I’m not staring at my computer screen. I like to run errands, fix things around the house, and, yes, even help my wife cleaning the house. My big solution? To print an errands and housework list from OmniFocus or write it down in my notebook. Then, I’d check things off and “sync” it later by checking things off in OmniFocus. I always needed to add to my things to my inbox, and I got really good at emailing myself tasks. OmniFocus handled my emails with ease, but I still couldn’t actually edit tasks or plug my new tasks into just the right spot in the middle of a project. I was just sending myself reminders, basically, of things to organize later.

OmniFocus w/iPhone App

Bliss!

Here I am today, and I’m the happiest I’ve ever been with a total solution. This is sweet, sweet, synced bliss. I do my main organization, weekly reviews, new projects, etc. on my laptop in OmniFocus, and then it’s automatically in my pocket. I can even tweak, rearrange, defer, delegate, and create on my iPhone, and I’ll see it later on my laptop when I get back to work. I basically have a license to fidget with my system all the time, for better or worse. Okay, it’s not technically perfect. Sometimes the syncing is slow (like three-minutes-to-update-my-tasks slow) or I can’t sync at all, but that’s pretty much because of MobileMe’s widely-publicized growing pains. Even then, it’s still the best system I’ve had.

Addendum

Moleskine, you complete me.

Lest my pocket Moleskine and Pilot G-2 be offended, let me assure you that I’ve only abandoned paper for my to-do’s. My wife knows exactly how obsessive I am about my notebooks and pens. As an aside, if you haven’t read The Gel Dilemma on RandsInRepose.com, I highly recommend it. The only part where I differ with him is that he sees the retractable operation as a bad thing (which I know I used to), but I actually think it’s more convenient to getting my pen “ready to write” and never losing another cap.

How Not to Design Software

Sunday, March 23rd, 2008

For those who care to listen, I try to give advice from things I’ve seen done right. Occasionally, I’ve done something right, but normally I like to look at other people doing things I should do better. This is not about doing things right, though. This is my story of what I did completely backwards and wrong in about a week, and how I had to fix it in one day. Maybe you can learn from my mistakes. Or you can laugh at me. Either way, I hope you can get some amusement or education from my five not-so-easy steps to really screwing up software design:

  1. Design a Perfect Solution. We had a simple problem. We were going to have our first “virtual conference” where real registrations would be paid for by real credit card transactions for access to a “virtual” online conference with streaming video, forums, and chat. Our problem was that our current online registration system was designed for “real world” conferences. I had hacked it into our shopping cart a long time ago, and it worked great. It could provide us a list of attendees before the conference, and emailed them their conference information. It didn’t however, talk to our website’s backend. Our TYPO3 website already has all of the user management tools, and would take care of granting “attendees” access to the forums, chats, and video features based on group permissions. Our shopping cart just didn’t know how to add or edit users in the database. Now, some of you are already shaking your heads. What was I doing running a website where the content management system was not talking to the shopping cart? Have I not learned anything about “seamless integration” and “smooth user experience”? Well, now I need you to get off your soap box and shut up. I would have loved to integrate these two complex, perfectly independent, working systems before. It wasn’t a priority because no front-end users could tell the databases weren’t talking. It was a larger-than-life project. Seriously, you just need to drop it. Anyway, I immediately set forth working on the perfect solution. I designed the entire thing on a whiteboard. I mapped it’s user interface, functionality, and even the variables I would use. It was perfect. Using only 80% of my development time, I had designed the monster. This left me with –crap– a couple of days to actually build the whole thing. I mean, design is so important, but maybe that’s just too much time out of the total timeline. That’s what I should have thought. I didn’t think that. I thought the design was too important to reduce it down to just a day, and so I had over-designed like there was no tomorrow. Literally.
  2. Build for Scalability. What did I design this little bridge for? For the 500 estimated registrants? For this one conference, and maybe the one after? No way. I decided to design a system that would work for the most amount of people and would never have to be changed. I could’ve realistically handled 10,000 registrations, and all we would have had to do for any future conference is create a new instance with a click of the mouse. Obviously, this kind of scale limited my options a little bit. I couldn’t simply modify our current registration system. If I did (and I worked this out), there was no way for the users to be automatically added to the correct group in TYPO3. The problem with designing for 10,000 people was that it all had to be automatic. We couldn’t keep up with manually approving anything, even if it only took one second per user. I also couldn’t make a system that worked just for this conference as a test. No, the entire thing had to customizable to the nth degree considering every conference we host has different demands, and it had to handle all of them (even the ones I can’t think of). The problem with this? There are probably only going to be 500 users at most this time around. If I have to manually touch each of their records for just one second, that’s only 500 seconds in the next month. That’s right, I spent days designing a system that would save me eight minutes and twenty seconds. And future conferences? Yeah, I’ll probably have to tweak the code a little bit no matter what I plan now. In my “perfect solution”, though, that code was an 800 pound gorilla of an extension instead of the 2-3 PHP files that can be edited without worry.
  3. Use the Best Tool for the Job. That’s actually a bit dishonest. I didn’t, technically, try to use the best tool for the job. I tried to use the absolute perfect tool for the insane job I had over-designed. What was my tool? To do basic PHP editing on the shopping cart registration forms? No, that’s not scalable. That’s not elegant. No, my tool was going to be a fantastic TYPO3 extension that would bring the whole world together. Now, I ignored some basic facts like (1) I had never written a simple TYPO3 extension and (2) I had successfully written a hundred modifications to the shopping cart. I would not be deterred, though. Like the thousands of PHP developers who dive into a new learning curve because they know that Ruby on Rails is the best way to build a one-off blog in the afternoon, I cracked open the books. I didn’t ask myself if I was going to need this education again in the near future (probably not) or if I truly had the time to add training to the timeline (definitely not). I just started working on the perfect solution that would take me about two days just to train myself on. Don’t get me wrong, though, because I love learning new solutions. I love learning new languages, frameworks, and techniques. Maybe, though, this was a bit too much training for what could have been a half-day project. Once again, that would have been the perfect thought to have a week ago.
  4. Commit to Your Decisions. Now that I had only done one complex design and started training on a solution I had never used before, I had to commit. Even when I started to fall behind, I reminded myself (and my boss) that I had to launch all or nothing. Why? Because I had conveniently left myself with no other options. I had nothing right now, and the only way to fix that was with this too-big solution. I couldn’t launch just part of it, because it was a monolith. I couldn’t go back to the easier solution because, well, it wouldn’t have all the same features and it wouldn’t be infinitely scalable and I had already read all the books and… and… I was committed.
  5. Fight Through the Pain. Now that I had committed to an over-designed behemoth solution that could scale to twenty times more users than necessary using a system I didn’t know, I had to buckle down. I couldn’t stop for food or sleep. Even when I came back from SXSW exhausted, I started pulling all-nighters. Then, I got sick. So, I muscled through that. Until I got sicker. I muscled through some more. Until my boss made me rest for one day. One whole day. He made me come to our weekly prayer meeting, admonished me for making myself sick instead of asking for a few more days, had everyone pray for me, and then dismissed me to my house to rest. I was not allowed to work on registration. It was horrible. It was the worst thing that he could do. That is, until I rested for a while. I realized that I had designed the wrong solution. What was too hard to realize earlier in the week when I was hungry and sleep-deprived became self-evident. I was being a newbie project manager all over again. So I rested and sub-consciously thought of a whole new solution. I didn’t work on it that day, though. I just napped, watched movies and let it stay in the back of my head for an entire afternoon and evening.

Okay, so that’s everything I did spectacularly wrong. How did I manage to fix it? I gave up on everything I had done. I copied our registration form and modified it slightly for this event. I added in a few quick hooks that added new users to the TYPO3 database by good ol’ MySQL insert. It took me about three hours. What doesn’t it do? Well, it still doesn’t automatically add them to the correct group for approval. But, it marks them using a magical, proprietary system in the user list to show that we need to approve them. Okay, it prepends “1_” to the username. Shut up. It’s great. Once every few hours, we look at the user list in the TYPO3 backend and add everybody with a “1_” to the event group, then delete the “1_”. It takes a little less than a second per person. And now I sleep properly. The wrong design took me about a week of hard work. My next-best design took me a morning. Hopefully I learned my lesson. Maybe I can tattoo my easy steps for designing bad software on my arm for me too look at every day. If you have any more tips that nobody should be taking, you can put them in the comments or email me. Maybe I can tattoo those on my other arm…

Michael Lopp (Rands) talked about Apple’s Design Process

Thursday, March 13th, 2008

Michael Lopp (a senior engineering manager at Apple) gave a great presentation this past weekend at SXSW with John Gruber about the blood, sweat and fear in great design. He talked about the long, hard process they go through at Apple, and it was probably one of my favorite panels. I was so excited by some of the ideas that I recited everything I could remember (without my notes) to our graphic designer at Generals this morning before coffee. I was so excited about it that I was going to post all of my impressions here… until I saw that Helen Walters had already written a better report on it for Business Week here. So, I highly recommend reading the article, and I’ll go back to trying to write my original thoughts about other people’s words later.

[via TUAW]

OmniFocus Is Coming Out and You Probably Need It

Sunday, November 18th, 2007

omnifocus.png
The great mac developers over at OmniGroup finally made OmniFocus public this week. It will be officially on sale on January 8th, but you can check out the public beta now and even pre-order it for half-price before it comes out.

I’ve been using the alpha version steadily for a couple months now, and I have to say that it’s awesome (besides the random earth-shattering bugs that happen in an alpha). I’ve used kGTD and iGTD, and I am pretty sure I’ve tried out every other task management app out there for the Mac. My biggest complaint was that kGTD needed constant syncing to be useful and iGTD didn’t give me the project overview that I need during my weekly reviews and professional “Oh crap, I’m supposed to be a project manager not just an overworked idiot with 3,400 to-dos” triage. I am happy to say OmniFocus has the best of both worlds for me: kGTD’s ability to see all of my open projects and their statuses at a glance and iGTD’s ability to be it’s own small app that I can leave running all day long. On top of that, it’s got the Quicksilver, Mail, Safari, everything else integration that I really need and used in iGTD (iGTD is really great for a lot of people and I loved it).

I’m really not one to push software on anybody; choosing software is a very personal matter for control freaks who are in so many ways trusting their livelihood on the computer. I remember when kGTD/Missing Sync screwed up once and wiped out my whole task list (and the backups in a miraculous swoop)… I really thought I would have to quit my job and live as a rambler because I couldn’t remember what was so important about my current project and what the heck was my next action? I’m recommending this one, though, because everybody has stuff to do. Heck, if you’re still reading this it’s because you’re either a fellow developer/manager/administrator/person with a computer who’s begging for a way to make his job easier… or you’re my wife. Everyone else can stop now. Seriously, though, you need task management. Everyone who wants to do more than one task before they die has a to-do list, and everyone who wants to finish more than project before they die needs a system. If you have only one task left, congratulations. If you have only one project left, I hope it’s really, really interesting. Everyone else probably needs a system. So, try out OmniFocus in the public beta (but don’t sue me if it loses your data while they’re fixing bugs… their support ninjas are good, but not perfect). If you don’t like it, try out iGTD or another app out there. If you don’t like either or you need something in your back pocket, buy a notebook or some notecards. Just don’t keep sitting around waiting for something to install itself on your computer while you’re asleep and organize all your tasks. Choose one and run with it. Now.

Merlin at IDEO: “Know How” Talk with Scott Underwood

Saturday, October 13th, 2007

Merlin Mann (from 43Folders, MacBreak Weekly, and other things) has a great video from his visit to IDEO where he talked about effenciency, email, and GTD. I especially agree with his idea that GTD is the perfect tool for “clearing the decks” and keeping the menial tasks down, but it’s not always the best tool for actually completing creative tasks. Anyway, you can watch his video here (and he’s posted a downloadable version as well).