How to make hard product decisions together
We break down our collegium format: gathering experts at one table to keep decisions both fast and thoughtful.
+--------------------------------------------------------------------------------------+ | LOADING | +--------------------------------------------------------------------------------------+
At Dev Collegium we work in a collegium format: there is never a single person alone with a hard decision.
This reduces the risk of critical mistakes and helps us find non‑obvious options faster. We do not replace personal responsibility, but we make sure engineers are supported by the team.
Principles we do not break
- Every important decision is reviewed by several points of view.
- We explicitly capture assumptions and constraints of the problem.
- Code is always grounded in business context, not abstract “best practices”.
A small example
Imagine we have a service that sends tasks to program participants. A naive implementation might look like this:
async function sendTasks(users: User[], tasks: Task[]) {
for (const user of users) {
for (const task of tasks) {
await api.sendTask(user.id, task.id);
}
}
}From a production point of view this is weak: blocking requests, no tracing and no protection from duplicate sends.
A more realistic approach uses a queue and idempotency:
async function enqueueTasks(
queue: JobsQueue,
users: User[],
tasks: Task[],
) {
for (const user of users) {
for (const task of tasks) {
const jobId = `${user.id}::${task.id}`;
await queue.enqueue({ jobId, userId: user.id, taskId: task.id });
}
}
}A good engineering decision is almost always slightly more complex than the first idea, but it makes future changes cheaper.