Skip to main content

Command Palette

Search for a command to run...

No Calls. No WhatsApp. Only the Board.

Updated
7 min readView as Markdown
No Calls. No WhatsApp. Only the Board.

How Coject Tests Whether Documentation Can Truly Carry Software Development

One of the most persistent problems we have encountered over many years of building and maintaining enterprise software is surprisingly simple:

The documentation often does not match the real system.

The Business Requirements say one thing.

The technical analysis says another.

And the source code sometimes contains rules, exceptions, services, or behavior that cannot be found in either.

So we kept asking the same question:

Where did this missing knowledge come from?

The answer, in many cases, was not another document.

It was a conversation.

A phone call.

A WhatsApp message.

A quick discussion between an analyst and a developer.

And that realization became one of the foundations of Coject.

The Real Problem Was Not Missing Documentation

Imagine a very common scenario.

An analyst finishes the analysis documents and hands them to a developer.

The developer starts implementation.

Then the developer reaches something unclear.

Normally, the next step is obvious.

Call the analyst.

Send a message.

Ask:

“What did you mean here?”

The analyst explains.

The developer understands.

The code is written.

The project continues.

Operationally, the problem has been solved.

But from a documentation perspective, something has gone wrong.

The software now contains knowledge that never entered the documentation.

The developer understands it.

The analyst understands it.

The source code reflects it.

But the documents do not.

And years later, when neither person is available, nobody knows where that behavior came from.

The call disappeared.

The WhatsApp message disappeared.

The code remained.

So We Removed the Shortcut

This led us to a very deliberate decision in Coject.

We removed direct communication as a valid channel for resolving delivery questions between stages.

If a developer receives analysis documents and something is unclear, the developer does not call the analyst.

The developer does not send a WhatsApp message.

The developer does not walk over and ask for an explanation.

There is one channel:

The Board.

And there is one acceptable way to resolve the issue:

Update the documentation.

That distinction is fundamental.

The developer raises the unclear point through the Board.

The analyst receives it through the Board.

But the analyst does not simply reply:

“This is what I meant.”

The analyst must return to the document itself and correct, expand, or clarify it.

The updated document is then delivered again through the Board.

Only after the documentation itself becomes understandable does the next stage continue.

So the rule is not:

Ask through the Board and get an answer through the Board.

The rule is stronger:

Ask through the Board, and the answer must become part of the documentation.

Because if the answer exists only inside a message, we have simply created a new version of the same problem.

If the Developer Needs the Analyst, the Document Failed

This became one of our strongest tests.

If the developer cannot understand the requirement without contacting the analyst directly, we do not consider that a communication problem.

We consider it a documentation defect.

The document should be capable of carrying the knowledge on its own.

The person who wrote it should not be required to stand beside it and explain what it means.

That changes documentation from a supporting artifact into something much more important:

the actual interface between stages of software delivery.

Then We Decided to Test the Idea

A philosophy is easy to defend in theory.

We wanted to know whether it could survive a real software project.

So we designed an experiment around the idea.

We built a system using teams that were deliberately isolated from one another.

No direct communication between the delivery teams.

No calls to clarify requirements.

No WhatsApp messages between stages.

No informal dependency on personal relationships.

Each team received only the formal output of the stage before it.

And each stage was allowed to begin only when the required documentation from the previous stage was complete.

If the next team could not proceed, the work did not move forward through an explanation.

It moved backward.

The documentation was corrected.

Then it moved forward again.

And It Worked

We were able to build a large system using teams that had no direct communication with one another during the delivery flow.

Each stage depended on the artifacts produced by the stage before it.

Business Analysis produced the input for the next stage.

The next stage transformed that into its own complete output.

That output became the formal input for the following stage.

And so on.

The knowledge moved through the system inside the artifacts, not inside personal conversations.

This was important to us because it demonstrated something very specific:

software teams do not have to depend on direct human explanation in order to transfer complex system knowledge.

They need sufficiently complete outputs.

Isolation Became a Test of Quality

Normally, teams being able to speak freely can hide weaknesses in documentation.

A weak document can still produce working software because the author is always available to explain it.

Remove that person from the communication path, and suddenly the real quality of the document becomes visible.

That was exactly what we wanted.

The isolation was not the objective.

It was the test.

We wanted to know:

Can the output of one stage stand on its own?

Can another team understand it without knowing the person who created it?

Can the next stage start without a meeting?

Can the system continue to move forward based only on controlled, documented artifacts?

If the answer is no, the stage is not finished.

No Stage Starts With Incomplete Knowledge

This eventually became another important principle in Coject:

A stage should not begin simply because the previous team says it is finished.

It begins when its outputs are complete enough for the next stage to operate independently.

That is a very different definition of “done.”

The analyst is not finished when the document has been written.

The analyst is finished when the next stage can successfully use it.

The technical stage is not complete because a technical document exists.

It is complete when the next stage can build from it without requiring undocumented explanation.

The same principle can continue through development, reporting, testing, and other parts of the software lifecycle.

Each stage is tested by the stage that consumes its output.

The Board Is Not Just a Task Tracker

This is also why the Board plays a deeper role in Coject.

It is not simply a place to assign tasks.

It becomes the controlled boundary between stages.

Questions go through it.

Gaps are exposed through it.

Documents are corrected through it.

And the history of why something changed remains attached to the delivery process.

The goal is to prevent important software knowledge from escaping into channels that the system cannot preserve.

Why Are We So Strict About This?

Because informal communication is extremely efficient in the short term.

That is exactly why it is dangerous.

A thirty-second phone call can resolve an ambiguity immediately.

But that same thirty-second call may result in a business rule that remains inside production code for the next ten years.

The call disappears.

The people move on.

The code survives.

So we intentionally trade a small amount of convenience today for much stronger software knowledge tomorrow.

Our Rule Became Simple

Eventually, we reduced the philosophy to two rules:

If it affected the software, it must exist in the documentation.

And:

If something is unclear, the documentation must be fixed before the work continues.

Not explained privately.

Not solved through a call.

Not clarified over WhatsApp.

Fixed in the documented delivery flow.

This is one of the core ideas behind Coject.

We are trying to build software in a way where knowledge belongs to the project itself — not to the relationships, conversations, or memories of the people who happened to build it.

Because years later, when a new engineer opens the system and asks:

“Why does the software behave this way?”

the answer should not be:

“Someone probably explained it to the developer.”

The system should be able to explain itself.

More from this blog

C

Coject Labs

2 posts

Coject Labs is the research and development publication of Coject, sharing experiments, engineering insights, and applied research in AI-assisted software engineering, requirements discovery, and low-code development.