Özel Yazılıma Karar Vermeden Önce Bugünkü Tablolarınızı İnceliyoruz

Özel bir yazılım projesi çoğu zaman bir tıkanıklıktan doğar: siparişler tabloya elle giriliyor, aynı bilgi üç ayrı yere yazılıyor, ay sonunda rakamlar birbirini tutmuyor. İhtiyaç analizine bu tıkanıklıkları gerçek iş akışınız üzerinde görerek giriyoruz. Ekibinizin gün içinde hangi ekranları açtığını, hangi bilgiyi nereden kopyalayıp nereye yapıştırdığını, hangi adımda kâğıda ya da mesajlaşma uygulamasına döndüğünü izliyoruz. Yöneticinin anlattığı süreçle sahada yürüyen süreç arasındaki farkı ancak bu şekilde yakalayabiliyoruz. Ekipteki farklı kişilerin aynı işi farklı yollarla yaptığını görmek de sık rastladığımız bir bulgudur. Kullandığınız tabloları, formları ve raporları tek tek inceliyoruz. Bugün elle doldurulan her sütun, yarın otomatik hale gelecek bir alanın ipucudur. Gümüşhane’de büyümekte olan bir işletme için bu gözlem, hangi işin gerçekten koda dökülmesi gerektiğini ortaya koyar. Analizin sonunda süreçlerinizi adım adım gösteren bir akış şeması hazırlıyoruz. Zaman kaybettiren ve hataya açık adımları bu şemada ayrı bir renkle işaretliyoruz.

Her ihtiyacın cevabı özel geliştirme değildir. Piyasada işinizi karşılayan olgun bir paket program varsa, bunu açıkça söylüyoruz. Karşılaştırmayı üç soru üzerinden yapıyoruz. Hazır çözüm iş akışınızın ne kadarını karşılıyor, eksik kalan kısım ne kadar kritik, uzun vadede lisans maliyeti ve bağımlılık nasıl bir tablo çiziyor? Kimi zaman en doğru yol, hazır bir sistemi kullanıp üzerine küçük eklentiler yazmaktır. Kimi zaman ise işinizin rekabet avantajı, standart paketlerin desteklemediği bir adımda saklıdır; o durumda özel geliştirme anlamlı hale gelir. Bazı işletmeler için kısa vadede mevcut tabloyu düzenlemek bile yeterli bir ara çözüm olabilir. Bu kararı gerekçeleriyle birlikte veriyoruz. Böylece yatırımın neden bu yönde yapıldığını ortaklarınıza ya da finans ekibinize de rahatça anlatabilirsiniz. Karar ne olursa olsun, analizde çizdiğimiz akış şeması size kalır ve seçtiğiniz her çözümde yol gösterici olarak kullanılabilir.

Analizin çıktısı, teknik olmayan bir dille yazılmış bir ihtiyaç belgesidir. Belgede kimlerin sistemi kullanacağı, her kullanıcının neyi görüp neyi değiştirebileceği, hangi raporların üretileceği ve hangi mevcut sistemlerle bağlantı kurulacağı yer alır. Sistemin başarılı sayılması için hangi sonuçların görülmesi gerektiğini de yazıyoruz. Sipariş girişinin tek ekrana inmesi ya da ay sonu raporunun elle hazırlanmaması bu hedeflere örnek olabilir. Şu an elinizde ne kadar kayıt bulunduğunu ve bunların nasıl taşınacağını da not ediyoruz. Eski kayıtların yeni sisteme aktarılması çoğu projede beklenenden fazla emek ister, bu yüzden baştan hesaba katılmalıdır. Belgeyi sizinle birlikte satır satır gözden geçiriyoruz. Geliştirme sırasında yazılım ekibiyle işletme arasında çıkan anlaşmazlıkların büyük kısmı, bu aşamada netleştirilmeyen küçük varsayımlardan kaynaklanır. Bu nedenle belge onaylanmadan ekran tasarımına geçmiyoruz. Onaylanan belge, ileride bir özelliğin kapsamda olup olmadığı tartışıldığında başvurulacak ortak kaynak olur.

İlk Sürümü Küçük Tutuyor, Her Ekranı Kullanacak Kişiyle Deniyoruz

İhtiyaç listesi genellikle uzundur ve hepsini tek seferde yapmaya çalışmak projeyi hem geciktirir hem de pahalılaştırır. Bu yüzden listeyi olmazsa olmazlar, sonradan eklenebilecekler ve güzel ama gereksiz olanlar diye üç gruba ayırıyoruz. İlk sürüm yalnızca birinci gruptaki özellikleri içerir, ama günlük işinizi gerçekten görecek kadar da tamdır. Örneğin bir stok takip sisteminde ilk sürüm ürün girişini, çıkışını ve anlık stok durumunu kapsar; ayrıntılı analiz grafikleri sonraki aşamaya kalabilir. Küçük başlamanın asıl faydası, ekibinizin sistemi erkenden kullanmaya başlaması ve gerçek ihtiyaçların kullanım sırasında ortaya çıkmasıdır. Kâğıt üzerinde vazgeçilmez görünen bazı özelliklerin sahada hiç kullanılmadığını sık görüyoruz. Tersine, kimsenin aklına gelmeyen küçük bir kısayol, ekibin en çok sevdiği yenilik olabilir. İlk sürümü kullanan ekibin geri bildirimleri, ikinci aşamanın öncelik sırasını doğrudan belirler. Bütçenizi de bu şekilde parçalara bölmüş oluyoruz; her aşamanın sonunda devam kararını siz verirsiniz.

Kodlamaya geçmeden önce ekranların tıklanabilir taslaklarını hazırlıyoruz. Bu taslaklar renk ve yazı tipinden çok, hangi bilginin nerede durduğunu ve bir işlemin kaç adımda tamamlandığını gösterir. Taslakları yalnızca yöneticilerle değil, sistemi her gün kullanacak çalışanlarınızla da deniyoruz. Depoda çalışan bir personelin eldivenle dokunmatik ekran kullanması ya da muhasebecinin elini klavyeden hiç kaldırmadan veri girmek istemesi gibi ayrıntılar ancak böyle ortaya çıkar. Mobilde kullanılacak ekranları gerçek telefonlarda, sahadaki ışık ve bağlantı koşullarına yakın bir ortamda sınıyoruz. Bu geri bildirimler, kod yazıldıktan sonra değiştirilmesi pahalı olan kararları ucuz bir aşamada düzeltmemizi sağlar. Taslakta yapılan bir değişiklik birkaç dakikalık iştir, aynı değişiklik canlı sistemde çok daha fazla emek ister. Taslak onaylandığında her ekran için kabul kriterlerini yazıyor, geliştirme ekibinin neyi tamamlanmış sayacağını netleştiriyoruz. Kabul kriterleri, teslim sırasında bir ekranın beklendiği gibi çalışıp çalışmadığını tartışmaya yer bırakmadan ölçmemizi sağlar.

Kullanıcı rolleri ve yetkiler de bu aşamada belirlenir. Kimin fiyat değiştirebileceği, kimin yalnızca rapor görebileceği, silinen bir kaydın geri alınıp alınamayacağı gibi sorular sonradan eklendiğinde yapıyı karıştırır. Veri modelini ve yazılım mimarisini bu kurallara göre tasarlıyoruz. İleride yeni bir şube, depo ya da kullanıcı grubu eklendiğinde sistemin baştan yazılmasına gerek kalmayacak bir temel kurmayı hedefliyoruz. Kullanılacak teknolojileri seçerken popülerlikten çok süreklilik ölçütüne bakıyoruz: geniş bir geliştirici topluluğu olan, uzun süre desteklenecek araçları tercih ediyoruz. Böylece yıllar sonra sistemi geliştirecek birini bulmak zorlaşmaz. İlk sürümün kapsamı netleştiğinde size aşamalara bölünmüş bir iş planı sunuyoruz. Planın her satırında ilgili özelliğin hangi ihtiyaçtan doğduğunu da belirtiyoruz. Her aşamanın sonunda neyi göreceğinizi ve neyi onaylamanız gerektiğini bilirsiniz. Bu plan hem bütçenizi hem de ekibinizin yeni sisteme hazırlanmasını yönetmeyi kolaylaştırır.

Kısa Döngülerle Geliştiriyor, Entegrasyonu ve Güvenliği Test Ediyoruz

Geliştirmeyi kısa döngüler halinde yürütüyoruz. Her döngünün başında o dönemde hangi özelliklerin tamamlanacağını birlikte seçiyor, önceliği değişen işleri bir sonraki döngüye kaydırabiliyoruz. Döngünün sonunda çalışan parçayı test ortamında size gösteriyoruz; böylece aylar sonra sürpriz bir sonuçla karşılaşmazsınız. Test ortamı canlı sistemden ayrıdır ve orada deneme verileriyle gönül rahatlığıyla işlem yapabilirsiniz. Kodun kritik bölümleri için otomatik testler yazıyoruz. Bir değişikliğin başka bir yeri bozup bozmadığını her güncellemede makine kontrol eder. Bunun yanında gerçek senaryolarla elle test yapıyoruz. Aynı anda iki kişinin aynı kaydı değiştirmesi, bağlantının işlem ortasında kopması ya da hatalı bir dosyanın içeri aktarılması bu senaryoların başında gelir. Canlıya çıktıktan sonra bulunan yazılım hataları, geliştirme sırasında yakalananlardan çok daha pahalıya mal olur. Bu testler, hataların en ucuz düzeltilebildiği anda yakalanmasını sağlar. Yazılan her değişikliği ekipten ikinci bir kişi okumadan ana koda eklemiyoruz.

İşletmelerin büyük kısmı tek bir sistemle çalışmaz. Muhasebe programınız, e-fatura sağlayıcınız, ödeme altyapınız, kargo firmanız ya da web siteniz yeni sistemle veri alışverişi yapmak zorunda kalabilir. Entegrasyonları planlarken her bağlantı için verinin hangi yönde, ne sıklıkla ve hangi durumda aktarılacağını tanımlıyoruz. Karşı tarafın sunduğu bağlantı arayüzlerinin sınırlarını baştan inceliyoruz. Bir servis geçici olarak yanıt vermediğinde işlemlerin kaybolmaması için kuyruk ve yeniden deneme mekanizmaları kuruyoruz. Aktarılan her kaydın izini tutuyoruz; bir fatura ya da sipariş eksik görünürse nerede takıldığını kısa sürede bulabiliriz. Toplu veri aktarımlarını mesai dışındaki saatlere planlayarak gün içinde sistemin yavaşlamasını önlüyoruz. Bağlantı kurulan servislerden biri kurallarını değiştirdiğinde uyarı alacak şekilde izleme de ekliyoruz. Hangi entegrasyonun ilk sürümde, hangisinin sonraki aşamada yapılacağını iş yüküne ve maliyete göre birlikte belirliyoruz. Entegrasyon, elle yapılan kopyalamanın ortadan kalktığı ve hataların en belirgin biçimde azaldığı yerdir.

Yazılım güvenliğini projenin sonunda eklenen bir katman olarak görmüyoruz. Parolaları geri döndürülemez biçimde saklıyor, veri trafiğini şifreli bağlantı üzerinden taşıyor, her kullanıcıya yalnızca işini yapmaya yetecek kadar yetki veriyoruz. Yönetim panellerini iki aşamalı doğrulamayla koruyor, başarısız giriş denemelerini sınırlıyoruz. Kimin hangi kaydı ne zaman değiştirdiğini gösteren işlem günlükleri tutuyoruz; bir hata ya da kötüye kullanım şüphesinde geriye dönük inceleme böylece mümkün olur. Kişisel veri içeren alanlarda KVKK yükümlülüklerini göz önünde bulunduruyor, gereksiz veri toplamaktan kaçınıyoruz. Entegrasyon anahtarlarını ve erişim bilgilerini kodun içine değil, ayrı ve korunan bir yapılandırmaya yerleştiriyoruz. Kullandığımız kütüphanelerdeki bilinen açıkları düzenli olarak tarıyor, kritik bir uyarıda güncellemeyi öne alıyoruz. Veritabanının otomatik yedeklerini farklı bir konumda saklıyor ve bu yedeklerden geri dönmeyi düzenli aralıklarla deniyoruz. Hiç denenmemiş bir yedeğin çalışıp çalışmadığını ancak ihtiyaç anında öğrenirsiniz ve o an genellikle geç kalınmış bir andır.

Canlıya Geçişi Yönetiyor, Bakımı Üstleniyor, Kodu Size Teslim Ediyoruz

Canlıya geçişi bir gecede her şeyi değiştiren bir an olarak değil, kontrollü bir geçiş dönemi olarak planlıyoruz. Geçiş tarihini işinizin en yoğun dönemine denk gelmeyecek şekilde sizinle birlikte seçiyoruz. Eski kayıtları yeni sisteme aktarıyor, aktarılan verinin doğruluğunu örnekler üzerinden sizinle birlikte kontrol ediyoruz. Mümkün olan durumlarda eski yöntemle yeni sistemi kısa bir süre yan yana yürütmeyi öneriyoruz; böylece bir eksik fark edilirse iş durmaz. Kullanıcılarınız için rollerine göre ayrılmış kısa eğitimler düzenliyor, sık yapılan işlemleri anlatan sade kılavuzlar hazırlıyoruz. Kılavuzları kısa videolarla destekliyoruz; yeni işe başlayan bir çalışan bile sistemi bu kaynaklardan öğrenebilir. İlk haftalarda gelen soruları ve hata bildirimlerini öncelikli olarak ele alıyoruz. Ekibinizin sorularını ekran paylaşımıyla, adım adım göstererek yanıtlıyoruz. Kullanıcıların en çok zorlandığı adımları not ediyor, ilk güncellemede bu adımları sadeleştiriyoruz.

Bir sistem canlıya çıktıktan sonra da yaşamaya devam eder. İşletim sistemi, veritabanı ve kullanılan kütüphaneler için güvenlik güncellemeleri yayımlanır; iş kurallarınız değişir, yeni raporlara ihtiyaç duyarsınız. Bakım anlaşmasında bu ihtiyaçları ikiye ayırıyoruz: sistemin sağlıklı çalışmasını sağlayan rutin işler ve yeni özellik talepleri. Rutin tarafta sunucu izleme, yedek kontrolü, güncellemeler ve hata düzeltmeleri yer alır. Yeni özellik taleplerini ise her seferinde kapsamı ve etkisiyle birlikte değerlendirip size ayrıca sunuyoruz. Böylece bakım bütçesi belirsiz bir kalem olmaktan çıkar ve hangi işin ne için yapıldığını her zaman görürsünüz. Sunucu kaynaklarının kullanımını izliyor, kullanıcı ya da veri sayısı arttığında altyapının ne zaman büyütülmesi gerektiğini önceden bildiriyoruz. Acil bir arızada bize nasıl ulaşacağınızı ve talebinizin hangi sırayla ele alınacağını baştan yazılı hale getiriyoruz. Zaman içinde her yazılım teknik borç biriktirir; bunu düzenli küçük iyileştirmelerle kontrol altında tutuyoruz.

Sahiplik konusunu sözleşmenin en başında netleştiriyoruz. Size özel geliştirilen sistemin kaynak kodu, proje tamamlandığında sizin erişebildiğiniz bir kod deposunda teslim edilir. Veritabanındaki bütün kayıtlar işletmenize aittir ve istediğiniz zaman yaygın dosya biçimlerinde dışarı aktarılabilir. Alan adı, sunucu ve üçüncü taraf servis hesaplarını da işletmeniz adına açıyor, yönetici erişimini size veriyoruz. Kurulum adımlarını, sunucu yapılandırmasını ve entegrasyon ayarlarını anlatan teknik belgeleri de teslim paketine ekliyoruz. Kullanılan açık kaynak bileşenlerin lisanslarını listeleyerek sistemin hukuki açıdan da temiz bir biçimde devredilmesini sağlıyoruz. Bu belgeler, ileride başka bir ekiple çalışmak isteseniz bile işin kaldığı yerden sürmesini sağlar. Gümüşhane’de kendi işini yöneten bir işletme sahibi olarak bir tedarikçiye mecbur kalmadan karar verebilmeniz, bizim gözümüzde sağlıklı bir iş birliğinin göstergesidir. Bizimle devam etmenizi zorunluluktan değil memnuniyetten istemeyi tercih ediyoruz.

Yazılım Hakkında Sık Sorulan Sorular

Hazır paketler, çok sayıda işletmenin ortak ihtiyacına göre kurulur; işin kendine özgü akışı buna sığmadığında ayrışma başlar. Eldeki kaynağı, işlemin ne sıklıkla tekrarlandığını ve hangi ekibin sahipleneceğini birlikte tartıp karar veriyoruz. Süreç standartsa hazır bir araç yeterli olabilir; kural size özgüyse çözümü de o kurala göre kuruyoruz.

Genellikle şart değil; en çok kullanılacak ve işi asıl yürüten bölümle başlamak daha sağlıklı oluyor. Kaynağı, kullanım sıklığını ve ekibin taşıyabileceği yükü göz önüne alarak bir öncelik sırası çıkarıyoruz. İlk sürüm sahada denenirken görülen gerçek ihtiyaç, sonraki adımların neler olacağını da netleştiriyor.

Çoğu durumda taşınabilir; önce eski kaydın hangi biçimde tutulduğunu ve ne kadarının gerçekten gerekli olduğunu inceliyoruz. Kaynağı, kaydın sıklığını ve sorumluluğu birlikte değerlendirip nelerin aktarılacağına karar veriyoruz. Aktarım öncesinde küçük bir örnekle deneme yapıp, verinin bozulmadan yerleştiğini görerek ilerliyoruz.

Evet; yetkiler zamanla değişen görevlere göre yeniden düzenlenebilecek biçimde kuruluyor. Kimin neye erişeceğini eldeki ekip yapısına, işin sıklığına ve sorumluluk dağılımına göre belirliyoruz. Yeni bir kişi katıldığında ya da bir görev el değiştirdiğinde, erişim de buna göre sade bir işlemle güncelleniyor.

Her zaman gerekmez; asıl belirleyen, işin gerçekten sahada mı yoksa masabaşında mı yürüdüğü. Kaynağı, kullanım sıklığını ve kimin taşıyacağını değerlendirip mobil bir katmanın gerçekten fark yaratıp yaratmayacağına bakıyoruz. Kullanım ağırlıklı masabaşındaysa, tarayıcıdan çalışan uyumlu bir ekran çoğu zaman yeterli oluyor.

Bakım, çalışan sistemin ayakta ve güvenli kalmasını; yeni geliştirme ise mevcut yapıya yeni bir yetenek eklenmesini kapsıyor. İkisini kaynağa, işin sıklığına ve sorumluluğa göre ayrı ayrı planlıyoruz. Böylece günlük düzeni sürdüren işle, ileriye dönük eklemeler birbirinin önüne geçmeden yürüyor.