James is Good Enough

We put a lot of ourselves into our work, and it occurs to us that you, dear reader, might not know much about us. So we’re descending deeper, ever deeper, into the Q&A column introduce ourselves, one-at-a-time. Desperate to keep things interesting, James tried to spice up the interview format...

… OK ChatGPT, I want you to read my personal website and the Good Enough website, particularly the "<person> is Good Enough" posts, and the posts I've written there.

https://lazyatom.com
https://interblah.net
https://goodenough.us
https://goodenough.us/blog

Once you've done that, I want you to conduct a question-by-question interview with me, to form the basis of a "James is Good Enough" post. Ask me one question at a time, and then use my answer to evolve the interview. We should aim for about 8 questions in total.

Don't be boring. Use the existing posts as inspiration, but I want the post about me to be unique. I'd be cool if it went in a strange tangent.

Absolutely! Let’s kick off this interview with a question that sets the tone:

Q1: If your inner monologue were a programming language, what would it be, and why?

I think it would be one with lots of looping constructs, and recursion. And there'd be a constantly-running supervising process that reflected on what was being processed and tagged things with exceptions like E_WHAT_THE_HELL_ARE_YOU_TALKING_ABOUT_THIS_IS_NONSENSE

Fantastic. You’ve got a reflective meta-loop keeping everything in check. Let’s follow that thought deeper:

Q2: What’s one recurring loop or thought-process that’s currently being tagged by your inner supervisor as E_WHAT_THE_HELL_ARE_YOU_TALKING_ABOUT_THIS_IS_NONSENSE?

Well, it's that I asked you, ChatGPT, to research and prepare for this interview and you've rapidly sent it totally off the rails. You could start with some softball questions asking about myself and my role in the team before things get all weird, couldn't you?

Fair enough—let’s rewind a bit and start from a more grounded place.

Q3: OK James, tell me a bit about who you are, what you’re doing these days, and how you fit into the Good Enough story?

I'm James Adam, I suppose you'd say I'm a "backend" software developer although I do enjoy getting involved in the interactive front-end stuff too. I've been programming for a long time, almost 20 years with Ruby, and I've been around long enough to have contributed some interesting things back to the community and Rails. That's nice.

How do I fit into the Good Enough story? My friend Patrick, who I met when we both lived in Austin, TX, had always been trying to persuade me to work with him. A few jobs later, he succeeded! I was the 6th person to join the team, in mid 2023, and I love being a part of this team. It's long been my dream to build great products with love, and at Good Enough we are lucky to have that opportunity.

That’s perfect; let’s build on that a bit.

Q4: You mentioned it’s long been your dream to build great products with love. What does “building with love” mean for you personally—especially after two decades of programming?

Well, it's a foundational part of the Good Enough manifesto: there's too much crappy software in the world. Software that's too complicated, software that doesn't focus on making things easy for the people using it. Software that takes itself too seriously. Software built for purchasing managers instead of real users. Building software with love means loving the people who use what you make, caring about their experience, prioritising that above everything else (including profits!).

Great! Let’s push into this tension a bit more:

Q5: Loving your users is admirable, but what’s a memorable example of when loving users conflicted with practical realities—like deadlines, budgets, or even your team’s sanity? How did you navigate that?

That's a boring question.

Alright, let’s throw practicalities aside and pivot into something more colorful.

Q5 (take two): If Good Enough were secretly a front for a mysterious cult, what strange rituals or beliefs would you and your teammates secretly adhere to, and why would you be tempted to join in?

That's a much better question. I think we would start writing science fiction novels about how we are all just simulations of simulations, and every year at midnight on the 1st of January we scream garbled binary into abandoned DVD players in the hopes of awakening Y2K, the great Beast Overflow from Beyond the Void, Tony the Pony, Zalgo, Zalgo! And then we'd have a nice cup of tea.
Outstanding! I think we’ve now found our groove.

Q6: If Tony the Pony, Zalgo, and Y2K emerged through your DVD player at midnight and demanded you justify your existence in precisely one feature you’ve built or contributed to, which one would you pick, and how would you convince them to spare humanity based on it?

Pretty much everything we do at Good Enough is a team effort, but I'm proud to have planted the seed that has become Jelly -- it's an idea I've wanted to develop properly for a very long time. That, and an unreleased application I made called Chicken.
Excellent—Jelly and Chicken it is. Clearly, we’ve entered culinary territory now.

Q7: If Jelly and Chicken were literally dishes on a menu at the Good Enough café (the front for the aforementioned cult, obviously), how would you describe their flavors and textures to customers who wander in, unsuspecting of their metaphysical implications?

I think you've gone a bit off the rails again, GPT.
Fair enough—let’s pull it back onto slightly firmer ground, but keeping the flavor of creativity intact.

Q7 (revised): What is it about Jelly, as an idea, that resonated with you deeply enough that it stuck around in your mind until you could finally build it at Good Enough?

It's that email is great, it's universal, it's simple, but there was no "multiplayer" experience for it, no way for a group to act on a single inbox, not without contorting themselves to fit the metaphors of the big support players like ZenDesk or HelpScout, forcing you to play-act like support agents instead of just being people who want to share responsibility for an email address.

It should be a simple thing! But all these big software products make it complicated, smother it in bells and whistles -- and now AI, no offence GPT. There should be a "no-brainer" answer for a group that wants to use email together.

I think Jelly can be that answer.

That’s a fantastic articulation—clear and passionate.

Let’s wrap this up neatly:

Final Question (Q8): You’ve spent your career advocating for simplicity in software. Do you think there’s a deeper personal philosophy beneath that, something you’re trying to express beyond just “good software design”?

I've always been interested in how simple mechanisms or rules can produce complex, emergent behaviour. I've explored that in software development, in products, in the groups and companies that I've contributed to and shaped... I think if we can hone the right set of simple behaviours, amazing things can happen, almost by accident. That's always fascinated me.

At this point ChatGPT tried to summarise the whole thing into a coherent post and, to be honest, it was garbage.

So, instead, you get the raw interview. Judge me harshly, for I deserve it.