Software Without Scale
There's a self help type question meant to inspire action and catalyze motivation:
"What would you do if you knew you could not fail?"
While well-meaning, there's some baggage that comes with that question depending on the context. If we're talking about business ventures: What it's really asking is "what would you do if you were guaranteed something in return?" Often times, with an expectation of financial or social capital.
Perhaps I'm splitting hairs, but success and failure in my mind usually connotate an external win condition.
I prefer the inverse of that question:
"What would you do if you knew you would fail?"
In other words: what's worth doing regardless of the outcome?
I've been waiting to tell this story:
A while ago, I had a run in with someone who previously worked in The Music Industry. We were chatting and I mentioned I was writing my own music as a hobby.
They gave it a listen. They then promptly told me I was heading in the wrong direction. The type of music I made simply was not very popular. Apparently, it was going to require their expertise to "keep it sellable."
I was flabbergasted by how off the mark they were. Not only was I not asking for advice, but I like to think that it's obvious that what I'm writing is pretty personal. I tried to clarify this but was still given more of the sales pitch.
I'll give them some grace in hindsight. I'm sure when you're "In The Biz", you get asked by hoards of musicians for feedback on "Breaking In". I imagine this whole interaction was a knee-jerk response, in a way.
Still. It's a sad worldview, weighing music solely on a scale that measures the value against trends in the market. An assumption that the point of writing music was to receive something in return: fame, fortune, a contract, exposure. I'm all for musicians getting paid well to do their craft, but there's a whole spectrum of reasons outside of that for entangling with sound.
I had a bucket of cold water poured over me while reading the other day.
Robin Sloan in 2020 developed BoopSnoop: an app targeted at a user base of 4 people. The gist is that Robin wanted to replicate the functionality of the Snapchat-like app Tapstack for keeping in touch with his family. He's described the whole thing as similar to making a home cooked meal.
The exhortation “learn to code” has its foundations in market value. “Learn to code” is suggested as a way up, a way out. “Learn to code” offers economic leverage, professional transformation. “Learn to code” goes on your resume...
The list of reasons to “learn to cook” overflows, and only a handful have anything to do with the marketplace. Cooking reaches beyond buying and selling to touch nearly all of human experience. It connects to domesticity and curiosity; to history and culture; to care and love...
When you liberate programming from the requirement to be professional and scalable, it becomes a different activity altogether, just as cooking at home is really nothing like cooking in a commercial kitchen. I can report to you: not only is this different activity rewarding in almost exactly the same way that cooking for someone you love is rewarding, there’s another feeling, too, specific to this realm.
On app feel:
The app I'm posting to can shape the message. The caption box for Instagram feels different from my email client which feels different from my blog post editor.
Reading on those apps have a feel to them as well. The warmth of an app is directly related to the lack of noise and the smallness of scale in it's contents.
I lurk on Substack. Many folks talk about how nice it feels compared to Twitter and Instagram since it (at least for a time) was a smaller, more targeted community. We're likely already well beyond that point.
My personal favorite is Patreon. Patreon is not by any stretch of the imagination a small and intimate community. However, unlike instagram or twitter, I only follow less than 10 accounts, and they are accounts I'm highly invested in.
This is thanks to the barrier of entry: it requires paying the monthly subscription fee for patronage. The financial commitment both ensures that I highly value those accounts, and it's a mechanism for reigning in an otherwise unwieldy amount of accounts that I'm only partially interested in. It ends up feeling very cozy and I'm genuinely excited to get a notification from Patreon.
Derek Sivers talks about having a private email account that only close friends and family have access to. This yields a similar effect of warmth.
Some people will say that Discord has a similar feel. I suppose it can, but most of the channels I'm in are overpopulated and too over-stimulating for that to feel true for me.
Finding a digital home in this sense used to be easier. Even MySpace and Facebook friends were largely just your circle of IRL friends. Before that, forums and online groups were small due to the limited number of people using the internet. Largely, scale is the culprit.
Even when scaled down, the thing that keeps all apps from feeling truly comfortable is measured performance. Public access to number of likes, subs, listens, comments, etc. communicates clearly that the purpose of these platforms is scaling engagement. A tone that is ever present, even if you try to ignore the numbers.
A personal blog can have all of that. But, importantly, it's your choice to turn it on or off. The medium is the message, and you can shape your medium to reflect a priority that goes beyond the assumption that value and scale are equivalent.
Dan Blank writes often about not taking a handful of readers for granted. (His piece Would you write for just one reader? encapsulates the case of doing just that.) Kyle Webster advocates for appreciating those that are always supportive of your work: Friends, family, partners.
The fact that scale is a seductive possibility online dilutes the significance of having your work connect with an audience in the single digits.
I'll never forget my first professional software accomplishment. The company was smaller at the time. We had a local mixer where I got to shake hands with the users of a new feature that I developed. "It's amazing! It makes my job so much easier!!"
That experience will forever be hard to top, no matter how the scope of my work expands.
Following the links in Robin's post will find you reading Clay Shirky's observations around "Situated Software": A term he's coined after observing NYU ITP student colaborative projects. Robin highlights a portion of this quote, though it's great in context:
Situated software isn't a technological strategy so much as an attitude about closeness of fit between software and its group of users, and a refusal to embrace scale, generality or completeness as unqualified virtues. Seen in this light, the obsession with personalization of Web School ("scalable") software is an apology for the obvious truth -- most web applications are impersonal by design, as they are built for a generic user. Allowing the user to customize the interface of a Web site might make it more useful, but it doesn't make it any more personal than the ATM putting your name on the screen while it spits out your money.
Situated software, by contrast, doesn't need to be personalized -- it is personal from its inception.
The whole piece is a fascinating read. Multiple case studies look at leaning on what happens when software is developed without generalization, but instead utilizes smaller groups and social values as its leverage.
The greatest takeaway is how an app developed for a small community becomes more enticing because it's so form-fitting. There's still a need for enterprise solutions in the same way there's still a need for mass-produced furniture and tools. But there's a unique value to the targeted apps, dare I say, labors of love in some cases.
I confess: A while ago I was deeply entrenched in a mindset that my side projects had to contribute something to my resume. I essentially scanned requirements on job postings across my LinkedIn and setup a curriculum that I would gradually work through.
I'm not going to argue against this. As a professional, this is a Smart Thing To Do. Part of the gig is keeping up with modern tooling and best practices. It's not unique to engineers, either. Teachers, medical professionals, and accountants all need to receive continuing education credits to keep their licenses. And you know what — I like doing it!
However, all that said, career can't be the only driver in side projects.
In the same way that the Music Industry pro made an assumption about why we make music, I had an assumption about why I was writing software.
For some people, there's no problem here. The thrill of software to them is it's intersection with commerce. For others, they prefer a separation between their personal and professional lives.
However, we miss out on a buffet of opportunity when we're looking to get something out of every line of code we write.
Really smart people intertwine the two. They build a fun project with some sort of marketable tooling.
There's a difference though between building a personal project that scratches an itch — an art project, a game, a custom messaging app — and building a todo app or a faux employee management app.
What does the alternative look like? Here are a few examples that I like:
Indie Games. For some, maybe part of the allure is the chance to go big a la Undertale or Stardew Valley. However, for others, there is plenty of value in the act of making something in a medium they grew up loving. (I've fallen into the latter bucket with AC: New Murder.)
Wes Bos regularly makes neat doodads with JavaScript. This is in part to promote JS related courses, but clearly the guy is having fun with what he builds.
While on the subject of robots: Robot fighting leagues are a wild example. I don't personally have experience with them, but I do admittedly love that a community exists around them. A mix of engineering, sport, and the child-like instinct of stacking the blocks only to topple them down again.
Open Source Software, by definition, is the separation of software and commerce. Scale is still a factor, but profit is not a requirement. The examples are numerous. My favorites are Blender, Krita, and Kdenlive.
haikU by Nanette Wylde from 2001 generates a poem by combining three lines from different haikus at random for interesting juxtapositions.
For examples that target small groups specifically, dive into Clay Shirky's "Situated Software" mentioned earlier.
There's a whole spectrum of reasons to develop software. As many as there are for any art form: expression, advocacy, the experience alone, an opportunity for infinite learning, the chance to give to people you care about, to solve your own problems, to bring order to a small part of the world... Take your pick on any given day!
There's certainly no one answer. It's more important to keep in mind a few of the questions: "What would I do if I wasn't worried about success?" "What would I make if I didn't need it to scale?"
Time is limited. Life is short. There are only so many hours in the day. I hope that you have the opportunity to find projects where you are truly playing in your text editor. Where you are taking hard-earned skills from professional-grade work to find another dimension of personal fulfillment in your craft.