Crossfit Programming — Full Stack Workouts

Exhausting One Thing

In Crossfit (and many other workout programs) there’s this idea of stringing together certain exercises in quantities that are meant to push the body in different ways.

I think we often look at exercise as: “Let me build [x] muscle group a lot”. I at least did. This by no means is wrong but I’ve found an interesting success in striving together different movements and repetitions.

Here’s what I mean:

I could maybe do 30 deadlifts at 75% of my max. It’d be a good workout.

But could I do 3 sets of the following in the same amount of time?

5 Deadlifts
10 burpees
200m run

I literally just the reps of deadlifts that I might do in half, but I replaced that with an intense string of exercises. Its easy to do something -> rest -> do something again. However, what happens when you have to work those muscles out in a different way the impacts your whole body?

Don’t get me wrong. Both of these workouts are going to leave you exhausted in some way. However, I’ve found that doing less of one thing and more over others has helped me build my strength overall.

The reality is: I’m not going to revisit a workout that uses my “deadlift muscles” until at least a few days. I want to give my body time to recover. But what about the other workout. Sure, I really emphasized a workload on my back and lower body (with the running and deadlifts). But I pushed myself just enough to grow in other areas as well.

A Full Stack Workout

My version of deadlifts in our proposed workout is Ruby. Its the majority of my heavy lifting and I’m aiming to become better at it. I want to get better with Ruby so I can lift heavier problems.

However, I’m becoming more convinced that exercising skills outside of Ruby helps me become a stronger Ruby developer, when paired right. A lot of this theory ties into our hype around “Full Stack Developers”.

The phrase literally doesn’t mean much these days. If anything, it means: “Down to do stuff outside of [x] language”. A lot of companies these days are more concerned about using “the right tools for the job” rather than just a concrete stack.

While we can choose to buy into this hype or not, I think it brings an important idea to the table: You need to choose your specialization, but also understand the languages and technologies around you. In my recent work, I’ve been using a lot of Ruby on Rails and EmberJS. I’ve found myself having to shift from a pure Ruby standpoint on things to a pure Javascript point of view.

Am I an amazing Javascript developer? Not yet. But the thought remains that I’m actively incorporating workouts into my training regiment that emphasize my Javascript skills alongside my Ruby ones.

Adjusting Your Expectations

Incorporating new things into your programming regimen isn’t going to be easy at first. You might find yourself flailing around in new concepts or ideas. This is completely normal.

Sometimes I think we become /really/ good at something just so we don’t have to revisit the growing pains of first learning something. Its like a defense mechanism. We often associate the hardships of learning something new as failure. Yet, when we start to incorporate healthy Full Stack Workouts, things change. Failure is subsisted with learning. Is learning difficult sometimes? You bet.

Overall, we become stronger for it. Some of the best developers I’ve ever met are excellent at their home languages. For Rubyists, its obviously Ruby. But underneath that Ruby skill is a strong love and understanding for C, C++, or Rust; Maybe even a bit of Javascript. They appreciate where they are because they’ve learned how to work out the mental muscles around their base language.

As the world of tech begins to expand even more, who knows what will be required of developers in five or ten years. I firmly believe that if we’re living healthy lives and are studying the things around us, we’ll be ready to dominate whatever comes next.