Gå til indhold
Codense
Om os

København. Odense.
Codense.

Codense er København og Odense — de to byer vores konsulenter kalder hjem, og en påmindelse om, at tæt, velkondenseret kode slår mere af den.

Vi startede i 2019 efter én omskrivning for meget — den slags, der bliver foreslået i et bestyrelseslokale, prissat til atten måneder og stille opgivet efter fjorten.

Hvert af de projekter havde samme form. Ingen havde målt noget. Systemet blev antaget at være uden for redning, fordi det var gammelt, og gammelt var blevet forvekslet med i stykker. De mennesker, der vidste, hvor ligene var begravet, var aldrig i lokalet.

Så Codense er bevidst lille og bevidst senior. To konsulenter, ingen bænk, ingen juniorer faktureret til seniorpris. Én af os i København og én i Odense, som er der navnet kommer fra — og, da vi først opdagede ordspillet, en rimelig erklæring om, hvad vi mener god kode er: kondenseret, ikke smart.

Vi tager færre opgaver, end vi kunne sælge. At sige nej til arbejde er det eneste, der gør rådgivningen værd noget: et bureau, der har brug for kontrakten, finder altid en grund til, at I har brug for kontrakten.

Odense 80 min med tog · ét hold København
Odense

Hvor halvdelen af Codense arbejder.

Danmark

København

Og hvor den anden halvdel gør.

Danmark

Produkter vi driver
4
Bygget, sendt og på vores egen vagttelefon.
Byer vi arbejder fra
2
København og Odense, som ligeværdige.
Kun seniorudviklere
Altid
Der er ingen bag os at eskalere til.
Hvor dataene bor
Europa
Europæisk infrastruktur, som udgangspunkt.
Hvorfor vi bygger

Vi ville være den slags bureau, der bærer en vagttelefon.

Det er let at anbefale en arkitektur, man aldrig selv skal drifte. Så vi begyndte at sende vores egne produkter, og vi driver dem selv.

Vi betaler for vores egne smutveje

Et bureau kan gå, før det andet år med vedligeholdelse kommer. Når det er vores produkt, er vi der stadig, når smutvejen skal betales.

Drift lærer det, byggeri ikke kan

At have vagten for rigtige kunder lærer dig, hvilke alarmer der betyder noget, hvilke dashboards der er teater, og hvordan et system faktisk fejler klokken 03:00.

Produktomsætning finansierer ærlighed

Vi kan sige til en potentiel kunde, at deres problem ikke er værd at løse endnu, i stedet for at tage arbejdet for at holde lyset tændt.

Sådan skalerer vi

To stiftere, et netværk, og ingen bænk.

Vi ansætter ikke for at se større ud. Vi henter folk, vi har sendt i produktion med før, ved navn, og vi fortæller jer, hvem der gør hvad.

Et netværk, ikke en liste

Seniorkonsulenter vi har leveret sammen med — mobil, data, design, sikkerhed. Hentet ind til den del, de er bedst til, og sagt farvel til, når delen er færdig.

Distribueret med vilje

København og Odense, skriftlig kommunikation først, beslutninger noteret der, hvor arbejdet sker. Det er sådan, vi altid har arbejdet, ikke en politik indført i 2020.

Kunder der bliver

Det meste af vores arbejde kommer fra folk, vi har arbejdet med før, eller den de fortalte det til. Det er den eneste salgspipeline, vi nogensinde har haft.

Uden for referat

Ting der er sande men ikke står på fakturaen.

  • Navnet

    København og Odense, kondenseret. Det beskriver også, hvordan vi kan lide kode.

  • Stiftet på et tog

    PLACEHOLDER — den første arkitekturskitse til Detectly blev tegnet mellem Odense og København.

  • Kaffe, målt

    PLACEHOLDER — vi overvåger seks ting i produktion, og ingen af dem er espressomaskinen. En forglemmelse.

  • Deploys om fredagen

    Det gør vi. Det er hele pointen med, at tilbagerulningen er øvet.

  • Holdt i Europa

    Hvert produkt vi driver, hostes i EU. Det var en beslutning, ikke en standard.

  • Vi siger nej

    PLACEHOLDER — cirka hver fjerde henvendelse får at vide, at arbejdet ikke er værd at lave endnu.

Sådan arbejder vi

Hvad vi gør, og hvad vi afslår.

Det er ikke værdier på en væg. De afgør, hvilke opgaver vi tager, og hvordan de forløber.

  1. 01

    Kvalitet er en beslutning om hastighed

    Teams behandler kvalitet som det, man handler væk, når man har travlt. Det er omvendt: de systemer, der sender hurtigst i produktion i år tre, er dem, der blev testet ordentligt i år et. Vi er ikke interesserede i håndværk som en æstetik — vi er interesserede i at kunne ændre noget på en fredag.

  2. 02

    Mål det, eller det er en holdning

    Gennemløbstid, andel af ændringer der fejler, p95-svartid, dækning på de veje der betyder noget. Vi tager en baseline i den første uge og rapporterer mod den til slut — også når tallet flyttede sig den forkerte vej. Bureauer, der kun rapporterer gode nyheder, rapporterer ikke.

  3. 03

    Skriv det ned, hvor det bliver fundet

    Dokumentation i en wiki rådner stille og roligt. Beslutningsnoter ved siden af koden, kontrolleret af CI og reviewet i samme pull request som ændringen, overlever. Prøven på god dokumentation er, om den svarer på det spørgsmål, en vedligeholder stiller om to år.

  4. 04

    Skala måles, den antages aldrig

    Næsten hvert performanceproblem, vi bliver kaldt ind til, viser sig at ligge et andet sted end der, hvor teamet ledte. Vi måler produktionen, før vi rører ved noget, og vi bygger belastningsmodellen ud fra jeres faktiske trafikmønster frem for et gennemsnit af forespørgsler i sekundet.

  5. 05

    Byg til næste størrelsesorden, ikke de næste tre

    At designe til hundrede gange jeres nuværende belastning er en måde at betale i dag for en fremtid, der måske ikke kommer. Vi designer til ti gange, og vi sørger for, at skridtet derefter er et kendt, prissat stykke arbejde frem for en overraskelse.

  6. 06

    Kedelig teknologi, valgt med vilje

    Nyhedsværdi har en driftsomkostning, der lander hos den, der har vagten. Vi vælger som udgangspunkt værktøjer med lange supportperioder, grundig dokumentation og et rekrutteringsgrundlag i Danmark. Griber vi endelig efter noget usædvanligt, skal beslutningsnoten sige, hvad det køber, og hvad det koster.

  7. 07

    Forandring i små skridt, der kan rulles tilbage

    Store omlægninger på én gang samler hele projektets risiko i en enkelt weekend — som regel den weekend, hvor de folk, der byggede det, er sværest at få fat på. Vi migrerer søm for søm, så hvert skridt kan sendes i produktion for sig, og hvert skridt kan rulles tilbage for sig.

  8. 08

    Design til overdragelsen fra dag et

    Målet på vores arbejde er, hvad jeres team kan gøre, efter vi er gået. Det betyder jeres konventioner frem for vores, parprogrammering frem for heltearbejde, og bevidst spredning af viden, også når det gør en sprint langsommere. Vi skriver exitplanen i uge et og gennemgår den ved hver milepæl.

  9. 09

    Nem at forlade, med vilje

    Løbende månedsaftaler, en måneds opsigelse begge veje, og ingen hjemmestrikket ramme fra os i jeres kodebase. Et bureau, der skal være svært at fyre, er holdt op med at konkurrere på arbejdet. Vi vil hellere blive hyret igen end bundet fast.

Stifterne

I møder dem, der laver arbejdet.

Os begge, hver gang. Ingen account managers og intet bytte undervejs — udviklerne i det første møde er udviklerne på opgaven.

  • $ whoami
    mathias · odense · fullstack & infra
    $ ssh hetzner-1 docker compose ps
    ✓app  queue  scheduler  horizon
    ✓postgres  redis  nginx  certbot
    $ psql -c "select count(*) from checks"
    a lot · and rising
    $ php artisan test --parallel
    ✓all suites green
    $ git push production main
    ▸build → migrate → swap · 0 downtime
    $ tail -f storage/logs/laravel.log
    ·nothing. as it should be.
    

    Laravel og PHP, Dockeren nedenunder, og på det seneste urimeligt meget tid brugt på, hvad AI kan og ikke kan stoles på med i en rigtig kodebase. Jeg går mest op i den del, der plejer at blive sprunget over: om det, I har bygget, kan deployes, overvåges og bringes tilbage af nogen, der ikke sad i lokalet, da det blev skrevet.

  • Jeg bygger den software, folk faktisk holder i hånden, og jeg designer den, før jeg bygger den. Native Android og iOS, når et produkt har brug for platformen nedenunder, Flutter eller React Native, når én kodebase er den bedre handel -- og hvilken af dem et projekt bør bruge, er en beslutning, der er værd at træffe bevidst frem for af vane.

Og et netværk vi har leveret sammen med i årevis

Ud over os to er der et netværk af seniorkonsulenter, vi har sendt i produktion med før — mobil, data, design, sikkerhed. Vi henter dem ind ved navn, når et projekt kræver en evne, vi ikke har, og vi siger det ligeud frem for at foregive, at evnen var i huset hele tiden.

Sig hej

Kaffe i København eller Odense?

Vi er oftere på stedet end de fleste remote-first bureauer. Er I i en af de to byer, kan den første samtale foregå ansigt til ansigt.

Svar inden for
En arbejdsdag
Første møde
En time, gratis
Opsigelse
En måned, begge veje
Vi sidder i
Odense & København