توسعهٔ نرم‌افزار سفارشی یک سفر چندمرحله‌ای است که موفقیتش بیش از آنکه به سرعت کدنویسی وابسته باشد، به کیفیت تصمیم‌های ابتدایی بستگی دارد. همه‌چیز با کشف نیاز آغاز می‌شود؛ مرحله‌ای که در آن به‌جای پذیرفتن فهرست خواسته‌های مشتری، مسئلهٔ واقعی کسب‌وکار را می‌فهمیم و مشخص می‌کنیم چه چیزی واقعاً ارزش ساختن دارد.

پس از روشن شدن مسئله، نوبت طراحی معماری و تعیین دامنهٔ نسخهٔ اول است. ما به‌جای ساختن همهٔ قابلیت‌ها به‌یک‌باره، یک محصول کمینهٔ ارزشمند تعریف می‌کنیم که هستهٔ نیاز را پوشش می‌دهد. انتخاب پشتهٔ فناوری، طراحی پایگاه داده و تعریف مرز سرویس‌ها در همین مرحله انجام می‌شود تا پایهٔ پروژه محکم باشد.

توسعه به‌صورت تکرارهای کوتاه پیش می‌رود. در پایان هر تکرار، یک بخش قابل نمایش از محصول آماده می‌شود و مشتری آن را می‌بیند. این چرخهٔ بازخورد سریع، کجی مسیر را زود آشکار می‌کند و از آن فاجعهٔ کلاسیک جلوگیری می‌کند که تیم ماه‌ها چیزی می‌سازد که در نهایت با نیاز واقعی فاصله دارد.

تحویل پایان کار نیست، بلکه آغاز یک رابطه است. پیش از تحویل، تست کامل، انتقال داده و آموزش کاربران انجام می‌شود و استقرار به‌صورت تدریجی و کنترل‌شده پیش می‌رود. پس از آن هم پشتیبانی و نگه‌داری ادامه دارد، چون هر نرم‌افزار زنده باید با تغییر نیازهای کسب‌وکار همراه و به‌روز بماند.