Dragos Protung

Available at short notice · Hamburg & remote

I get called when a project has gone sideways.

Freelance software engineer in Hamburg. Sometimes that means a stalled release, or a codebase nobody wants to open. Sometimes it is smaller — a team one experienced pair of hands short. Sometimes it is much larger: renewing a system the business runs on, without stopping it.

Dragos Protung
Long renewals, quick rescues, and greenfield buildsWriting web applications since 2005
// the calls I actually get

You might need me if…

  1. The release date has moved twice and nobody can say why.
  2. Deploys are manual, rare, and a little bit frightening.
  3. There is a part of the codebase nobody wants to open.
  4. Nobody can say what else depends on it, so nothing gets changed.
  5. The developer who knew how it all worked has left.
  6. The team is good — it is simply one experienced pair of hands short.
  7. One problem has held up everything else for two weeks.
  8. You need to replace a system the business runs on, and it cannot stop while you do.
// first call to first commit

How it starts

  1. this week

    A call

    Thirty minutes. You describe the situation, I tell you honestly whether I am the right person for it — and what I would look at first either way.

  2. first days

    A look at the code

    I read the codebase, the pipeline and the last few months of tickets, then write down what I found and what I would do about it. In language you can forward to someone who does not write code.

  3. from there

    Hands on the work

    Two days to get you unstuck, or two years replacing a system that cannot stop. Remote, or in Hamburg when it genuinely helps.

// two days to two years

What I do

  1. Renewing a system that cannot stop

    Replacing it piece by piece, or repairing what is already there — usually both. The old system keeps running and the business keeps getting new features throughout. The two share data so nothing downstream notices, every integration with the systems around it keeps working, and what comes out is kept current rather than becoming the next thing nobody wants to touch.

  2. Rescue and refactor

    Stalled releases, legacy applications, and the module nobody wants to open. Tests around it first, then change it in daylight until it is boring again.

  3. An extra senior on the team

    You are one experienced developer short and hiring will take months. I take tickets like everyone else, review the code other people write, and answer the questions that have been piling up.

  4. Architecture and greenfield

    Starting properly: application architecture, event sourcing and CQRS where they earn their keep, Docker, pipelines and workflows. DDD and TDD, and code somebody else can read. Sometimes on an empty field; more often beside the system it will replace, which is the harder brief.

  5. Getting unstuck

    A two-week-old bug, a performance problem nobody can pin down, a migration that keeps failing. Often two or three days is the whole engagement.

  6. A second opinion

    A few days with the codebase and the process, and a written answer to the question you actually have: is this salvageable, is the rewrite justified, what would I do first.

  7. Coaching and workshops

    Leading and coaching development teams, running workshops, and sitting in on hiring so you are not guessing about candidates.

// what I am using now

Tools of the trade

PHP and frameworks

PHPSymfonyLaravelLaminasLegacy PHP, no frameworkSymfony MessengerREST & GraphQL APIs

How I build

Domain-Driven DesignEvent SourcingCQRSHexagonal architectureModular monolithStrangler figDual writesExpand and contractAnti-corruption layerSagas

How I ship

Zero-downtime deploymentsFeature flagsBlue-green & canary releasesTrunk-based development

Data and infrastructure

PostgreSQLMySQL & MariaDBRedisDockerGitHub Actions & GitLab CIRabbitMQ & AMQPAWSOn-premise

Front end

TwigTailwind CSSSymfony UXStimulusTurboJavaScript & TypeScript

Keeping it honest

PHPUnitBehatTDD & BDDInfectionPHPStanMagoRectorXdebugBlackfireSentry
Dragos Protung
// who you would be working with

A bit about me

I have been writing web applications since 2005, most of that in PHP, and I have been based in Hamburg for years now. Some of the work is greenfield — architecture, pipelines, doing it properly from the start. Rather more of it is the other kind: arriving at a system nobody enjoys touching, and making it boring again. Right now that is a fifteen-year-old application I have spent two years renewing a piece at a time, while it carries on running.

I work mostly remote, with clients almost all in Germany, and I come on site when it genuinely helps. When I am not behind a keyboard I am with my family, travelling, or training for a triathlon.

// however early it is

Tell me what you are dealing with.

Thirty minutes, no charge and no pitch. If I am not the right person for it, I will usually know who is.