Category: Uncategorized

  • Her problem farklıdır

    Her problem farklıdır

    Çocukken keyifle izlediğim Hulk Hogan çizgi film serisinin aklımda kalan bir bölümü var. Güreşçi olan ana karakterlerden Captain Lou’nun kilo vermesi gerekir ve bir güreşçi arkadaşı ona yardım teklifinde bulunur. Yapılacak şey basittir; bu arkadaş normalde yediği porsiyonların yarısını yiyerek kilo vermeyi başarmıştır ve Captain Lou’ya da bunu uygulamayı önerir. Captain Lou kilo vermek bir yana kilo alır çünkü atladıkları bir detay vardır; arkadaşın normalde yediğinin yarısı Captain Lou’nun normal porsiyonunun iki katıdır.

    Sektörümüzün kötü bir alışkanlığı var; başkalarının reçetelerini bilinçsizce kullanmak. Bu reçeteler belirli hastalıklara çare olması için yazıldı hastalığınız aynı değilse; ilaçlar işe yaramadığı zaman şaşırmamalısınız (işe yarayıp yaramadığını ne kadar tartabiliyoruz tartışılır ama o başka bir yazının konusu). İlaçlardan fayda alamamak bir yana daha kötü bir durum ilaçların size yan etki yapması olur.

    Bu alışkanlığın en yakın örneklerinden birini mikroservis mimarisinin kullanımında gördük. Yazılım ekipleri, ellerindeki problemin ölçek ihtiyaçlarına bakmadan, bu mimariyi başarılı bir şekilde uygulamanın gereklerini göz önüne almadan kullanmaya kalktılar ve sonu hüsran oldu. Şimdilerde mahallede yeni bir havalı çocuk var – modular monolith

    Captain Lou sonunda kilo vermeyi başarıyor nasıl olduğunu ben anlatmayayım siz buyrun izleyin. Çözülecek her problem, çözüm üretecek her şirket, her ekip farklı sıklette; dinamikleri, kısıtları farklı. Bize düşen çözüm aranan problemi iyi analiz etmek, içinde bulunulan bağlamı göz önünde bulundurmak, olası çözümlerin artılarını eksilerini iyi değerlendirmek ve ancak sonra tercihlerde bulunmak.

  • Türkiye testi

    Türkiye testi

    Bir yazılım sistemini farklı kültürler ve ülkelerde kullanılabilir hale getirmek başlı başına bir iş. Her ülkenin bir yoğurt yiyişi var; farklı karakterler, farklı yazım yönleri, farklı tarih formatları, farklı sayı notasyonları.

    Bir dönem Türkiye, farklılıkları ile birçok amerikan yazılımcısına zor anlar yaşatmış [1] [2] ve literatüre kendi adında bir test tipi sokmuş – Turkey test. İ harfi, gün/ay/yıl formundaki tarihleri, nokta ile ayrılan sayıları ile bir yazılımın Türkiye’de çalışıp çalışmadığını test etmek o yazılımın farklı kültürleri ele alma kabiliyetini test etmek için iyi bir başlangıç olarak görülmüş.

    Bir yazılımı uluslararası sahneye uygun hale getirmek eskisi kadar zor olmasa da modern zamanlarda hala göz ardı edilebiliyor.

  • Bağlam diyagramı

    Bağlam diyagramı

    Yeni bir sistem ile çalışmaya başladığım zaman ilk yaptığım şeylerden biri bağlam diyagramı oluşturmak. Bu diyagram türü bir sistemin, bütün içerisindeki yerini anlamlandırmak için birebir.

    Sistemimizi kapalı bir kutu olarak resmedip aşağıdaki sorulara cevaplar arayarak bu diyagramı oluşturabiliriz:

    • Sistemi hangi kullanıcı grupları kullanıyor?
    • Sistem hangi başka sistemler tarafından ne amaçla ve nasıl kullanılıyor?
    • Sistem hangi başka sistemleri ne amaçla ve nasıl kullanıyor?
    • Sistemin dolaylı olarak etkilediği veya etkilendiği başka sistemler, kullanıcılar var mı?

    Diyagramı oluşturmaktaki amacımız sistemin içini ve dışını net bir şekilde belirlemek. Detaylardan olabildiği kadar uzak kalmalı ana aktörleri, komşu sistemleri ve ana veri akışlarını ortaya dökmeliyiz.

    Hayali bir yemek sipariş uygulaması için basit bir örnek oluşturmaya çalıştım.

    Bu tip bir diyagrama eklenebilecek bilginin bir üst sınırı yok. Okların stillerini farklılaştırarak iletişim yöntemlerini detaylandırabiliriz. Oklara açıklamalar ekleyerek iletilen veriler hakkında bilgi verebiliriz. Amacımızın sistemimizin durduğu yeri kuş bakışı göstermek olduğunu unutmadan ihtiyaca göre detayı arttırıp azaltabiliriz.

    Bonus olarak Arc42‘dan derlediğim bu tip diyagramlarla çalışırken faydalı olacağını düşündüğüm ipuçları:

    • Ne sistemin içinde? Ne sistemin dışında? iyi düşünün ve hepsini görselleştirin
    • Sistemler ve kullanıcılar hakkında detay vermek için diyagramı tablolarla destekleyebilirsiniz
    • Unutmayın bu bir kuş bakışı gösterim; çok detay vermeye çalışarak diyagramı boğmayın
    • Okları bağımlılık yönünü değil veri akış yönünü göstermek için kullanın
    • Benzer iletişim yöntemlerini, kullanıcı tiplerini, sistemleri kategoriler haline getirmek diyagramı basitleştirmenize yardımcı olabilir
    • Teknik ve iş kavramlarını tek diyagramda görselleştirmekte zorlanıyorsanız ikiye ayırmak mantıklı olabilir.