There are very few things I have learned from the eXtreme Programming methodology. The majority of what I find good about XP is pretty much other programming methodologies that XP has borrowed for itself. For instance, the iterative (or spiral) method that goes with the mantra “release early, release often.” The people that matter (marketing, sales, tech support, and beta customers in my case) see frequent betas and can guide the direction of the software/firmware/hardware. On the other hand, the “pair programming” methodology of XP, where two people share a single computer and code over each others shoulders for the entire workday, is bunk. A second set of eyes is a godsend for tracking down the occasional tricky bug, but not for everyday programming.
One useful thing I learned from eXtreme Programming, which I can’t seem to find on the site (or in the books) now, is the use of index cards. You write each major task at the top of an index card — be it a bug to track down, a feature to implement, or a presentation that needs to be put together — with one task per card. As you investigate the bug or work on the presentation, you discover subtasks that need to get done, so they get jotted down on the same card. The card ends up being a sort of “call stack” (to use computer terminology) so that when you finish the current subtask, you can backtrack to what the original task was, rather than getting distracted by something else. If you run into something big that you can’t work on at the time, but needs future work, it gets written on a new index card and placed in the pile. You proceed like this, writing down new major tasks, breaking them into subtasks, crossing off completed things, until the pile of index cards is all crossed off. At any time, you can “reshuffle” the cards to keep in line with priorities. I have been using this scheme at work for a while now. It’s great for picking up after distractions. It’s also great for when I’m deep in code and discover something I’d like to refactor/rewrite, but can’t do immediately (so it gets a new index card at the back of the stack.) It’s not a great picture, but the pile looks something like this, with about 3 cards in the front, 100+ crossed-off cards in the back, and a bunch of blank ones in the middle:
For me, this system has been pretty successful. I used to do it on Post-It notes, but found that 3×5 index cards are a better size and shape. Because of the index card system, the Hipster PDA was brought to my attention about a year or two ago. At the time, I laughed it off as a dumb joke, designed to make fun of the folks who pay several hundred for a Personal Digital Assistant (or “surrogate brain,” as I call mine.)
These days, I run into more and more people that use the Hipster PDA as an organizer. It’s kind of scary. So the other day, I took the plunge and decided to start using one. First off, there are a few things that I am NOT going to use it for. Names, phone numbers, and addresses is one. Those are all in the Apple Address Book application, synchronize with my phone, get backed up to a disk array, and don’t need to be written down on index cards. There are just too many names and numbers for index cards to be useful. I’m also a bit hesitant to use it for my calendar because the one in my phone/digital-organizer beeps at me to tell me appointments are approaching and allows me to easily switch between month/week/day views (without having to write a month card, a week card, and a bunch of day cards.) On the other hand, I find that I simply don’t use the TODO/task list on my phone and rarely use the notes anymore. Nor do I use any of the financial features. So I thought it would be a good time to start using it for these tasks, possibly trying out calendar-related functionality if it feels comfortable–otherwise sticking with the phone/organizer for that stuff.
I started with a few forms from the D*I*Y Planner, printed 4-up on heavy cardstock and sliced into 3×5 cards. Of course, I couldn’t just go with only standard index cards so had to create some of my own. The first is a blank sudoku grid, also printed 4-up. You can take puzzles from existing sources (like the newspaper or online sudoku generators) and write the “fixed” numbers in with Sharpie. Another form I created (which is still a work in progress) is what I am temporarily calling the ARG/Programmer Reference, which isn’t really for writing on, but is a bunch of pre-printed reference data including: prime numbers, a ROT-13 table, letter frequencies, morse code, braille, roman numerals, and a decimal/hex/ASCII table. Yes, the audience for this second page is likely to be small, but I have a similar ASCII chart and prime table pinned to the wall at work that I use all the time. On that same page is a shopping list (my own personal set of generally-weekly staples and probably not usable to many other people) and a slightly different sudoku grid.
Another useful customization I have made to my Hipster PDA is the use of Book Darts instead of tabbed dividers. Every page describing the Hipster PDA shows how to make a variety of divider pages, some much thicker than others. Instead of wasting extra page thickness, I have a set of four Book Darts on four key pages (although I reserve the right to shuffles these around, add/subtract darts, etc.) The dart on the left is the “action/waiting on” page, the one on the right is a todo list, the one in the lower left is for spending, and the one on the lower right is for harmony. The last page has a few extra darts to pull out and use in books.
The whole thing is 20 preprinted pages and about 5 blank index cards. I guess I’ll see how well this works and will probably remove templates I don’t need or add/change ones that aren’t quite working fully. That’s the nice thing about the system–you’re not confined to “DayRunner Refill Pack #1″ and the like because you can just design and print out your own sections.