Ada paradoks yang sering dialami product team: roadmap setahun terlalu panjang dan sering meleset, tapi sprint dua minggu terlalu pendek untuk bikin sesuatu yang meaningful.
Roadmap setahun terlihat bagus di slide deck. Comprehensive. Terstruktur. Tapi enam bulan kemudian? Context berubah. Asumsi yang dipakai waktu planning ternyata salah. Feature yang diprioritaskan tinggi ternyata tidak relevan lagi. Team stuck: lanjutkan sesuai plan (meski tahu salah arah) atau pivot (dan roadmap jadi tidak berguna)?
Sprint dua minggu sebaliknya: terlalu cepat untuk bikin sesuatu yang utuh. Feature dipotong-potong jadi “increment” yang technically shipped tapi tidak practically useful. User bingung. Team frustrasi karena merasa tidak pernah finish anything meaningful.
Problem ini lebih dalam dari execution. Ini tentang cara kita frame process development itu sendiri.
Christopher Alexander, architect yang konsepnya jadi foundation agile dan design patterns, punya pendekatan berbeda: generative process. Bukan planning dari awal sampai akhir. Bukan juga iterasi tanpa arah. Tapi unfolding: design yang unfold sendiri step by step dari observasi real usage.
Ryan Singer (yang bikin Shape Up methodology) bangun framework-nya based on konsep Alexander ini. Artikel ini coba breakdown jadi 4 langkah yang bisa dipraktikkan.
Problem dengan Planning dan Problem dengan Iterasi
Sebelum masuk ke generative process, mungkin berguna untuk paham dulu kenapa dua pendekatan yang umum (long-term planning dan short iterations) sering tidak cukup.
Long-term planning asumsinya: kita bisa predict context di masa depan dengan cukup akurat. Problem-nya: context itu dynamic. User behavior berubah. Kompetitor launch feature baru. Teknologi baru muncul. Regulasi berubah. Tim turnover. Enam bulan itu waktu yang lama di dunia software. Planning yang dibuat sekarang based on assumptions yang mungkin sudah tidak valid enam bulan lagi.
Typical symptom: roadmap yang constantly revised. Quarterly review yang isinya explain kenapa Q1 target tidak tercapai dan adjust Q2-Q4 accordingly. Team cynical terhadap roadmap karena tahu akan berubah lagi.
Short iterations (typical agile/scrum) asumsinya: kalau kita iterate cukup cepat, kita bisa adapt. Problem-nya: iterasi tanpa direction jadi thrashing. Team bikin small increments tapi tidak ada vision yang mengikat semuanya. Feature A di sprint 1, feature B di sprint 3, ternyata tidak fit karena tidak ada yang lihat the whole picture.
Typical symptom: backlog yang makin panjang. Feature requests yang constantly reprioritized. Team complain “we’re always starting but never finishing.” Product terasa fragmented karena memang fragmented.
Alexander’s critique terhadap both approaches: they dictate form too early. Long-term planning dictate form dari awal. Short iterations dictate form di increment kecil tapi tetap dictate. Yang hilang: space untuk form emerge dari real context.
Generative Process: Framework 4 Langkah
Generative process Alexander itu fractal: applicable di any scale, dari small feature sampai entire product portfolio. Core idea-nya: find what’s not right, understand context, make smallest meaningful change, observe what emerges, repeat.
Ryan Singer di video Christopher Alexander Primer jelaskan ini sebagai “step-by-step unfolding” instead of “master planning.” Design yang bagus tidak diprediksi dari awal, tapi unfold dari observasi real context.
Bisa dibreakdown jadi 4 langkah:
1. Identify Misfit (What’s Not Right)
Langkah pertama: cari area yang “not right.” Bukan cari opportunity. Bukan brainstorm ide baru. Tapi cari misfit: gap antara what people are trying to do (context) dan what current form enables.
Alexander’s term untuk ini: “lack of fit” antara form dan context.
Praktiknya: observe struggle. Di mana user stuck? Di mana workaround muncul? Di mana support ticket konsentrasi? Di mana internal team complain tentang process yang ribet?
Misfit itu specific dan empirical. Bukan “we should improve onboarding” (too vague). Tapi “new users stuck di step 3 karena tidak tahu next action apa, dan 40% of them drop off there.”
Di Shape Up, ini fase appetite setting: berapa besar problem ini? Worth six weeks atau cuma two weeks? Atau malah not worth it sama sekali?
Yang perlu ditanya: apa yang people coba accomplish? Di mana current form tidak enable that? Berapa besar impact-nya?
Output: specific problem dengan clear evidence of struggle. Bukan solution. Belum.
2. Differentiate Context (Understand the Dynamics)
Langkah kedua: pahami context dengan detail. Bukan cuma “user wants to export data.” Tapi understand whole situation: kenapa mereka perlu export? Dalam kondisi apa? Siapa yang terlibat? Apa yang terjadi sebelum dan sesudah moment ini?
Alexander bilang: context itu dynamic, bukan static. Bukan cuma physical constraint (seperti “couch must fit in room”). Tapi activities and forces yang sedang terjadi.
Remember contoh planter dari artikel sebelumnya? Context-nya bukan “people might want to sit.” Tapi “people waiting for friends, taking phone calls, having coffee breaks, enjoying fresh air, resting between shopping.” Different activities dengan different needs.
Di fase ini, goal-nya: differentiate. Break down vague requirement jadi specific scenarios.
Contoh nyata (dari case collaboration tool di artikel hub):
- Vague: “users need better messaging”
- Differentiated: “users copy-paste screenshots, links, dan notes dari external tools ke conversation karena mereka perlu reference external context within threads untuk maintain coherent discussion”
Di Shape Up, ini fase shaping: define boundaries, identify elements, understand constraints.
Yang perlu dicari tahu: apa specific activities yang terlibat? Apa forces yang at play (constraints, dependencies, existing behaviors)? Apa yang bikin struggle ini muncul?
Output: rich understanding of context. Multiple specific scenarios. Clear picture of dynamics.
3. Unfold Form (Make Smallest Meaningful Change)
Langkah ketiga: design form yang fit dengan context. Tapi bukan design comprehensive solution. Design smallest change yang meaningful.
Alexander’s key insight: “living structure emerges from step-by-step unfolding, NOT from master planning.”
Praktiknya: dari understanding context tadi, apa smallest form yang bisa address misfit? Bukan “build complete solution.” Tapi “apa minimal form yang bisa enable the activity?”
Ini berbeda dari MVP (Minimum Viable Product). MVP masih comprehensive tapi scaled down. Generative process lebih tentang finding the right seed yang bisa grow.
Contoh dari artikel hub (collaboration tool):
- Cycle 1: thread-based messaging dengan basic timestamp dan search
- Bukan: messaging + file sharing + notifications + integrations all at once
Form yang di-unfold harus:
- Rough tapi solved: sketchy enough untuk kasih team latitude, tapi solved enough untuk direction jelas
- Bounded: clear apa yang in scope dan out scope
- Meaningful: bisa standalone, not just half of something
Di Shape Up, ini the pitched work: shaped enough untuk team bisa execute, abstract enough untuk team punya autonomy.
Yang perlu dijawab: apa smallest form yang bisa enable context? Apa boundaries-nya? Apa yang sengaja left out?
Output: concrete form tapi minimal. Ready untuk deploy.
4. Observe Emergence (See What Activities Unfold)
Langkah keempat: deploy, observe, see what happens. Bukan cuma usage metrics. Tapi what activities actually emerge.
Alexander’s vision: good design creates space untuk “flourishing of possibilities for meaningful things to happen.”
Praktiknya: watch real usage carefully. Apa yang people actually do dengan form ini? Apakah usage match dengan intended activity? Apakah muncul creative uses yang unexpected? Apakah ada new patterns yang reveal deeper needs?
Ini yang bikin generative berbeda dari iterative. Iterative sering fokus ke “did we ship on time?” Generative fokus ke “apa yang kita pelajari tentang context?”
Contoh dari artikel hub (collaboration tool lagi):
- Deployed: thread-based messaging
- Observed: people copy-paste banyak external content
- Emerged: kebutuhan untuk reference external context within threads
- Next cycle: rich previews, embeds, attachments
Pattern yang emerged (threads jadi knowledge base) tidak ada di original plan. It revealed itself through use.
Di Shape Up, ini fase cooldown: waktu untuk reflect, observe patterns, decide what to shape next based on apa yang emerged.
Perhatikan: apa activities yang actually happening? Apakah ada surprising usage? Apa patterns yang muncul? Apa next misfit yang revealed?
Output: empirical understanding of what works dan what’s next misfit to address.
Dan repeat. Find next misfit → understand context → unfold form → observe emergence.
Kenapa Ini Lebih Adaptif dari Planning atau Sprint
Generative process address weakness dari both long-term planning dan short iterations.
Dibanding long-term planning: planning assume context bisa diprediksi, generative biarkan context reveal itself. Planning dictate form upfront, generative biarkan form emerge. Planning rigid by nature, generative adaptive by design.
Dibanding short iterations: sprint sering lack direction, generative punya clear misfit untuk diaddress. Sprint produce fragments, generative produce meaningful wholes. Sprint ukur velocity, generative ukur fitness.
Yang menarik: generative bisa cepat DAN thoughtful sekaligus. Bukan trade-off. Karena setiap cycle focus ke one clear misfit, execution bisa fast. Tapi karena driven by observasi real context, direction tetap sound.
Shape Up literally implement this: six-week cycles (cukup panjang untuk meaningful, cukup pendek untuk adaptive), shaped work (clear boundaries tapi latitude untuk team), cooldown (observation time), betting table (choose next misfit based on what emerged).
Aplikasi Konkrit: 3 Level Penggunaan
Framework ini fractal. Applicable di different scales:
Level 1: Single Feature
Identify misfit: “Users stuck di payment confirmation screen, 30% drop off”
Differentiate context: “They’re uncertain apakah payment processed. No clear feedback. Worried about double charge. Need confidence before leaving page.”
Unfold form: Bukan redesign entire payment flow. Tapi add clear confirmation state dengan transaction ID dan email notification status. Minimal tapi meaningful.
Observe emergence: Drop off turun 15%. Tapi new pattern: users screenshot confirmation. Revealed: mereka butuh receipt untuk reimbursement.
Next cycle: Auto-generate receipt PDF.
Level 2: Product Direction
Identify misfit: “Analytics tool kita powerful tapi adoption rendah. Team jarang pakai.”
Differentiate context: “Team tidak butuh raw data. Mereka butuh answer specific questions: ‘is this campaign working?’ ‘where users drop off?’ Current form require them construct queries sendiri.”
Unfold form: Bukan add more chart types. Tapi create preset queries untuk common questions. One-click answers.
Observe emergence: Usage naik. Tapi request untuk customize preset muncul. Revealed: preset bagus untuk starting point, tapi mereka butuh tweak parameters.
Next cycle: Editable presets.
Level 3: Portfolio Strategy
Identify misfit: “Portfolio kita punya 5 products tapi tidak saling strengthen. Customers pakai satu, ignore sisanya.”
Differentiate context: “Customer journey mereka naturally flow dari problem A ke B ke C. Tapi products kita structured by technology, not by journey.”
Unfold form: Bukan reorg semua products. Tapi integrate product A dan B di one workflow untuk journey segment yang paling common.
Observe emergence: Adoption dari integrated workflow tinggi. Cross-product usage naik. Revealed: when products fit natural workflow, discovery organic.
Next cycle: Extend integration ke product C untuk next journey segment.
Mulai dari Mana
Tidak perlu overhaul seluruh process. Coba satu cycle dulu.
Minggu pertama dan kedua: pilih satu area yang jelas bermasalah. Biasanya ada di backlog dengan evidence struggle yang kentara. Spend waktu untuk understand context. Ngobrol sama user. Observe usage patterns. Map aktivitas yang terjadi. Resist godaan untuk langsung loncat ke solusi.
Minggu ketiga: shape form yang paling minimal tapi meaningful. Sketch kasar aja. Ryan Singer punya teknik pakai fat marker supaya dipaksa tetap abstrak, tidak terlalu detail. Tulis scope dengan jelas: apa yang masuk, apa yang keluar, apa yang sengaja dibiarkan flexible.
Minggu keempat sampai kesembilan (kalau pakai six-week appetite): kasih ke team dengan ruang gerak. Track progress bukan dari tasks yang selesai, tapi dari hal-hal yang berhasil di-figure out. Ship di akhir cycle, bahkan kalau hasilnya terasa “incomplete” dibanding yang dibayangkan awal.
Minggu kesepuluh dan kesebelas: cooldown. Jangan langsung plan hal berikutnya. Watch usage. Kumpulkan patterns. Ngobrol lagi sama user tentang apa yang muncul dari form ini. Dokumentasikan apa yang dipelajari tentang context, bukan cuma performance metrics.
Minggu kedua belas: decide apa next misfit yang mau diaddress, berdasarkan apa yang emerged. Lalu repeat.
Yang perlu shift: ukur sukses bukan dari “apakah kita ship sesuai plan” tapi dari “apakah kita belajar tentang context dan improve fitness.”
Penutup
Roadmap setahun kadang berguna untuk kasih direction. Sprint dua minggu kasih rhythm yang konsisten. Tapi keduanya sering tidak cukup untuk bikin product yang truly fit dengan context.
Generative process kasih jalan tengah: design yang unfold dari real usage, step by step, dengan direction yang clear tapi form yang tetap bisa adapt.
Basecamp udah buktikan approach ini bisa work. Dua puluh tahun lebih bikin product dengan tim kecil, sustainable, profitable. Camel, bukan unicorn.
Kalau roadmap sering meleset atau sprint terasa terlalu sempit, mungkin bukan execution problem. Mungkin framing problem. Dan mungkin worth it untuk coba cara ini.
Resources:
- Ryan Singer: Christopher Alexander: A Primer
- Shape Up: basecamp.com/shapeup
- Ryan Singer: Shaping in a Nutshell
- Christopher Alexander: Notes on Synthesis of Form (Chapter 1-2 untuk Form-Context-Fit)
Artikel Terkait: