Minimalizm Yazılım Dünyasında Neden Kayboldu?

Bir zamanlar yazılım geliştirmek biraz da gereksiz olanı atma işiydi.

Programın yapması gereken belliydi. Gereken kod yazılır, gerekmeyen kod yazılmazdı. Gereksiz özellik eklenmez, gereksiz kütüphane kurulmaz, bilgisayarın kaynakları sonsuzmuş gibi davranılmazdı.

Şimdi ise yazılım dünyasında bunun tam tersi bir anlayış hâkim.

Bir programın yapabileceği her şey ekleniyor.

Sonra bu özellikleri çalıştırmak için başka kütüphaneler ekleniyor.

Onların çalışması için başka bağımlılıklar geliyor.

Arayüz yenileniyor.

Animasyonlar ekleniyor.

Bulut entegrasyonu geliyor.

Hesap sistemi geliyor.

Bildirimler geliyor.

Analitik geliyor.

Sonra program neden yavaş diye soruluyor.

Çünkü minimalizm artık çoğu yazılım projesinde bir hedef değil.

Eksiklik gibi görülüyor.

Her yazılım neden artık her şeyi yapmak zorunda?

Bir programın tek bir işi iyi yapması artık yeterli görülmüyor.

Not alma uygulaması sadece not almak istemiyor.

Bulut istiyor.

Senkronizasyon istiyor.

Yapay zekâ istiyor.

Takvim istiyor.

Hatırlatıcı istiyor.

Ekip çalışması istiyor.

Grafik istiyor.

Sonra bütün bunların altında onlarca servis ve bağımlılık çalışıyor.

Kullanıcı ise başlangıçta sadece bir not yazmak istemişti.

Yazılım dünyasının temel problemi burada ortaya çıkıyor:

Bir ürünün değerini yaptığı işin kalitesiyle değil, sahip olduğu özellik sayısıyla ölçmeye başladık.

Daha fazla özellik = daha iyi ürün.

Daha fazla menü = daha profesyonel.

Daha fazla entegrasyon = daha modern.

Daha fazla paket = daha gelişmiş.

Sonuçta ortaya kullanıcının ne yapacağını anlamak için kullanım kılavuzu okuması gereken basit uygulamalar çıkıyor.

“Bunu da ekleyelim” cümlesi yazılımın düşmanı

Yazılım projelerinin şişmesinin en basit sebeplerinden biri çok masum görünen bir cümle:

“Bunu da ekleyelim.”

Bir özellik eklenir.

Sonra o özelliği yönetmek için ayar gerekir.

Ayar için yeni bir menü gerekir.

Menü için yeni arayüz bileşenleri gerekir.

Bunları yönetmek için başka kodlar gerekir.

Bir süre sonra başlangıçta küçük olan özellik, projenin içine yerleşmiş yeni bir organ haline gelir.

Sonra başka birisi gelir:

“Şunu da ekleyelim.”

Ve süreç yeniden başlar.

Yazılım geliştirme böyle böyle bir özellik çöplüğüne dönüşür.

Minimalizm neden sıkıcı görülüyor?

Minimalist bir yazılımın pazarlaması zordur.

Çünkü anlatacak çok fazla şeyi yoktur.

“Dosyaları açıyor.”

“Metin yazıyor.”

“Resimleri gösteriyor.”

“İşini yapıyor.”

Hepsi bu.

Bunun yerine şirketler daha kolay pazarlanan özellikleri tercih ediyor.

“AI destekli.”

“Bulut tabanlı.”

“Gerçek zamanlı.”

“Takım çalışması.”

“Akıllı otomasyon.”

“Entegre çalışma alanı.”

“Yeni nesil platform.”

Bunları duyunca ürün büyük ve gelişmiş görünüyor.

Programın gerçekten daha kullanışlı olup olmadığı ise ikinci plana atılıyor.

Her şey bir platform olmak zorunda mı?

Modern yazılım dünyasında “uygulama” kelimesi de yavaş yavaş kayboluyor.

Her şey platform.

Not alma platformu.

İletişim platformu.

Tasarım platformu.

Proje yönetim platformu.

Kodlama platformu.

Dosya yönetim platformu.

Bir zamanlar tek bir programın yaptığı iş, şimdi “platform” olarak pazarlanıyor.

Çünkü platform daha büyük duyuluyor.

Büyük ürün daha değerli görünüyor.

Daha fazla özellik daha fazla para için gerekçe oluşturuyor.

Ve kullanıcı sonunda basit bir araç yerine küçük bir işletim sistemi kullanmaya başlıyor.

Framework’ler de minimalizmi pek sevmiyor

Modern web geliştirmede minimalizmden uzaklaşmanın başka bir nedeni de araçların kendisi.

Bir proje başlatıyorsunuz.

Framework.

UI kütüphanesi.

State yönetimi.

Routing.

Form yönetimi.

API istemcisi.

CSS sistemi.

Build aracı.

Lint sistemi.

Test sistemi.

Sonra bunların bağımlılıkları.

Projenin ilk satırını yazmadan önce yarım dünya kuruluyor.

Eskiden:

“Ne yazmam gerekiyor?”

diye sorardık.

Şimdi:

“Hangi stack’i kullanmalıyım?”

diye başlıyoruz.

Sonra projenin kendisinden çok stack hakkında konuşuyoruz.

Basit bir şeyi kendin yazmak neden suç oldu?

Bir problemi birkaç satır kodla çözmeye çalıştığınızda hemen birileri çıkıyor:

“Bunun kütüphanesi var.”

Evet.

Var.

Her şeyin kütüphanesi var.

Ama bir şeyin kütüphanesinin olması onu kullanmanın zorunlu olduğu anlamına gelmiyor.

Bazen 20 satır kod yazmak, 30 bağımlılık eklemekten daha mantıklıdır.

Çünkü yazdığınız kod sizin kontrolünüzdedir.

Ne yaptığını bilirsiniz.

Ne zaman bozulacağını bilirsiniz.

Nasıl değiştireceğinizi bilirsiniz.

Oysa üçüncü taraf bir pakette bütün bunlar başka birinin kararlarına bağlıdır.

Minimalizm sadece daha az kod değildir.

Daha az bağımlılık, daha az hareketli parça ve daha az bilinmeyen demektir.

Yazılımın “özellik enflasyonu” problemi

Bir noktadan sonra yeni özelliklerin gerçekten değer üretip üretmediğini anlamak zorlaşıyor.

Çünkü kullanıcıların çoğu aynı temel özellikleri kullanıyor.

Fakat yazılım şirketleri ürünün sürekli geliştirildiğini göstermek zorunda.

Yeni sürüm çıkmalı.

Yeni özellik duyurulmalı.

Yeni ekran görüntüleri yayınlanmalı.

Kullanıcıya “bakın, ürün gelişiyor” denmeli.

Bunun sonucu bazen çok garip.

Programın en önemli sorunları hâlâ duruyor.

Ama yeni bir yapay zekâ özelliği geliyor.

Arayüz yeniden tasarlanıyor.

Yeni bir panel ekleniyor.

Yeni entegrasyon geliyor.

Çünkü mevcut problemi çözmektense yeni bir özellik satmak daha kolay.

Minimalist yazılım kullanıcıya güven verir

İyi minimalist yazılım size sürekli ne yapacağınızı söylemez.

Sizi bildirim bombardımanına tutmaz.

Her özelliği önünüze fırlatmaz.

Her açılışta yeni bir pencere göstermez.

Sadece işini yapar.

Bu aslında ciddi bir tasarım başarısıdır.

Çünkü yazılımın görünmez olmasını sağlamak, onu sürekli görünür hale getirmekten daha zordur.

İyi bir araç kullandığınızı unutabilirsiniz.

Kötü bir araç ise kendisini sürekli hatırlatır.

“Beni güncelle.”

“Beni senkronize et.”

“Bu özelliği dene.”

“Şunu etkinleştir.”

“Bunu kabul et.”

“Premium’a geç.”

Bir süre sonra programı değil, programın kendisini yönetmeye başlarsınız.

Minimalizm teknik borcu da azaltır

Her özellik bir maliyettir.

Kod maliyeti.

Test maliyeti.

Bakım maliyeti.

Güvenlik maliyeti.

Dokümantasyon maliyeti.

Performans maliyeti.

Kullanıcı arayüzü maliyeti.

Bir özellik eklendiğinde sadece o özelliğin kodunu yazmazsınız.

Onu yıllarca taşırsınız.

Bu yüzden gereksiz özelliklerin bedeli ilk gün görünmez.

Asıl faturayı aylar ve yıllar sonra ödersiniz.

Kod tabanı büyür.

Değişiklik yapmak zorlaşır.

Yeni geliştirici projeye girdiğinde sistemi anlamak için haftalar harcar.

Bir noktada kimse eski kodu silmeye cesaret edemez.

Çünkü sistem hâlâ çalışıyordur.

Ve böylece yazılım katman katman büyür.

Minimalizm geri gelmeyecek mi?

Gelebilir.

Çünkü yazılım dünyası ne kadar karmaşıklaşırsa basitliğin değeri de o kadar artıyor.

Bir noktada geliştirici şunu fark ediyor:

Her şeyi yapmak zorunda değiliz.

Her problemi framework ile çözmek zorunda değiliz.

Her özellik için paket kurmak zorunda değiliz.

Her programın buluta bağlanması gerekmiyor.

Her uygulamanın hesap sistemi olması gerekmiyor.

Her ürünün yapay zekâ özelliği olması gerekmiyor.

Her küçük aracın “platform” olması gerekmiyor.

Belki de yazılım dünyasının uzun süredir unuttuğu en basit soru şu:

“Buna gerçekten ihtiyacımız var mı?”

Bu soru daha sık sorulsa birçok proje daha küçük, daha hızlı, daha anlaşılır ve daha kolay yönetilebilir hale gelebilir.

Çünkü minimalizm yazılım dünyasından teknik olarak kaybolmadı.

Onu kaybedenler, gereksiz olan her şeyi özellik sanmaya başlayanlar.

Yorum Bırak