Kendi yazılımını satmak isteyen işletmeler
Kendi ihtiyacı için yaptırdığı ve iyi çalışan bir sistemi olan firmalar. Bu sistem çoğu zaman sektörünün gerçeğini iyi bildiği için değerlidir; asıl varlık koddan çok o bilgidir.
Tek müşteri için yazılmış ve çalışan bir yazılımı satılabilir bir ürüne dönüştürürüz: çekirdek ile müşteriye özel katmanın ayrılması, konfigürasyon motoru, çok kiracılı veri izolasyonu, kurulum ve sürüm yönetimi ile abonelik altyapısı.
Pek çok işletmenin elinde, kendi ihtiyacı için yazdırdığı ve yıllardır çalışan bir yazılım vardır. Zamanla fark edilir ki aynı sorunu yaşayan başka firmalar da vardır ve onlar da bu yazılımı kullanmak ister. Buradan iki soru doğar: yazılım başka bir firmada çalışır mı ve bu işten bir gelir modeli çıkar mı. Cevap çoğu zaman evettir, ama arada göründüğünden daha uzun bir yol vardır.
Çünkü tek müşteri için yazılmış yazılım, o müşterinin varsayımlarıyla doludur. Vergi oranı sabit yazılmıştır, iş akışı o firmanın onay zincirine göre kurulmuştur, ürün kodları o firmanın düzenine göre biçimlenmiştir, raporlar o firmanın patronunun istediği şekildedir. Bunların hiçbiri hata değildir; proje olarak doğru kararlardır. Ürün olarak ise her biri bir engeldir. Ürünleştirme, bu varsayımları teker teker ayıklayıp yapılandırılabilir hale getirme işidir.
İkinci ve daha kritik konu veri izolasyonudur. Birden fazla müşterinin aynı sistemde çalıştığı bir yapıda, bir müşterinin verisinin başka bir müşteriye görünmemesi tesadüfe bırakılamaz. Bu, arayüzde bir filtre meselesi değil, mimarinin temelinde çözülmesi gereken bir konudur. Sonradan eklenen izolasyon katmanları, en tehlikeli ve en pahalı düzeltmelerdendir; bu yüzden ürünleştirme kararı verildiği anda ele alınır.
Bu işin başlamadan önce netleştirilmesi gereken bir hukuki tarafı var ve bunu ilk toplantıda konuşuruz: mevcut devir sözleşmesindeki kaynak kod ve fikri mülkiyet maddeleri. Yazılım bir müşteri için yapıldıysa, o yazılımın başka müşterilere satılabilmesi sözleşmenin ne dediğine bağlıdır. Bu madde netleşmeden teknik işe başlamak, ilerleyen aşamada durdurulması çok pahalı bir yol açar. Aynı durum kendi iç yazılımını ürünleştirmek isteyen şirketler için de geçerlidir; orada da geliştiriciyle yapılan sözleşme kontrol edilmelidir.
Kendi ihtiyacı için yaptırdığı ve iyi çalışan bir sistemi olan firmalar. Bu sistem çoğu zaman sektörünün gerçeğini iyi bildiği için değerlidir; asıl varlık koddan çok o bilgidir.
Proje bazlı çalışan ve tekrar eden gelire geçmek isteyen geliştiriciler. Bu geçiş, teknik olduğu kadar iş modeli değişikliğidir ve ikisi birlikte planlanmalıdır.
Her müşteride kodu kopyalayıp değiştirerek ilerleyen firmalar. Bu yöntem üç dört müşteriye kadar yürür; sonrasında her düzeltmenin ayrı ayrı yapılması gerektiği için bakım maliyeti kontrolden çıkar.
Kendi sektörünü çok iyi bilen ve bu bilgiyi ölçeklenebilir bir gelire çevirmek isteyen işletmeler. Burada teknik iş, ticari kurgunun sadece bir parçasıdır.
| Yetenek | Ne sağlar |
|---|---|
| Çekirdek ile özel katmanın ayrılması | Hangi işlevin tüm müşterilerde ortak olduğu, hangisinin tek bir müşteriye özgü olduğu ayrıştırılır. Ortak çekirdek korunur, özel kısımlar eklenti veya yapılandırma haline getirilir. Bu ayrım, ürünleştirmenin en çok emek isteyen ve en belirleyici adımıdır. |
| Konfigürasyon motoru | Sabit yazılmış varsayımlar yapılandırılabilir hale getirilir: oranlar, iş akışı adımları, alan adlandırmaları, onay zincirleri, rapor tercihleri. Amaç, yeni bir müşteri için kod değiştirmek zorunda kalmamaktır; her yeni müşteride kod değişiyorsa henüz ürün değil, proje vardır. |
| Çok kiracılı veri izolasyonu | Müşterilerin verisinin birbirinden ayrılması mimarinin temelinde kurulur ve test edilir. İzolasyonun sınanması ayrı bir çalışma olarak yürütülür; bu, ürünleştirmede en ciddiye alınması gereken güvenlik konusudur. |
| Kurulum, sürüm ve uyumluluk yönetimi | Yeni müşteri kurulumunun tekrarlanabilir hale getirilmesi, sürüm numaralandırması, geriye dönük uyumluluk politikası ve müşterilerin farklı sürümlerde kalabilmesi ele alınır. Her müşteriyi aynı anda güncellemek zorunda olmak, büyümenin önündeki en sessiz engeldir. |
| Abonelik ve faturalama altyapısı | Kullanım ölçümü, paket ve sınır tanımları, abonelik yönetimi ve faturalama akışı kurulur. Fiyatlandırma modelini siz belirlersiniz; biz o modelin ölçülebilir ve faturalanabilir olmasını sağlarız. |
| Müşteri katılımı ve destek düzeni | Yeni müşterinin sisteme alınması, veri aktarımı, eğitim ve destek akışı tasarlanır. Ürünleştirmede çoğu zaman asıl darboğaz kod değil, her yeni müşterinin kaç gün emek istediğidir; bu süre kısalmadan ölçek büyümez. |
Mevcut sözleşmedeki kaynak kod ve fikri mülkiyet maddeleri incelenir; yazılımın başka müşterilere satılabilir olup olmadığı netleştirilir. Bu adım teknik işten önce gelir ve avukatınızla birlikte yapılır. Netleşmeden başlanan projeler en pahalı biçimde durur.
Hangi işlevlerin ürüne gireceği ve hangilerinin ilk sürümde dışarıda kalacağı kararlaştırılır. Mevcut yazılımın tamamını ürünleştirmeye çalışmak yaygın bir hatadır; ürün, projenin daraltılmış ve keskinleştirilmiş halidir.
Kod tabanı ayrıştırılır, sabit varsayımlar yapılandırmaya taşınır. Bu aşama kademeli yürütülür; mevcut müşteri çalışmaya devam ederken ilerlenir ve her adımda regresyon testleriyle korunur.
Çok kiracılı yapı kurulur ve izolasyon sınanır. Gerçek sınav ikinci müşteridir; ilk kurulumda ortaya çıkan her sürtünme, ürünün henüz yapılandırılabilir olmayan noktalarını gösterir ve öncelik listesini belirler.
Sürüm yönetimi, güncelleme politikası, abonelik ve destek akışı kurulur. Yeni müşteri katılım süresi ölçülür ve kısaltılır; ölçeklenebilirlik bu sürede görünür.
Bu, sözleşmenin ne dediğine ve ilişkinin nasıl kurulduğuna bağlıdır. Bazı sözleşmeler yazılımın tamamının münhasıran müşteriye ait olduğunu söyler; bazıları çekirdeğin geliştiricide kalmasına izin verir. Bu maddeyi ilk toplantıda netleştiririz. Uygulamada işleyen bir yol da müşteriyle yeniden anlaşmaktır; ürünleşen yazılımın bakımının ucuzlaması genellikle müşterinin de lehinedir.
Tek bir süre söylemek gerçekçi olmaz; belirleyici olan mevcut kodun ne kadar müşteriye özel varsayım taşıdığıdır. Bu yüzden işe kapsam ve durum değerlendirmesiyle başlarız ve aşamaları ayrı ayrı fiyatlarız. Kademeli ilerlemek de mümkündür: önce ikinci müşteriyi taşıyabilecek kadar, sonra gerçek ürün.
Bazen evet ve bunu söylemekten çekinmeyiz. Mevcut kod, taşıdığı sektörel bilgi nedeniyle değerlidir; ancak mimarisi çok kiracılığa hiç uygun değilse, üzerine inşa etmek yeniden yazmaktan pahalıya gelebilir. Bu kararı değerlendirme aşamasında, gerekçesiyle birlikte veririz. Kararı etkileyen en önemli unsur genellikle koddan çok veri modelidir.
Karışmaması mimarinin temelinde çözülür ve ayrıca test edilir. Bu, ürünleştirmede en ciddiye aldığımız konudur; izolasyon sınaması bağımsız bir çalışma kalemi olarak planlanır. Sonradan eklenen filtreleme yaklaşımlarına güvenmiyoruz, çünkü tek bir unutulmuş sorgu tüm güvenceyi geçersiz kılar.
Modeli siz belirlersiniz; biz o modelin teknik karşılığını kurarız. Kullanım nasıl ölçülecek, paket sınırları nasıl uygulanacak, aşım nasıl ele alınacak ve faturalama nasıl yürüyecek. Ticari kararı vermek bizim işimiz değil, ama modelin uygulanabilir olup olmadığını erken söyleriz.
Çekirdek ile özel katmanı ayrılmış bir kod tabanı; yapılandırma motoru; çok kiracılı ve izolasyonu sınanmış veri mimarisi; tekrarlanabilir kurulum ve sürüm yönetimi; abonelik ve kullanım ölçümü altyapısı ile müşteri katılım akışı. Kaynak kod dahil üretilen her şeyin mülkiyeti yüzde yüz sizdedir.
30 dakikalık keşif görüşmesinde ihtiyacınızı dinler, özele mi yoksa hazır çözüme mi ihtiyacınız olduğunu dürüstçe söyleriz.
Talep ile tedariğin nerede ayrıştığını, hangi tedarikçinin termininde durduğunu ve malın şu anda hangi noktada beklediğini tek yerden görünür kılarız. Amaç yeni bir ERP kurmak değil; mevcut sistemin bilmediği zincir dışı bilgiyi toplayıp planlama kararını veriye bağlamaktır.
Detay →Talebin nereden geldiğini, hangi tekliflerin alındığını, kimin neyi onayladığını ve gelen faturanın siparişle örtüşüp örtüşmediğini tek bir zincirde toplarız. Satın alma kişilerin hafızasında değil sistemde yürür; her adım geriye dönük olarak gerekçesiyle birlikte okunabilir. Mevcut ERP'niz yerinde kalır.
Detay →Tedarikçinin kim olduğunu, hangi belgesinin ne zaman dolduğunu, geçen yıl terminine ne kadar uyduğunu ve hangi fiyat anlaşmasının yürürlükte olduğunu tek kayıtta toplarız. Onaylı tedarikçi listesi bir Excel dosyası olmaktan çıkar. Tedarikçi portalı isteğe bağlı olarak aynı yapıya bağlanır.
Detay →Sevkiyatı planlayan, aracı ve güzergâhı belirleyen, taşıyıcı ile navlunu karşılaştıran, e-irsaliyeyi kesen ve teslim kanıtını sahadan toplayan bir katman kurarız. Kendi filonuz varsa yakıt, bakım ve belge maliyeti aynı sistemde birikir; taşıyıcıyla çalışıyorsanız hangi işin kime kaça verildiği kayıt altına alınır.
Detay →E-ticaret sitesi, pazaryeri, B2B bayi portalı, showroom ve telefonla gelen siparişleri tek havuzda toplarız. Stok her kanala ayrı ayrı değil, tek kaynaktan söz verilir; ayrılan miktar düşer, iptal ve iade geri döner. Amaç aynı ürünü iki kez satmamak ve siparişin nerede olduğunu tek ekrandan görmektir.
Detay →Ürünün tüm özniteliklerini, açıklamalarını ve çeviri metinlerini tek merkezde toplarız; her satış kanalının kendi şablonuna göre zenginleştirilmiş halini oradan üretiriz. Eksik veya kurala aykırı alan, ürün kanala çıkmadan önce yakalanır. Ürün verisi artık kimsenin masaüstündeki dosyasında yaşamaz.
Detay →