Jimmy Rentmeester

Lead Product Manager bij Coolblue · Tilburg

Een app bouwen gaat tegenwoordig snel. Het lastige is bepalen wat je weglaat.

Ik maak iOS-apps in mijn eentje. Alles, van het eerste idee tot de App Store-listing en de supportmail daarna. Hieronder staat wat ik heb gemaakt, wat ik er telkens uit heb gelaten, en waar deze manier van werken tegen grenzen aanloopt.

Werk

  1. GRID_BREAKER

    Arcadespel · iPhone & iPad · Live

    Een reflexspel dat je met één duim speelt. Ontcijfer het grid voordat het verdwijnt, rijg je treffers aaneen en jaag op een highscore.

    Geschrapt
    De uitleg vooraf. Er zijn zestien campagnelevels en elk level voegt één mechaniek toe, dus je leert het al spelend. Niks te lezen voordat je begint.

    5,0 ★ · 7 ratings

    GRID_BREAKER campagnescherm: zestien datakernen verdeeld over vier hoofdstukken
  2. BabyBeam

    Babyfoon · iPhone & iPad · Live

    Maakt van twee iPhones een videobabyfoon. Beeld en geluid gaan rechtstreeks van de ene telefoon naar de andere, versleuteld, en er wordt niks opgeslagen.

    Geschrapt
    Het account, en de opnames die daarbij horen. Elke andere app laat je er een aanmaken zodat het beeld via hun servers kan lopen. Deze koppelt twee van je eigen telefoons, dus er is geen geschiedenis, geen clipbibliotheek en nergens een plek om het te bewaren.

    5,0 ★ · 1 rating

    BabyBeam baby-unit met koppelcode en QR-code
  3. WristVault

    Horlogecollectie · iPhone & iPad · Live

    Houdt je horlogecollectie bij, logt wat je draagt en exporteert een pdf voor je verzekeraar. Geen account: het synct via je eigen iCloud en verder nergens heen.

    Geschrapt
    De helft van wat ik had bedacht. Het ging zonder die helft naar de App Store. Wat bleef: eenmalig betalen in plaats van een abonnement, terwijl de rest van de categorie juist de andere kant op gaat. De gratis versie houdt drie horloges bij en exporteert gewoon, dus de betaalde versie moet het op eigen kracht waard zijn.
  4. Stillwater

    Browser-experiment · Open

    Een vijver in een browsertabblad. Keil er stenen overheen, laat de waterlelies rinkelen, kijk naar de koi. Vanaf nul geschreven in WebGL.

    Geschrapt
    Score, installatie, routekaart. Ik wilde gewoon ergens aan timing en gewicht kunnen werken zonder winkel eromheen.

Eén case

BabyBeam: wat het kost om een babyfoon te bouwen zonder account.

Het probleem

Een babyfoon is of een apart apparaat dat je twee jaar gebruikt en daarna in een la legt, of een app die wil dat je een account aanmaakt zodat de kamer van je kind via andermans servers loopt. Dat tweede is het grootste deel van de markt. Ik snap wel waarom het zo gebouwd wordt, maar een app die een camera in een babykamer zet en daarna uitlegt waarom er een account nodig is, heeft het ene probleem opgelost en er een ander bij gemaakt.

De keuze

Beeld en geluid gaan rechtstreeks tussen de twee telefoons via WebRTC, end-to-end versleuteld met DTLS-SRTP. Er wordt niks opgenomen en niks bewaard, want er is geen server om het op te bewaren. Het enige dat de twee telefoons ooit verlaat is een kleine koppel-handshake. Die gaat kort via iCloud, versleuteld met een sleutel die van de koppelcode is afgeleid. Die sleutel heb ik zelf niet en kan ik ook niet achterhalen.

Dit werkt ook gewoon als je niet thuis bent. De twee telefoons vinden elkaar over het internet, niet alleen op je eigen wifi. Wat eraf is, is het account, het abonnement en het bedrijf dat ertussen zit.

Wat het kostte

  • Een drempel bij het instellen Beide telefoons moeten ingelogd zijn bij iCloud. Niet met dezelfde Apple Account, maar wel ingelogd. Elke app met een cloud mag die zin overslaan tijdens het instellen.
  • Verbinden werd het probleem van de gebruiker Een app die alles via de eigen servers stuurt verbindt altijd, want er is maar één route. Twee telefoons die elkaar rechtstreeks zoeken lukt meestal ook, maar soms zit het netwerk van een provider in de weg. Dan moet je zelf een TURN-relay toevoegen, onder het tandwiel. Ik heb een soort probleem van mijn bord gehaald en op een instellingenscherm gelegd.
  • Het reikt tot in de marketing De koppelcode is wat het veilig houdt, dus hij mag nergens in beeld komen. Ook niet in mijn eigen App Store-screenshots, die ik opnieuw heb moeten maken met de code onleesbaar.

Waar het nu staat

Live en gratis te downloaden. Hij staat pas een paar weken in de winkel, dus het eerlijke antwoord op de vraag of het gewerkt heeft is dat ik het nog niet weet. De ratingregel hierboven komt rechtstreeks uit de App Store en zegt vanzelf iets zodra er iets te zeggen valt.

Over AI

AI schrijft het meeste van de code in deze apps. Dat is niet het interessante deel. Het hield ergens in 2024 op bijzonder te zijn, en een lijstje met tools die ik gebruik zegt je niks over of ik ze kan aansturen.

De code klopt meestal wel. Het gaat mis in de tekst eromheen.

Drie voorbeelden van deze site zelf. Alle drie van mij, en alle drie wekenlang live voordat ik het doorhad. De doorgestreepte regel is wat de pagina beweerde, eronder staat wat er echt waar was:

  • GRID_BREAKER · privacybeleid “No network connections, servers, or cloud services.” Het spel heeft Game Center-leaderboards. De tekst las prettig en klonk zeker van zichzelf, maar hij was gewoon onwaar over mijn eigen app, vlak onder een live App Store-listing.
  • WristVault · landingspagina “Your collection never leaves your device.” De privacypagina er direct onder beschreef iCloud-sync. Beide zinnen waren bedoeld om mensen gerust te stellen, maar er klopte er maar één.
  • WristVault · knop “Binnenkort in de App Store” Het was een href="#". De knop deed helemaal niks, en zo is hij live gegaan.

Geen van deze drie is een bug. Het zijn beweringen die goed klonken maar niet klopten, precies op de plek waar alleen degene die het gebouwd heeft het kan controleren. En ik heb ze niet gevonden voordat ze live gingen. Ik vond ze weken later tijdens een review. Dat heeft mijn manier van werken veranderd: tekst die uit AI komt krijgt nu dezelfde controle als code die uit AI komt. Er gaat niks live voordat ik het naast het product heb gelegd, inclusief de juridische pagina's die niemand leest.

De andere helft van het werk zit ervoor. In plaats van me bij elke app opnieuw door prompts heen te werken, heb ik een projectstructuur en een set opgeschreven standaarden die ik hergebruik. Daarin staat wat “goed” betekent voor dit soort werk, concreet genoeg om echt na te volgen. Zo begint de tiende app waar de negende ophield.

Dat is dezelfde vaardigheid die je in een team nodig hebt. Opschrijven wat “goed” betekent, duidelijk genoeg dat iemand ermee verder kan zonder dat jij erbij zit, is het grootste deel van het werk. Of die iemand nu een developer is of een model.

Hoe ik werk

Elke app hier begon met dezelfde vraag. Is dit probleem het oplossen waard, wie heeft het precies, en wat moet een eerste versie kunnen voordat iemand er iets om geeft? Ik zoek iets waar mensen al over klagen, kijk of de bestaande apps het echt oplossen, en schrijf dan de kleinste versie op die het downloaden waard is. Daar houd ik me aan tijdens het bouwen.

Scope is maar een deel ervan. Ik bepaal ook de prijs, schrijf de App Store-listing, regel de vertalingen en het papierwerk rond regelgeving, en beslis wat je gratis krijgt. Dat zijn beslissingen van een product owner, en ze allemaal zelf nemen is de snelste manier die ik ken om erachter te komen wat elke keuze kost.

Uiteindelijk telt vooral hoe de app aanvoelt in gebruik. Iets dat minder doet maar geen uitleg nodig heeft, wint van iets dat alles doet en een handleiding nodig heeft.

Achtergrond

Tien jaar e-commerce, waarvan vier jaar leidinggevend. Op dit moment ben ik Lead Productmanager voor Gaming, Printers & Kantoor bij Coolblue. Ik ben verantwoordelijk voor de strategie en de commerciële resultaten van die categorieën, en ik begeleid zes productmanagers en vier productredacteuren.

De titel product owner heb ik nooit gehad. Wat ik wel heb: tien jaar verantwoordelijk zijn voor of iets commercieel werkte, en vier apps waarin elke productkeuze van mij was.

Contact

Ik ben op dit moment niet op zoek. Maar over productwerk, in je eentje bouwen, of hoe dit allemaal tot stand is gekomen praat ik graag.