June 20, 2013

Nothing Ever Takes 5 Minutes

Today, Greg sent out a link to some guy's blog post about how programmers estimate time for tasks/jobs. It's a pretty good post, you should read it. The link came at a funny time though which is why I'm writing this post. I was in the middle of a somewhat medial task that in my head should have only taken 5 minutes.

The Request

The request was simple. The client wanted to be able to add links to a field that was, at the time, set up as a plain text field. All I needed to do was either enable a text format that converted links or slap on a WYSIWYG editor and I'd be done. Both of those things are simple in Drupal. It's just an option on a configuration page. 5 minutes. Easy.

The Breakdown

  1. Incoming request from client "Can we add links to the description field?". I Think for a minute about whether or not I want to add a limited WYSIWYG editor to the field, or just change the text format to automatically convert urls to links. Decide on WYSIWYG. Reply to message.
  2. Approval from client. I log into the site on our dev environment and change text format for the field in question to 'Filtered HTML'.
  3. I decide to check the field and realize there's no WYSIWYG profile set up for it. Oh yeah, we're not using this text format on any other fields so it's never been set up. Create a WYSIWYG profile for the Filtered HTML text format. Manually set buttons and plugins, save, check field.
  4. For some reason all links on the content type in question are set to "display:block;". No idea why so I remove the "display:block;" and check the page. Looks good. I wonder if other pages are going to be messed up now because of that... I check a few other pages. They all look good. We're probably fine. Commit CSS change and push.
  5. Time to push the config changes. Run drush features-update on my feature to get the field config changes. Commit and push. Pull the changes on the live site and check the field. Nothing. What? Oh yeah, the features I pushed don't have the WYSIWYG profiles. Go back to dev, run drush features-export with the wysiwyg profiles, commit, push, pull, check field. WYSIWYG is there. Awesome. Done.
  6. At this point I realize that I should probably log in as a user with the same role as the client to make sure everything's working for them. It's not. Permissions. Set permissions so the role has access to the Filtered HTML text format. Check field. Forgot about the Better Formats module permissions. Set permissions and check field again. It works. Hooray!
  7. Take screenshot of text format drop down (this is hard to explain why, but trust me they'll need it). Write a message to the client with a little explanation about the text format selector. Done. For real this time.
  8. Total Time: About 40 minutes

Analysis

What happened here? My original estimate blew up 8-fold into a 40 minute drupal bonanza. Did I do something wrong? Maybe... But re-reading through the breakdown, I don't think there's any blaring mistakes. Just a bunch of little things I didn't think about when I first figured it would take 5 minutes. My only mistake was thinking anything could take 5 minutes.

Conclusion

So what have we learned today? Estimating time is hard.