Brian Poncelet

Process

How an engagement runs

Short cycles, working software early, and a handover that leaves you able to hire anyone next.

1. Scoping

Understanding the process the software is meant to support, who uses it, what systems it must talk to, and what the constraint really is. Scoping output is a written description of the first deliverable slice and what "done" means for it.

Fixed-price contracts for vaguely specified software are bad for both parties: they push the developer to defend scope rather than solve problems, and they push the client to load the specification with everything they can think of. Defining a small first slice precisely works better than defining everything loosely.

2. First working slice

The goal is something running that you can use, as early as possible — usually within the first few weeks. Not a prototype or a mockup: a narrow but real path through the system, deployed somewhere you can reach it.

This exists because written specifications reliably fail to surface the requirements people did not know they had. Those appear the moment somebody tries to do their actual job with the software.

3. Iteration

Short cycles, each ending with something demonstrable. You see progress continuously rather than in a single reveal at the end, and direction can change while changing it is still cheap.

What is needed from you: one person empowered to answer questions within a day or so. The most common cause of a stalled software project is not technical difficulty; it is a blocked question waiting a fortnight for an answer.

4. Testing and hardening

Automated tests around the logic that would be expensive to get wrong. Not everything — chasing total coverage is a poor use of budget — but the money paths, the permission checks and the integration boundaries.

Alongside that: input validation, sensible error handling, and logging that will let somebody diagnose a problem at 2am without a debugger attached.

5. Deployment

Automated and repeatable, so releasing is boring. Boring releases get made often, and frequent small releases are substantially safer than rare large ones.

Also settled here: where it runs, who holds the accounts, what the backup arrangement is, and — importantly — whether the backups have ever been restored. An untested backup is a hypothesis.

6. Handover

You should finish able to hire any competent developer to continue the work. That means you hold the repository, the accounts and the infrastructure, and there is documentation covering how to run it locally, how to deploy it, what the external dependencies are, and what the known rough edges are.

Ownership and your data

Settle in the contract, before work starts: who owns the code, who holds the cloud accounts, and how your data comes back to you in a usable format if the relationship ends. Under Canadian copyright law a contractor owns what they create unless it is assigned in writing, so the assignment needs to be explicit.

For personal information, Canadian privacy legislation applies regardless of where the software runs, and some sectors and provinces add requirements about where data may be stored. Worth establishing before choosing a hosting region, not after.

Common questions →