SoftwareCaptains

View Original

Scalable systems

Vorige week kietelde ik CTOs met deze quote:

“Designing scalable systems when you don't need to makes you a bad engineer.” – Chris Kiel

Vooral software-engineers leken zich aangesproken te voelen. Ze struikelden over elkaar om me te komen vertellen hoe belangrijk schaalbaarheid is.

Het lijkt me logisch dat engineers graag scalable systems bouwen. Zo’n systeem bouwen geeft een intellectuele uitdaging. Het geeft de gelegenheid om met een heleboel shiny new things te spelen. Maar vooral: ze hebben zelf vaak al de gevolgen gedragen van een systeem dat niet schaalbaar gedesigned was maar ineens wel moest schalen.

Wat me opviel is dat weinigen onder hen de bijzin “when you don’t need to” gelezen hadden. Daarin zijn twee elementen belangrijk: “don’t need to” – sommige delen van een systeem moeten helemaal niet schaalbaar zijn – maar ook “when”. Daar staat niet “if”. “When” is een tijdsaanduiding. Wanneer je bedrijf 3 klanten heeft en jij een systeem bouwt waarmee je 3 miljoen klanten kan bedienen, ben je resources – geld, maar vooral tijd – aan het verspillen. Ja, over 5 jaar zal je bedrijf misschien 3 miljoen klanten hebben. Maar dat is alleen op voorwaarde dat je nu die 3 klanten optimaal bedient. Als je dat niet doet, kan ik je garanderen dat je bedrijf over 5 jaar niet meer bestaat.

Dit scenario is natuurlijk gemakkelijk. Het wordt al moeilijker wanneer je bedrijf 300 klanten heeft, en je moet beslissen of je iets moet bouwen voor 3000 klanten. En net dit, beste CTO, is jouw job. Jij moet de krijtlijnen uitzetten voor de kwaliteit van de software die je bouwt. Er is geen oplossing die altijd werkt. Als die zou bestaan zou een systeem bouwen voor 10 klanten evenveel kosten als een systeem voor 10 miljoen klanten, en zou een systeem bouwen voor een bedrijf dat nauwelijks groeit evenveel kosten als een systeem voor een bedrijf dat elk jaar maal 10 gaat.

Moet jij voor elke feature die beslissing nemen samen met je engineers? Neen. Je moet zorgen dat je mensen weten waar de lat ligt voor jullie bedrijf op dit moment.

Eén van die engineers reageerde met: “die quote is toch wel ongenuanceerd”. Zo werken quotes. Anders heten ze “blog posts”. En zo is deze quote toch nog een blog post geworden :)