Yazılım Projesi Neden Başladığı Gibi Gitmez?
Yazılım Projesi Neden Başladığı Gibi Gitmez?
Bir yazılım projesine başlanırken genellikle herkesin heyecanı aynıdır.
Bir fikir vardır.
Bir ihtiyaç vardır.
Belki işletmenin yıllardır yaşadığı bir problem vardır ve artık bunun çözülmesi isteniyordur.
Toplantılar yapılır, fikirler konuşulur, ekranlar hayal edilir.
“Şurada müşterileri görebiliriz.”
“Buradan rapor alalım.”
“Bunu da otomatikleştirelim.”
“Mobil uygulaması da olsun.”
İlk bakışta her şey oldukça güzel görünür.
Sonra proje başlar.
Bir süre geçer ve o çok basit görünen cümle ortaya çıkar:
“Biz aslında böyle düşünmemiştik.”
İşte yazılım projelerinin en kritik noktalarından biri tam olarak burasıdır.
Çünkü çoğu zaman sorun yazılımın yapılamaması değildir.
Sorun, ne yapılması gerektiğinin başta yeterince netleştirilmemiş olmasıdır.
Fikir başka, gerçek ihtiyaç başka olabilir
Bir işletme sahibinin “bize bir müşteri takip sistemi lazım” demesi aslında tek başına yeterli bir bilgi değildir.
Müşteri nereden geliyor?
Kim ilk iletişimi kuruyor?
Teklif ne zaman hazırlanıyor?
Müşteri hangi aşamada satışa dönüşüyor?
Satış gerçekleşmezse neden gerçekleşmiyor?
Müşteriyle tekrar ne zaman iletişim kuruluyor?
Bu bilgilerin hangisi kayıt altında tutuluyor?
Bunlar konuşulmadan doğrudan ekran tasarlamaya başlandığında ortaya bir yazılım çıkabilir.
Ama işletmenin gerçekten ihtiyacı olan sistem çıkmayabilir.
Aradaki fark küçük gibi görünür.
Değildir.
Çünkü yazılım geliştikçe yapılan yanlış varsayımların maliyeti de büyür.
Önce yapalım, sonra düzeltiri her zaman iyi bir fikir değil
Bu cümleyi birçok projede duymak mümkün.
Aslında belirli durumlarda hızlı başlayıp ürünü geliştirmek oldukça mantıklıdır. Özellikle yeni bir ürün ortaya çıkarılıyorsa, kullanıcıdan alınan geri bildirimlerle ilerlemek doğru bir yöntem olabilir.
Fakat burada başka bir konu var.
İşletmenin zaten yıllardır kullandığı bir süreç dijital ortama taşınıyorsa, önce o sürecin nasıl çalıştığını anlamak gerekir.
Çünkü mevcut sistemin içinde insanların yıllar içinde geliştirdiği küçük alışkanlıklar olabilir.
Bir Excel dosyasının neden o şekilde tutulduğunu ilk bakışta anlamayabilirsiniz.
Bir çalışanın neden her sabah aynı listeyi kontrol ettiğini bilmiyor olabilirsiniz.
WhatsApp'tan gönderilen bir mesajın aslında başka bir sürecin başlangıcı olduğunu fark etmeyebilirsiniz.
Bunlar yazılımın dışında gibi görünür.
Aslında yazılımın kendisidir.
İyi yazılım koddan önce soru sormaya başlar
Bence iyi bir yazılım projesinin başlangıcındaki en değerli şey kod değildir.
Doğru sorulardır.
İşletmede iş nerede başlıyor?
Kim yapıyor?
Hangi bilgi gerekiyor?
Bu bilgi nereden geliyor?
İş tamamlandığında sırada ne var?
Kim haberdar oluyor?
Bir hata olduğunda ne oluyor?
Yönetici hangi bilgiyi görmek istiyor?
Çalışan hangi ekrana her gün bakacak?
Müşteri bu sürecin neresinde?
Bu soruların cevapları ortaya çıktığında yazılımın nasıl olması gerektiği de yavaş yavaş şekillenmeye başlar.
Ve ilginç olan şu:
Bazen bu soruların sonunda başlangıçta konuşulan yazılımın aslında o kadar büyük olması gerekmediği ortaya çıkar.
Bazen de tam tersi olur.
Başlangıçta “basit bir sistem yapalım” denilen işin aslında işletmenin birkaç farklı sürecini birbirine bağlaması gerektiği anlaşılır.
Bu yüzden iyi analiz, projeyi büyütmek için değil, doğru yere oturtmak için yapılır.
Yazılımı kullanacak kişiyi unutmayın
Bir yazılımın başarılı olup olmadığını en iyi anlayacak kişi her zaman projeyi yöneten kişi değildir.
Bazen o kişi, sistemi her gün kullanacak çalışandır.
Çünkü yöneticinin gördüğü süreç ile çalışan kişinin yaşadığı süreç aynı olmayabilir.
Yönetici “müşteri kaydı oluşturulsun” diyebilir.
Çalışan ise bunun gün içinde beş farklı ekrandan bilgi girmek anlamına gelmesini istemeyebilir.
İşte burada küçük ama önemli bir ayrım ortaya çıkıyor.
Yazılım işletmenin işini kolaylaştırmalı.
Çalışanın mevcut işini alıp sadece başka bir ekrana taşımak dijital dönüşüm değildir.
Eskiden Excel'e yazılan bilgiyi bu kez başka bir sisteme tekrar tekrar yazmak, sadece karmaşanın şeklini değiştirmektir.
En iyi sistem bazen en az görünen sistemdir
İyi çalışan bir yazılımın ilginç bir özelliği vardır.
Bir süre sonra fark edilmez.
Çünkü insanlar sistemi düşünmek yerine işlerini yapmaya başlar.
Müşteri geldiğinde kayıt otomatik oluşur.
Bir görev tamamlandığında ilgili kişiye bildirim gider.
Bir siparişin durumu değiştiğinde herkes güncel bilgiyi görür.
Yönetici rapor almak istediğinde birilerinin saatlerce Excel dosyası hazırlamasını beklemez.
Sistem arka planda çalışır.
İnsanlar ise işlerine devam eder.
Aslında teknoloji açısından bakıldığında oldukça etkileyici olan şey budur.
İyi teknoloji kendisini göstermek için uğraşmaz. İşinizi kolaylaştırarak kendisini hissettirir.
Peki iyi bir yazılım projesi nasıl başlamalı?
Bunun tek bir formülü yok.
Ama birkaç basit soru birçok problemi daha en başından önleyebilir.
Öncelikle işletmenin bugün nasıl çalıştığı gerçekten anlaşılmalı.
Sonra en fazla zaman kaybettiren noktalar belirlenmeli.
Tekrarlanan işler ortaya çıkarılmalı.
Hataların en çok nerede oluştuğuna bakılmalı.
Çalışanların hangi işlemleri gereksiz yere tekrar ettiği görülmeli.
Yönetimin hangi bilgiye ulaşmakta zorlandığı belirlenmeli.
Sonrasında teknoloji konuşulmalı.
Çünkü bazen çözüm özel yazılımdır.
Bazen bir entegrasyondur.
Bazen mevcut bir sistemin yeniden düzenlenmesidir.
Bazen de sadece yıllardır kullanılan bir sürecin daha doğru tasarlanmasıdır.
Önemli olan teknoloji kullanmış olmak değil.
Doğru problemi çözmüş olmaktır.
Bir yazılım projesinin başarısı ilk ekranda değil, ilk soruda başlar
Bugün yazılım geliştirmek teknik olarak hiç olmadığı kadar kolay.
Birçok araç var.
Birçok hazır sistem var.
Yapay zekâ var.
Otomasyon araçları var.
Ama seçeneklerin çoğalması, doğru çözümü bulmayı her zaman kolaylaştırmıyor.
Hatta bazen tam tersine daha fazla seçenek daha fazla kafa karışıklığı yaratıyor.
Bu yüzden bir yazılım projesine başlamadan önce “Hangi teknolojiyi kullanalım?” sorusundan önce başka bir soru sormak gerekiyor:
“Biz tam olarak hangi problemi çözmeye çalışıyoruz?”
Bu sorunun cevabı netleştiğinde gerisi çok daha anlaşılır hale geliyor.
Çünkü iyi bir yazılım, sadece çalışan bir sistem değildir.
İşletmenin çalışma biçimini anlayan, insanlara gereksiz yük çıkarmayan ve ihtiyaç büyüdükçe birlikte büyüyebilen bir yapıdır.
Belki de başarılı yazılım projeleriyle başarısız olanlar arasındaki en büyük fark burada.
Biri kod yazarak başlar.
Diğeri anlayarak.
Ve çoğu zaman doğru başlangıç, projenin geri kalanından çok daha değerlidir.