In December, I had the pleasure of being invited to participate in Relevance Software's corporate retreat. It was a 2-day event, held outside the office, where they reflected on 2009 and discussed goals and specific plans for 2010. I'm not at liberty to discuss details of the discussions, but the format consisted of prepared presentations, breakout sessions, open-topic brainstorming and, of course, video games. I've spoken before about how impressed I am with Relevance on both the personal and professional level, and this was no exception. The transparency that was displayed at their corporate retreat, regarding both successes and failures was inspirational.
While at the retreat, I IM-ed Sarah and told her that I wanted to have my own corporate retreat. By the time I got back from Relevance, we were already discussing the details: what it would be like, what we could talk about, etc. Since I'm striking out on my own, and I have a lot of different projects and activities going on, it would be good to just take a look at where I've been, what I've done, and where I want to go, and, most importantly, how I'm going to get there. And thus was born:
The First Annual
coreyhaines LLC / fabled net
Combined Corporate Retreat 2010
There were a few things decided immediately:
- it should be offsite; we can't do this sitting on the couch at home;
- we should each have a full day for our own planning.
This led us to look for a hotel in downtown Chicago. After pricing out some possibilities, we found that we could get a night at the Intercontinental Hotel for around $115. The Intercontinental is a well-known, 5-star hotel right in the heart of the Magnificent Mile; it sounded like a great deal. At this point, Sarah made a fantastic point:
If we only stay Saturday night, then those sessions lose the morning hours. If we check out on Sunday, then those sessions will either lose the afternoon hours, or we'll be sitting there with all our bags.
Based on that, it made sense to get the whole weekend: check in on Friday night and leave on Monday morning. While this might seem a bit extravagant, it turned out to be such a successful decision that we found ourselves continually mentioning it and loving the fact that both days were relaxed and easily provided the necessary amount of time to really deep-dive into our sessions. The hotel had a second level that had open chairs and tables, including a nice table in a semi-private nook next to a window overlooking Michigan Avenue.
We decided to embrace the inherent humor of the situation, including taking advantage of Vista Print's free promotion offers to get swag for our retreat. We also took it seriously, though, planning and publishing agendas to each other with a layout of the day's topics.
It isn't my place to discuss what Sarah talked about at her retreat on Sunday, so this post is going to focus on the results of my sessions on Saturday. I had two major sections: a shorter morning focused on my personal history and goals; and, a longer afternoon focused on my professional path. When the day was over, we had spent around 7 intensely packed hours focused on my plans and goals.
Morning: Personal Goals
We spent the morning with two primary objectives: go over the path that has led me to where I am and discuss how to keep my professional traveling from negatively impacting my personal life, specifically my relationship with Sarah. I won't bore people with the stories from my past, but the brainstorming about techniques for a well-balanced life was very valuable. In any relationship, it is important that both people are involved, so it was important to spend some time discussing 2010 together.
Lunch - Big Bowl
Curry and fresh ginger ale is a great way to transition from personal to professional discussions. I'm just saying.
Afternoon: Professional Goals
The afternoon had a little over 5 hours of structured activities. I started with an overview of my professional career, adding more detail after 2004, when I was introduced to extreme programming. 2009 was covered as a foundation year; the exact nature of what is being built was considered, as well. Turning the discussion to 2010, I started to outline some of the projects that I had in the pipeline: the coreyhaines code retreat tour; partnering with Sarah on projects; the cluster summit; contracting; development of some day-long tutorials; "come code with me" classes; the coreyhaines community contribution fund; the "Software Journeyman" interviews; and, the "How I Got Started In Programming" interviews.
I am not a well-organized person; my detailed planning skills tend to be a bit on the meager side. I've found myself impressed with Sarah's skills in these areas, and I was looking for some advice and inspiration. So, I asked her to give a keynote at my retreat, focused on planning and organization. Rather than giving a talk, she decided to lead me in an interactive workshop to help determine a personalized, effective process for planning. We started working on developing a day-long rspec tutorial, and, while doing this, she extracted a set of steps that take advantage of my collaborative style. One interesting take-away she highlighted was that I work best with a small group of people, bouncing ideas around; it is ineffective and counter-productive for me to sit down and try to plan something out entirely by myself. She also led me in an exercise to help break through mental blocks when presented with certain tasks by rating each task simply on enjoyment and difficulty. Working through a specific planning session (a day-long RSpec tutorial) with focus on extracting a personalized process was incredibly valuable to me, as it will help keep me from being overwhelmed. Having a partner like Sarah is a constant source of happiness for me, and I especially am grateful for this part of the day.
Using our newly-developed process, we proceeded to approach some of the other plans that I had for 2010. Some were discussed explicitly, some were postponed to be flushed out at later 'focused planning sessions.' I intend to address these in detail in upcoming blog posts, but I want to give an overview of some of the projects for this year.
My goal is to facilitate at least 10 code retreats around the country and the world. I believe that the code retreat is a significant event to help people become a better software developers. I have the schedule outlined through May, and I am in talks with places for the second half of the year. This is where planning skills are important. Sarah and I spent a considerable amount of time discussing what was an appropriate schedule, finally deciding that one location a month was the most appropriate.
Travel expenses are another aspect to consider; I will need to closely watch the balance of my income to expenses. The individual code retreats are sponsored by local companies, and I want to keep my costs separate from the site sponsorships. So, I hope to gain tour-level sponsors that will help cover some travel costs. I have a couple things in the works here, as well as some excellent help from Gustin Prudner and the gang at Entryway Software.
Partnering with Sarah on projects
January has been filled with sickness and other annoying interruptions, so the blog posts and screen casts about The Stickies Project have been on hold. We are still working on the application when we get a chance, though. Our schedules will become a little less crazy in the middle of February, and we intend to pick back up the active sharing. I will be writing a series of short, technical blog posts, followed by a longer series of blog posts on different aspects of writing an application in javascript.
One of the many reasons that I enjoy working with Sarah is her mind for application ideas. We have a couple more in the queue after The Stickies Project, and I'm looking forward to bring those to light. Working with Sarah is a pure joy, as our skillsets overlap, but there are definite places where her skills extend past mine. It is nice to have a partner who can really stretch your knowledge.
Along with the code retreat tour, this topic is highest priority for me.
Contracting
I need to balance my education-oriented projects with a healthy amount of contracting for two reasons: most of my projects don't generate income for me; and, it is important to periodically deliver software to keep my chops up. It is a challenge to keep my activities and projects from stepping on each other; if I try to do too much, then everything will suffer. I am currently working on a small (from a time-per-week perspective) contract to cover my base expenses, and I have a couple other opportunities coming up. Due to my schedule of travel, it is important to find contracts that are flexible.
Day-long tutorial development
I've been intending to develop several short topic-oriented classes that I can do in half-day or full-day sessions. Sarah and I started the planning process for creating an RSpec tutorial. We also brainstormed a bit on other topics that I feel qualified to teach: jquery, cucumber, ruby, rails, javascript testing, etc. Looking at my schedule over the next year, it became apparent that holding a class over the next couple months would not be feasible. So, starting in July, I will be doing once-a-month, day-long focused classes on specific topics, most likely on Saturdays or Sundays in Chicago.
The first one-day class in July will be "RSpec: from 0 to Rails."
The second one-day class in August will be "Testing Javascript: Too Easy Not To Do It."
"Come code with me" class
I had a great conversation with Paul Pagel the other day over beers, and he challenged me to put together a class for apprentice-level developers. This would be a series of hands-on, build-an-app-style sessions. I told Sarah about this, and we began discussing what form something like this could take. There were thoughts of a twice-monthly evening class, or even a weekly class. Then an idea came: what if it was an intense course, a few hours in the evening over the course of two weeks: like 3 hours a night, 4 nights a week, for 2 weeks. We would spend the 8 days building an application together, working as a team. I would try to find a co-instructor, so we could provide focused, hands-on mentoring while building a real-world application. I was explaining to Ray Hightower that I would probably find an app that I could build in 2 days, then stretch it into 8 days. This would allow us to really focus on showing how to do it right. Ray came up with a great tagline: 'a 2-day app squished into 2 weeks.' I love it!
One question is whether there should be a charge for this. I'll be charging for the day-long tutorials, but this probably would be expensive. Would that cause people to take their participation more seriously than if it was free? The other option is to make it invite-only; people would apply for it. If no explicit charge, then I would ask people to give an amount that represents how much value they feel they received.
This won't happen for a while, October at the earliest, so I still have time to think about this and get feedback from people.
The coreyhaines community contribution fund
This is an idea that I've been tossing around for a few months now. The basic idea is simple: create a code retreat/other event sponsorship fund that spreads the cost of sponsorship over many people contributing very small amounts. Code retreats and other practice-oriented events don't always have a local company to sponsor them and there are lots of people who would be willing to contribute $15 to support an event. For various reasons, events generally ask for sponsorships on the order of 100s of dollars, not $15. So, I want to start a fund that relies on the power of numbers to provide sponsorship for events. I'll be writing more on this later, as I begin to flush out the logistic details (non-profit, website, etc).
During our brainstorming session, Sarah had some great points and suggestions. In the end, we made some alterations to the original idea to include the following points:
- Provide incentives to donate (for example: get publishers to donate books for drawings; develop blog badges for people to display; work with companies to get discounts);
- Have a good website that highlights both people donating that month and the events that were sponsored;
- Cap the donation to $15;
- Cap the number of donations per month to 100 people;
- Prevent people from donating two months in a row;
- Provide some form of matching program with my own funds;
- Be explicit that this would not go towards my own personal expenses;
- Extreme transparency of input and output.
I'm planning on writing a more detailed blog post that will give more information on this and provide a forum for feedback. I'm planning on beginning the fund in April or May, so keep an eye out soon for the more formal announcement blog post.
During my travels in 2009, I had the unique opportunity to meet, work with and talk to a large number of people. I very quickly realized that there were a lot of people who had some great thoughts, but no real good way to share them. So, I began video-taping conversations with almost everyone I had the pleasure of pairing with. Most people I met had something they were very passionate about, and I was privileged to help them share their thoughts via my blog. Talking to so many people and spending so much time on the road, my head was normally filled with ideas. So, I also started a sub-series of videos called "Road Thoughts," in which I found a nice place to film myself sharing thoughts that were floating around. I received overwhelmingly positive feedback on all these videos, and I was proud to provide a platform for people to share their ideas.
Since I stopped actively traveling on the pair-programming tour and have spent a few months contracting and looking towards the future, I haven't done as many interviews. I still have a few that haven't been published, and the code retreat tour will provide me the opportunity to do more interviews.
In 2010, I would like to pick this series back up and continue to publish videos. My goal is to do at least one video at each location where I travel. Starting in March, I intend to publish at least one video per month.
While the "Software Journeyman" interviews were generally focused on the craft of software development, I also found another source of inspiration and community: talking to people about their "origin stories." During the initial 3 weeks of travel, in December of 2008, I listened to a few people tell me how they got started in programming, including Uncle Bob Martin. In January of 2009, I realized that these are valuable stories that capture both the personal side of our field and important stories about our heritage. So, I started sitting people down in front of my camera and asking them to tell their story. These turned into the "How I Got Started in Programming" interviews.
While I have a lot of videos in the backlog, I haven't posted any in a long time. It takes a bit of time to prepare a video for publishing, and the number that are waiting to be edited is a bit intimidating. So, starting in March, I will be posting at least 2 interviews per month. Also, while traveling, I will begin to gather these stories again from people I meet.
Was it worth it?
Yes! Absolutely! Spending a day completely focused like this was invaluable. I don't believe it would have been nearly as effective at home, due to all the distractions. Having Sarah there, providing input and challenging my ideas, allowed me to make significant progress towards planning my year and keeping it from getting out of control.
Feel free to share your constructive thoughts and feedback in the comments below, or, better yet, write a post on your blog.