Rails Workshop on Riffing: for the creative devs who want cohesive code
tl;dr this workshop teaches you a new design technique for Rubyists called riffing, allowing you to iterate on your software design to ship better code faster, together with your team.
“Putting effort into the design of your software improves the stamina of your project, allowing you to go faster for longer." — Martin Fowler
Rails developers are missing out on the benefits of better designs, instead we're…
Going whole-hog on implementation
So you've migrated the database, set up the files where Rails expects them just so, honed your tests, but are you sure it's even the right direction …at all? And now, do you really want to bust up all that concrete? The sunk costs and fatigue prevent you from exploring better options for your design.
Discovering issues …too late
Have you ever had that project where 2 weeks into it, you discover a severe issue that requires rethinking the whole thing? Yeah, that sucks! Have fun telling your boss 👋
Under the pressure to ship
Have you experienced overwhelm at the start of a new project? And then anxiety when you're closer to ship? Did I miss something I should've thought of? That's my story and how I arrived at this riffing technique.
Going nowhere spec'ing in Markdown
I see smart Rails developers reaching for Markdown files to spec out a feature. But thinking in prose and translating it to code is difficult because you're in two worlds at once. All that context prevents you from tapping into your creativity to problem solve.
Staring at the database schema
Or instead of Markdown, devs reach for the database schema! But now what? Thinking about columns may feel easy, but it doesn't spur you into action. To improve a design, you need to iterate on it, and for that you need to see connections in Ruby code.
Slowed down by communication issues
All these process issues are multiplied the more developers there are on a team. Talking past one another, not seeing eye to eye, getting stuck in indecision and on and on.
Shipping worse than your best work
You deserve to ship the best code you know how. You deserve to learn how to upgrade your code on every project you work on.
That's why I'm telling you about my way out of these issues. With the design technique I came up with. Riffing.
Riffing your way to better designs
Whether you're planning an entire greenfield app or just a single new feature, the high-level design choices you make have a dramatic impact both on the implementation details and the long term quality & maintainability of your Rails app.
To ship your best work you need to uncover unknowns (early!), explore possibilities, and refine your ideas but without spinning your wheels on minor details, getting stuck in indecision, or settling too early for mediocre solutions.
Riffing takes this head on. It's the fast, high-energy, low-fidelity design technique for exploring, validating, and communicating design concepts in a tight feedback loop.
To riff, you write nearly-runnable Ruby in a single scratch file using plain-old Rails and Ruby classes & methods. This low-fidelity sketching lets you focus on the high-level design — without needless distractions.
Riffing is to development what wireframing is to UI design.
For example, how might you build a timeline of items that can be favorited by a user? Here's a sample riffing output of what that could look like.
How to riff
Open up a scratch file and start tossing Ruby code in there. Keep it simple so you stay high-level and don't get lost in the implementation. Prefer plain-old Rails and Ruby classes & methods.
Working with scratch files frees you up to explore the names, responsibilities & relationships that make up objects in your system. You'll have a flow state while doing so and then you'll really get going.
Often, you can safely toss out a flitter of an idea and refine it bit by bit. Or spot it won't work right away, then scrap it, backtrack and try something else. You're iterating, spotting patterns, trying out names, experimenting & experiencing chance encounters that bring out new ideas.
There's less fatigue and sunk costs because you're deferring database migrations, separate files and tests. So you'll actually explore options.
Really getting in there means you'll think through more angles of the problem, often leading to better problem solving. You'll also be spotting inaccuracies that you can take back to the stakeholder on day one.
Since sessions range from 30 minutes to an hour the cost is marginal (though sometimes up to 2 hours if you're feeling it), and you'll have a much better feel for things with practice.
Riffing is designed to improve your process and it'll point out gaps in your learning for you. It thrives on you growing your skills, and getting creative about how to improve yourself. Ambition is welcome!
Since it's just one-file, you'll have a map of your thinking that you can share with your team — OR PAIR WITH THEM ON IT. It's made organically, so it's a lot easier to recall your thinking. You're programming your mental model directly.
This workshop teaches you riffing, which helps you…
Spec features and systems faster
Raise blockers early
Improve efficiency through tighter feedback loops
Collaborate more effectively with team members and stakeholders
Develop a stronger divergent thinking phase
Level up your skills faster + a process for doing so
Organize & communicate system designs
Improve team alignment, understanding and shared ownership
Have an organic artifact to remember with — and share with your team
Explore alternatives without fatigue & sunk costs
Improvise and "yes, and" when designing with others
How to put structure first, business logic second
Great solo — ideal for teams
Riffing works great on your own, but it's even better for teams. I recommend seeing this workshop as an investment in your team and you should commit to have 2 developers attending at the least. 4 is more impactful.
6 and beyond? We're probably better off doing a private version of this workshop for your whole team, so just reach out to me and we'll figure it out.
Meet your riffer, Kasper
Hi, it's Kasper! I was on the Rails core team for six years, have ~1750 commits to Rails and I've reviewed thousands of contributor pull requests to Rails. I was the 11th contributor when I left core.
By the way, want to level up your Rails app right now? I've taken Rails further in gems like active_record-associated_object
, active_job-performs
, oaken
and action_controller-stashed_redirects
as well as in nice_partials
& showcase-rails
from my work on Bullet Train.
I've worked on Rails apps large and small in my consulting work. I have a knack for creative problem solving leading to vastly clearer & simpler domain models.
I know how to ship simple — full stack.
Working with Kasper was everything I hoped for, and more! His deep knowledge of Rails and keen eye for domain modeling allowed him to quickly get up to speed with our project, leaving more time for problem-solving. He helped us overcome two major technical challenges we had been putting off for some time. I’m grateful we had the opportunity to work with Kasper and look forward to collaborating with him again.
Jason Charnes, job boardly.
I’ve had the privilege of learning from Kasper over the past few months. Thanks to the tools and techniques he shared, I’ve become much faster at debugging and fixing issues by identifying root causes more efficiently. Additionally, I’m now able to help my teammates get unblocked by applying the problem-solving strategies I gained from my time with him. Kasper’s guidance has had a lasting impact on my ability to contribute effectively to my team.
Francois Buys, Lead Software Engineer at OmbuLabs
Had an amazing 1:1 session with @kaspth.bsky.social yesterday where he helped me riff on a new feature I am about to start building for mycpaconnect.com.
Feeling way more confident now.
The Rails community is fortunate to have experts like him available to help the rest of us as we build.
Zack Gilbert, on Bluesky after having a 1-1 riffing session with me.
What do we cover when we're live on Zoom?
First we'll do:
An introduction to riffing and how it started for me.
How I and other people have used it so far and the results we've had.
Then I'll do a live riffing on a prompt for ~15-20 min.
Then you'll take over:
You'll do 3 rounds of riffing prompts total, ~15-20min each.
We'll discuss each riffing as a group, ~10min each.
We'll do a ~10 min break after your first round.
Between each round I'll give more advice and tips to increase your success.
If we have a lot of discussion we may opt for 2 prompts, and leave the third as an exercise for home.
Afterwards:
I tend to hang around an extra 30 min for Q&A.
You're not required to be on video, but you are invited to talk and share your thoughts as we try riffing. You're also welcome to put questions and thoughts in the chat throughout the call. You can also send in questions beforehand via Bluesky, Mastodon, and LinkedIn.
We'll record the Zoom call and you'll receive the recording afterwards.
What do I tell my boss?
If you're a boss reading this, investing in your team via training like this improves your company’s output, but also makes your team feel valued & supported. Spending on training is also tax-deductible.
If you'd like to help convince your boss, here's a Slack template you can send over:
Hey {boss}, I want to go to this workshop that focuses on achieving better software design for Rails apps like ours.
Improving our software design skills can have a dramatic impact on the quality and maintainability of our software over the long term.
The workshop does this by teaching a technique called riffing. With riffing we can iterate faster and save time. Riffing lets us spot and raise blockers early so we can derisk the work we do. This strengthens communication between our team members
For the workshop to work best for us, we'd want to invest and commit 4 developers to attend. There's also an option for private workshops for our whole team.
The workshop is run by Kasper Timm Hansen who was on the Rails core team (basically helping lead the Rails framework our app is built on) & he invented the riffing technique.
Anything else?
I'm also available for consulting on Rails apps and 1-1 consulting, you can book here https://savvycal.com/kaspth