Yazılım
- Anasayfa
- Yazılım
Yazılım İhtiyacınızı Kodlamadan Önce Baştan Sona Anlıyoruz
Bir işletme yazılım aradığında aslında bir program değil, gündelik bir derdine çözüm arıyordur. Biz de işe kod yazarak değil, o derdi enine boyuna dinleyerek başlıyoruz. Hangi işi kolaylaştırmak istediğinizi, şu an bu işi nasıl yürüttüğünüzü ve nerede tıkandığınızı tek tek konuşuyoruz. Niğde’deki bir işletmenin akışıyla başka bir sektörün akışı aynı olmadığı için, hazır bir kalıbı size dayatmıyoruz. Mevcut düzeninizi yerinde anlamak, çoğu zaman en pahalı hataların önüne geçiyor. Kimi zaman ihtiyacınız koca bir sistem değil, birkaç adımı otomatikleştiren küçük bir araçtır. Bunu baştan görmek, hem paranızı hem zamanınızı koruyor. Bu yüzden ilk toplantılarda çözümü değil, önce sorunun kendisini netleştirmeye odaklanıyoruz. İlk konuşmalarda bol bol soru soruyoruz, hatta bazen fazla ayrıntıya indiğimizi düşünebilirsiniz. Oysa küçük görünen bir alışkanlık bile, sistemin nasıl kurulacağını baştan aşağı değiştirebilir.
İhtiyacı anlamak kadar, sınırını çizmek de bu aşamanın önemli bir parçasıdır. Her işin başında herkes çok sayıda özellik ister, ama hepsini aynı anda yapmaya çalışmak projeyi ağırlaştırır. Bu yüzden isteklerinizi önem sırasına koyuyor, hangisinin ilk günden gerekli olduğunu birlikte belirliyoruz. Olmazsa olmaz özelliklerle, sonraya bırakılabilecek olanları ayrı ayrı işaretliyoruz. Kapsamı yazıya döktüğümüzde, iki taraf da neyin dahil olduğunu ve neyin olmadığını net görür. Böylece ilerleyen haftalarda çıkan yeni istekler karmaşaya değil, planlı bir güncellemeye dönüşür. Sınırı baştan çizmek, projeyi zamanında ve öngörülen bütçeyle bitirmenin en sağlam yoludur. Belirsiz bırakılan her ayrıntı, sonradan hem maliyeti hem gerginliği artırır. Öncelik listesini birlikte yaparken, her isteğin işinize katacağı değeri de tartıyoruz. Kimi özellik gösterişlidir ama nadiren kullanılır; kimi sade görünür fakat her gün elinizin altında durur.
Kapsamı konuşurken teknik seçimleri de sizin anlayacağınız bir dille açıklıyoruz. Bir yazılım projesinin hangi araçlarla geliştirileceği, ileride onu kimlerin sürdürebileceğini de belirler. Bu yüzden gösterişli ama az bilinen çözümler yerine, sağlam ve yaygın araçları tercih ediyoruz. Böylece yarın başka bir ekiple çalışmak isterseniz, kimse sizi bilinmez bir teknolojiyle baş başa bırakmaz. Seçtiğimiz yolun artılarını ve sınırlarını da saklamıyor, kararı birlikte veriyoruz. İşin büyüklüğüne göre gerçekçi bir takvim çıkarıyor, ara teslim noktalarını belirliyoruz. Her ara teslimde, o ana kadar yapılanı görüp yön değiştirme fırsatınız oluyor. Bu şeffaf düzen, projenin sizin için bir kara kutuya dönüşmesini engelliyor. Ara teslimleri baştan takvime bağlıyor, her birinde neyi göreceğinizi önceden söylüyoruz. Böylece proje uzun bir bekleyiş değil, adım adım ilerleyen görünür bir yolculuk hâline geliyor. İşinizi ne kadar yakından tanırsak, size o kadar yerinde bir çözüm sunuyoruz.
İlk Sürümü Küçük Tutuyor ve Test Ederek Büyütüyoruz
Bir projeyi baştan sona kusursuz kurup en sonda teslim etmek, kulağa hoş gelse de riskli bir yoldur. Aylarca kapalı kapılar ardında geliştirilen bir iş, açıldığında yanlış varsayımlar üstüne kurulmuş olabilir. Bu yüzden önce çalışan, küçük ama gerçek bir ilk sürüm çıkarmayı tercih ediyoruz. Bu ilk sürüm, olmazsa olmaz özellikleri içeren, elle tutulur bir başlangıçtır. Onu erkenden kullanmaya başladığınızda, neyin işe yaradığını gerçek deneyimle görürsünüz. Çoğu zaman kâğıt üstünde önemli görünen bir özellik, kullanımda ikinci plana düşer. Erken geri bildirim, yanlış yöne harcanacak haftaları baştan önler. Böylece proje, hayal edilen değil, gerçekten kullanılan bir araca doğru büyür. İlk sürümü olabildiğince erken kullanmanızı öneriyoruz, çünkü gerçek kullanım en dürüst geri bildirimi verir. Bir özelliğin işe yarayıp yaramadığını ancak günlük işin içinde denendiğinde net görürüz. Bu yüzden büyük bir açılışı beklemek yerine, küçük ama çalışan bir başlangıcı tercih ediyoruz.
Geliştirmeyi tek bir dev hamle olarak değil, birbirini izleyen küçük adımlar olarak yürütüyoruz. Yazılım geliştirme sürecinde her adımın sonunda çalışan, görülebilir bir parça ortaya çıkıyor. Böylece ilerlemeyi soyut bir yüzdeyle değil, elle tutulur sonuçlarla takip ediyorsunuz. Her adımda ne yaptığımızı gösteriyor, sizden gelen geri bildirimi bir sonraki adıma taşıyoruz. Bir özellik tamamlandığında onu hemen deniyor, hataları biriktirmeden düzeltiyoruz. Kod yazarken okunur ve düzenli olmasına özen gösteriyoruz, çünkü dağınık kod ileride herkesi yavaşlatır. Bugün atılan özensiz bir adım, yarın çözülmesi güç bir soruna dönüşebilir. Bu yüzden hızlı görünen kestirmeler yerine, sürdürülebilir ve temiz bir yol izliyoruz. Her adımın sonunda kısa bir değerlendirme yapıyor, o ana kadar öğrendiklerimizi bir sonraki adıma taşıyoruz. Planı taşa kazınmış bir metin değil, öğrendikçe olgunlaşan canlı bir belge olarak görüyoruz.
Test etmeyi işin sonuna bırakılan bir formalite değil, geliştirmenin doğal bir parçası sayıyoruz. Her yeni özelliği farklı durumları deneyerek sınıyor, yalnızca her şeyin yolunda gittiği hâli değil aksadığı anları da kontrol ediyoruz. Kullanıcının yanlış bilgi girdiğinde ne olacağını, boş bırakılan bir alanın nasıl karşılanacağını önceden deniyoruz. Farklı cihaz ve tarayıcılarda aynı işin sorunsuz yürüdüğünü doğruluyoruz. Bulduğumuz hataları bir listede topluyor, önem sırasına göre tek tek kapatıyoruz. Bir sorunu üstünkörü örtmek yerine, kaynağını bulup kökten çözmeyi tercih ediyoruz. Teslimden önce gerçek verilere yakın örneklerle bütün akışı baştan sona deniyoruz. Böylece sisteme geçtiğinizde sürprizlerle değil, denenmiş ve oturmuş bir yapıyla karşılaşıyorsunuz. Testleri yalnızca biz yapmakla kalmıyor, gerektiğinde sizi de gerçek kullanıma davet ediyoruz. Sistemi sizin gözünüzle denemek, bizim atladığımız ayrıntıları çoğu zaman ortaya çıkarıyor. Bu ortak deneme, teslim gününe her iki tarafın da güvenle gelmesini sağlıyor.
Entegrasyonları ve Güvenliği Baştan Planlıyoruz
Çoğu iş, tek başına duran bir ada değildir; başka araçlarla konuşması gerekir. Bir yazılım çözümünün gerçek değeri, çoğu zaman doğru entegrasyonlarla ortaya çıkar. Ödeme almanız, fatura kesmeniz ya da kargo takibi yapmanız gerekiyorsa, bunları dış servislerle birleştiriyoruz. Halihazırda kullandığınız araçlar varsa, yeni sistemin onlarla uyum içinde çalışmasını sağlıyoruz. Entegrasyonları kurarken, bir servisin geçici olarak yanıt vermediği durumları da hesaba katıyoruz. Böylece dışarıdaki bir aksama, sizin işinizin tümünü durduran bir soruna dönüşmüyor. Her bağlantıyı, gerçekten ihtiyaç duyulan yerde ve ölçülü biçimde kuruyoruz. Gereksiz entegrasyonlarla sistemi karmaşıklaştırmak yerine, işinize doğrudan katkı sağlayanları seçiyoruz. Bir bağlantıyı kurmadan önce, o servisin uzun ömürlü ve güvenilir olup olmadığını da araştırıyoruz. Yarın kapanacak ya da sık sık kural değiştiren bir servise işinizi emanet etmek istemeyiz. Sağlam ve köklü servisleri seçmek, sistemin ileride sessizce çökmesini önlüyor.
Güvenliği en baştan düşünmek, sonradan yamalarla kapatmaya çalışmaktan çok daha sağlıklıdır. Kullanıcı bilgilerini ve işletme verilerini korumayı, projenin isteğe bağlı bir eklentisi değil, temel bir sorumluluğu sayıyoruz. Girişleri koruyor, yetkileri kişilere göre ayırıyor ve herkesin her yere erişmesini engelliyoruz. Verilerin güvenli bağlantı üstünden taşınmasını ve gizli bilgilerin açıkta durmamasını sağlıyoruz. Dışarıdan gelen her veriyi, olduğu gibi kabul etmeden önce süzüyor ve doğruluyoruz. Düzenli yedek almayı da bu güvenlik anlayışının ayrılmaz bir parçası olarak görüyoruz. Bir sorun çıktığında verinizi geri getirebilmek, çoğu zaman sorunun kendisinden daha önemlidir. Böylece beklenmedik bir aksama, telafisi olmayan bir kayba dönüşmez. Güvenliği bir kez kurup unutmuyor, sistemi belirli aralıklarla yeniden gözden geçiriyoruz. Yeni açıklar ortaya çıktıkça gerekli güncellemeleri zamanında uyguluyor, kullanıcılarınıza da güvenli davranışları kısaca hatırlatıyoruz.
Bir sistemi kullanacak kişilerin onu rahatça öğrenebilmesi de tasarımın bir parçasıdır. En güçlü altyapı bile, kullanımı karmaşıksa gündelik işte bir yüke dönüşür. Bu yüzden ekranları sade tutuyor, sık yapılan işleri en az adımla ulaşılır kılıyoruz. Kullanıcının hata yapmasını zorlaştıran, yanlış adımı nazikçe uyaran bir akış kuruyoruz. Sisteme yeni katılan birinin kısa sürede alışabilmesini önemsiyoruz. Gerektiğinde ekibinize kısa bir kullanım eğitimi veriyor, akılda kalıcı notlar bırakıyoruz. Bir aracın benimsenmesi, çoğu zaman ne kadar güçlü olduğuna değil, ne kadar anlaşılır olduğuna bağlıdır. Bu yüzden gücü ve sadeliği birbirine feda etmeden dengede tutmaya çalışıyoruz. Ekranların nasıl çalıştığını anlatan kısa kılavuzlar da hazırlıyoruz, böylece takılan biri hep yanında bir cevap buluyor. Yeni bir çalışan işe başladığında, sistemi öğrenmek onun için bir engel olmuyor. Sade ve tanıdık bir arayüz, eğitimi kısaltıp günlük işi belirgin biçimde hızlandırıyor.
Kaynak Kodunu ve Verinizi Koşulsuz Size Bırakıyoruz
Bir sistemi teslim etmek, ilişkimizin sonu değil, uzun soluklu bir iş birliğinin başlangıcıdır. Her yazılım zamanla küçük bakımlar, güncellemeler ve yeni ihtiyaçlara uyum ister. Niğde’deki işletmeniz büyüdükçe ya da kurallar değiştikçe, sisteminizin de bunlara ayak uydurması gerekir. Bu yüzden teslimden sonra da yanınızda kalıyor, çıkan sorunlara hızla dönüyoruz. Düzenli bakımla küçük pürüzleri, büyük arızalara dönüşmeden çözüyoruz. Kullandığımız araçların güncellemelerini takip ediyor, sisteminizi güvenli ve güncel tutuyoruz. Yeni bir özellik gerektiğinde, onu baştaki planın üstüne düzenli biçimde ekliyoruz. Böylece sisteminiz donup kalmıyor, işletmenizle birlikte yaşayıp gelişmeyi sürdürüyor. Bakımı düzenli bir takvime bağlıyor, sizi ancak bir sorun çıktığında hatırlayan bir ekip olmuyoruz. Belirli aralıklarla sistemin sağlığını kontrol ediyor, yavaşlayan ya da eskiyen parçaları önceden yeniliyoruz. İhtiyaçlarınız değiştikçe, sistemi de sizinle birlikte adım adım büyütüyoruz.
Bizim için vazgeçilmez ilkelerden biri, ürettiğimiz işin gerçekten size ait olmasıdır. Bir yazılım projesi tamamlandığında kaynak kodu, ürettiğimiz her dosyayla birlikte size teslim edilir. Sistemin ürettiği veriler de baştan sona sizindir; onları istediğiniz an dışa aktarabilirsiniz. Sizi bize mahkûm bırakan, kilitli ve devredilemez bir yapı asla kurmuyoruz. İleride yolunuzu başka bir ekiple sürdürmek isterseniz, geçişi zorlaştıran gizli engeller çıkarmıyoruz. Kodun nasıl çalıştığını anlatan notları da teslim paketinin içine koyuyoruz. Bu şeffaflık, işimizin güvene dayanması gerektiğine inandığımız için bilinçli bir tercihtir. Emeğinizle kurduğunuz düzenin sahibi, hiçbir koşulda başkası değil, yalnızca siz olmalısınız. Teslim ettiğimiz paketin içine, sistemin nasıl kurulacağını anlatan adımları da koyuyoruz. Böylece başka bir geliştirici, bizim notlarımızla işi kaldığı yerden rahatça sürdürebilir.
Bir projeyi bitirirken, onu bizsiz de sürdürülebilir bırakmayı bir başarı ölçütü sayıyoruz. Sistemin nasıl kurulduğunu, hangi parçaların ne işe yaradığını anlatan belgeleri hazırlıyoruz. Bu belgeler sayesinde, yıllar sonra gelen başka bir geliştirici bile işin içine kolayca girer. Şifreleri, hesapları ve erişim bilgilerini düzenli biçimde size devrediyoruz. Hiçbir kritik bilgiyi yalnızca kendi elimizde tutmuyor, her şeyi sizinle paylaşıyoruz. Böylece bir gün bize bir şey olsa bile, işiniz havada kalmaz. Kalıcı bir çözüm, yalnızca bugünü değil, yarını da düşünerek kurulan çözümdür. Biz de her projeyi, teslimden sonra kendi ayakları üstünde durabilecek biçimde tasarlamaya çalışıyoruz. Belgeleri sade ve anlaşılır tutuyoruz, ağır teknik terimlerle kimseyi yıldırmıyoruz. Amacımız, yıllar sonra bu notları açan birinin de rahatça yolunu bulmasıdır. Kalıcı bir iş, ancak arkasında düzenli bir kayıt bıraktığında gerçekten kalıcı olur.
Yazılım hakkında sık sorulan sorular
Başlangıç için ayrıntılı teknik doküman şart mı?
Şart değildir. İş kuralları, kimin neyi yapacağı ve beklenen sonuç yeterince netse teknik ayrıntıları çözümleme sırasında birlikte oluştururuz. Belirsiz kalan noktaları varsayımla kapatmayız; örnek kayıtlar ve gerçek durumlar üzerinden konuşur, verilen kararı kayda geçiririz.
Elimizdeki eski Excel ve tablo kayıtları aktarılabilir mi?
Genellikle aktarılabilir. Önce verileri inceler, sütunları karşılıklarıyla eşleriz. Yinelenen satırlar, farklı tarih biçimleri, eksik değerler ve bozuk karakterler bir raporla önünüze konur; deneme aktarımı onaylandıktan sonra canlı taşımayı planlarız.
Çalışanlara farklı erişim yetkileri tanımlanabilir mi?
Evet. Görüntüleme, düzenleme, onaylama ve dışarı aktarma sınırları göreve göre ayrı ayrı kurulabilir. Yetki düzeni iş sorumluluklarıyla birlikte doğrulanır; yönetici hesabı, günlük işler için gereksiz yere elden ele dolaştırılmaz.
Muhasebe ya da başka servislerle bağlantı kurulabilir mi?
Karşı servis güvenilir bir bağlantı arayüzü sunuyorsa değerlendirilebilir. Kimlik doğrulama, veri sınırı, hata yanıtı ve tekrar deneme davranışı yazıya dökülür; bağlantı koptuğunda kaydın kaybolmasını önleyen bir yöntem seçilir.
Geliştirme sürerken ekranları deneyebilir miyiz?
Evet. Tamamlanan akışları ayrı bir deneme ortamında kademeli olarak açarız. Geri bildirimlerinizi ekran ve durum adıyla toplarız; onaylanmış bir davranışı değiştirmeden önce süresini, verisini ve diğer bölümlere etkisini birlikte değerlendiririz.
Yayından sonra yeni özellikler nasıl planlanır?
Önce isteğin hangi sorunu çözdüğü ve ne sıklıkta kullanılacağı ölçülür. Veri düzeni, yetkiler, mevcut akış ve bakım yükü incelenerek ayrı bir kapsam çıkarılır; acele giderilmesi gereken bir hata ile yeni bir geliştirme farklı kuyruklarda ilerler.
