Yazılım İhtiyacını Ekranlardan Değil, Günlük İş Akışınızdan Çıkarıyoruz

Pek çok işletmede iş, birbirinden kopuk araçlarla yürür: Siparişler bir mesajlaşma grubunda, stok bilgisi bir tabloda, müşteri notları ise birinin defterinde durur. Özel bir yazılım projesi, bu dağınıklığın nerede zaman ve para kaybettirdiğini görmekle başlar. İlk görüşmelerde size hangi ekranları istediğinizi sormuyoruz. Bunun yerine bir siparişin, bir servis kaydının ya da bir teklifin işletmenizin içinde hangi yolları izlediğini anlatmanızı istiyoruz. Mümkünse bu süreci yerinde, işi yapan kişilerin yanında izliyoruz. Elazığ’da ister üretim ister hizmet alanında çalışın, sorunun kaynağı çoğu zaman teknoloji eksikliği değil, aynı bilginin birkaç farklı yere elle yazılmasıdır. Her adımı kimin yaptığını, hangi bilgiyi nereden aldığını ve işin nerede beklediğini bir akış şeması üzerinde işaretliyoruz. Kaybolan siparişler, iki kez girilen faturalar ya da bir türlü bulunamayan müşteri notları bu şemada kırmızıyla işaretlenen noktalar oluyor. Şema, geliştirilecek sistemin taslağından önce işin kendisini görünür kılıyor.

Akışı çıkardıktan sonra sistemi kimlerin kullanacağını konuşuyoruz. Yönetici, muhasebe, sahadaki personel ve belki de müşterinin kendisi aynı veriye farklı ihtiyaçlarla bakar. Her rol için hangi bilgilerin görülebileceğini, hangi işlemlerin yapılabileceğini ayrı ayrı yazıyoruz. Kullanıcıların çalışma koşullarını da dikkate alıyoruz; depoda eldivenle çalışan biri için tasarlanan ekran, ofiste masa başında oturan biri için tasarlanandan farklı olmalıdır. Sistemin hangi cihazdan açılacağını da belirliyoruz; sahadaki ekip için telefon ekranı, muhasebe için geniş tablo görünümü öncelikli olabilir. Hangi raporların hangi sıklıkla ve kimin için hazırlanması gerektiğini de bu görüşmede netleştiriyoruz. Ardından hedefleri ölçülebilir hâle getiriyoruz. Teklif hazırlama süresini kısaltmak, stok sayım hatalarını azaltmak ya da ay sonu raporunu tek tıkla almak gibi somut beklentiler, yazılım geliştirme sırasında neye öncelik vereceğimizi belirliyor. Aynı hedefler, proje tamamlandığında sistemin gerçekten fayda sağlayıp sağlamadığını değerlendirmek için de ölçü oluyor.

Sıfırdan bir sistem yazmak her ihtiyaç için doğru cevap değildir. Analizin sonunda bazen piyasadaki hazır bir programın ya da abonelikle kullanılan bir hizmetin işinizi fazlasıyla göreceğini söylüyoruz. Hazır çözümler hızlı devreye girer ama iş yapış biçiminizi kendi kalıplarına uydurmanızı ister. Özel geliştirme ise işinize tam oturur; buna karşılık daha fazla zaman, bütçe ve bakım gerektirir. Bu iki yolu ya da ikisinin karışımını sizin durumunuza göre karşılaştırıyoruz. Örneğin muhasebe için hazır bir program kullanıp yalnızca saha ekibinin kayıtlarını toplayan küçük bir uygulama geliştirmek, çoğu zaman en dengeli seçenek olabiliyor. Karşılaştırmayı maliyet, kurulum zamanı, esneklik ve uzun vadeli bağımlılık başlıklarında yazılı olarak sunuyoruz. Hazır bir çözüm önerdiğimizde kurulumunda ve verilerinizin aktarılmasında da yardımcı oluyoruz. Böylece kararı bir satış konuşmasının etkisiyle değil, kendi önceliklerinize dayanarak veriyorsunuz. Kararınız ne olursa olsun analiz belgesi sizde kalıyor ve başka bir ekiple çalışırken de kullanılabiliyor.

İstek Listesini Üçe Bölüyor, Prototiple Sınıyor, Pilot Ekiple Başlıyoruz

Analizden çıkan istek listesi genellikle uzundur ve hepsini tek seferde geliştirmeye çalışmak projeyi hem geciktirir hem de pahalılaştırır. Bu yüzden istekleri üç gruba ayırıyoruz: olmazsa olmazlar, ilk kullanımdan sonra eklenebilecekler ve şimdilik rafa kaldırılacaklar. Olmazsa olmazlar listesini kısa tutmak cesaret ister, ama ilk sürümün hızla kullanıma girmesini sağlayan şey tam da bu sadeliktir. Kapsam belgesinde her özelliği kısa bir kullanım senaryosuyla tarif ediyoruz. “Satış temsilcisi müşteri kaydını açar, geçmiş siparişleri görür ve yeni teklif oluşturur” gibi cümleler, hem sizin hem de geliştiricilerin aynı şeyi anlamasını sağlıyor. Her senaryo için işin tamamlanmış sayılacağı koşulları da yazıyoruz. Rafa kaldırılan istekleri silmiyoruz; ileride yeniden değerlendirmek üzere ayrı bir listede saklıyoruz. Belgeyi birlikte gözden geçiriyor, onayınızı aldıktan sonra geliştirmeye geçiyoruz. Proje sırasında yeni bir istek doğduğunda onu görmezden gelmiyoruz; ancak kapsama eklemeden önce takvime ve bütçeye etkisini açıkça konuşuyoruz.

İlk satır kod yazılmadan önce, ekranların üzerinde gezinilebilen basit bir prototipini çıkarıyoruz. Bu prototipte renkler ve süslemeler yok; yalnızca hangi bilginin nerede duracağı ve bir işlemin kaç adımda tamamlanacağı var. Prototipi, sistemi gerçekten kullanacak kişilere gösteriyor ve tepkilerini not ediyoruz. Bir düğmenin nerede aranacağı ya da bir alanın neden zorunlu olduğu gibi sorular bu aşamada ortaya çıktığında, düzeltmek birkaç dakika sürer. Aynı sorun kod yazıldıktan sonra fark edilirse düzeltmesi günler alabilir. Prototip aşaması bu nedenle projenin en ucuz öğrenme fırsatıdır. Sık tekrarlanan işlemler için kısayollar ya da hazır şablonlar gibi zaman kazandıran çözümleri de bu aşamada tasarlıyoruz. Onaylanan prototip, geliştirme ekibi için bir yol haritasına dönüşüyor. Ekranlar arasındaki geçişler, hata mesajları ve henüz kayıt girilmemiş bir ekranda ne gösterileceği gibi ayrıntılar da burada kararlaştırılıyor. Böylece geliştirme sırasında tahmine dayalı çözümler üretmek zorunda kalmıyoruz.

İlk sürümü bütün işletmeye birden açmak yerine küçük bir kullanıcı grubuyla başlatmayı öneriyoruz. Bir şube, bir ekip ya da tek bir iş süreci üzerinde yapılan kısa bir deneme, gerçek hayatta neyin işe yaradığını hızla gösteriyor. Bu dönemde kullanıcılardan gelen geri bildirimleri toplayıp önceliklendiriyoruz. Deneme süresince kullanıcıların nerede takıldığını görmek için kısa görüşmeler yapıyor, gerekirse ekranları yerinde birlikte inceliyoruz. Bazı istekler küçük düzeltmelerle çözülüyor, bazıları ise ikinci sürümün planına ekleniyor. Yazılım bu şekilde, masa başında tahmin edilen ihtiyaçlara göre değil, sahada gözlemlenen kullanım biçimine göre olgunlaşıyor. Eski düzenden yeni sisteme geçişi de bu aşamada planlıyoruz. Tablolarda ya da eski programlarda duran kayıtlarınızı temizliyor, eksikleri tamamlıyor ve yeni yapıya aktarıyoruz. Geçiş sürecinde iki sistemin kısa bir süre birlikte çalışması, veri kaybı ve iş aksaması riskini belirgin biçimde azaltıyor.

Kısa Döngülerle Geliştiriyor, Test Ediyor ve Diğer Sistemlerinize Bağlıyoruz

Geliştirmeyi kısa döngülere bölüyoruz. Her döngünün sonunda size çalışan bir parça gösteriyoruz: bir ekran, bir rapor ya da tamamlanmış bir işlem akışı. Bu düzen, projenin aylarca kapalı kapılar ardında ilerleyip sonunda beklentinizden farklı bir sonuçla karşınıza çıkmasını önlüyor. Döngü toplantılarında önceliklerinizi yeniden sıralayabiliyor, önemini yitiren bir özelliği erteleyip yerine daha acil bir ihtiyacı alabiliyorsunuz. Kodu, projede kim çalışırsa çalışsın anlaşılabilecek biçimde ve ortak kurallara uyarak yazıyoruz. Yapılan her değişiklik bir sürüm kontrol sisteminde kayıt altına alınıyor ve başka bir geliştirici tarafından gözden geçiriliyor. Geliştirme, test ve canlı ortamları birbirinden ayırıyoruz; yeni bir özellik, sizin kullandığınız sisteme ancak test ortamında onaylandıktan sonra taşınıyor. Yazılım ekibimizin bu kurallara titizlikle uymasının nedeni, bugünkü hızdan çok yarınki bakım kolaylığıdır. Kolay okunan kod, ileride eklenecek her özelliğin daha az zahmetle ve daha az hatayla hayata geçmesini sağlıyor.

Test, geliştirmenin sonuna eklenen bir aşama değil, her döngünün içinde yer alan bir alışkanlık. Hesaplama yapan, stoktan düşen ya da fatura kesen kritik işlemler için otomatik testler yazıyoruz. Testler her kod değişikliğinden sonra kendiliğinden çalışıyor ve eski bir özelliğin yeni bir eklemeyle bozulup bozulmadığını hemen gösteriyor. Otomatik testlerin yakalayamayacağı durumlar için elle yürütülen test senaryoları hazırlıyoruz. Hatalı biçimde girilmiş bir telefon numarası, aynı anda iki kişinin düzenlediği bir kayıt ya da internet bağlantısının koptuğu bir an bu senaryoların tipik örnekleri. Farklı tarayıcılarda ve cihazlarda da deneme yapıyoruz. Bulunan her hatayı bir takip sisteminde kayıt altına alıyor, nasıl yeniden oluşturulacağını ve ne zaman çözüldüğünü not ediyoruz. Son aşamada sizin ekibinizden birkaç kişiyle kabul testleri gerçekleştiriyoruz. Kapsam belgesinde yazan koşullar tek tek kontrol ediliyor ve ancak hepsi sağlandığında o parça tamamlanmış sayılıyor.

Yeni sistem, işletmenizde zaten kullandığınız araçlarla konuşabildiği ölçüde değer kazanır. Muhasebe programınız, e-fatura sağlayıcınız, çevrim içi ödeme altyapınız, kargo firmanız ya da e-ticaret siteniz ile veri alışverişi gerekip gerekmediğini analiz aşamasında belirliyoruz. Bağlantıları, ilgili hizmetlerin sunduğu resmî programlama arayüzleri üzerinden kuruyoruz. Arayüzü olmayan eski bir programla çalışmak gerektiğinde, düzenli dosya aktarımı gibi daha basit ama güvenilir yöntemler öneriyoruz. Entegrasyonların en hassas yanı, karşı taraftaki sistem değiştiğinde ya da geçici olarak çalışmadığında ne olacağıdır. Bunun için her bağlantıda hata durumlarını kaydeden ve gerektiğinde size bildirim gönderen bir izleme düzeni kuruyoruz. Aktarılamayan bir kayıt sessizce kaybolmuyor, yeniden denenmek üzere sırada bekliyor. Entegrasyonları canlıya almadan önce karşı tarafın test ortamında deneyerek gerçek kayıtların etkilenmesini önlüyoruz. Kurulan her entegrasyonun hangi veriyi, hangi sıklıkla ve hangi yönde taşıdığını teknik belgelere işliyoruz. Böylece aynı bilgiyi iki ayrı sisteme elle girme zahmetinden kurtuluyorsunuz.

Güvenliği, Bakımı ve Kaynak Kodu Sahipliğini Baştan Yazıya Döküyoruz

İşletme verisi tutan her sistem, güvenlik baştan hesaba katılarak kurulmalıdır. Kullanıcı şifrelerini geri çözülemeyecek biçimde saklıyor, bütün bağlantıları şifreli hâle getiriyoruz. Her kullanıcının yalnızca işi için gereken verilere erişebilmesi için rol bazlı yetkilendirme kuruyoruz. Oturum süreleri, başarısız giriş denemelerinde hesabın geçici olarak kilitlenmesi ve iki aşamalı doğrulama gibi önlemleri ihtiyaca göre devreye alıyoruz. Kimin hangi kaydı ne zaman değiştirdiğini gösteren işlem kayıtları, hem güvenlik hem de iç denetim açısından işinize yarıyor. Kişisel veri içeren alanlarda yasal yükümlülükleri gözetiyor, gereğinden fazla veri toplamaktan kaçınıyoruz. Veritabanının otomatik yedeklerini ayrı bir konumda saklıyor, yedekten geri dönmenin gerçekten çalıştığını belirli aralıklarla deniyoruz. Hiç denenmemiş bir yedek, ihtiyaç anında sürpriz çıkarabilir. Sunucu erişimini de sınırlı sayıda kişiye ve güvenli anahtarlarla veriyoruz. Yazılım güvenliğini bir kerelik kontrol olarak görmüyoruz; kullanılan kütüphanelerdeki açıkları takip ediyor, gerektiğinde güncellemeleri planlı biçimde uyguluyoruz.

Canlıya alınan bir sistemin de düzenli bakıma ihtiyacı vardır. Sunucu, veritabanı ve kullanılan bileşenler zamanla güncelleme ister; tarayıcılar ve telefon işletim sistemleri de değişmeye devam eder. Teslimden sonra bu bakımı hangi kapsamda üstleneceğimizi sözleşmede açıkça yazıyoruz. Bir hata bildirdiğinizde bize nasıl ulaşacağınızı, sorunun aciliyetine göre nasıl dönüş yapacağımızı ve hangi işlerin bakım kapsamına girdiğini önceden belirliyoruz. Kullanıcı sayınız ya da veri miktarınız arttıkça sistemin performansını izliyor, yavaşlama başlamadan önlem alıyoruz. Bakım dönemlerinde yapılan her işi kısa bir raporla size bildiriyoruz; böylece sistemin sağlığı hakkında düzenli bilgi sahibi oluyorsunuz. İşletmeniz büyüdükçe yeni ihtiyaçlar doğacak: yeni bir rapor, bir mobil ekran ya da yeni açılan bir şube için ek yetkiler gibi. Bunları da aynı kapsam ve test disipliniyle, küçük sürümler hâlinde hayata geçiriyoruz. Sistem de bu sayede ilk günkü ihtiyaçlarınıza değil, bugünkü işinize hizmet etmeye devam ediyor.

Geliştirdiğimiz sistemin kaynak kodu ve içindeki bütün veriler size aittir; bunu sözleşmeye açık bir madde olarak ekliyoruz. Kaynak kodunu sizin de erişebileceğiniz bir depoda tutuyor, sunucu ve veritabanı erişim bilgilerini teslim sırasında yazılı olarak veriyoruz. Verilerinizi istediğiniz an yaygın dosya biçimlerinde dışarı alabilmeniz için bir aktarım imkânı sağlıyoruz. Kurulum adımlarını, sistemin mimarisini ve önemli iş kurallarını anlatan teknik belgeler hazırlıyoruz. Kullanılan açık kaynak bileşenlerin ve lisanslarının listesini de teslim dosyasına ekliyoruz. Kullanıcılar için kısa kılavuzlar ve gerekirse ekran kayıtlarıyla desteklenen eğitimler sunuyoruz. Teslimden sonraki ilk aylarda kullanıcılardan gelen soruları toplayıp kılavuzları bu sorulara göre güncelliyoruz. Elazığ’daki işletmenizin yıllarca kullanacağı bir sistemin tek bir kişiye ya da tek bir firmaya bağımlı kalmaması gerektiğini düşünüyoruz. Başka bir ekiple çalışmaya karar verdiğiniz gün, yazılım altyapınızı eksiksiz devredebilmeniz için gereken her şey elinizde olur.

Yazılım Çalışması Hakkında Sık Sorulan Sorular

Hazır programlar yaygın ihtiyaçları ortak bir kalıpla karşılar ve pek çok iş için yeterlidir. Ayrım, işin o kalıba sığmayan adımlarında başlar: kendine özgü bir onay sırası, standart dışı bir yetki ihtiyacı, farklı sistemler arasında kurulacak bir bağlantı ya da hazır dökümlerle çıkarılamayan bir hesaplama varsa özel yazılım anlamlı hâle gelir. Karar beğeniyle değil, bu farkın büyüklüğüyle verilir.

Takvimi belirleyen şey ekran sayısı değil, kararların iç içe geçme derecesidir. Roller, iş kuralları, bağlanılacak sistemler ve sınanması gereken durumlar çıkarıldıktan sonra iş parçalara ayrılır ve her parçaya ayrı bir süre verilir. Kapsam yolda genişlerse takvim yeniden kurulur; bu yeniden hesap sözlü olarak değil yazılı olarak paylaşılır.

Karşı taraf belgelenmiş ve denetimli bir erişim noktası sunuyorsa bağlantı kurulabilir. Çalışmaya başlamadan önce verinin hangi yöne akacağı, hangi sıklıkla taşınacağı, yanıt gelmediğinde nasıl davranılacağı ve kimliğin nasıl doğrulanacağı yazılır. Böyle bir erişim yoksa dosya aktarımına dayanan daha sade bir yöntem kurulur ve bu yöntemin sınırları baştan aktarılır.

Devir biçimi sözleşmede açıkça yazılır. Uygulamanın çalışacağı sunucunun, alan adının ve kullanılan üçüncü taraf hesaplarının kimin adına açılacağı işe başlamadan netleştirilir. Bu konunun sonraya bırakılması, ilerleyen dönemde yaşanan erişim sıkıntılarının en sık nedenidir. Sahiplik baştan belirlendiğinde ise devir gününde ayrıca bir pazarlık gerekmez.

Yayın sonrası iş tek bir başlık altında toplanmaz. Arıza giderme, güvenlik güncellemelerinin uygulanması, sistemin izlenmesi ve yeni işlev eklenmesi birbirinden ayrı kalemlerdir; hepsi aynı torbaya konduğunda beklenti bulanıklaşır. Hangi kalemin hangi sürede karşılanacağı baştan yazılırsa, sonradan yaşanan anlaşmazlıkların çoğu doğmadan kapanır.

Yapı, beklenen kullanım yoğunluğu ve veri birikimi hesaba katılarak kurulur. Sorgu süreleri, aynı anda bağlanan kullanıcı sayısı ve depolama artışı belirli aralıklarla ölçülür; büyüme kararları tahmine değil bu ölçümlere dayanır. Sınıra yaklaşıldığında kaynak artırımı veya yapısal iyileştirme ayrı bir çalışma olarak ele alınır.