
Riffing: for the creative Rails teams who want cohesive code
“Putting effort into … the design of your software improves the stamina of your project, allowing you to go faster for longer." — Martin Fowler
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 will likely have a dramatic impact both on the implementation details, and on the quality and maintainability of your software system over the long term.
What's the best way to uncover unknowns, explore possibilities, and refine your ideas without spinning your wheels on minor details, getting stuck in indecision, and settling too early for mediocre solutions?
While typical approaches might be writing about the problem in a Markdown file, starting with the database schema, reaching for Entity Relationship Diagrams, or even diving straight into full implementation, there's another way. Riffing.
How to riff
You write nearly-executable Ruby code in a single scratch file using plain-old Rails and Ruby classes & methods. Working in this low-fidelity sketch way lets you focus on the high-level design.
You can explore names, responsibilities & relationships of objects in your system — and have a flow state while doing so.
You can safely toss a flitter of an idea out there and refine it then and there. Or in some cases, immediately see it won't work, then scrap it, backtrack and try something else.
There's less fatigue and sunk costs because you're deferring database migrations, separate files and tests. Since it's just one-file, you'll have a map of your thinking that you can share with your team too — and since it's made organically it's a lot easier to recall your thinking. You're trying to program your mental model directly.
Riffing is to development what wireframing is to UI design.
It's the fast, high-energy, low-fidelity design technique for exploring, validating, and communicating design concepts in a tight feedback loop.
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.
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
