Diyagramlar sıkıcı bir nedenle ölür: tek bir biçimleri vardır ve o biçim ihtiyacının en az yarısı için yanlış olandır. Bir çizim okur için harikadır, bir pull request'te ise işe yaramaz. Bir blok diyagram kodu harika incelenir ama bir paydaşa hiçbir şey anlatmaz. Böylece ekipler birini seçer ve diyagram geride kalıp herkes ona güvenmeyi bırakana kadar diğer ihtiyaç karşılanmadan kalır.
Çözüm seçmemek. Çözüm iki biçimi de tutmak ve aralarında serbestçe geçiş yapmak. Görmek istediğinde kod diyagrama dönüşür; incelemek ya da saklamak istediğinde diyagram koda dönüşür. Yapay zeka iki yöndeki yolculuğu da kolaylaştırır ve diyagramı kalıcı kılan da bu gidiş-dönüştür.
Birinci yön: koddan diyagram oluşturma
Yapıyı anlatan bir metin zaten elinde: Mermaid, D2 ya da bir Compose dosyası veya SQL şeması gibi bir çıktı. Onu içeri al; senin için yerleştirilmiş gerçek, düzenlenebilir şekillere dönüşsün. Artık metnin yapamadığı şeyleri yapabilirsin: riskli yolu vurgula, bir bounded context'i grupla, işin can alıcı noktasına bir not bırak.
graph LR
client --> api
api --> cache
api --> db
worker --> queue
Bunu yapıştırdığında karşına çıkan render edilmiş bir resim değil; tutup taşıyabileceğin bir kutu ve ok kümesi. Yapıyı kod sana bedavaya verdi. Anlamı senin düzenlemelerin ekler.
İkinci yön: diyagramdan koda
Şimdi tersine çevir. Tuvalde bir diyagrama biçim verdin ve onu depoda, anlattığı kodun yanında, incelenip sürümlenebileceği yerde istiyorsun. Onu Mermaid ya da D2 olarak geri aktar ve metni commit et. Biri bir dahaki sefere sistemi değiştiren bir pull request açtığında, diyagramın kodu aynı incelemede, aynı gözlerin önünde değişir.
Yapay zekanın gidiş-dönüşe katkısı
Döngüde bir model olduğunda iki yön de kolaylaşır, ama abartının ima ettiği şekilde değil. Yapay zeka kodun ya da çizimin yerini almak için orada değil. Dağınık boşlukları kapatmak için orada:
- Gevşek girdiden temiz koda. Bir akışı tek cümleyle anlat ve render edip iyileştirebileceğin ilk diyagram kodunu al.
- Dağınık diyagramdan derli toplu koda. Commit edilen sürüm iyi okunsun diye dışa aktarılan metnin sadeleştirilmesini ya da yeniden etiketlenmesini iste.
- Sapmadan taze bir taslağa. Sistem ilerlediğinde eski bir resmi elle yamamak yerine güncel kaynaktan yeniden oluştur ve uzlaştır.
Tek bir gerçeğin iki biçimi. Kod onu incelenebilir tutar; resim okunur tutar.
Diyagramı kodla senkron tutmak neden taraf seçmekten iyi
Tek biçimli diyagram seni kötü bir takasa zorlar. Yalnızca kod olarak diyagram sana incelenebilirlik ve kimsenin okumaktan keyif almadığı bir resim verir. Yalnızca çizim sana koddan sessizce kopan samimi bir resim verir. İkisini de kolay bir gidiş-dönüşle tutmak, aynı kaynaktan metnin incelenebilirliğini ve bir görselin netliğini verir. Hiçbiri ikinci sınıf vatandaş değildir.
Edinmeye değer alışkanlık
İki biçimi, iki görünümü olan tek bir çıktı olarak gör. O an hangisi daha hızlıysa onunla taslak çıkar, görsel olarak eskizle ya da yapıyı yaz, sonra gidiş-dönüşle diğer biçimi bedavaya al. Bunu tutarlı biçimde yaparsan eskimiş diyagram gibi kadim bir sorun büyük ölçüde ortadan kalkar, çünkü doğruya dönmenin her zaman ucuz bir yolu vardır.
Biraz diyagram kodu yapıştırıp ona biçim ver ya da bir şey çizip kodunu dışa aktar. Gidiş-dönüşü bir kez hissettiğinde, bir diyagramı güncel tutmak atladığın bir angarya olmaktan çıkar.