Are you looking to bring enjoyable training your team? Want to improve the debugging and framework skills of your engineers? Or improve everybody’s practical coding skills? Almost nobody teaches direct skills for improving practice-based coding, so it’s an unusual strategic advantage.

I’d love to help you out with a workshop, taught at your location and to your team. If you’ve seen footage of me speaking at a conference you know I’m good at it. If you’ve taken one of my workshops, you know they’re fast-paced, code-centric, practical and fun.

These workshops are available and are normally single-day. Let me know if I can help you with these, or with something similar that’s more adapted to your specific needs.

Want more details? Contact me.

Build a Ruby MVC Framework

Want to learn how to debug Ruby web framework code? Learn Ruby metaprogramming? The concepts and ‘magic’ of Rails? I have a great workshop for that.

Rails is simply Ruby code. And that means that it’s possible to build a very similar framework in plain Ruby that uses the same dependencies as Rails. In this workshop you’ll do precisely that. We’ll start from an empty directory, then build a framework and a test application for a simplified working Rails-like framework.

In the initial section of the workshop we’ll build a bare-bones working MVC framework to learn the metaprogramming and structure for it in Ruby. Later, we’ll cover related topics like ORMs, advanced routing and Rack interfaces. This section can be customised for your team’s needs, and could be a great opportunity to integrate software you rely on for your team’s specific tech stack.

This is an excellent exercise for a team that needs to debug framework code such as Rails, and especially for a team that might write or modify framework code using Rack. It’s also highly useful for understanding Rack middleware and how it connects to your Rails applications.

The shorter (3-hour) version of this workshop got rave reviews at both RailsConf and Southeast Ruby. But your team can do even better with more breathing time, more debugging time and more topics that I couldn’t cover in the larger venue and shorter time. Additional topics available include a proper ORM (not just SQLite), third-party middleware and understanding Rails routing.

In addition to the code and slides, every member of your team will leave with a copy of my book Rebuilding Rails for optional self-paced study.

Conscious Coding Practice: Learn It, Then Sit Down and Do It

You may have seen my RubyConf talk on coding studies, a much-improved variation on normal coding exercises. But it can be hard to learn practical exercises from an ebook or 45-minute talk.

Instead, you can make an appointment with me to train your team in the methods and guidelines of coding studies. I’ll be there in the room to answer questions and solve problems as they come up, saving time and frustration.

In return, your team will have a powerful method of improving their own coding skills even after I’ve gone. This is especially valuable for junior members of your team with limited responsibilities — you want their skills to improve as fast as possible so that they can help with more complex and interesting problems in parts of your product that require more skill and trust. Excellent practice can reduce the time for them to fully contribute. It can also help polish up the rough edges that a new graduate or early-career engineer can sometimes have.

More senior engineers may find that having more effective methods of practice bring the joy back into their “outside-work work.” This method not only works for me, it’s very similar to methods that other very senior engineers and well-known elite practitioners describe, in public and to me privately.

While the workshop contains instructional material, the most interesting part is applying it. That’s where we’ll spend most of our time. There will be one or more “led exercises” where we work on the same task, and the exercises will become more individual as the day progresses.

The workshop is normally taught in Ruby. But I’m happy to facilitate in most other common languages. Highly-dynamic languages like Python or JavaScript are especially good choices.