An AI Code Retreat
Published on May 27, 2025 by dix.
Last week I went to a company offsite. I currently work for a globally distributed remote-only company so it’s rare for the engineering team to get together. This can make it hard to build a strong team bond. At a previous offsite, I ran a Code Retreat to help engineers from across different subteams get to know each other and bond.
The Classic Code Retreat Format
A Code Retreat is an activity where engineers engage in precise practice on a simple problem in order to gain appreciation of simple design, test-driven design, and pairing.1 Generally, the problem is Conway’s Game of Life.2 The Code Retreat day proceeds with alternating sessions of pair programming a Game of Life implementation from scratch and short discussions of how each pairing session goes. Each new pairing session gets a different constraint imposed on it, for example, “don’t use if statements.”
When I facilitated this exercise at a previous offsite, it had been successful in the goal of getting engineers to know each other better. At this offsite, I extended the goals of the session to get the team more comfortable using AI coding assistants.
Adding AI to the Mix
Recently, the engineering team has been adopting Cursor.3 Cursor is an AI-powered agentic IDE, which has drastically improved my productivity. Given my positive experiences, I want as much of the team as possible to try it out and feel comfortable using it. With that goal in mind, I adapted our most recent Code Retreat to include some Cursor-focused sessions.
AI Takes the Wheel
The first part of the day followed the standard Code Retreat schedule. Engineers paired together, accomplishing the goal of continuing to build relationships across the subteams. However, after lunch, things changed pretty drastically. Pairing was over—Cursor was everyone’s pair now.
Session 1: Speed Coding
Cursor can easily implement Game of Life without much prompting, so I asked the engineers to implement additional features. The first session was “Implement this as quickly as possible.” Once engineers had completed the task, I asked them to describe to me how their solution worked. My goal for the exercise was that the team gained an understanding of the fact that it’s easy to generate new code with these tools—but that code can often be hard to revisit or maintain.
Session 2: One-Shot Prompt
Next, I added constraints on the prompts the engineers could give to Cursor: they could only give it a single prompt. However, they were allowed to write any tests they wanted within the repository and to create any Cursor rules4 they wanted. My goal was to get the team familiar with all the ways Cursor can be guided beyond the prompt itself. For the most part, the engineers focused on iterating quickly with their prompts. Some wrote Cursor rules, but very few (if any) wrote tests.
Session 3: Make It Production-Ready (and Weird)
For the final session, I imposed two constraints. First, the prompt had to describe the problem of Game of Life in a way that didn’t reference the unique terms of the game at all. Second, the engineers had to build a “production-ready” Game of Life. What “production-ready” meant was left intentionally vague.
This was the final session of the day, and things got a little silly. One team member started prompting Cursor over and over again to “make it more fun.” This resulted in a Game of Life using emojis where the cells could have parties and went through market cycles which changed the rules for when cells were born, died, or lived.
What I Learned
Upon reflection, I would probably choose different constraints for the AI-focused sessions. To be honest, I was improvising on the constraints. If I ran a future Code Retreat like this, I would probably re-use the one-shot prompt constraint but iterate on the others. I wanted the team to think about how to incorporate AI tools more directly into a test-driven development process, and a constraint to more directly address that goal would have been better than the vague “production-ready” constraint.
What’s Next for Us and AI
Overall, the session was fun and a great success in getting the team working together and building relationships. I also think it worked well in getting the team excited about using Cursor more. It prompted some team members to install it and use it for the first time, and it got some more skeptical team members to feel more enthusiastic about trying it for real work. The team plans to keep experimenting with more AI coding tools, and I’m looking forward to deepening my understanding of how to work effectively with these tools.