What was the purpose of the workshop retreat?
The purpose of the online retreat was to carve out some time and space under Greg’s direction to work on a programming project and learn something along the way.
My Project – Overview
For my project, I decided to use the Ruby Gosu library to create an Asteroids clone. I worked on it on Saturday and Sunday. There was some initial email discussion on picking the project I had with Greg, but he thought a Ruby game project was a good fit for the retreat.
Day 1 Retrospective – Saturday
What I Built
I showed up around 11 am in my time zone on Day 1, Saturday, to begin work on my project. As I’m writing this nearly a month and a half after the retreat, some of the details of what I built each day were fuzzy. Fortunately, Greg made some online notes (which I’m quoting verbatim below) to let each member of the workshop group see what everyone else was working on.
Bruce has successfully rendered his first shape using RubyGosu, and is now working on adding keybindings to move the shape around using the arrow keys on the keyboard.
Bruce has completed a few more iterations on his game, and is working on adding the ability for the ship to shoot bullets and destroy asteroids.
This was the first online “retreat” I had participated in, and I wasn’t sure what to expect. I really enjoyed the day and feel like I got some valuable learning which I will share further in this post.
Day 2 Retrospective
What I Built
On Day 2, Sunday, I showed up at sometime during the day and could not devote nearly as much time as I could on Saturday due to errands. Again, fortunately, Greg made some online notes (which I’m quoting verbatim below) for the group.
Bruce has implemented shooting and turning in his asteroids clone, and is focusing now on sorting out a bunch of little details that will make the game much more playable.
By the end of the second day, I was really amazed by what I had been able to accomplish in one weekend. It showed me the value of taking some long chunks of time, carving it into your calendar, and then sticking to it. Also, working with a senior developer liked Greg proved invaluable as several points during the course he reminded us to focus on the smallest feature we could ship. This prevented me from engaging in scope creep as I often like to do, where my dreams for a project are at odds with the actual time I have to complete it.
What I Learned
Though the main point of the retreat was to have a fun project and experiment, I would say I inadvertently got some great tips for working on side projects.
At several points during the retreat, Greg reiterated how important it was to start small. He used a metaphor along the lines of building a skateboard first, then a bicycle, and then a car. In other words, do the smallest possible thing possible thing that works first, then build on top of it.
In particular starting on my Asteroids clone, he advised me simply to just get a shape appearing on the screen, then the asteroids, then allowing the ship to fire in place (it might have been another small step instead of firing, but the point is to keep your next step small and granular). I think previously I would have tried for the fancy graphics and movement all in one shot.
And while I feel like I could have gotten there, doing the next smallest possible thing on the project kept up the momentum for me. Previously, I may have felt discouraged or frustrated by taking on too much at once.
Mentorship or why Jedi’s study with Yoda
The Jedi Knights have it right, and I think the programming world would do well to imitate them. Even though this was a doable project as far as programming projects go, Greg was like an experienced Jedi giving pointers for using the Force (in this case, the command line) to help shape the creation of the project.
In terms of skill building, this is something that was lacking in my self-taught programming ways. Greg’s guidance helped shape my approach to the project and I think it’s one of the few times I completed a rapid prototype over the span of a weekend (as opposed to letting a side project drag out for a while until my enthusiasm waned or I slowly finished it).
Because of the “smallest next step” approach, it was easy to get rapid feedback from my results. Also, Greg was able to tell me where he thought I should go next. This contributed to not only the emotional feeling of momentum, but actual project momentum.
I moved much faster than I would have even in a company that practices “Agile”.
From experience in other forums and communities, I know the best thing for creative energy to flourish is the creation of a safe space. This means all questions are welcomed and there’s no such thing as “something you should know.” Questions aren’t used to judge your lack of knowledge, they’re used as a starting point to help you figure out where you can get better. Greg’s space definitely provided this safety.
The workshop retreat was also fairly well organized, as evidenced by Greg’s online notes.
Things for possible improvement
Of course there are a few things that I might change, but these are mostly due to the realities of an online workshop, and in no way detracted from the great experience I had.
Interaction among fellow coders
Since I was so busy with my own project and everyone was busy with theirs, there wasn’t much chance to interact with fellow workshop attendees. But that’s pretty understandable. Also once the workshop ended, there wasn’t much chance to connect with fellow attendees as we all went our own separate ways. I’m not sure if this can be improved upon or even if it should be, but it’s something that’s different than some non-programming in-person workshops I’ve attended.
Time zone issues
Greg was about 3 hours ahead of me, and he planned for those time differences pretty well in his agenda. If you’re too far outside of the United States, it might be tougher for you unless you’re willing to work around those times.
Overall, I gained quite a bit out of this retreat in the form of mentorship, learning how to better scope and tackle a side project, and the importance of rapid feedback. One of the great things is it had a nice personal feel and felt like a down-home apprenticeship. I highly recommend trying one of Greg’s workshops if you get a chance, particularly if you’re an aspiring programmer.