Skip to content
2019 Global Day of Code Retreat
Ruby Java JavaScript Python
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
java
javascript
python
ruby
README.md
activity_list.md
slides.pdf

README.md

Global Day of Code Retreat Comes To Philly!

What is code retreat?
What are we doing today?
How do I get started?
Where can I continue learning?

What is code retreat

Global Day of Code Retreat is an annual event held around the world. It's a day set aside to practice your craft, to hone your skills, all free from the constant pressure to ship that we feel in our day jobs.

Code retreat is for you if:

  • You'd like to learn about testing
  • You'd like to learn about TDD
  • You'd like to learn about code design
  • You'd like to learn about pair programming
  • You'd like to teach any of those skills to others outside of a shipping culture
  • You'd like to experiment with others in a relaxed setting

What are we doing today?

We will be working through some Code Katas and trying to program Conway's Game of Life in pairs.

Simply put we will be solving the same problem over and over whilst applying different constraints to how we solve it.

Ideally, a pair will consist of someone that is able to teach a skill and someone that is interested in learning that skill. We will be working in 30 minute rounds with a short retrospective at the end of each round to share what we did and learned.

The problem is IMPOSSIBLE to finish in 30 minutes, and that's by design. It allows us to choose on area to approach, and one activity to practice for the round without worrying about completing the problem and shipping a rushed solution. Take your time; talk and learn together!

How do I get started?

Setup your environment

If you or your pair are able to quickly setup an environment with a test runner in the language you'd like to work in, then skip to the next step. If not, there are sample environments in ruby, javascript & python for you to use. Follow the instructions in the readme to get started.

Get started on the problem

With each round, there will be a surprise challenge. We'll choose a group challenge from the list below, and you will and work together to solve it. You're not required to do what everyone else is, though. Feel free to coordinate with your pair on something that seems fun and valuable to do together.

In the first round, we will be exploring the problem. If you're unsure where to begin, the branch challenge 0 will give you a foundation to begin working on the problem. If you're unsure of where to approach the problem, but don't want to use the template, start by defining a rules engine for the game.

General Itinerary

  • 10:00: Hello World
  • 10:30: Session One
  • 11:30: Session Two
  • 12:30: Lunch
  • 13:30: Session Three
  • 14:30: Session Four
  • 15:00: Recap
  • 15:30: Done

Where can I continue learning?

Further Activities

There are many more activities than the ones we'll be doing on this day. If you want to do some of them in your own time take a look at a longer activity list.

Katas

A kata is a small digestible fun exercise that lets you practice things. You can focus on stuff like tdd, or breaking the problem up better, or single responsibility. It’s a simple enough problem that you can do real practice without getting bogged down in the domain, deadlines, or delivery.

"There are no limits. There are only plateaus, and you must not stay there, you must go beyond them."

~Bruce Lee

Focus on form and mastery here!

Sam's Awesome Katas

TDD

What is TDD?

TDD stands for Test Driven Design. It is a tool to help design understandable, maintainable, and easy to use components in a system. Although not the immediate goal, after the test has been written, it has the side effect of regression safety.

The Three Dogmatic Laws of TDD

  • You can't write any production code until you have first written a failing unit test.
  • You can't write more of a unit test than is sufficient to fail, and not compiling is failing.
  • You can't write more production code than is sufficient to pass the currently failing unit test.

More TDD Resources

Exercism.io

Exercism is an online platform designed to help you improve your coding skills through practice and mentorship.

Exercism provides you with thousands of exercises spread across numerous language tracks. Once you start a language track you are presented with a core set of exercises to complete. Each one is a fun and interesting challenge designed to teach you a little more about the features of a language.

Exercism.io

You can’t perform that action at this time.