← Back to Blog Home

We have a Slopware Factory

We have a Slopware Factory

I write a lot about Junior - our (open-source) internal robotic Slack-enabled intern. I will also tell you that it’s as much of a Software Slopware Factory as anything is. Its name is on more commits than any other single contributor at the company. It’s definitionally a state of the art software factory, but I bet it doesn’t behave like you think.

What even is a Software Factory?

It depends on who you’re talking to, and if the conversation is today, last week, or next week. I can tell you what it means today - what it means to have a state of the art factory. I find it easiest to reason about a real-world workflow.

My world revolves around Slack

Slack message from David Cramer asking @jr to delete the kanban board experiment

Most of my conversations with Junior are pretty simplistic like the above (which is a real conversation from a few hours ago). I give it a pretty straightforward task, without much detail, and I expect it to fill in the remainder. Sometimes it does it well, sometimes it produces utter garbage. It’s kind of odd given it’s a factory, you’d expect the production lines to have some consistency, but they do not.

In this case the ask is pretty straightforward. I have an experiment, in Junior, for a kanban board visual of work. It turned out to be junk, so I’m deleting it. You’ll note I gave it no context - no repository, no details on where it’s at or what it encompasses. Its job is to figure it out. It’s my intern. I give it an assignment, and I expect it to come back to me if there was something it couldn’t resolve on its own.

A lot of times it will figure this out via memory, and if that fails, it will do it through a variety of tools at its disposal. I frankly don’t care how it fills in the blanks, as long as it does it efficiently and correctly (although efficiency here leaves a lot to be desired). In this case, it searched some past conversations to fill in the context, as we can see in the web UI for the transcript:

Junior web transcript showing Slack searches it ran to find the kanban board experiment

We landed this feature a few days back, it figures that out, and it realizes I simply want the experiment removed from the codebase. So it does the work, and comes back to Slack with a Pull Request ready to burn my eyes with:

Junior Slack reply describing getsentry/junior#3200, which removes the kanban board

The Pull Request in this case is good. It’s got a simple clear description, the code changes look correct (or at least they have convinced me as much - I obviously don’t know as I didn’t write the code).

GitHub description for the pull request that removes the hidden /board experiment

I give it a quick glance on the code changes - seems to reflect the PR description. Low risk, I don’t spend a lot of brain power on it. I’m sure it fucked something up I’ll figure out later, but in this case it probably just failed to find every last reference to the Kanban experiment. Maybe I’ll be pleasantly surprised, either way, Schrödinger’s Cat. I click Approve, satisfying my requirements for this service of self-review or peer-review (which is minimally allowed at Sentry). Might as well let it auto merge while I’m here - CI will probably flush out any bugs. I’m sure the agent didn’t delete any of my regression tests. It would never do that.

It proceeds to decide I need to be updated in Slack, so it updates me, and a few minutes later it merges it.

Junior Slack updates saying auto-merge is on, then that getsentry/junior#3200 merged

If there were any failures in the CI, I was not made aware of them, as Junior automatically determined if it should address them, as well as any PR feedback I might have left - of which, I left none, because I barely looked at the code.

After a combined total of $1.32, and five minutes of my time, the Kanban board is gone.

Junior brief for the kanban board removal showing a 6m 41s runtime and $1.32 in usage

That is a software factory - at least as of this week. It enabled me to take an intention, whether I had clarity or not, and act on it with minimal effort. Its main benefit was taking away some of the tedium of doing this. I didn’t open Claude Code, I didn’t have to instruct it to monitor CI, I didn’t have to think. In this case that was fine, but they’re not all like this, and this is the state of the art (at least for a company with real-world customers and liabilities).

If you made it this far, you’re probably wondering why you found no insights. Why were there no crazy next generation automations? Why was the system not building itself?! Because that is all a myth. Our system has memory - that doesn’t make it self-improving. Our system can act on your requests - that doesn’t make it automated. Our system is here to help you be more efficient at your job, to help you take an idea and execute on it. That is the state of the art.

It will not replace us, it will simply allow us to be more productive.

Syntax.fm logo

Listen to the Syntax Podcast

Of course we sponsor a developer podcast. Check it out on your favorite listening platform.

Listen To Syntax