Yazılım İhtiyacını Bugün Kullandığınız Tablolardan Okuyoruz

Çoğu işletmede özel yazılıma duyulan ihtiyaç, bir hesap tablosunun artık işi taşıyamadığı gün ortaya çıkıyor. Siparişler bir tabloda, stok başka bir dosyada, müşteri notları bir defterde, onaylar ise mesajlaşma gruplarında dolaşıyor. Bu dağınıklık hatalara, tekrar eden veri girişine ve kimin neyi ne zaman yaptığının bilinmemesine yol açıyor. Bir yazılım projesine başlamadan önce mevcut düzeninizi olduğu gibi inceliyoruz. Kullandığınız tabloları, kâğıt formları, yazışmaları ve raporları sizden istiyor, iş akışını mümkünse yerinde izliyoruz. Bu malzeme bize ekranların ve veri yapısının ilk taslağını veriyor. Yıllardır kullanılan bir tablonun sütunları, işletmenizin gerçekte hangi bilgiyi takip ettiğini dürüstçe gösterir. Hiç doldurulmayan sütunlar ya da kenara el yazısıyla eklenen notlar bile bize önemli bir şey anlatıyor. Ne kadar dağınık görünürse görünsün, bu düzen işletmenizin yıllar içinde bulduğu pratik çözümleri taşıyor ve onu ciddiye alıyoruz. Erzurum’da faaliyet gösteren bir işletmenin ihtiyacını hazır bir kalıba sokmadan, bu somut malzemeden yola çıkarak okuyoruz.

Yalnızca yöneticiyle değil, sistemi her gün kullanacak kişilerle de ayrı ayrı konuşuyoruz. Depoda çalışan, sahada müşteri ziyaret eden ya da muhasebeyi tutan kişilerin ihtiyaçları ve alışkanlıkları birbirinden çok farklı olabiliyor. Yöneticinin aradığı şey özet bir rapor olurken sahadaki çalışanın ihtiyacı, telefonda birkaç dokunuşla doldurulabilen bir form. Bu görüşmelerde kimsenin iş yapma biçimini yargılamıyor; hangi adımın zaman kaybettirdiğini ve hangi bilginin sık sık kaybolduğunu not ediyoruz. Bazen en çok şikâyet edilen sorunun kaynağı, ekranda görünmeyen bir onay adımı ya da iki birim arasındaki bir iletişim boşluğu çıkıyor. Böyle durumlarda önce süreci sadeleştirmeyi öneriyor, ardından sadeleşmiş süreci koda dökmeyi planlıyoruz. Kötü işleyen bir süreci olduğu gibi otomatikleştirmek, yalnızca hataları daha hızlı üretmeye yarar. Görüşmelerden çıkan notları, kimin söylediği belli olmayacak biçimde özetleyip sizinle paylaşıyoruz. Çalışanlar söylediklerinin kendilerine karşı kullanılmayacağını bildiklerinde çok daha açık konuşuyor. Bu açıklık, sistemin kâğıt üzerinde değil sahada işe yaramasını sağlayan ayrıntıları ortaya çıkarıyor.

Analiz aşamasının sonunda bir gereksinim belgesi hazırlıyoruz. Bu belge, sistemin kimler tarafından, hangi yetkilerle ve hangi amaçla kullanılacağını sade bir dille anlatıyor. Her işlev için kısa bir kullanım senaryosu yazıyoruz: kim, hangi ekranda, hangi bilgiyi girip nasıl bir sonuç bekliyor. Teknik terimleri en aza indiriyoruz, çünkü belgenin asıl okuru sizsiniz ve onaylamadan önce her maddeyi anlayabilmeniz gerekiyor. Hangi işlerin kapsam dışında kaldığını da belgeye açıkça yazıyoruz; bu, ileride doğabilecek yanlış anlaşılmaların önüne geçiyor. Mevcut bir yazılım kullanıyorsanız yeni sistemin onunla birlikte mi çalışacağı, onun yerine mi geçeceği ve içindeki verilerin nasıl taşınacağı da bu aşamada karara bağlanıyor. Belgeye ekranların kaba çizimlerini de ekliyoruz; bir çizim, uzun bir açıklamanın anlatamadığını çoğu zaman tek bakışta gösteriyor. Onaylanan belge aynı zamanda teklifin ve takvimin dayanağı oluyor. Böylece hem sizin hem de geliştirme ekibinin elinde aynı yol haritası bulunuyor.

Önce Vazgeçilmezler, Ardından Kullanımın Gösterdiği Eklemeler

Gereksinim listesi ilk bakışta genellikle olması gerekenden uzun çıkıyor. Her şeyi tek seferde yapmaya çalışmak hem maliyeti hem de riski büyütüyor; üstelik kullanıcılar sistemi gerçekten kullanmaya başlamadan hangi özelliğin işe yarayacağını kestirmek zor. Bu yüzden maddeleri üç gruba ayırıyoruz: sistemin çalışması için vazgeçilmez olanlar, işi kolaylaştıranlar ve ileride düşünülebilecekler. İlk sürüm yalnızca birinci grubu ve ikinci gruptan birkaç kritik maddeyi içeriyor. İlk sürümün küçük olması özensiz olması anlamına gelmiyor; içerdiği her işlev eksiksiz ve test edilmiş biçimde teslim ediliyor. Böylece makul bir sürede kullanılabilir bir sistem ortaya çıkıyor ve ekibiniz eski düzenden yeni düzene adım adım geçebiliyor. Kalan maddeler kaybolmuyor; sonraki sürümlerin planına ekleniyor ve gerçek kullanım verisi geldikçe yeniden sıralanıyor. Listede başta vazgeçilmez görünen bazı maddelerin aslında hiç gerekmediği de çoğu zaman bu aşamada anlaşılıyor. Bu da bütçenin gerçekten işe yarayan özelliklere harcanmasını sağlıyor.

Geliştirmeyi kısa dönemlere bölüyoruz. Her dönemin sonunda tamamlanan ekranları size canlı sisteme benzeyen bir test ortamında gösteriyor, kendi verilerinizle denemenizi istiyoruz. Gösterimlere, o ekranı en çok kullanacak çalışanınızın da katılmasını öneriyoruz. Onun birkaç dakikalık denemesi, uzun toplantılarda fark edilmeyen sorunları yakalayabiliyor. Kâğıt üzerinde doğru görünen bir akışın kullanımda hantal kaldığını en erken bu gösterimlerde fark ediyoruz. Geri bildirimlerinizi bir sonraki dönemin planına ekliyor, öncelikleri sizinle birlikte belirliyoruz. Bu yöntem, aylar sonra teslim edilen ve beklentiyi karşılamayan bir sistemle karşılaşma riskini belirgin biçimde azaltıyor. Her yazılım projesinde değişiklik talepleri doğar; önemli olan bunları kontrol altında tutabilmek. Kapsamı büyüten bir talep geldiğinde etkisini zaman ve maliyet açısından önünüze koyuyor, kararı size bırakıyoruz. Böylece bütçe sürpriz yaşatmıyor ve hangi özelliğin neden eklendiği kayıt altında kalıyor. Her dönemin notlarını ortak bir alanda tutuyoruz; projenin nerede olduğunu dilediğiniz an görebiliyorsunuz.

Teknoloji seçimini modaya göre değil, projenin ömrüne ve bakım kolaylığına göre yapıyoruz. Yaygın kullanılan, belgelendirmesi güçlü ve arkasında geniş bir geliştirici topluluğu bulunan dilleri ve çatıları tercih ediyoruz. Bu tercih, ileride sistemi başka bir ekibin de rahatça devralabilmesi anlamına geliyor. Uygulamanın web tabanlı mı, mobil mi yoksa ikisi birden mi olacağına, kullanıcıların nerede ve nasıl çalıştığına bakarak karar veriyoruz. Şehir dışına ya da kırsal bölgelere giden saha ekipleri için bağlantı zayıfken de veri girişine izin veren, bağlantı gelince eşitleme yapan çözümleri değerlendiriyoruz. Sunucu tarafında bulut hizmeti ile işletmenizin kendi sunucusu gibi seçenekleri maliyet, güvenlik ve erişim ihtiyacına göre karşılaştırıyoruz. Lisans bedeli gerektiren bileşenleri kullanmadan önce bunların uzun vadeli maliyetini size ayrıca gösteriyoruz. Hazır bir paket programın ihtiyacınızı karşılayacağını görürsek, sıfırdan geliştirme yerine onu önermekten de çekinmiyoruz. Her seçeneğin artısını ve eksisini açıkça anlatıyor, kararı birlikte veriyoruz.

Kodun Arkasındaki Görünmez İşler: Test, Entegrasyon, Güvenlik

Kullanıcının görmediği ama sistemin sağlığını belirleyen işlerin başında test geliyor. Kodun kritik bölümleri için otomatik testler yazıyoruz; böylece yeni bir özellik eklendiğinde eski özelliklerin bozulup bozulmadığı her seferinde kendiliğinden kontrol ediliyor. Otomatik testlerin yanında, gerçek kullanım senaryolarını elle deneyen ayrı bir kontrol aşaması uyguluyoruz. Hatalı veri girildiğinde sistemin nasıl tepki verdiğini, aynı anda çok sayıda kullanıcı çalıştığında nasıl davrandığını ve beklenmedik durumlarda anlaşılır bir uyarı gösterip göstermediğini sınıyoruz. Testleri canlı veriye dokunmayan ayrı bir ortamda yürütüyoruz; böylece deneme sırasında yapılan bir hata gerçek kayıtlarınızı etkilemiyor. Yayına almadan önce ekibinizden birkaç kişinin kabul testine katılmasını istiyoruz. Kabul testinde kullanılacak senaryoları da gereksinim belgesinden türetiyoruz. Kullanıcının bir ekranda ne yapacağını anlayamaması, bizim için en değerli geri bildirimlerden biridir. Test sürecinde bulunan her hata kayıt altına alınıyor ve çözüldüğü doğrulanmadan kapatılmıyor. Bu disiplin, canlı ortamda karşılaşılacak sürprizlerin sayısını ciddi ölçüde azaltıyor.

İşletmelerin kullandığı sistemler nadiren tek başına çalışır. Geliştirdiğimiz uygulamanın muhasebe programınızla, e-fatura altyapısıyla, ödeme kuruluşlarıyla, kargo firmalarıyla ya da web sitenizle veri alışverişi yapması gerekebilir. Bu bağlantıları, ilgili hizmetlerin sunduğu resmi arayüzler üzerinden kuruyoruz. Her entegrasyon için verinin hangi yönde, ne sıklıkla ve hangi kurallarla aktarılacağını belgeliyoruz. Karşı taraftaki sistem geçici olarak yanıt vermediğinde verinin kaybolmaması, işlemin sırada bekleyip daha sonra tamamlanması için önlemler alıyoruz. Aynı bilginin iki sistemde farklı görünmesi, entegrasyon sorunlarının en yaygın belirtisidir. Bunu önlemek için hangi sistemin hangi bilgi için esas kabul edileceğini baştan belirliyoruz. Böylece stok, fiyat ya da müşteri bilgisi tek bir kaynaktan besleniyor ve ekipler arasında çelişki doğmuyor. Bir aktarım başarısız olduğunda sorumlu kişiye anında bildirim giden bir izleme düzeni de kuruyoruz. Hizmet sağlayıcılar arayüzlerini değiştirdiğinde bundan önceden haberdar olmak için duyurularını da takip ediyoruz.

Güvenliği sonradan eklenen bir katman olarak değil, tasarımın bir parçası olarak ele alıyoruz. Kullanıcı yetkilerini rollere göre tanımlıyor, her çalışanın yalnızca işi için gereken bilgilere erişmesini sağlıyoruz. Parolaları güvenli biçimde saklıyor, yönetici hesapları için iki aşamalı doğrulama öneriyoruz. Dışarıdan erişilen ekranlarda art arda hatalı giriş denemelerini sınırlıyor, şüpheli hareketlerde yöneticiyi uyaran bildirimler tanımlıyoruz. Kimin hangi kaydı ne zaman değiştirdiğini gösteren işlem kayıtları tutuyoruz; bu kayıtlar hem hataların izini sürmek hem de iç denetim için işe yarıyor. Kişisel verilerin işlenmesiyle ilgili yasal yükümlülükleri göz önünde bulunduruyor, gereksiz veri toplamaktan kaçınıyoruz. Yazılım bileşenlerindeki güvenlik güncellemelerini takip ediyor ve düzenli bir yedekleme planı kuruyoruz. Yedeklerin gerçekten geri yüklenebildiğini belirli aralıklarla deniyoruz, çünkü hiç denenmemiş bir yedek kriz anında işe yaramayabilir. Alınan önlemlerin ne işe yaradığını yöneticinize sade bir dille anlatıyoruz; anlaşılmayan bir önlem zamanla devre dışı bırakılma riski taşıyor.

Canlıya Geçişin Ardından: Eğitim, Kod Teslimi, Bakım

Sistemi canlıya alırken eski düzenden geçişi dikkatle planlıyoruz. Önceki tablolardaki ya da eski programdaki verileri temizleyip yeni yapıya aktarıyor, aktarımın doğruluğunu örnek kayıtlar üzerinden sizinle birlikte kontrol ediyoruz. Geçiş tarihini işinizin yoğun dönemlerine denk getirmemeye özen gösteriyoruz. Kullanıcılar için rollerine göre kısa eğitimler düzenliyor, sık yapılan işlemleri anlatan yazılı ve görüntülü kılavuzlar hazırlıyoruz. Erzurum’daki iş yerinizde, sahada ya da uzaktan çalışan kullanıcılar için eğitimin biçimini ihtiyaca göre ayarlıyoruz. Geçişin ilk günlerinde ekibinizin sorularına hızlı yanıt verebilmek için yakın destek sağlıyoruz. Her kullanıcı rolü için bir sorumlu belirleyip soruları onun üzerinden toplamak da uyum sürecini hızlandırıyor. Bu dönemde karşılaşılan küçük aksaklıklar, sistemin günlük işe uyumunu tamamlayan son dokunuşlara dönüşüyor. Yeni bir yazılım ancak ekip onu benimsediğinde değer üretir; bu yüzden eğitim ve destek adımlarını geliştirme kadar ciddiye alıyoruz. Eski düzeni bir süre yedek olarak açık tutmak gerekiyorsa bunu da geçiş planına ekliyoruz.

Projenin sonunda kaynak kodun tamamı, veritabanı yapısı, kurulum talimatları ve teknik belgeler size teslim ediliyor. Kod, sizin adınıza açılmış bir kod deposunda tutuluyor ve erişim yetkisi sizde kalıyor. Sunucu, alan adı ve üçüncü taraf hizmet hesapları da işletmeniz adına açılıyor. Verileriniz her zaman sizindir; istediğiniz anda dışa aktarabileceğiniz yaygın biçimlerde saklanıyor. Bu yaklaşım, günün birinde başka bir ekiple çalışmak isterseniz sistemi sıfırdan yazdırmak zorunda kalmayacağınız anlamına geliyor. Kodun içine, sonradan okuyacak bir geliştiricinin işini kolaylaştıracak açıklamalar ve düzenli bir klasör yapısı da yerleştiriyoruz. Sözleşmede fikri mülkiyet haklarının kime ait olduğunu açıkça yazıyoruz. Projede kullandığımız açık kaynak bileşenlerin lisanslarını listeliyor, ticari kullanım açısından bir kısıtlama taşımadıklarından emin oluyoruz. Teslim toplantısında kodun nasıl derlendiğini ve sunucuya nasıl kurulduğunu teknik sorumlunuza adım adım gösteriyoruz. Sistemi sizin için yazıyor, anahtarlarını da size bırakıyoruz.

Yayına alınan her sistem, zamanla değişen ihtiyaçlara uyum sağlamak zorunda. Bakım döneminde sunucu ve bileşen güncellemelerini yapıyor, performansı izliyor, gelen hata bildirimlerini kayda alıp çözüyoruz. Sipariş alınamaması gibi acil bir sorunun, küçük bir görsel kusurla aynı kuyrukta beklememesi için destek taleplerini önem derecesine göre sınıflandırıyoruz. Belirli aralıklarla sizinle bir araya gelip kullanım verilerine bakıyor, hangi ekranların yoğun kullanıldığını ve nerede iyileştirme gerektiğini konuşuyoruz. Kullanılmayan özellikleri de gözden geçiriyor, sistemi gereksiz yükten arındırmayı öneriyoruz. İşletmeniz büyüdükçe yeni şubeler, yeni kullanıcı rolleri ya da yeni raporlar gündeme gelebiliyor; bunları mevcut yapıyı bozmadan ekleyebilmek için sistemi baştan esnek kuruyoruz. Bakım anlaşması yapıp yapmamak tamamen sizin kararınız. Bakımı bizimle sürdürmeseniz bile teslim ettiğimiz belgeler, başka bir ekibin sistemi kaldığı yerden devralmasına yetecek ayrıntıda hazırlanıyor. Yazılım sizinle birlikte büyüdüğünde, yaptığınız yatırımın karşılığını yıllar boyunca almaya devam edersiniz.

Özel Yazılım Geliştirme Hakkında Sık Sorulanlar

Evet. Buradaki örnekler yalnızca çalışma biçimimizi anlatmak için seçildi. İşletmenizdeki takip, planlama ya da birlikte yürütülen başka bir süreç de kendine uygun bir uygulama gerektirebilir. Önce mevcut yönteminizi ve çözmek istediğiniz sorunu dinler; kullanıcılar, veriler ve gerekli bağlantılar netleştikten sonra hazır bir araçla mı yoksa özel yazılım geliştirerek mi ilerlemenin uygun olduğunu birlikte değerlendiririz.

Bu, karşı sistemin desteklediği bağlantılara, verilen erişim izinlerine ve paylaşılacak bilgiye bağlıdır. İstediğiniz aktarım teknik olarak doğrulanmadan kesin bir kapsam sözü vermeyiz. Hangi sistemin asıl kayıt kaynağı olacağını ve değişikliklerin hangi yönde ilerleyeceğini belirleriz. Bağlantının kesildiği, yeniden denendiği ya da çelişen veri geldiği durumların nasıl davranacağı da bu işin bir parçasıdır.

Hayır. İlk sürümün, seçtiğiniz temel işi baştan sona tamamlayabilmesi yeterlidir; her olası özelliği içermesi gerekmez. Öncelikleri birlikte belirler, sonraya kalabilecekleri ayırırız. Yine de ileride gerekeceğini bildiğiniz önemli veri ilişkilerini baştan düşünürüz. Kapsamı daraltmak, işi eksik bırakmak değil; sağlam biçimde yürüyen bir başlangıç seçmektir.

Evet. Görüntüleme, düzenleme ve yönetim hakları göreve göre ayrı ayrı planlanabilir. Hangi kullanıcının hangi kayıtları görebileceğini örneklerle açıklarız. Rol değişikliği ve geçici görevlendirme gibi durumları da hesaba katarız. Yetkiyi yalnızca ekrandaki düğmelerle değil, uygulamanın her yerinde aynı kurala göre çalışan bir düzen olarak kurarız.

Dosyalarınızın yapısını ve içeriğini inceledikten sonra taşınacak kapsamı belirleriz. Eksik, tutarsız ya da farklı biçimde tutulmuş bilgiler önce temizlenmeyi gerektirebilir. Küçük bir örnek grubu taşıyıp kayıtların doğru alanlara oturduğunu görürüz. Geçiş sırasında yeni kayıtların hangi sistemde tutulacağını da planlarız; dosyanın içeri alınması, taşımanın doğrulandığı anlamına gelmez.

Yeni isteğin mevcut kurallara, verilere ve ekranlara etkisini önce inceleriz. Bir ayarın değiştirilmesiyle karşılanabilecek bir talep ile yeniden geliştirme gerektiren bir iş aynı kapsamda değerlendirilmez. Yapılacak değişikliği ve onu sınayacak senaryoyu açıklarız. Çalışmakta olan sistemi etkileyen yerleri birlikte belirler, yeni özelliğin var olan kullanımı bozmadığını da doğrularız.