All writing
·
LabProcessReflection

On Building Alone

Some thoughts on the particular texture of building software without a team — the tradeoffs, the unexpected advantages, and what I have learned to watch out for.


There is a specific kind of clarity that comes from being solely responsible for a system. No standups, no PRs to wait on, no architecture debates. Just you and the problem.

I have worked in teams, and I have worked alone. Both have their character. This is about the alone part.

The obvious disadvantages

You have no one to catch your mistakes. The second pair of eyes that would have spotted the off-by-one error or the security oversight — that does not exist. You have to be that second pair of eyes yourself, which means building practices that simulate the check.

I use code review on my own work. I open a PR, wait a day, and review it fresh. Sounds strange. Works surprisingly well. Temporal distance substitutes somewhat for perspective distance.

The non-obvious advantages

The biggest one: no coordination cost. Every handoff between people is a potential for information loss. Every meeting is time not spent building. Solo, you move with a velocity that is hard to achieve otherwise.

The second: you make architectural decisions with full context. There is no "we built it this way because Bob was here two years ago and thought X." Every decision is yours, which means you understand every decision. The cognitive overhead of inheriting someone else's choices does not exist.

What I watch out for

Scope creep in the other direction — building too much, not too little. When you can make every decision, you can also make too many decisions. I have to consciously resist the urge to build the perfect abstraction for a problem I have not yet had twice.

The other thing: nobody to tell you when the thing is done. There is always something to improve. Shipping requires a forcing function. Deadlines, public announcements, telling people you are going to do something — these all help.

The honest version

Building alone is good for a certain kind of work. Exploratory projects. Things where the requirements are unclear and need to emerge from experimentation. Things where moving fast matters more than moving safely.

It is not good for everything. Some problems genuinely need multiple perspectives. Some systems genuinely need more redundancy than one person can provide.

The trick is knowing which is which.