Moving to VR

About a year ago, I decided it was time for a career shift. I managed a fabulous team of mobile developers who were a joy to work with, but I missed creating things. I talked to my boss at Mutual Mobile about the problem; he encouraged me to chart out a way back to an engineer role within the company.

I thought carefully about my options. I could go back to iOS engineering, which my previous boss had done. He was delighted with the change and had no regrets whatever about stepping down from management to an engineering job. But I enjoy learning and figuring out new things and, while iOS is a fantastically enjoyable platform to develop for, iOS 10 seemed pretty mature. I moved from web development to mobile because the web stopped feeling like the wild west. Now I had the same sense about mobile.

So I looked at alternatives. Mutual Mobile had a months-old Virtual Reality practice at that point that was gaining steam. While I hadn’t yet spent any serious time with Unity, which the team uses for its work, my son and some of my fellow engineers both had and were clearly enjoying the experience.

I floated my plan to retool myself into a VR engineer to my boss and the VR team, all of whom were gracious enough to give it an enthusiastic thumbs-up. So in early 2017, I began a self-administered crash course in Unity and VR. I found Unity’s online training materials to be excellent, and by the time we executed my official transition to the VR team, I was able to jump in and contribute to the team without a problem.

(I was still green compared to the other two excellent engineers working on our projects, but made up for it by continuing to do management of our engineering and project management teams.)

I’ve now gotten to contribute to a Cardboard project and do all the engineering for an Oculus Rift project. (The former should be available in the mobile app stores soon, and the latter will be installed in the Bass Pro HQ in Springfield in a few weeks.) The team’s also doing work with several other really interesting clients; I’m excited about the work ahead.

Now that I’m past the initial hurdles in Unity, I’m learning things I think might benefit other developers and/or VR enthusiasts. Accordingly, I’m going to post things here to document my learning. My areas of particular interest include: Good Software Architecture in Unity, Cool Stuff our Team is Doing, Using Physical Props in VR, and Accessibility in VR.

If you’re interested in any of these areas or just in creating VR, please get in touch or just follow along. I’m excited about this next phase of my career, and will be happy to have company!

Getting More Feedback

So, you want more feedback from the people you work with.
 
It’s critical to know what things you should be working on and how you’re progressing toward those goals. Our high-level goals are often well defined: write the login functionality for an app, sell 5 new contracts this month, etc. But how we do these things depends on the people around us and how well we work with them. If you’re part of a team, you need to know what they want from you to do your work best together.
 
The first challenge, of course, is getting any feedback at all. People are busy and have a hard time scavenging a few minutes to think about that sort of thing, much less figuring out good ways to communicate it.
 
The second challenge is getting honest feedback. Many of us want to be “nice” and to avoid saying things that are uncomfortable whenever we can. (If I’m honest, for me that usually has as much to do with cowardice and conflict-avoidance than with kindness.) So it’s important to think about how to make the process both as easy as possible and as safe and comfortable as it can be.
 
Here are a few approaches I’ve found that work well:
 
  1. Ask a specific question out loud: “Hey, I want to be doing great work here. How do you feel I’m doing, and what’s one thing I could improve?” By asking verbally, we keep it quick; answering only requires a minute or two of someone’s time. By asking for a single thing to improve, we can also remove much of the concern that our colleagues have about coming across as mean or critical.

    When we ask for something specific, we allow others to offer an improvement as a favor rather than a criticism. Doing this verbally means that there’s no written record of what they say, which helps ease the pressure as well.

  2. Ask the same questions in Email, Slack, or another written format: This takes longer, both for you and for the people from whom you’re asking for input. Colleagues will be less candid, as they might have concerns that their comments are “on the record,” and you’ll get fewer responses.

    On the upside, you will get more thoughtful feedback as your respondents take more time to reflect on their answers. You will also have a record to which you can refer as you’re working to figure out how to improve your work.

  3. Use an anonymous feedback tool: There are several that help you gather feedback while assuring your respondents that you won’t know from whom it originates. (I’ve used http://www.get3sixty.com/ and like it pretty well.) Anonymity helps your colleagues express themselves freely without putting a strain on your relationship. This results in more candid feedback.

    Include more questions if you want a richer picture of others’ perceptions of you and your work. If you keep the questions consistent over time, you can use the answers to track your own progress. But remember, the more information you ask for, the fewer people will likely respond. Keep the time needed to respond under a minute to get the most results.

  4. Ask your manager: Why do I list this last? Because of the telephone game. You’ve played it as a kid. A line of people passes a message, whispering it from one to another. By the time it gets to the end, what emerges often has hilariously little to do with the original meaning. Likewise, the fewer people between the source of feedback and its recipient, the clearer the message you receive will be.

    Having your manager gather feedback for you is useful for performance appraisals, other situations where you need an official record, or when you’re having a tough time getting candid feedback on your own. But the closer you can get to the source, the better the feedback you will receive will be.

If you’d like more guidance and feedback from your team, give one of these approaches a try and see how it works. Try soliciting feedback from your teammates every two months or so, though your individual cadence may vary depending on your situation. If there’s a specific area you’re trying to improve, you might check in more often to see how you’re progressing. With a well-established team, you may need less frequent feedback . But if you want to improve, getting regular feedback and coaching from the people closest to you is one of the best ways to do it.

Christmas Letter 2013

(This is the non-illustrated semantic HTML edition. Also available: the fancy photos-included PDF edition.)

Dear family and friends,

It has been quite a year for our family. We’ve enjoyed some great times together  with family and friends, a few promotions, a terrific (though slightly bittersweet) family vacation, a visit with alligators, an eviction from our house, a repatriation, and a new addition to the family. Read on for all of the details!

Kathy began the year working at Horizon Bay, an elder care facility around the corner from our house, as a caretaker. While she has a fantastic affection and gift for interacting with older folks, this was not a completely ideal appointment: it demanded a fair number of overnight shifts and other times that were inconvenient for her and the family, and it didn’t make much use of Kathy’s Therapeutic Recreation degree. After proving her worth and presenting her case to her boss, he appointed her Program Director for Clare Bridge, the Alzheimer’s community at Horizon Bay — a role that hadn’t existed before. She has received a number of accolades in her new position and, more importantly, loves it.

Emily continued her schooling, taking a few more art classes at ACC where she turned in some excellent work and continued to expand her artistic skills. In the middle of summer, she completed a long-planned move to Baltimore, which has the dual attractions of an art school that she’s interested in and portions of her family that she wanted to spend more time with. Her first few weeks there were a trifle rough: her car was broken into the first day she was there and the rougher sections of the city had her feeling a bit ill at ease. After selling the car and moving to a better section of town, she began to feel much more comfortable with the city, and is now enjoying it a great deal. She’s taking classes there and has been working a job at The Pratt Street Ale House for several months now, and has enjoyed the opportunities to visit with family and friends up in that part of the country.

Abigail is now in her Senior year at the high school. She’s taken up swim team this year, and has done quite well. She is turning in solid times on her events and enjoying her team and teammates a good deal. She has also been learning ukulele (it’s easier on her fingers that guitar was) and continuing to do some singing. One of her favorite classes at school has been a Special Education PE class, where she helps the kids there to stay fit and engage with others. Her plans for next year are still a bit murky, but we’re talking about and weighing the advantages and expenses of work, travel, college, etc.

Liam is halfway through his Freshman year. He has found the transition to High School easier than he expected, though the demands of marching band came as something of a surprise to him. In the month before school started, the band would arrive at 7:30, march until noon, and then practice inside until 5:00. During the first week of that, he would come home, eat a bit, sit in a chair in the living room answering questions in monosyllables, and stumble off to bed around 8:00. His playing is excellent, and he earned second chair among all the French Horn players at his school, beaten out only by one senior. He’s pulled straight A’s so far, and has also been learning some programming in his spare time, writing a few iPhone apps with a little coaching from Dad.

Maggie is now in 7th grade. She continues be a great favorite of her teachers thanks to her sweet nature, generosity, and willingness to work hard. She loves animals, and was delighted at the opportunity to have a lengthy horse riding lesson over the summer thanks to some friends of ours. (It was accompanied by a shooting lesson as well, at which she did startlingly well.) She also continues to enjoy art a great deal, and created several lovely pieces for family members at Christmas. Stories are also a favorite of hers. She’s enjoyed reading and rereading Maximum Ride and Harry Potter this year, in addition to reading through Jurassic Park, Terry Pratchett’s Dodger, and All Creatures Great and Small with her Dad.

Sean is finishing up his second year at Mutual Mobile, where he has been writing iPhone and iPad apps. He recently moved to an Associate Director role, which means less day-to-day programming and more strategic work and caring for people there. He’s also playing music with O’Malarkey, a local Irish band, whenever he can squeeze in the time, and has been enjoying cooking for family and friends more this year. The building of a 25′ tall trebuchet, some delightful long hikes, and a train trip to Chicago with Liam and Sean’s brother rounded the year out nicely.

Over the summer, knowing that Emily was planning her move to Baltimore, we pulled together a last big family trip: a week in New Orleans, where we had spent a day as a family a few years back and all really enjoyed. The vacation was terrific. We stayed on the edge of the Vieux Carré, and enjoyed rides around town on the streetcars, trips to the botanical gardens, aquarium and insectarium, and one of the most memorable meals we have ever enjoyed. (At Jacques Imo’s — “Warm Beer, Lousy Service” and highly recommended.) A particular highlight of the trip was a boat tour through Honey Island swamp, where we met a family of friendly warthogs and saw a number of alligators up close.

Alas, when we returned to San Marcos, it was to a home with a broken toilet supply line which had flooded a good portion of the house. Some of our good friends were checking on the homestead while we were gone and discovered the problem before it got even farther along, but it still ended up causing tens of thousands of dollars of damage. We moved to a three bedroom apartment for “no more than 45 days.” That ballooned to three months before we finally got home. Fortunately, USAA (our insurance company) was very helpful, one of our church friends was gracious enough to build us a beautiful new built-in bookcase, Kathy was able to replace the abhorrent pink tile that has lurked in our bathroom since we moved in, and the house now looks better than when the whole ordeal began.

During our exile, Maggie got stuck sleeping on the couch for much of time time which, understandably, became tiresome for her partway through our stay. As a thank-you for her forbearance, we (perhaps rashly) promised her a kitten upon our return home. Hewing to the family tradition of absurdly named animals (“Fluffy” the hermit crab, “Llama” the gerbil, “Hasenpfeffer” the rabbit), she christened her new black kitten “Mayonnaise”. He’s quickly made himself at home, and has even won over Liam, the most pet-skeptical among us.

 

As we review our year, it is apparent how blessed we are to have such terrific family, such wonderful friends — what a different year it would have been without those of us who give us regular support, and those we know are further off in the wings, ready to offer friendship when it’s needed. Thanks for being a part of our lives, and for allowing us to be part of yours.

May all the joys of this blessed season be yours in full measure. Merry Christmas!

The Clan McMains

(San Marcos Chapter)

 

Accessibility: What It Is, Why It Matters, and How to Do It

I did a presentation at CocoaConf Dallas today on how, as a developer, to make your iOS apps usable by people with visual impairments. It was a lot of fun, and seemed to be well-received by the conference attendees. If you’d like to see the slides, you can download them here:

Download Accessibility Presentation

In addition, I announced an open source component I wrote to make accessibility testing easier for developers. It’s called SMAccessibilityOverlay. By adding it to an app under development, you can temporarily display an overlay that quickly shows what areas of the screen have been marked as accessible, and what labels are associated with those regions:

Accessibility Overlay Screenshot

If you’d like to try it out in your app, you can download it from GitHub here. I’d also be delighted to have input on it, either in the form of suggestions (good) or code contributions (better) or encouraging beer purchases (best).

Going Mobile

On January 2, I”ll be going to work for Mutual Mobile, an Austin-based company that specializes in application development for iOS, Android and Blackberry devices.

“But Sean!” I hear you, Rhetorically Convenient Reader, cry. “You just started working for Magnolia back in March! Why are you moving on again so soon?” That’s a good question. It doesn’t have anything to do with Magnolia: it’s a terrific company, filled with great people that I am glad to call coworkers and friends. That fact made this decision especially hard, as I knew I’d be seeing less of these people I quite like (and would, honestly, be making their lives tougher in the short term with my departure).

But as much as I like Magnolia, the nature of their business means that my work there revolved around two things: Java and Sales. Java is an industry standard for creating software of various stripes, but it’s a very buttoned-down, staid environment to work in. It lacks the creative energy and — is it silly to say this? — joy that I see in the communities that exist around some of the more dynamic, less-widely used languages like Ruby and Python and Lisp (for you AI wonks out there). I can get work done in it just fine, but the number of times a spontaneous “Awesome!” escapes my lips while doing so is vanishingly small.

The other focus of my last 9 months has been selling Magnolia to various companies. I think the software is a phenomenal piece of work, and really well-suited to a whole variety of Web Content Management scenarios. But while I can do an effective job helping to demonstrate and sell it, there’s no frisson associated with doing so for me.

I like technology for what it can do for people. I like creating it because doing so is much like fashioning a beautiful, intricate bit of clockwork, or a complex bit of musical counterpoint. There is immense satisfaction in creating something that works elegantly and beautifully. Unfortunately, telling people about how terrific other people’s work is provides very little of the satisfaction that actually doing that creative work oneself. If I’m going to be in the technology world, I want to make cool stuff for normal people, not to sell cool technology to corporations.

So, Mutual Mobile. I’ll be starting there as an iOS Manager, which means that not only will I be getting to work directly on creating some great stuff for their impressive list of clients, but I’ll also be getting to help figure out the best way to help the other developers there do their best work as well. I’ll be hanging around a bunch of really smart folks, and will doubtless be learning tons about iPhone development and other mobile disciplines. The company seems like a marvelous place to hang one’s professional hat — a vibrant company culture, entirely self-funded with no investor money involved, just named by Forbes as one of America’s most promising companies, and has its company meetings at the Alamo Drafthouse, one of my favorite places in Austin. And the downside of facing a commute again is largely ameliorated by the fact that Texas State University runs a shuttle bus from San Marcos with wireless Internet to a park 4 blocks away from the office. Sweet!

I’m excited about this next adventure, and will be posting more about it once I’ve got my feet under me. Wish me luck!

Zombie Attack

When I left Texas State University to go work for Magnolia, I decided that one last big prank was in order. My usual partners-in-crime and I brainstormed for a while one afternoon and eventually came up with a scheme we liked: we would zombify our bosses’ offices. Plan Z was born!

 

In order to bring this off, my compatriots Jeff and Nick snuck into our department head’s office one night a couple of weeks before my scheduled departure and, while carefully keeping their eyes peeled for building security or other suspicious types, scanned a variety of posters, awards, and family photos that adorned the office with a portable scanner and laptop they had brought with them.

 

We then split those scans up among several different people, at this point bringing in Cheesy Steve from the design department. After looking at several “how to zombify people” videos on YouTube, we tweaked the photos in Photoshop, either transforming people into zombies (in the case of University personnel), or simply adding shambling undead into the scene (in the case of adorable grandchildren).

 

We also scoured the internet for Zombie family portraits or other pictures that might not immediately seem out of place in a collection of family photos. Google image search was immensely helpful as we assembled an arsenal of assets for this mission, as was Charles, our QA guy. (By this point, I had begun to laugh about this being the first prank we had pulled that was elaborate enough to require a Project Manager.)

 

 

Next, we printed out all of the altered images on a high-quality photo printer. The smaller snapshots were no trouble, but those bigger than 8.5″x14″ were a special challenge, as we had to print them in multiple parts and then tape the parts together as inconspicuously as possible to make large-format posters that weren’t obviously printed in pieces.

 

 

Now all of the preparatory work was done. With a thumb drive full of zombie family portraits, we slipped into the office of my immediate boss. He already had a screen saver going with a bunch of his personal family photos, so we were able to slip in the additional images without any trouble, verifying that one of the new ones would come up among the legitimate ones about every fifth time the screen saver showed a photo.

 

 

Next, we snuck back into the department head’s office and replaced the original family portraits and posters on his desk and walls with our doctored images. In order to take the heat off of my coconspirators if things happened to go badly, I also put copies of my business card in the frames between the “zombified” image and the original. (We left the originals in the frames so that our work could be easily undone, as we’re big on not causing permanent damage with our schemes.)

 

 

We carefully rearranged everything, comparing the room to the reference photos we had taken before doing our original scans, to make it look as unmolested as possible, and then went home smirking, fully expecting to be called in to the office the next morning. We weren’t sure whether our department director would appreciate or deplore the prank, so it was a good thing that mine was the only name associated with it and that the following day was to be my last at the University.

 

 

Much to my surprise, 5:00 rolled around without a word from the head office. I hadn’t counted on this. One of the photos we replaced was right next to our department head’s computer keyboard, so we’d figured he would certainly see the zombie that had taken up residence there within minutes. And we had altered posters that were several feet on each side. Surely one of the visitors to his office would notice, even if he didn’t! I left the University that day with a certain amount of sadness: both because I was leaving behind a great team of people with whom I’d worked for many years, but also because our terrific prank hadn’t even been noticed.

 

 

As I began my new job, I asked my friends back at the University every day if our shenanigans had been discovered, but the answer kept coming back “nope.” This went on for two weeks, until finally we got word that the screensaver additions had been discovered and summarily deleted. (This also surprised me — who finds extra photos on their computer and doesn’t make any effort to find out where they came from?) Finally, some of my friends started dropping hints to various people around the head office, and the department director discovered the additions at last.

Fortunately, his reaction was better than we’d even dared to hope. He thought it was hilarious, brought several people into his office immediately to see our work, and decided to leave it all in place. While a few of the family photos have now reverted to their original form, I believe all of the posters are still up.

 

 

This was ultimately a very satisfying scheme to pull off. Lots of people got into it and helped in various ways, it didn’t cause any harm, and even the victims got a good laugh and some lasting pleasure out of it. Additionally, I was delighted to hear today that the team has plans to keep the pranks coming even now that I’m gone. It’s good to have a legacy!

Great big thanks to all the participants. You guys rock at your real jobs, at this sort of thing, and as friends.

 

Now It Can Be Told

Now that I’ve left Texas State University’s employ, there are a couple other pranks that my partner-in-crime Jeff Snider and I pulled that can be made public.

Prank the First

Texas State University wrestles with something of an institutional inferiority complex. This is caused by the fact that it used to have a reputation as one of the biggest party schools in Texa,s and that it’s just down the road from the similarly named, but even more enormous, University of Texas. Whenever we attended conferences, we had to explain to people that shouting “Hook ‘Em!” at us was actually something of a hostile gesture.

As part of its image rehabilitation, the marketing department began heavily pushing its new “Rising Star of Texas” slogan — verbiage that many of us thought still sent a disappointingly weak message. But they were committed to it, and plastered it on everything they possibly could, including the screen that came up on our conference room projectors while they warmed up.

One day, while sitting in the conference room, I had a thought: “If these projectors can be customized to display the logo and this unfortunate slogan, they can also be customized to display something else.” A bit of quick googling yielded a PDF manual for the projectors, which explained in detail what one needed to do to make the change. Bingo.

So Jeff and I got the University Logo, sucked it into Photoshop, did a little editing, and made a guerilla run to the conference rooms around our floor. Now, when the projectors are powering up, they proudly display the Texas State logo, but with a different caption than usual:

TEXAS STATE UNIVERSITY
A Great Plan B…

It’s pretty subtle, as the projectors get brighter as they warm up, but it’s definitely enough to catch if you’re paying attention. (Which most people apparently aren’t, as this one has been in place for over a year.)

Prank the Second

There is an architectural model that the University commissioned at some point in its history, presumably to show off the planned construction of some building or another. Since the cost of such things is substantial, the University has chosen to keep it on display in the first floor of the library where I worked. It is covered with a plexiglass box that is secured to the base of the model by nothing more than its own weight and gravity.

Since we often had to be in late at night for various maintenance activities, we took advantage of the opportunity to place all sorts of things in the model with the tiny cars and people that normally inhabit it: miniature rubber chickens, a jet fighter, a Millenium Falcon, etc. (The Falcon was especially gratifying, as it remained illegally parked in one of the car lots for several months.)

Our coup de grace, however, was a full-scale dinosaur invasion that took place one night:

This one, alas, only stayed in place for two days. It was, however, widely appreciated. Jeff was particularly pleased when, a day after the dinos has been removed, he saw a student coming down the stairs, looking over expectantly at the model, seeing that it was now dinosaur-free, and letting out a disappointed “Awwwwwww!”

These sorts of things increased my enjoyment of my tenure at the University significantly. But there was one prank that we pulled as a parting gift to my bosses of which I’m especially proud, and which I will write about soon. Stay tuned…

New Programming Blog

For those of you who have an interest in programming in general, Magnolia in particular, or just can’t get enough of my scintillating writing, I’ve started a new blog over here: Propeller Hat. It’s mostly Magnolia stuff thus far, and will probably be infernally geeky for the foreseeable future, so only visit if you have a fairly high tolerance for that sort of thing.

Time for a New Adventure: Magnolia

Last Thursday, I gave my one month notice at the University.

The reason for that was not any particular discontent. While the University has its share of bureaucracy and silly decisions, the management above us has generally shielded us from much of it. And being able to walk to my office, have the freedom to explore lots of crazy stuff as the mood strikes, hone my management skills, have a stable job, and work with some terrific people on a beautiful campus has been great. I’m proud of the work we’ve done, and proud of my team, which has accomplished an amazing amount with minimal resources.

But now I’m going to work for Magnolia, the Swiss company that makes the CMS software that we’ve been using at the University with great success for a number of years. I’m excited about the change for a number of reasons:

  • They are a great team. I’ve worked with Magnolia as a customer for about four years now, and have been really impressed with both the technical excellence of their work and the professional excellence with which they run the business. I also got to meet many of them at the 2009 Magnolia Conference, and was delighted to find that every single Magnolian I met was genuinely kind and pleasant as well. What a great combination!
  • I’ll get to focus in on programming again. While I’ve enjoyed stretching myself into the role of a manager over the past several years, and think I’ve done some interesting and positive things in that position, I do find myself enjoying work the most when I’m able to focus on technical disciplines. While I don’t see a ton of opportunity to exercise the Objective C and Rails skills I’ve built up at the University, I expect there to be plenty of space to go as deep as I’d like with Java.
  • I’ll have the opportunity to do some traveling, both to Basel, Switzerland, where the company is based, and around the United States to get together with other members of the U.S. team, visit customers, and present at conferences. I hope to be able to bring Kathy and the kids along at times too, so that we all are able to benefit from the travel and see a bit more of the world.
  • I’ll be working from home. I’ve done a fair bit of this is previous jobs, and have always found it to be a really nice arrangement. Kathy is great at running interference so that I can really focus when I’m “at work.” But when I’m ready for a break, the family is right there, so it’s easy to have lunch with them, take them down to the park for a bit, or mount a quick trip to the river for a swim.

The new job will include technical pre-sales (talking nerdspeak with prospective customers and building prototypes for them), working on internal projects, raising awareness of Magnolia in the US by participating in community discussion and presenting at conferences, and providing support to existing customers while the team in Switzerland sleeps.

My last day at the University will be Thursday, March 3. I’ll take that Friday off to go blow some things up with Jason Young (we’re planning on building a jam jar jet engine), and will then dive in at Magnolia on Monday, March 7.

The Penny Game: A Way to Prioritize Tasks Among Many Projects

I’m a fan of agile practices in programming, and encourage my team to work along agile principles as much as possible. One thing that has always been tricky about that for us, however, is that we don’t really match the usual profile of a software team.

Most agile teams (at least in the literature) are focused on a single project, and have multiple people working together to get that project done. We, on the other hand, do all the development work for Texas State University’s Learning Management System (about 32,000 users), Content Management System (287 sites at current count), an Event Calendar system, the University iPhone app, a reservation system for training classes, a custom web content caching system, various custom-built content management systems for accreditation and regulatory compliance, and a bevy of internal tools — all with 6 people.

Needless to say, I’m very proud of my team.

Prioritizing the time of six people when we have ongoing responsibility for more than twice that many projects is, however, a daunting challenge. Our approach for a number of years had been to set release milestones for each project, to do release planning meetings to determine what should go into a given release based on our Planning Poker estimates, and then to try our best to get the work done in time.

This approach had a few problems:

  1. Release planning meetings were long and boring. We would walk through the list of unresolved tasks for a given project one by one to see if anyone wanted to prioritize that task. 90% of our time was spent saying “Ticket #666: add a green widget to the defrobulator. Anyone interested? Anyone? Class? Bueller?” (Only to have Bueller pipe up three tickets later: “Can we go back to ticket #666 for a minute?”)
  2. It was easy for people who had an interest in one project to commit 100% of the development team’s time to that project, while folks who were keen on another project would commit all of our time to that project as well. Our planning process didn’t reflect the fact that all the projects were competing for the same resources.
  3. If we finished all of the tickets for a release early and had extra time (a pretty rare problem, admittedly), we didn’t know what to work on next.

So a few months back, I decided to try an experiment. I got the stakeholders for all of our projects in a room together, gave them each 10 pennies, and explained to them the rules of the game:

“Today you are going to help the development team set our priorities. You each have 10 pennies, which represent tasks you can vote for. In order to vote for a particular task, write it on an index card, put that card in the middle of the table, and plunk down as many of your pennies as you’d like on that card. You can use all of your pennies on one task, or spread them among as many tasks as you like. Also, I encourage respectful argument. Try your hardest to persuade the people around you that they should put their pennies on the tasks you like as well. When we’re done, the number of pennies on a task will help determine its priority for our team.”

Good natured chaos ensued for the next 30 minutes as we wrote cards, passed them around, combined them, discussed the relative merits of the tasks ahead, bumped into each other as we moved around the table, tried to figure out what the heck some of the cards meant, and generally made a mess of the conference room we were working in. When we were done, we had a big, unruly pile of index cards with big, unruly piles of pennies on each:

After the meeting’s conclusion, the dev team took another 15 minutes to count the pennies on each card and put that count into a special “Bounty” field in our ticketing system, creating new tickets as needed. (We use “bounty” and “pennies” interchangeably.) When I was done, I told the system to sort our tickets by bounty, and suddenly had a prioritized list, across all of our projects, of what tasks had the most business value. Beautiful!

Task List Sorted by Bounty

Task List Sorted by Bounty

Of course, the number of pennies on a given ticket doesn’t directly determine the order in which we work on things. We also factor in the estimates for a given task we’ve come up with individually or during our Planning Poker sessions. One can divide the pennies by the estimated hours to get a “bang for the buck” rating for each of the tickets — a much more useful way to prioritize one’s work.

I don’t like to assign tasks to people on my team directly more than necessary. I find people to generally enjoy work much more when they are able to make their own decisions about what to spend their time on. On the other hand, I do want us as a team to provide the most real value we possibly can to our various customers. Since the penny game provided us a “here are tasks with business value” list, I decided to provide a couple of incentives for folks who were completing those tasks:

  1. I took a bizarre southwestern style pot that I had sitting around, labeled it the “Pot of Honor”, and told the team that it would be filled with candy and awarded to the team member each week who managed to complete tasks worth the most pennies during that span. Battling for the dubious honor of having this homely artifact rest on one’s desk for the week provides some silly, low-level competition and recognition for individuals.
  2. I set the team a collective, cumulative goal and told them I’d take them to lunch when they reached it. When we tally pennies for the awarding of the Pot of Honor, we also add up the number of pennies the whole team has completed and add them to a running total. Progress is noted on our work-area whiteboard, so we can all see how close we are to getting to have free food.
The Pot of Honor

The Pot of Honor

I’ve also made space on the whiteboard in our team area where we have our daily stand up meetings to put up the “Top 10” list of tasks that have accumulated the most pennies to help maintain focus on those high-value items.

The next time we played the penny game, a month later, it went much more quickly: we already had cards on the table from the last meeting, everyone had a better idea of what we were doing, and some folks had looked through the tickets in advance to see which tasks they wanted to support. I was surprised to see that, as we got more practiced, we were able to finish the entire exercise in about 20 minutes. We simply added the new pennies to the existing bounties in the ticketing system, making them increasingly juicy as they got older and people still had interest in them.

We’ve been playing the game for a number of months now, and I count our experiment a solid success. Advantages it has provided for us:

  1. Prioritization is way more fun and engaging. It also goes considerably faster than all of our individual release planning sessions did.
  2. The development team always has a clear idea of what our business needs are, and which of our tasks will provide the most value.
  3. Stakeholders cannot say “everything is top priority”, but are forced to choose where to allocate their pennies. The finite scarcity of pennies reflects the limits on developer time.
  4. Individual developers can exercise a good deal of autonomy and choose their own tasks while we still, as a team, deliver on the things we need to.
  5. There are a number of tasks that, while people say they are important, apparently do not merit the expenditure of a penny. As these persist for a sufficient period of time without accumulating any pennies, we can close them as not really being a high priority. (We can always reopen them later if someone decides to spend a penny to raise them from the dead.)

We’ve introduced a few refinements as we’ve gone along: Because some of our systems have tens of thousands of users, it’s ill-advised to get all of the stakeholders in a room at once. To account for this, we give the support staff extra pennies to distribute as proxies for the absent users. We’ve started writing project names and ticket numbers on the index cards to make it easier to correlate them to our ticket system. We’ve begun bringing as many laptops and iPads as possible to the meetings so that people can see the details on the various tickets in question. We now add a penny to each task whenever a user request comes into our support team.

I should note that during the time I was designing this process, I was also reading through Total Engagement, and consciously built in many of their 10 Ingredients for Games: Feedback across a range of time scales (completion of individual tickets, weekly discussion of bounties cleared, longer-term goal of team lunch), Reputation (the awarding of the Pot of Honor), Marketplaces and Economies (the game itself is a market to “buy” the development team’s time), Competition Under Rules that are Explicit and Enforced (there’s no ambiguity about how many pennies are on a ticket or how they’re assigned), Teams (working toward the common lunch goal), and Time Pressure (weekly tallies of points, implicit time pressure of not wanting to be the last person with pennies left to spend while everyone else sits around). I think these elements have been critical in making this a more engaging way for us to do things.

So, if you’re facing a similar challenge with more projects than you have people, feel free to swipe any of these ideas that look helpful. I hope they’re of some use to you. If you do give the penny game a try, please post here and let me know how it goes. Good luck!