CodeLabProsCodeLabPros — homeMenu

About

We take problems that are not fully worked out yet, and turn them into software.

Almost nothing arrives finished. A marketplace turns out to be a trust problem before it is a catalogue problem. School fees turn out to be a question about what to do when nobody can tell which child a payment belongs to. A naming system turns out to be a question about whether the premise it was built on holds at all.

CodeLabPros is founded and led by Nicholas Munene

What the work is

So the work is rarely writing the thing that was specified. It is working out what the thing actually has to do, modelling the difficult part, building it, testing it against reality, and changing the design when reality disagrees.

We take that across the whole of it, not the convenient half. Product logic, architecture, database, backend, interface, integrations, payments, deployment. Not because a generalist is better than a specialist, but because the interesting failures in this kind of software happen in the joins, and someone has to own the joins.

Where we are careful

Anywhere the software has to make a consequential decision on somebody else’s behalf: money, access, identity, a state that cannot be un-entered. A wrong answer there cannot be fixed by shipping an update next week, because by then the money has moved, or a family has been told something untrue, or someone has built further work on top of a bad conclusion.

That is why payments and escrow are the strongest evidence on this site. Not because payments are the subject, but because they are the least forgiving place to demonstrate the point.

How we work

What comes out of that is a set of habits rather than a favourite framework. Measure rather than guess, and where the number will be shown to someone who might disagree, use a tool they already trust instead of one we built. Keep what we checked separate from what we assumed, in writing, because after a week the two feel the same. Decide what would make us stop before we know the answer. And when a wrong guess would land on someone who did nothing wrong, ask a person instead of guessing cleverly.

The best evidence that we actually work this way is not a project that went well. It is the piece of research where we set out eleven theories, went looking for evidence against all eleven, and published the seven that turned out to be wrong, several of which had looked right at the time. And a product whose first proper run showed the idea behind it was mistaken, where we changed the design to match the finding instead of shipping anyway. The whole method is written down.

What we build with

Mainly Python and TypeScript, usually with PostgreSQL, and we write things down. The list below is what we reach for, not what we are limited to. The tool has never been the interesting part of any of this.

Languages
Python · TypeScript · JavaScript
Systems
Next.js · Node/Express · PostgreSQL · MongoDB · Docker
Payments
Mobile money — checkout, collections, consumer and business payouts
Practice
mypy --strict · import-linter contracts · Postgres RLS · TDD

Where to find us

If you have something that needs building, or something already running and going wrong, tell us about it.