İçeriğe atla

Vaka · besi çiftliği

Excel'in çöktüğü hafta

Bursa'daki bir besi çiftliği için hisse satışı, kapora, tahsilat ve sürü kaydını tek yerde toplayan bir panel yazdık. İşin sınavı belliydi: yılın en yoğun haftasında, ahırda, telefondan çalışmak zorundaydı. Tahsilat ve pay kaydı tutan her işte aynı üç soru var; bu vaka o üçünün nasıl tek ekrana indiğini anlatıyor.

Ahırda açılan ekranla ofiste açılan ekran aynı kaydı göstermezse yazılım işe yaramaz.

Tabloların tıkandığı yer

Bir hayvan birden çok hisseye bölünüyor, kapora farklı kişilerden ayrı ayrı geliyor, tahsilat günlere yayılıyor ve aynı dosyaya iki kişi aynı anda yazmak zorunda kalıyor. Elektronik tablo bunların hiçbirini yasaklamıyor; bu yüzden hata sessizce birikiyor.

Önce hisse mantığını öğrendik

Kod yazmadan önce sezonun nasıl yürüdüğünü dinledik: hangi hayvan kaç hisse, kim ne zaman kapora verir, kalan tutar ne zaman kapanır. Yazılımın ekranları bu mantığın çizilmiş hâli; tersini yapsak çiftlik kendi işini ekrana uydurmak zorunda kalırdı.

Bir haftalık zirveye göre kuruldu

Sistem yılın on iki ayına değil, o bir haftaya göre tasarlandı: az dokunuşla kayıt, telefonda okunabilir tablo, kimin ne yazdığının izi. Zirve haftası dışında zaten kimse ekrana bakmıyor.

Sezondan sonra ne oldu

Yazılım ilk sezonunu bu düzenle tamamladı ve besi.tr olarak sürdü. Ürüne dönüşme ihtimali baştan konuşulmuştu; sonradan açılan bir konu değildi ve sözleşmede yazılıydı.

Sınav neydi

Kurban döneminde kayıt masa başında değil, sahada giriliyor: elde telefon, ortamda toz, zamanda baskı. Bir ekran o koşulda kullanılmıyorsa geri kalan her özellik boşa yazılmış demektir. Bu yüzden önce az dokunuşla kayıt ve telefonda okunabilir tablo kuruldu, gerisi ondan sonra geldi.

Adım adım ne yapıldığı ve panelin gerçek ekranları aşağıda

Vaka çalışması · besi çiftliği

Kurban sezonunu Excel yerine yürüten yazılım

Bursa'daki bir besi çiftliği için hisse satışı, kapora, tahsilat ve sürü kaydını tek yerde toplayan bir panel yazdık. İşin sınavı belliydi: yılın en yoğun haftasında ahırda, telefondan çalışmak zorundaydı.

Nereden başladık

Çiftlik kurban hisselerini bir Excel dosyasında takip ediyordu. Dosya aslında iyi kurulmuştu: her hayvan bir sayfa, altında hisse satırları, sütunlarda ad soyad, iletişim, hisse tutarı, kapora, kalan ve ödemenin nakit mi havale mi olduğu yazıyordu. Yani sorun düzensizlik değildi.

Sorun, o dosyanın işi taşıyamadığı yerdeydi. Sezon açıldığında aynı dosyaya birden fazla kişi dokunuyor, telefondan bakmak neredeyse imkânsız hale geliyor ve müşteri arayıp 'ben ne kadar ödemiştim' dediğinde cevap bir arama değil, göz taraması gerektiriyordu.

Tabloların tıkandığı dört yer

Keşif konuşmasında dört başlık öne çıktı. Yazılımın kapsamını bu dördü belirledi.

  • Aynı dosyaya iki kişi dokunuyor

    Sezonda hem ofiste hem sahada kayıt giriliyor. Bir tabloda bunun sonu, birinin yazdığının diğerinde görünmemesidir; hangi kopyanın doğru olduğu ise ancak sonradan anlaşılır.

  • Telefondan bakılamıyor

    İşin yapıldığı yer ahır ve avlu. Yatay bir tabloyu küçük ekranda kaydırarak doğru satırı bulmak, müşteri karşısında kaybedilen zaman demek.

  • Toplamlar elle hesaplanıyor

    Kalan tutar, tahsil edilen toplam ve bir hayvanın kaç hissesinin sattığı her defasında yeniden hesaplanıyordu. Elle yapılan her hesap, yanlış yapılabilecek bir hesaptır.

  • Kaydın tek kopyası var

    Dosya bozulursa ya da yanlışlıkla üzerine yazılırsa sezonun tamamı gider. Konuştuğumuz gün düzenli bir yedek alma alışkanlığı yoktu; bu, sistemin en sessiz riskiydi.

Önce hisse mantığını öğrendik

Bu işte ürün, hayvanın kendisi değil hissesidir. Bir hayvan birden çok kişiye pay pay satılır; her payın ayrı bir alıcısı, ayrı kaporası ve ayrı bir kalanı olur. Hazır bir satış yazılımında bu yapının karşılığı yoktur, çünkü orada bir ürünün bir alıcısı vardır.

İkinci öğrendiğimiz şey, hisse sayısının sabit olmadığıydı. Alışıldık düzen yedi paydır ama çiftlik bunu hayvana göre değiştirebilmelidir. İlk kurguda sayıyı sabitlemiştik; canlı denemede bunun işi kısıtladığı görülünce hisse sayısı hayvan başına ayarlanır hale getirildi ve tutarlar buna göre yeniden hesaplanır oldu.

Üçüncüsü ödemenin bir anda bitmemesiydi. Müşteri önce kaporayı bırakır, kalanı sezon boyunca parça parça öder. Bu yüzden hisse kaydının bir durumu olması gerekiyordu: boşta mı, ayrıldı mı, kaporası mı alındı, tamamı mı ödendi, teslim edildi mi.

Ne kurduk

Kapsam tek bir sezonun ihtiyacına göre dar tutuldu. Teslim edilen panel şunları yapıyor.

  • Sürü kaydı

    Her hayvanın numarası, ırkı, fiyatı, fotoğrafı ve durumu tek kartta duruyor. Ahırda çekilen kare doğrudan karta yükleniyor; müşteriye 'hangisi' diye anlatmak yerine gösteriliyor.

  • Hisse defteri

    Hayvan başına hisseler, her hissenin alıcısı, telefonu, tutarı, kaporası ve kalanı. Kalan tutar elle girilmiyor, kayıttan hesaplanıyor.

  • Tahsilat kaydı ve makbuz

    Her ödeme ayrı bir satır olarak işleniyor: tarihi, tutarı ve nakit mi havale mi olduğu. Makbuz numarası kendiliğinden veriliyor, makbuz yazdırılabiliyor ya da müşteriye iletilebiliyor.

  • Durum akışı

    Bir hisse boştan teslime kadar tanımlı adımlardan geçiyor. Böylece 'bu hayvanın kaç hissesi kaldı' sorusu, listeye bakmadan ekranın üstünde cevaplanıyor.

  • Arama ve tek ekran özeti

    Müşteri adından ya da hayvan numarasından arama var. Açılış ekranı sezonun durumunu birkaç sayıyla veriyor; personel telefon başındayken kayıt aramak zorunda kalmıyor.

  • Telefonda çalışan panel

    Ekran önce küçük ekrana göre kuruldu, sonra bilgisayara genişledi. Panel telefonun ana ekranına kısayol olarak eklenebiliyor ve orada bir uygulama gibi açılıyor.

Personelin kullandığı ekranlar

Panel neye benziyor

Aşağıdaki kareler ürünün tanıtım (demo) hesabından alındı; gerçek bir çiftliğin verisi değil, örnek veriyle doldurulmuş bir kiracı hesabı. Müşteriye açık bir satış ekranı kurmadığımız için gösterilebilecek ekranlar da personelin kullandığı ekranlar.

Hisse defteri ekranı: hayvan başına hisse dağılımı, kimin kaç hissesi olduğu ve kalan hisse sayısı. Örnek veri.
Hisse defteri — tanıtım hesabı, örnek veriyle. Kimin kaç hissesi olduğu ve kalanın kaç hisse kaldığı tek ekranda.
Ödemeler ekranı: tahsil edilen ve bekleyen tutarlar, makbuz numaraları örnek veri olduğunu belirten önekle.
Tahsilat takibi — tanıtım hesabı, örnek veriyle. Kimden ne kadar alındığı ve ne kaldığı defterden değil ekrandan okunuyor.
Panelin telefon görünümü: özet gösterge panosu — kayıtlı hayvan sayısı, satılan hisse oranı, tahsil edilen tutarın hedefe oranı ve bekleyen ödeme sayısı. Örnek veri.
Panelin telefon hâli — tanıtım hesabı, örnek veriyle. Açılışta özet duruyor: kaç hisse satıldı, ne kadarı tahsil edildi, kaç ödeme bekliyor. Kayıt çoğu zaman ahırda giriliyor, masa başında değil.

Ahırda açılan ekranla ofiste açılan ekran aynı kaydı göstermezse, yazılım işi kolaylaştırmaz.

Bir haftalık zirveye göre kurulan yazılım

Bu işin yılın tamamına yayılmış bir yükü yok. Neredeyse bütün hareket bayram öncesindeki birkaç haftada, tahsilatın büyük kısmı da son günlerde oluyor. Yazılımı ortalama bir güne göre kurmak, tam da işe yarayacağı hafta çökmesi demekti.

Bu yüzden yavaş çalışan hiçbir ekrana izin verilmedi ve tek tek kayıt girmeyi hızlandıran ne varsa öne alındı: form alanlarının sırası, telefonun isteğe bağlı olması, kaydettikten sonra hangi ekrana dönüleceği. Bunların hepsi canlı denemede, gerçek kullanıcının eliyle ayarlandı.

Yazılım o sezonu yürüttü. Kurban dönemi baştan sona bu panelden takip edildi ve dönemin kayıtları bugün de duruyor. Bu cümleyi yüzdeyle süslemeyeceğiz: sezonun kayıtları müşterinin verisidir, dökümünü paylaşmıyoruz.

Bilerek yapmadıklarımız

Bu işte kapsamı dar tutmak bir zorunluluktu: teslim tarihi bayramdı ve bayram ertelenmiyordu.

  • Müşteriye açık satış ekranı kurmadık

    Panel çiftliğin personeli için yazıldı. Hisse seçimi, pazarlık ve tahsilat zaten yüz yüze ya da telefonda yapılıyordu; bunu internete taşımak işin doğasını değiştirirdi.

  • Kart ödemesi bağlamadık

    Ödeme nakit ve havale ile yürüyordu. Kart altyapısı kurmak, bu ölçekteki bir iş için hem gereksiz masraf hem de fazladan bakım demekti.

  • Eski dosyayı içeri aktarmadık

    Aktarım yazmak, sezonun ilk kayıtlarını elle girmekten daha uzun sürecekti. Veri sıfırdan girildi; kurulum aktarım beklemeden başladı.

  • Muhasebe programına bağlamadık

    İstenmedi, biz de teklif etmedik. Gerektiği gün bağlanır; bugün gerekmeyen bağlantı, bugünden bakımı olan bir yük demektir.

Sezondan sonra ne oldu

Tek çiftlik için yazılan bu yazılım, sezon bittikten sonra ikinci bir hayat kazandı. Aynı işi yapan başka çiftliklere de kurulabilsin diye çok çiftlikli bir sürüme dönüştürüldü: tek kod tabanı, her çiftliğe kendi adresi ve kendi veritabanı. Bugün besi.tr üzerinden yürüyen ürün bu.

Çiftliğin kendi adresi şu an güncelleme ekranında olduğu için buradan bağlantı vermiyoruz. Bu bizim için de bir ders oldu ve sayfanın en dürüst yeri burası: yazılım çalışırken, işletmenin vitrini geride kalabiliyor. Vitrin de en az panel kadar bakım isteyen bir iş.

Kaydınız hâlâ tek dosyada mı duruyor?

Tahsilat, pay ve müşteri kaydı tutan her işte aynı üç soru var: kim ne kadar ödedi, ne kadar kaldı, bu bilgiyi sahada kim görebiliyor. Bugün bunu nasıl yürüttüğünüzü anlatın; işi kolaylaştıracak en küçük adımın ne olduğuna birlikte bakalım.