Mühendislik

Diyagramın ötesinde: yazılım mühendisleri için yeni bir görsel çalışma alanı

Bir çizim aracı sana kutular ve oklar verir. Modern mühendislik daha fazlasını ister: koda, altyapıya ve ekibe bağlı kalan, yazılım mühendisleri için bir görsel çalışma alanı. Diyagram ölü bir çıktı olmaktan çıktığında neyin değiştiği burada.

Yirmi yıl boyunca "hadi bunu çizelim" sorusunun cevabı, fiziksel ya da dijital bir beyaz tahtaydı. Birkaç dikdörtgen sürükler, onları oklarla bağlar, bir fotoğraf çeker ya da PNG dışa aktarır ve yoluna devam ederdin. İşe yarıyordu, çünkü yazılım eskiden bir beyaz tahtaya sığıyordu.

Artık sığmıyor. Tek bir özellik bugün bir tarayıcıya, bir edge worker'a, üç servise, bir kuyruğa, iki veritabanına ve bir bulut sağlayıcısı dolusu yönetilen parçaya dokunuyor ve hepsi her hafta değişiyor. Pazartesi çizdiğin çizim cuma günü kibar bir kurguya dönüşüyor. Sorun hiçbir zaman araç değildi. Sorun, bir diyagramın kendi başına ölü bir çıktı olması: bir anı yakalar ve sonra anlattığı şeyle adımını kaybeder.

Mühendislerin gerçekten ihtiyacı daha iyi bir beyaz tahta değil. İhtiyaçları bir görsel çalışma alanı: çizimin birkaç moddan yalnızca biri olduğu ve resmin ait olduğu koda, altyapıya ve insanlara bağlı kaldığı bir yüzey. Bu yazı, diyagram çiziminden bir çalışma alanına doğru olan bu geçişi anlatıyor.

Statik diyagramlar seni neden hep yarı yolda bırakıyor

Her ekip bunu yaşamıştır. Wiki'deki mimari diyagram on sekiz aylık. Oryantasyon dokümanı geçen çeyrek silinmiş bir servisi gösteriyor. Olay incelemesi "yani, diyagrama göre..." diye açılıyor ve biri sessizce diyagramın yanlış olduğunu itiraf ediyor. Bunların hiçbiri disiplin eksikliği değil. Yapısal bir sorun.

Elle yerleştirilmiş bir diyagramın tam olarak tek bir doğruluk kaynağı vardır: kutuları en son sürükleyen kişi. Gerçek sistemin ise birçok kaynağı vardır. Bunlar ayrıştığında kaybeden diyagram olur, çünkü onu güncel tutmak elle yapılan, sıkıcı ve bir teslim tarihi sırasında asla öncelik olmayan bir iştir. Böylece çürür ve çürüyen bir diyagram hiç olmamasından kötüdür: yeni mühendislere yanlış modeli tam bir özgüvenle öğretir.

Elle bakımını yapmak zorunda olduğun bir diyagram, er geç güvenmeyi bırakacağın bir diyagramdır.

Birinci mod: resmi kaynaktan oluştur

Bir çalışma alanının beyaz tahtanın yapamadığı ilk işi sistemini okuyup senin yerine çizmesidir. Kutu yerleştirmek yerine ona zaten bakımını yaptığın bir çıktıyı verirsin: bir Compose dosyası, bir dizi Kubernetes manifest'i, bir Terraform planı, biraz SQL DDL, bir OpenAPI spesifikasyonu. Diyagramı oradan yerleştirir.

gerçek kaynakkod · infra · veri workspace
Çalışma alanı mevcut dosyalarını kaynak olarak kabul eder; böylece resim disiplinle değil, yapısı gereği doğrudur.

Diyagram türetildiği anda bakım sorunu ortadan kalkar. Resmi güncellemezsin; yeniden oluşturursun. Manifest değiştiğinde diyagram da onunla birlikte değişir. Gerçeklikle çizim arasındaki boşluk, yani her eskimiş diyagramı sessizce zehirleyen boşluk kapanır.

İkinci mod: donmuş değil, düzenlenebilir tut

Tek başına oluşturma, eskimiş bir resmi çirkin bir resimle takas etmekten ibaret olurdu. Otomatik yerleşim seni yolun yüzde doksanına götürür; son yüzde on, yani vurgu, gruplama, "önemli olan kısım bu" dediğin yer, bir diyagramın hakkını verdiği yerdir. Bu yüzden çalışma alanı sana düz bir görsel değil, gerçek, düzenlenebilir şekiller geri verir.

Yani bir kutuyu itebilir, riskli yolu kırmızıyla vurgulayabilir, bir ekibe ait her şeyi gruplayabilir ve işin can alıcı noktasına bir not bırakabilirsin; hem de elle kurmak zorunda kalmadığın bir yerleşimin üzerinde. Taslak makine yapımıdır; anlam senindir.

Ele veren işaret. Bir kutuyu seçip taşıyamıyorsan elinde bir çalışma alanı değil, bir görsel var. Düzenlenebilir çıktı, tartıştığın bir diyagramla içinde gerçekten düşünebildiğin bir diyagram arasındaki farktır.

Üçüncü mod: resmi koda, kodu resme dönüştür

Mühendisler bazı diyagramları zaten metin olarak, Mermaid ya da D2 ile tutuyor, çünkü metin temiz incelenir ve kodun yanında yaşar. Bir çalışma alanı buna karşı savaşmamalı; döngüyü kapatmalı. Kodu yapıştır ve düzenlenebilir şekiller al. Onları görsel olarak yeniden işle. İncelenebilir sürüme yeniden ihtiyaç duyduğunda koda geri aktar.

Bir diyagramı kalıcı kılan bu iki yönlü yolculuktur. Kod biçimi pull request'e gider ve orada her şey gibi incelenir. Görsel biçim dokümana gider ve orada bir insan onu gerçekten açar. Hiçbiri kaymaz, çünkü ikisi aynı şeyin iki görünümüdür.

Dördüncü mod: boş tuval değil, bir taslak ortağı

Boş tuval, her diyagramın en pahalı anıdır. Bir çalışma alanı bu anı kısaltır: ne istediğini düz bir dille anlatırsın, "bir yük dengeleyicisi, iki uygulama sunucusu, bir primary ve bir read replica olan üç katmanlı bir web uygulaması", ve tepki verebileceğin bir ilk taslak alırsın. Artık sıfırdan başlamıyorsun; bir başlangıç noktasını düzenliyorsun.

İyi kullanıldığında mesele makinenin senin yerine çizmesi değil. Mesele sıkıcı kısmı (kırk kutu yerleştirmek) atlayıp dikkatini bir insana ihtiyaç duyan kısma (bu mimari gerçekten doğru mu?) vermek.

Beşinci mod: tüm ekibin paylaştığı bir yüzey

Bir beyaz tahta fotoğrafı odadan çıktığı anda çıkmaz sokaktır. Bir çalışma alanı ise canlıdır. İki kişi görünür imleçlerle aynı tahtada olabilir; bir inceleyici sözü edilen kutunun tam üstüne sabitlenmiş bir yorum bırakabilir; bir diyagram, birinin yeniden dışa aktarmayı hatırlaması gereken bir ekran görüntüsü yerine, kaynak değiştiğinde güncellenen salt okunur bir görünüm olarak bir README'ye ya da wiki'ye gömülebilir.

Diyagram gönderdiğin bir dosya olmaktan çıkar ve buluştuğun bir yere dönüşür.

Gerçekte ne değişiyor

Bu beş modu bir araya koyduğunda çıktının doğası değişir. Eski döngü şuydu: çiz, dışa aktar, çürümesini izle, yeniden çiz. Yeni döngü ise resmin gerçekten oluşturulduğu, anlam için düzenlendiği, koda gidip geldiği, yardım alarak taslağının çıkarıldığı ve canlı paylaşıldığı bir çalışma alanıdır. Somut olarak bu sana statik bir aracın asla veremeyeceği birkaç şey kazandırır:

  • Varsayılan olarak güncel diyagramlar, çünkü kimsenin sahiplenmediği ayrı bir çizimden değil, zaten bakımını yaptığın dosyalardan gelirler.
  • İnsanların güvendiği dokümanlar, çünkü gömülü görünüm geçen çeyrekten kalma bir anlık görüntüyü değil, sistemi yansıtır.
  • Daha hızlı oryantasyon, çünkü resim ve kod aynı hikayeyi anlatır.
  • İncelenebilir görseller, çünkü diyagramın sürüm kontrolünde yaşayan bir kod biçimi vardır.
  • Daha az angarya, çünkü sıkıcı kutu yerleştirme işi otomatik oluşturulur ve insan emeği muhakemeye gider.

Gerektiğinde yine bir mühendislik beyaz tahtası

Bunların hiçbiri serbest çizimin öldüğü anlamına gelmiyor. Bazen bir görüşmede yüksek sesle düşünmek için gerçekten boş bir yüzey ve kabaca elle çizilmiş bir kutu istersin. Bir çalışma alanının amacı bunu kaldırmak değil; kaba taslağın, oluşturulmuş mimarinin ve kod destekli diyagramın hepsinin tek bir yerde yaşamasını sağlamak, böylece ne çizeceğini bilmeden önce aracını seçmek zorunda kalmamak.

Asıl değişim bu. Diyagram çizimi senden bir resmin bakımını yapmanı ister. Bir görsel çalışma alanı ise resmin gerçekle bağını kendisinin korumasını sağlar; böylece asıl işine geri dönebilirsin. Bir tuval aç, gerçek bir şey yapıştır ve farkı izle.

Diyagramların bakımını bırak. Bir çalışma alanı kullanmaya başla.

Tarayıcında bir tuval aç, bir Compose dosyası ya da biraz kod yapıştır ve saniyeler içinde sisteminin canlı, düzenlenebilir bir resmini al.

LetDraw'u ücretsiz aç