Mar 20, 2024 Marginal How to build a simple Rails CRUD application in just two years

Truman Shuck

Because we wanted it to exist

Having recently failed to transform human connection via Musicbox, our newly-formed product/consulting company Go Between was looking for a new product to build. This specific framing, to build, was natural for three software product engineers and would provide plenty of opportunities for learning over the course of the following two years. It would definitively not result in a product whose recurring monthly revenue would allow us to shift more of our time away from consulting — our ultimate goal.

Regardless we needed something to make, so we turned to the internet where folks have lots of thoughts on how to vet prospective product ideas. Some advise you to work backward from a market; others to focus on pain and problems; many offer long questionnaires. It's a lot, and anyway Derek Sivers has some thoughts on advice:

Imagine you've got a big question like, “Should I quit my job and start my own company?” You go ask the advice of some successful people you respect. Because they can't know everything about you and your unique situation, they'll give advice that's really just a reflection of their own current situation.

"Beware of Advice" from the book "Hell Yeah or No"

As remote company with product goals that require skills which were outside of our experience — marketing, positioning, sales — we figured that we had some learning to do. And as a remote company which values human connection, we figured that we should continue with practices that brought us together as people. It was Dan's idea to start a recurring book club and to maybe build a product around it. We wanted to select books that would teach us about entrepreneurship, and to style discussions in a way that would connect our personal and professional lives.

First: on scratch paper

Our initial experiment involved running a book club for Derek Sivers' "Your Music and People" in a Google doc. We also picked an initial product name, remotebook.club, because we are apparently literalists at heart. We split the book into a handful of sections and agreed to meet weekly — noting topics asynchronously in the document to be discussed in our hour-long conversation. Throughout the discussions, at the end of the document, we kept a list of feature ideas and other product related thoughts.

The feeling of connection was the most obvious product of this series of discussions. In responding to Derek Sivers' work, we shared a range of opinions on the subject matter — but also anecdotes from our lives that would not otherwise have come up. Getting to know the folks that I was working with felt good; it helped us understand our respective personalities in a way that made working together easier and more productive. The material sparked product ideas and thoughts about how our company should work. The discussions were fun and invigorating and we thought we could build a great product if we could figure out a way to share this feeling with other people.

We read several other books together in our early discovery phase: Rob Fitzpatrick's "The Mom Test" and Paul Jarvis' "Company Of One" to test the learning angle, but also "When Things Fall Apart" by Pema Chödrön and "Satisfied" by Jeff Manion because we thought that they might spark interesting conversations. Both angles worked and we cobbled together a basic feature set and user experience:

  • We'd hand-select and divide a number of books into series' of discussions
  • Our tool would let folks set up a team, pick a book, and start a discussion series†
  • We'd encourage folks to read each section and prepare discussion topics ahead of time in the tool
  • Once per week, folks would meet to discuss each participant's topics in turn

Not quite right away, since people would still have to acquire the book; we'd revisit this thought later

There were a handful of other features that we'd discover and drop as we iterated toward something we could share with other folks. We also picked a better name, Marginal, and got started building.

Next: on Rails

Go Between's collective experience covers a lot of different technologies, but it's Ruby on Rails that we always come back to. Our last product, Musicbox.fm, was a Rails API with a React (specifically an ejected create-react-app) frontend. With Marginal we wanted to keep things even simpler with Rails' server-side rendering. So we, as a fresh young developer following the first steps of a "build a blog in 5 minutes" Rails guide might, started with rails new marginal --database=postgresql.

Our first handful of pull requests establish familiar tools: tailwindcss, rspec, sidekiq, rubocop. And although our engineering principals include the value of discovery and planning artifacts, our feature work on Marginal was instead a loose, organic process that drew from a well-shared understanding of what we were trying to do with the product.

A product, for us, usually takes shape from the perspective of the person using it. We established a user model (with the help of devise, though it was eventually removed) and fleshed out the sign-up/sign-in process. We established a relationship to a team and, since Marginal is really only useful with other folks, figured out how to invite other people through email (actionmailer, Postmark). It took about two months of part-time effort to get our first version of the end-to-end experience deployed to Render where we could start using it for our own continued book clubs.

And After: Iterating

September 22nd, 2020 saw the first commit to Marginal's codebase, and over the course of 281 pull requests we've had 654 more commits since. Some of these are in support of purely technical changes. Software engineering is fun — mostly — and in our internal projects we specifically enjoy prudently experimenting with new technologies. As with most of the internet over the last ten years, our frontend experience had primarily involved single page applications. With Marginal, we turned to Rails' views and their associated tools: stimulusjs, view components, and with the release of Rails 7, hotwire, import maps. So some of our work involved adopting these technologies, using them poorly, figuring them out, and then using them a little less poorly.

The bulk of the changes to Marginal came from sharpening our understanding of what we wanted the product to be over the course of using it — first by ourselves, and later with a handful of the teams that we consulted with. Two of the books that we read helped speed this process along immensely, although one would lead to partial demise of the product itself. The first was April Dunford's "Obviously Awesome," a guide to product positioning, through which we clarified Marginal's place between learning tool (to retain content) and connection tool (to get to know the folks you work with). We landed on the latter, which saw us remove features related to capturing notes and reflecting on the subject matter, and to build features to facilitate the live discussion itself.

It would be Donald Miller's "Marketing Made Simple" that would eventually cause us to step back and fundamentally re-evaluate Marginal itself. We read this particular book over the summer of 2022 ahead of one of our in-person company summits where we then worked through its exercises in order to create a marketing plan. We'd had some success with running book clubs with the teams that we were embedded in in our consulting work and were trying to figure out how to communicate Marginal's value to the internet at large. It was the end of the StoryBrand BrandScript exercise that clarified a problem that we'd been passively noticing for a while.

The BrandScript is a couple of paragraphs of fill-in-the-blank text that help describe the person who really needs the product, why, and how it addresses their problem. At the end is a simple bulleted list: here's how it works, 1, 2, 3. Here's how Marginal works: someone corrals their team into reading together; over the course of a couple of weeks each person has to be reminded to get the book and read the first section; busy calendars eventually align and a few weeks later everyone has an energizing first discussion. It's a great feeling that takes about a month of time and a lot of dedicated reminding by a very motivated spokesperson to achieve. It felt very hard to market.

Marginal Is Dead, Long Live Marginal

We've made the conscious decision with Go Between to minimize risk to our mortgages and dependent cat, children, and dogs, by ensuring we always have enough consulting work to pay the bills. We work on Marginal in the leftover time, which is further divided by summer vacations, appointments, and renovation projects. I can only be grateful for the flexibility and relatively low stress that this decision has lead to in my life — but every decision has trade-offs and this one is that it's hard to build, copywrite for, market, and launch a product, especially one that requires a lot of explaining, on a small budget for time.

We ultimately decided not to drop Marginal entirely, but instead to change its focus. Instead of a tool to facilitate discussions about sections of a book that each team member has to acquire, we assembled topic-based collections of articles, podcasts, and video essays that are available on the internet. This allows a team to find something worth discussing, consume the material, and to experience the value of that shared discussion, all within a week or so. We set about updating our marketing copy, and addressing some feature work that would make these sessions based around short-form media more user-friendly.

We also decided to release the product for free, as-is, and removed the bulk of the Stripe subscription and payment processing integration that we'd added early on. Even with Marginal's new focus, it's still a tool that requires a fair amount of effort from the folks who use it. We think that that effort is worthwhile — we still regularly host sessions through Marginal for ourselves — but we'd like to invest our small amount of product-building time in something that is more immediately, explainably, valuable to folks.

Afterward

Marginal is three and a half years old, and we're probably not going to generate revenue from it in a way that allows us to buy back our consulting time. That's okay. One of my favorite Marginal book-club books, "Range" by David Epstein, would say that the process of building and sort-of-launching this product is another in a line of inherently valuable experiences from which we'll draw future inspiration from in some way that I cannot predict today.

Go Between itself is refocusing, again, on what we want to do with our time. We're considering Rob Walling's "stair steps," and we're definitely, this time, going to start any prospective product work at the marketing end. We might send Dan on a "SaaS sabbatical" to prospect for our next big idea. In the meantime, go try out Marginal. Read something with your teammates and let us know what you think about the experience.

Thanks for your time and attention.

Leave a comment

Thoughts for our thoughts

We hope you find our writing useful and, perhaps, that it gives you something to think about. We read everything we receive and we'd love to hear from you.