Lannisterlar her zaman borçlarını öderler. Lannister'ın sloganı nedir? Yuri Boldyrev, Kremlin'in altındaki küçük blog yazarı Rogers'ı karaladı

Tek ekipte teknolojik borç yönetimi uygulamaları


Yaklaşık bir yıl önce ekibimiz, hızlı özellik geliştirme aşamasından, kaliteyi artırmaya odaklanan daha akıcı bir geliştirme aşamasına geçti. Bu noktada ürünlerimizde gözle görülür miktarda optimalin altında çözümler, çirkin kodlar ve güncelliğini yitirmiş kütüphaneler birikmiştir. Bütün bunlarla ilgili bir şeyler yapılması gerekiyordu.


Bugüne kadar teknik borçla mücadeleyi öngörülebilir, ağrısız ve kaçınılmaz kılan bir süreç inşa etmeyi başardık.


Sonuç olarak elde ettiğimiz şey:

  • Takım mutlu. Sürüm retrospektifinde düzenli olarak teknolojinin iyileştirilmesi ve teknik borcun azaltılmasına ilişkin olumlu noktalar yer alıyor.
  • Art arda birkaç üç aylık sürümde, projedeki kod satırı sayısını artırmadan işlevselliği artırmayı başardık. Gereksiz kodun kaldırılması ve ihtiyaç duyulanın basitleştirilmesi, mevcut işlevsellik için kod tabanının boyutunu azalttı. Ve bu azalma, kabaca, yeni işlevselliği uygulayan yeni kodla aynı zamana denk geldi.
  • Yeniden düzenleme ve yükseltmeler sırasında ürün her zaman çalışır durumdadır. Her iki haftada bir tamamen çalışan bir ara sürüm yayınlıyoruz.

Bunu nasıl başardığımızı anlatayım.

Teknik borç nedir

Teknik borçla ilgili çalışma tanımım, bir projenin ekibin neyin mükemmel olduğuna dair vizyonunu karşılamasını sağlamak için yapılması gereken iş miktarıdır. Teknik borcun yalnızca kalkınmada koltuk değneklerinin liberal kullanımı nedeniyle değil, aynı zamanda güzellikle ilgili fikirlerin değişmesi nedeniyle de ortaya çıkabileceğini unutmayın. Örneğin, yaygın endüstri uygulamaları değişti. Veya geliştiriciler OOP'a aşık oldular ve işlevsel programlamaya aşık oldular. Veya bir zamanlar moda olan çerçeve artık pasta olmaktan çıktı ve üzerine yazı yazmak isteyen uzman bulmak zorlaştı.


Ancak teknik borcun ana nedeni tüm çeşitliliğiyle entropidir. Devre dışı bırakılan birim testleri, kodla bağlantısı kopan eski yorumlar, başarısız mimari kararlar, artık kimsenin kullanmadığı özelliklerin uygulanması, henüz gelmemiş bir gelecek için temel ve çok daha fazlası.


Uzun ömürlü herhangi bir projede teknik borcun ortaya çıkması kaçınılmazdır.

Teknik borç sorun olmadığında

Teknik borç neden kötü? Bir dizi faktörden dolayı daha fazla geliştirme maliyetini artırır:

  • Yeni işlevleri uygulama hızı azalır.
  • Kusurları düzeltirken gerileme olasılığı artar.
  • Geliştirme süreci daha az öngörülebilir ve dolayısıyla daha az yönetilebilir hale gelir.
  • Projeye yeni bir geliştiricinin dahil edilmesi süreci uzuyor.

Bu kayba bazen "teknik borç faizi" adı verilir.


Bu kayıpların teknik borcu ortadan kaldırmaktan daha ucuz olduğu durumlar vardır:

  • Projenin ömrünün sonu yaklaşıyor. Bunun işlevsellik eklemenin sonu olmadığını, ancak programcının çabalarını destek için boşa harcamayı bırakabileceğiniz an olduğunu unutmayın. Bu kategori aynı zamanda tek seferlik prototipleri, sergiler için tek seferlik demoları vb. içerir.
  • Şu anda geliştirme süresinin değeri gelecekte beklenenden çok daha yüksek. Sabit bir son tarihe yönelik acil düzeltmeler, bir sonraki finansman turunda parası biten yeni girişimler vb. Bu gibi durumlarda teknik borcun düzeltilmesi, o anın heyecanı yatışana kadar ertelenebilir. Olağanüstü durumdan çıkmayan projeler var ama bu makaledeki tavsiyelerin yine de onlara faydası olmayacak.

Teknik borçla ne yapmalı? Başarısız yaklaşımlar

1 Numaralı Yaklaşım. “Vaktimiz yok, yayının dün teslim edilmesi gerekiyor”

Yarından sonraki gelişme hızına zarar vererek ne pahasına olursa olsun yarının son teslim tarihine ulaşma arzusu.


Bazen koltuk değneklerinden yapılmış prefabrik bir yapı objektif olarak doğru bir seçimdir. Uygulamamda bu, sergiler için demo versiyonları hazırlarken en açık şekilde ifade edildi. Etkinliğin tarihi kesin olarak sabittir; önemli bir sergiye zamanında yetişemediyseniz bir sonraki girişim bir yıl içinde olacaktır. Bu durumda, tüm hatalardan dikkatlice kaçınarak ürünü "elinizin dışında" sergileyebilirsiniz. Bir mühendis olarak bu tür projeler yapmak benim için hoş değil ama içlerindeki koltuk değneği haklı.


Uzun süre dayanacak bir ürün yaptığınızda her şey farklıdır. Şüpheli teknik çözümler nedeniyle son teslim tarihini karşılamak pahalı bir zevktir. Toplam maliyet:

  1. koltuk değneğinin uygulanmasından,
  2. daha sonra tam teşekküllü bir çözümle değiştirilmesinden itibaren,
  3. Önceki noktalar arasında koltuk değneğine sahip olmanın acısından.

İkinci noktayı hafife almak çok kolaydır ve en pahalı olan üçüncü noktayı hiç düşünmeme riski vardır.


Bir konferansta gözü seğiren bir teknoloji lideriyle karşılaştığınızda, onu bu duruma getiren şeyin koltuk değneklerinden yapılmış bir tasarımda sürekli hata ayıklama kabusu olduğu ortaya çıkabilir.


Yaklaşım No. 2. “Evet, burada her şeyi atıp yeniden yazmamız gerekiyor”

Teknik borç durumu ne kadar kötü olursa, proje kodunun tamamını gömme ve her şeyi yeniden yazma isteği de o kadar güçlü olur. Bu, tüm projeyi sonlandırabilecek klasik hatalardan biridir.


Konu Joel Spolsky'nin ünlü makalesinde o kadar iyi ele alınıyor ki, kendi argümanlarımı sunmanın bir anlamı yok.

3 Numaralı Yaklaşım. "Yöneticinin öğrenmemesi için geceleri ve hafta sonları yeniden düzenleme yapacağız."

Teknik borcun ticari faydalar açısından ortadan kaldırılması gerektiğini tartışmak her zaman kolay değildir. Geliştirme ekibi, pürüzlü kenarların etrafından dolaşıp yerinde büyük bir yeniden düzenlemeye başlama eğiliminde olabilir. Bu, çalışma saatleri dışında, diğer görevler arasındaki duraklamalarda veya tahminleri şişirerek diğer görevlerin "kuyruğunda" yapılabilir.


Bunun nesi kötü? Ah, bir sürü şey:

  • Şeffaflığın azalması, yönetim ile ekip arasındaki güveni zayıflatır. Genellikle disiplin uygulayarak ve vidaları sıkarak durumu düzeltmeye yönelik sonraki girişimler, ekip çalışmasının daha da bozulmasına yol açacaktır.
  • Ekibin ve yönetimin önceliklerinin çatıştığı köklü bir durum, her iki tarafta da motivasyon kaybına neden olur.
  • Yeniden düzenlemenin meyveleri, öngörülemeyen şekillerde ürüne dahil edilir ve beklenmeyen yerlerde regresyon hatalarına neden olur. Bilinçli ekiplerde bu durum QA üzerinde ani ve plansız bir yük oluşmasına neden olur. Bilinçdışında üretime geçer ve orada parçalanır.

Ekip bu tarifi kullandıktan sonra yönetimin gözleri seğirmeye başlar.

İlkelerimiz

1. Genel birikime teknik görevler ekleyin

Projelerdeki görevlerin yaşamında bir dizi kalıp vardır:

  • İş yığınında yer almayan bir görevin işe alınma şansı daha azdır.
  • Açık bir formülasyona sahip olmayan bir görevin işe girme şansı daha azdır.
  • Yüksek derecede güvenle tahmin edilemeyen bir görevin işe girme şansı daha azdır.
  • Büyük bir görev, küçük bir göreve göre kuyrukta daha uzun süre bekleyecektir.

Maxim Dorofeev “Boş Gelen Kutusu Tekniği”nde bu konuları çok güzel anlatıyor


Teknik borcun birikmesini önlemek için yukarıda sıralanan esaslar dikkate alınarak giderilmesine yönelik çalışmaların tamamlanması gerekmektedir.


En küçükleri hariç tüm görevler biriktirme listesinde listelenir. Bu sayede sadece boş zamanlarında değil aynı zamanda planlanan çalışmanın bir parçası olarak da yapılma şansına sahip oluyorlar. Ek olarak, bu tür görevlerin tamamen gözden kaçırılması daha zordur - biriktirilen işlere koddaki TODO'lardan, monitördeki kağıt parçalarından, terk edilmiş wiki sayfalarından, diyagramlı çay lekeli peçetelerden ve diğer şeylerden daha sık ve daha yakından bakılır. bilgi kaynakları.

  • Kodda önemsiz olmayan bir YAPILACAKLAR varsa, bu, biriktirme listesindeki göreve bir bağlantı içerir. Kod incelemesinde bu prensibe uygunluğu kontrol ediyoruz ve referansı olmayan karmaşık TODO'ları kabul etmiyoruz.

    Yorumun arkasında dram olabilir.

    Bir keresinde böyle bir TODO'nun yanında şöyle yazıyordu: “Koltuk değneği. Ürün Sahibi bunu bana yaptırdı. En kısa sürede kaldırın."

  • Bir geliştirici bazı yerlerin yeniden düzenleme gerektirdiğini fark ettiğinde birikimde bir sorun yaratır.
  • Bir geliştiricinin platformu iyileştirme isteği olduğunda birikimde bir görev oluşturur.
  • Uzun vadeli mimari planlar, en azından ilk adımlar konusunda yeterli kesinlik sağlandığı anda, ayrı görevler şeklinde birikmiş listeye alınır.

Bu tür değişiklikler, geliştirme maliyetleri ve gereken test miktarı açısından ucuz kaldığı sürece, iş hedeflerimizi kesintiye uğratmadan veya ek riskler yaratmadan kod tabanımızı kademeli olarak geliştirebiliriz.

2. İş önceliklerine göre teknik öyküler planlayın

Ormanda bir ağaç devrilse ve kimse duymasa ses var mıydı? Bir projede hatalı kod varsa ve o modülün hiçbir zaman değiştirilmesi gerekmeyecekse teknik borç var mıdır?


Bir programcı eski bir modüle bakmayı hoş bulmadığında, bunun kendi başına çok büyük bir sorun olmadığına inanıyorum. Bu modüle yeni işlevsellik eklemeniz veya eskisini genişletmeniz gerektiğinde meydana gelen durum çok daha kötüdür. İyi yazılmış kodda değişiklik yapmakla karşılaştırıldığında, bu tür görevlerin daha olası (ve orijinal tahmini aşma olasılığı daha yüksektir) ve daha fazla hata içermesi daha olasıdır. Bazen çok daha fazlası. Kendimizi bu tür sorunlardan korumak için, yeniden düzenlemeleri aynı yere yeni işlevler yazmadan önce yapılacak şekilde planlamaya çalışıyoruz.


İşlevsellik değişiklikleri ve yeniden düzenleme işlemleri küçük görünüyorsa, bunlar birlikte yapılabilir. Bu yaklaşımın optimal olacağı deneysel olarak seçilen görev boyutu, bir geliştirici veya daha az kişi için 3 günlük çalışmadır. Daha fazla iş olduğu açık olduğunda, mevcut davranışı korurken yeniden düzenleme ve yeni işlevsellik uygulamaya bölünür.


Böylece teknik borcu ortadan kaldırmaya yönelik iş sırası, birikmiş işlerdeki iş görevlerinin sırasına göre belirlenir.


“İş öncelikleri” ilkesinin başka bir uygulaması daha vardır. İyi yazmaya çalışan geliştiricilerin karşılaştığı yaygın sorunlardan biri, performansı optimize etmeye, sürdürülebilirliği iyileştirmeye veya doğrudan çalışma planına dahil edilmeyen diğer şeylere zaman ayırmanın zorluğudur. Bu iyileştirmelere neredeyse her zaman bir iş ihtiyacı vardır. Sistemin daha hızlı, daha istikrarlı çalışmasını ve bakımının daha ucuz olmasını kim istemez? Tüm bu faydalar değerlendirilebilir ve bu değerlendirmeye dayanarak iyileştirme görevleri diğerleriyle birlikte birikmiş iş listesine yerleştirilebilir.


Dolayısıyla, performansı optimize etmek istiyorsanız ancak bunun yerine başka bir sıkıcı hatayı düzeltmeniz gerekiyorsa, belki de optimizasyonun faydalarını ürün sahibinin anlayabileceği bir dilde nasıl açıklayacağınızı bilmiyorsunuzdur.

3. Kodu öncekinden daha temiz bırakın

Çok yakın zamanda yazılanlar dışında hemen hemen her kod, stil ve mimari alanındaki mevcut güzellik fikrinin biraz gerisinde kalıyor. Bir görevin parçası olarak kodu değiştirmeniz gerektiğinde, etkilenen alanda mümkün olan tüm güvenli iyileştirmeleri yapmak iyi bir uygulama olarak kabul edilir. Ne olabilirdi?

  • Modülleri mevcut stile getirmek.
  • Dahili değişken adlarının daha anlaşılır adlarla değiştirilmesi.
  • Davranışı korurken uygulamayı basitleştirin.
  • Diğer modüllere büyük ölçekli değişiklikler getirmeyen yerel yeniden düzenleme.

Bu iyileştirmelerin kodu daha iyi hale getirmesi bekleniyor ancak geliştirme veya test maliyetini önemli ölçüde artırmaması bekleniyor.


Bu prensip nedeniyle, ayrı bir yeniden düzenlemenin planlanmadığı yerlerde bile kodun kalitesi arka planda giderek artar. Üstelik sistemin belirli bir kısmı üzerinde ne kadar sık ​​çalışırsak bu kısma ait kod da o kadar iyi olur. Geliştiricinin en kötü koda sahip parçalar üzerinde en fazla zaman harcadığı projelerle hoş bir tezat.

4. Ne olursa olsun sistem çalışır durumda kalmalıdır.

SCRUM'un temel ilkelerinden biri, her sprint sonunda sistemin kararlı bir duruma ulaşması gerektiğini söylüyor.


“Sprint'in sonunda parçanın hazır olması gerekir, bu da Scrum Takımının hazırlık kriterlerini karşıladığı ve kullanıma hazır olduğu anlamına gelir. Ürün sahibinin piyasaya sürme veya erteleme kararı ne olursa olsun kullanıma hazır olması gerekiyor.”

Teknik borcun ortadan kaldırılmasına yönelik her türlü çalışma bu prensibe uygun olarak yapılır.


Büyük dönüşümler, herhangi bir aşamanın tek bir sprintte tamamlanabilmesi için zorunlu olarak ayrıştırılır. Örneğin, derleme sistemini iki aşamada değiştirdik (Angular 1.x: sürünen web paketi, gizlenen homurdanma)


VCS ile klasik gitflow'a yakın prensiplere göre çalışıyoruz. Özellik dallarında geliştirme yapılıyor, testler orada yapılıyor. Kural olarak, böyle bir dallanma iki haftalık bir sprintten daha uzun sürmez. Daha uzun ömürlü bir şube neredeyse her zaman ek maliyetlere neden olur.


Deneyimlerimiz bu modeli açıkça doğrulamaktadır. İki hafta içinde büyük bir yeniden düzenlemeyi tamamlayamadığımız her seferinde, bu bir acı ve ıstırap oluyordu. Ve görev ne kadar uzunsa ve açık şube ne kadar uzun süre yaşadıysa, iş o kadar yavaş ilerliyordu ve sorunlar da o kadar fazla oluyordu.


Kararlı bir sürümden her zaman birkaç adım uzakta olma ihtiyacı, en zor ve ilginç mühendislik problemlerinden birini yaratır: Stratejik planların en uygun şekilde ayrıştırılmasını bulmak. Büyük ölçekli değişiklikler ayrı, bağımsız adımlara bölünebilir. Avantajlardan mümkün olduğunca erken yararlanmaya başlamanız tavsiye edilir. Bu iş dökümü ne kadar iyi yapılırsa, işin tamamlanma şansı da o kadar artar.

Sürecimiz neye benziyor

Her sürümde bir kez teknik birikimin ayrıntılı bir incelemesini yaparız:

  • İlgisiz hikayeleri kapatıyoruz (alaka düzeyini kaybetmiş, başka bir şeyin parçası olarak yapılmış, kopyalar).
  • Sorunun vizyonunun değiştiği yerde açıklamayı güncelliyoruz.

Ufukta iş hikayeleri belirdiğinde teknik analiz yapılır ve uygulamaya yardımcı olacak tüm teknik hikayeler iş hikayesiyle ilişkilendirilir.


Sprint planlamasına hazırlık olarak:

  • Teknik ve iş hikayeleri arasındaki bağlantıları kontrol ediyoruz.
  • İlgili tüm hataları, aynı yerde ucuza düzeltilebilecek teknik hikayelere bağlarız.

İş yığınının teknik kısmı nasıl oluşturulur?

Ekipte liderlik rolünü üstlendiğimde, her geliştiriciye ve QA'ya üründe en çok hangi iyileştirmeleri yapmak istediklerini sordum. Taleplerin çoğu platformdaki teknik iyileştirmeler ve yeniden düzenlemelerle ilgiliydi. Daha fazla deneyimin gösterdiği gibi, ürünün tüm önemli teknik sorunları bu isteklere dahil edildi. Dolayısıyla bu uygulamayı, hızlı bir şekilde sıfırdan bir teknik birikim oluşturmak veya yeni bir projedeki teknik borcun durumu hakkında genel bir fikir edinmek için kullanabilirsiniz.


Birikmiş iş yükünün mevcut teknik görevlerle doldurulması yukarıda açıklanan uygulamalar nedeniyle gerçekleşir ve ayrı bir çaba veya analiz gerektirmez. Ayrıca ürünün teknik açıdan iyileştirilmesine yönelik yeni fikirler de birikime eklenir. Bu, böyle bir fikirle ortaya çıkan herhangi bir ekip üyesi tarafından yapılır. Bu aşamadaki en önemli şey fikri kaybetmemek. Önceliğin açıklığa kavuşturulması ve belirlenmesi daha sonra iş planlaması sırasında gerçekleşir.

sonuçlar

  • Teknik borç kaçınılmazdır.
  • Çoğu proje için teknik borcun ortadan kaldırılması iyi bir çaba yatırımıdır.
  • Teknik borç giderilmezse geliştirme hızı giderek sıfıra yaklaşacak.
  • Her şeyi bir kenara atıp yeniden yazma isteği, projenizi öldürebilir veya ciddi şekilde sakatlayabilir.
  • Teknik borcun ortadan kaldırılmasının faydaları, ticari faydalar çerçevesinde çerçevelenmelidir; aksi takdirde, yeni işlevsellik yaratmaya yönelik görevlerin her zaman daha önemli görülmesi riski vardır.
  • Teknik borcu ortadan kaldırmaya yönelik görevler yönetilmeye değerdir. Bu tür görevler muhasebe, planlama ve önceliklendirme açısından diğer proje görevlerinden farklı değildir.
  • Teknik borcu azaltabileceğiniz ve bir iş sorununu aynı zamanda ayrı ayrı yapmaktan daha ucuza çözebileceğiniz durumlar düzenli olarak ortaya çıkar. Bu fırsatların kullanılması gerekiyor.
  • Düşünceli ve zamanında güncellenen kod stili kuralları ve inceleme süreçleri, yeni teknik borcun ortaya çıkmasını yavaşlatmaya yardımcı olur.
  • Kısa yinelemeler, yeni işlevler geliştirmek için olduğu kadar yeniden düzenleme için de faydalıdır.
  • Ekip genellikle projedeki teknik borcun nerede olduğunu ve ne kadar kötü olduğunu bilir. Projenin teknik borcu hakkında fikir oluştururken bu bilgiyi kullanmaya değer.

Cevabımda sadece Büyük Evlere değil, hakkında bilgi edinebildiğim diğer bazı evlere de değineceğim.

1.Yıldız anahtar - "Kış geliyor". Barış ve güvenliğin geçici ve yanıltıcı olduğu anlamına gelir; tehlikeyi tam silahla karşılayabilmek için her zaman felaketlere ve savaşlara hazırlıklı olmak gerekir. Westeros'ta kış sadece yıllarca süren bir mevsim değil, aynı zamanda çetin sınavların da sembolüdür. Ve aslında bu slogan sadece Stark Hanedanı'nı değil tüm ülkeyi ilgilendiriyor.

2. Lannisterlar- Lannister Hanesi'nin iki sloganı var gibi görünüyor, biri müthiş armayı onaylıyor -" Kükrememi duy!"İkincisi, bir deyişe eşdeğer, ancak ilkinden çok daha sık ses çıkarıyor - " Lannisterlar her zaman borçlarını öderler". İlk slogan doğrudan armaya atfedilebilir. Lannister arması, aslan başıboş- “kükreyen bir aslan” ve “Kükrememi duy” sloganı onu doğrudan tamamlıyor, aynı zamanda aslanın hayvanların kralı olduğunun ve Lannisterların toplumda yüksek bir konuma sahip olduğunun da kanıtı. "Bir Lannister her zaman borçlarını öder" sözü öncelikle Braavos Demir Bankası ile ilişkilidir. "Demir Banka her zaman hakkını alacaktır." İkincisi, "Bir Lannister her zaman borçlarını öder" demek, Lannisterların kendilerine yardım edenleri asla unutmadıkları ve Lannisterların kendilerine yapılan yanlışları asla affetmediği anlamına gelir.

3. Baratheon - "Biz öfkeliyiz"... aslen Fırtına Burnu'nun Durrandon'larına aitti. Orys Baratheon (Fatih I. Aegon'un gayri meşru kardeşi), Fırtına Toprakları'nın son Lordu Kibirli Argilac'ı öldürerek onun sloganını benimsedi. Ancak bu slogan fazla kelimenin tam anlamıyla tercüme edildi. Veriyor sloganın mantıksal bir çevirisi" Öfke bizim elementimizdir", anlamının açıklanmasıyla birlikte" Öfke bizim elementimizdir, bu şu anlama gelir: Bizi kızdırdığınızda balığı denize atarsınız, orada harika hissedersiniz.“Yani, Baratheon'lar için duyguların soğuk akıl pahasına şiddetli bir şekilde sergilenmesi bir ahlaksızlık değildir.

4. Greyjoy - "Biz ekmiyoruz"Greyjoy'lar çoğunlukla korsandır. Topraklarının toprakları çıplak kayalar ve kum üzerinde yer almaktadır. Bu evin sloganı, Greyjoy'ların (aslında mevcut olmayan) topraklarda çalışmadıklarına dair doğrudan bir mesajdır. Ekim yapmazlar. hiçbir şey yok ve büyümüyorlar, mahsulleri ve ganimetleri olanları soyuyorlar, çünkü kendilerine sahip değiller ve olamıyorlar.

5. Targaryen - "Ateş ve kan". Targaryen sloganı iki şekilde yorumlanabilir. Birincisi - Fatih Aegon ve iki kız kardeşi, üç ejderha üzerinde, "onunla ve kılıçla" olarak adlandırılan Westeros'a boyun eğdirdiler. İkinci seçenek - (yukarıda bahsedilen) gün batımı yalnızlığı) - " Targaryenler ejderha doğumludur, Antik Valyria'nın ve ejderhaların kanına sahiptirler, ayrıca ateşe karşı bağışıklıkları vardır ve ejderhaları evcilleştirirler. Targaryen'ler Ateş ve Kan deyince birdenbire unutanlara hatırlatıyorlar."

6. Arryns - "Onur kadar uzun"Bir yandan Arryn Hanesi, Jon Arryn'in örneğini takip ederek onurunu korumaya önem veriyordu. Jon'un gözünü korkutamaz ya da rüşvet alamazdı. Ve Westeros topraklarında onuru korumaya ondan daha fazla önem veren birini bulmak imkansızdı. Arryn'ler.Fakat Jon'un ölümünden sonra, muhtemelen başka bir seçenek daha geçerli olabilir: aristokratik kibir, daha düşük statüdekileri küçümseme, "neredesin bizden" diyorlar.

7. Tarly - "Savaşta ilk"Bu sloganın da doğruladığı gibi, Tarly Hanesi pek çok büyük savaşçı ve seçkin generaller doğurmuştur.

8. Tully - "Aile, görev, onur"Tully Hanesi her şeyden önce aile bağlarına sadıktır. Görev ve onur onlardan sonra gelir, ancak aile önce gelir. Tully Hanesi, bedelini ödediği Beş Kralın Savaşı'nda Rob Stark'ı destekledi.

9. Martell'ler - "Boyun eğmez, boyun eğmez, boyun eğmez". Bir gurur ve esneklik örneği. Martell'ler, Targaryen'lerin zorla alamadıkları tek hanedir. Ve bu hanenin karakterlerinin davranışlarından onların inatçı ve sarsılmaz oldukları oldukça açıktır. Lordların kanunları, Kralların onayı, kendi başlarınalar ama vazgeçmeye hazır olmadıklarını açıkça gösteriyorlar.

10. Tyrell - "Büyüdükçe güçleniyoruz". Tyrell evinin sloganı, sayısı Westeros'taki hiçbir orduyla kıyaslanamayan orduları tarafından doğrulandı. Tyrell'lerin de biriktirdikleri zenginlik şeklinde bir "yastık" vardı. Palto göz önüne alındığında Bu evin arması bir gülü tasvir ediyor, onunla da küçük bir filizden devasa bir gül fidanına kadar bir paralel çizilebilir.Böylece Tyrell evinin üyeleri yavaş yavaş güç toplayarak konumlarını geliştirdiler ve güçlendirdiler. Ancak Olenna'nın kendisi gibi dedi ki onlar kesinlikle savaşçı değiller.

11. bolton -"Bıçaklarımız keskin". Bu slogan daha çok Bolton ailesinin düşmanlarına (ve sadece değil) bir uyarı görevi görüyor. Bu evin temsilcileri kasvetli bir üne sahip; hatta kitaplarda insan derisinden yapılmış pelerinler giydiler ve kalelerinin duvarlarını bununla süslediler. : “Çıplak bir adamın sırları yoktur, derisi yüzülmüş bir adamın ve hatta daha fazlasının sırrı vardır." "Bıçaklarımız keskindir" - görünüşe göre aynı zamanda etin derisini yüzmek için kullanılan bıçaklar anlamına da gelebilir.

12. Mormont - "İşte buradayız". Sunsetsolitude'a göre slogan da yanlış bir şekilde Rusçaya çevrildi." Burada duruyoruz - "İşte topraklarımız" anlamına gelebilir, bu da "Kimseyi rahatsız etmeyen, kendini kendisi için tanımlayabilen küçük ama gururlu bir ada. İşte bizim topraklarımız, buraya geldiğinizde bunu unutmayın, biz" uyaracaktır." Veya "Bunda ısrarlıyız" şeklinde tercüme edilebilir; bu da Mormont'un inatçılığının gücünün doğrudan bir göstergesi olacaktır."

13. Frey - "Omuz omuza duruyoruz"Frey'ler aile bağlarına ve bu kelimenin dokunulmazlığına değer veriyorlardı ve bu slogan da bunu yansıtıyordu. Buradan Walder Frey'in, kızıyla evlenme sözünü bozan Rob Stark'a karşı anlatılamaz bir kin besliyordu ve bu da üzücü sonuçlara yol açtı.

"Bir Lannister her zaman borçlarını öder." © FFG ( Jason A.Engle)

"Lannisterlar her zaman borçlarını öderler"(Ayrıca: "Bir Lannister her zaman borçlarını öder" dinle)) Yedi Krallık'ta Lannister Hanesi hakkında popüler bir deyiş ve Tyrion Lannister'ın en sevdiği ifadedir. Evin "resmi" sloganı kadar ünlüdür: "Kükrememi duy!" Bu ifadenin çift anlamı vardır. Bir yandan bu, eyaletteki en zengin aile olan Lannisterların her zaman fatura ödemeye, onlara yardım edenlere teşekkür etmeye veya gelecekte ödüller vaat etmeye hazır olduğu anlamına gelir; ailenin cömertliğine ve bağlılığına her zaman güvenebilirsiniz. “aslanlar”. Ancak bu sloganın ikinci, tehditkar bir anlamı da var: Lannisterlar kendilerine yapılan hakaretleri unutmuyor ve suçlulardan kesinlikle intikam alacaklar.

Cersei Lannister'ın ağzından bu söz Tyrion'a karşı yapılan bir konuşmada çıkmıştı - Cersei kardeşini kendisine ve Joffrey'e karşı entrikalarla suçladı ve yakalanan Alaya'ya şantaj yapmaya çalıştı. Daha sonra kendini devletin başında bulan Cersei, Braavos Demir Bankası'na olan kamu borçlarını ödemeyi bırakma kararını haklı çıkarmak için aynı sözleri kullandı - Lannisterlar her zaman borçlarını öderler ve bu borç er ya da geç ödenecektir. Daha sonra Balman Birch ve Falisa Stokeworth ile yaptığı bir diyalogda bu sözden bahsetti, yardımları için onlara bir ödül vaat etti ve ardından onu kandırmaya çalışan Tyroshi'yi "Lannisterlar borçlarını öder, sen de ödeyeceksin" sözleriyle celladın yanına gönderdi. fazla."

Tywin Lannister, Tyrion'la yaptığı bir konuşmada bu sözden bahsetmiş ve Harrenhal'ın Petyr Baelish'e verilmesi gerektiğini gerekçelendirmişti çünkü kendisi bunu istemişti. Tyrion hemen borçlarla ilgili sözlerini tekrarladı ve El olarak yaptığı hizmetlerden dolayı kendisine bir ödül talep etti. Shae bu sözü tekrarlayarak Tyrion'a onu şehirdeki eve geri koyma sözünü hatırlattı. Batılıların Robb Stark'a iltica ettiğini öğrenen Tyrion, kendi kendine Tywin'in hainleri kesinlikle cezalandıracağını düşündü ve bu sözü hatırladı.

Jaime Lannister, Urswick'i zenginlikle baştan çıkarmaya çalışarak onu hatırlattı ve daha sonra elini kaybettikten sonra bu sözü kendi kendine tekrarlayarak intikam susuzluğunu ve yaşama arzusunu körükledi. Yolculuklarının başında Robin Rieger'in kadırgasının batmasına minnettar olarak Tarth'lı Brienne'e onu tecavüzden kurtardığını söyledi ve bu sözü bir kez daha hatırladı. Daha sonra Varys ile yaptığı bir konuşmada bu sözleri tekrarladı ve böylece Tyrion'u serbest bırakma arzusunu açıkladı. Edmure Tully'yi Nehirova'nın duvarlarındaki iskeleden çıkardıktan sonra Jaime kendi kendine şöyle düşündü: "Lannisterlar borçlarını ödüyor ve sen elimde kalan tek parasın."

Edmure Tully, Rickard Karstark'ın Willem Lannister ve Theon Frey'i öldürdüğünü öğrendiğinde bu sözü bizzat hatırladı. Harrenhal'ı terk edip Vargo Howth'a bırakma niyetinden bahseden Roose Bolton, "Borçlarını ödeyenler yalnızca Lannisterlar değil" dedi. Jaime, kaleden ayrılırken Cesur Oğlanlar'a veda ederken onlardan intikam alacağını ima ederek bu sözü tekrarladı ve ardından Brienne için kaleye dönerek aynı sözleri Vargo Haught'a da söyleyerek onu alacağını söyledi. Jaime ve Brienne için fidye

Tek ekipte teknolojik borç yönetimi uygulamaları


Yaklaşık bir yıl önce ekibimiz, hızlı özellik geliştirme aşamasından, kaliteyi artırmaya odaklanan daha akıcı bir geliştirme aşamasına geçti. Bu noktada ürünlerimizde gözle görülür miktarda optimalin altında çözümler, çirkin kodlar ve güncelliğini yitirmiş kütüphaneler birikmiştir. Bütün bunlarla ilgili bir şeyler yapılması gerekiyordu.


Bugüne kadar teknik borçla mücadeleyi öngörülebilir, ağrısız ve kaçınılmaz kılan bir süreç inşa etmeyi başardık.


Sonuç olarak elde ettiğimiz şey:

  • Takım mutlu. Sürüm retrospektifinde düzenli olarak teknolojinin iyileştirilmesi ve teknik borcun azaltılmasına ilişkin olumlu noktalar yer alıyor.
  • Art arda birkaç üç aylık sürümde, projedeki kod satırı sayısını artırmadan işlevselliği artırmayı başardık. Gereksiz kodun kaldırılması ve ihtiyaç duyulanın basitleştirilmesi, mevcut işlevsellik için kod tabanının boyutunu azalttı. Ve bu azalma, kabaca, yeni işlevselliği uygulayan yeni kodla aynı zamana denk geldi.
  • Yeniden düzenleme ve yükseltmeler sırasında ürün her zaman çalışır durumdadır. Her iki haftada bir tamamen çalışan bir ara sürüm yayınlıyoruz.

Bunu nasıl başardığımızı anlatayım.

Teknik borç nedir

Teknik borçla ilgili çalışma tanımım, bir projenin ekibin neyin mükemmel olduğuna dair vizyonunu karşılamasını sağlamak için yapılması gereken iş miktarıdır. Teknik borcun yalnızca kalkınmada koltuk değneklerinin liberal kullanımı nedeniyle değil, aynı zamanda güzellikle ilgili fikirlerin değişmesi nedeniyle de ortaya çıkabileceğini unutmayın. Örneğin, yaygın endüstri uygulamaları değişti. Veya geliştiriciler OOP'a aşık oldular ve işlevsel programlamaya aşık oldular. Veya bir zamanlar moda olan çerçeve artık pasta olmaktan çıktı ve üzerine yazı yazmak isteyen uzman bulmak zorlaştı.


Ancak teknik borcun ana nedeni tüm çeşitliliğiyle entropidir. Devre dışı bırakılan birim testleri, kodla bağlantısı kopan eski yorumlar, başarısız mimari kararlar, artık kimsenin kullanmadığı özelliklerin uygulanması, henüz gelmemiş bir gelecek için temel ve çok daha fazlası.


Uzun ömürlü herhangi bir projede teknik borcun ortaya çıkması kaçınılmazdır.

Teknik borç sorun olmadığında

Teknik borç neden kötü? Bir dizi faktörden dolayı daha fazla geliştirme maliyetini artırır:

  • Yeni işlevleri uygulama hızı azalır.
  • Kusurları düzeltirken gerileme olasılığı artar.
  • Geliştirme süreci daha az öngörülebilir ve dolayısıyla daha az yönetilebilir hale gelir.
  • Projeye yeni bir geliştiricinin dahil edilmesi süreci uzuyor.

Bu kayba bazen "teknik borç faizi" adı verilir.


Bu kayıpların teknik borcu ortadan kaldırmaktan daha ucuz olduğu durumlar vardır:

  • Projenin ömrünün sonu yaklaşıyor. Bunun işlevsellik eklemenin sonu olmadığını, ancak programcının çabalarını destek için boşa harcamayı bırakabileceğiniz an olduğunu unutmayın. Bu kategori aynı zamanda tek seferlik prototipleri, sergiler için tek seferlik demoları vb. içerir.
  • Şu anda geliştirme süresinin değeri gelecekte beklenenden çok daha yüksek. Sabit bir son tarihe yönelik acil düzeltmeler, bir sonraki finansman turunda parası biten yeni girişimler vb. Bu gibi durumlarda teknik borcun düzeltilmesi, o anın heyecanı yatışana kadar ertelenebilir. Olağanüstü durumdan çıkmayan projeler var ama bu makaledeki tavsiyelerin yine de onlara faydası olmayacak.

Teknik borçla ne yapmalı? Başarısız yaklaşımlar

1 Numaralı Yaklaşım. “Vaktimiz yok, yayının dün teslim edilmesi gerekiyor”

Yarından sonraki gelişme hızına zarar vererek ne pahasına olursa olsun yarının son teslim tarihine ulaşma arzusu.


Bazen koltuk değneklerinden yapılmış prefabrik bir yapı objektif olarak doğru bir seçimdir. Uygulamamda bu, sergiler için demo versiyonları hazırlarken en açık şekilde ifade edildi. Etkinliğin tarihi kesin olarak sabittir; önemli bir sergiye zamanında yetişemediyseniz bir sonraki girişim bir yıl içinde olacaktır. Bu durumda, tüm hatalardan dikkatlice kaçınarak ürünü "elinizin dışında" sergileyebilirsiniz. Bir mühendis olarak bu tür projeler yapmak benim için hoş değil ama içlerindeki koltuk değneği haklı.


Uzun süre dayanacak bir ürün yaptığınızda her şey farklıdır. Şüpheli teknik çözümler nedeniyle son teslim tarihini karşılamak pahalı bir zevktir. Toplam maliyet:

  1. koltuk değneğinin uygulanmasından,
  2. daha sonra tam teşekküllü bir çözümle değiştirilmesinden itibaren,
  3. Önceki noktalar arasında koltuk değneğine sahip olmanın acısından.

İkinci noktayı hafife almak çok kolaydır ve en pahalı olan üçüncü noktayı hiç düşünmeme riski vardır.


Bir konferansta gözü seğiren bir teknoloji lideriyle karşılaştığınızda, onu bu duruma getiren şeyin koltuk değneklerinden yapılmış bir tasarımda sürekli hata ayıklama kabusu olduğu ortaya çıkabilir.


Yaklaşım No. 2. “Evet, burada her şeyi atıp yeniden yazmamız gerekiyor”

Teknik borç durumu ne kadar kötü olursa, proje kodunun tamamını gömme ve her şeyi yeniden yazma isteği de o kadar güçlü olur. Bu, tüm projeyi sonlandırabilecek klasik hatalardan biridir.


Konu Joel Spolsky'nin ünlü makalesinde o kadar iyi ele alınıyor ki, kendi argümanlarımı sunmanın bir anlamı yok.

3 Numaralı Yaklaşım. "Yöneticinin öğrenmemesi için geceleri ve hafta sonları yeniden düzenleme yapacağız."

Teknik borcun ticari faydalar açısından ortadan kaldırılması gerektiğini tartışmak her zaman kolay değildir. Geliştirme ekibi, pürüzlü kenarların etrafından dolaşıp yerinde büyük bir yeniden düzenlemeye başlama eğiliminde olabilir. Bu, çalışma saatleri dışında, diğer görevler arasındaki duraklamalarda veya tahminleri şişirerek diğer görevlerin "kuyruğunda" yapılabilir.


Bunun nesi kötü? Ah, bir sürü şey:

  • Şeffaflığın azalması, yönetim ile ekip arasındaki güveni zayıflatır. Genellikle disiplin uygulayarak ve vidaları sıkarak durumu düzeltmeye yönelik sonraki girişimler, ekip çalışmasının daha da bozulmasına yol açacaktır.
  • Ekibin ve yönetimin önceliklerinin çatıştığı köklü bir durum, her iki tarafta da motivasyon kaybına neden olur.
  • Yeniden düzenlemenin meyveleri, öngörülemeyen şekillerde ürüne dahil edilir ve beklenmeyen yerlerde regresyon hatalarına neden olur. Bilinçli ekiplerde bu durum QA üzerinde ani ve plansız bir yük oluşmasına neden olur. Bilinçdışında üretime geçer ve orada parçalanır.

Ekip bu tarifi kullandıktan sonra yönetimin gözleri seğirmeye başlar.

İlkelerimiz

1. Genel birikime teknik görevler ekleyin

Projelerdeki görevlerin yaşamında bir dizi kalıp vardır:

  • İş yığınında yer almayan bir görevin işe alınma şansı daha azdır.
  • Açık bir formülasyona sahip olmayan bir görevin işe girme şansı daha azdır.
  • Yüksek derecede güvenle tahmin edilemeyen bir görevin işe girme şansı daha azdır.
  • Büyük bir görev, küçük bir göreve göre kuyrukta daha uzun süre bekleyecektir.

Maxim Dorofeev “Boş Gelen Kutusu Tekniği”nde bu konuları çok güzel anlatıyor


Teknik borcun birikmesini önlemek için yukarıda sıralanan esaslar dikkate alınarak giderilmesine yönelik çalışmaların tamamlanması gerekmektedir.


En küçükleri hariç tüm görevler biriktirme listesinde listelenir. Bu sayede sadece boş zamanlarında değil aynı zamanda planlanan çalışmanın bir parçası olarak da yapılma şansına sahip oluyorlar. Ek olarak, bu tür görevlerin tamamen gözden kaçırılması daha zordur - biriktirilen işlere koddaki TODO'lardan, monitördeki kağıt parçalarından, terk edilmiş wiki sayfalarından, diyagramlı çay lekeli peçetelerden ve diğer şeylerden daha sık ve daha yakından bakılır. bilgi kaynakları.

  • Kodda önemsiz olmayan bir YAPILACAKLAR varsa, bu, biriktirme listesindeki göreve bir bağlantı içerir. Kod incelemesinde bu prensibe uygunluğu kontrol ediyoruz ve referansı olmayan karmaşık TODO'ları kabul etmiyoruz.

    Yorumun arkasında dram olabilir.

    Bir keresinde böyle bir TODO'nun yanında şöyle yazıyordu: “Koltuk değneği. Ürün Sahibi bunu bana yaptırdı. En kısa sürede kaldırın."

  • Bir geliştirici bazı yerlerin yeniden düzenleme gerektirdiğini fark ettiğinde birikimde bir sorun yaratır.
  • Bir geliştiricinin platformu iyileştirme isteği olduğunda birikimde bir görev oluşturur.
  • Uzun vadeli mimari planlar, en azından ilk adımlar konusunda yeterli kesinlik sağlandığı anda, ayrı görevler şeklinde birikmiş listeye alınır.

Bu tür değişiklikler, geliştirme maliyetleri ve gereken test miktarı açısından ucuz kaldığı sürece, iş hedeflerimizi kesintiye uğratmadan veya ek riskler yaratmadan kod tabanımızı kademeli olarak geliştirebiliriz.

2. İş önceliklerine göre teknik öyküler planlayın

Ormanda bir ağaç devrilse ve kimse duymasa ses var mıydı? Bir projede hatalı kod varsa ve o modülün hiçbir zaman değiştirilmesi gerekmeyecekse teknik borç var mıdır?


Bir programcı eski bir modüle bakmayı hoş bulmadığında, bunun kendi başına çok büyük bir sorun olmadığına inanıyorum. Bu modüle yeni işlevsellik eklemeniz veya eskisini genişletmeniz gerektiğinde meydana gelen durum çok daha kötüdür. İyi yazılmış kodda değişiklik yapmakla karşılaştırıldığında, bu tür görevlerin daha olası (ve orijinal tahmini aşma olasılığı daha yüksektir) ve daha fazla hata içermesi daha olasıdır. Bazen çok daha fazlası. Kendimizi bu tür sorunlardan korumak için, yeniden düzenlemeleri aynı yere yeni işlevler yazmadan önce yapılacak şekilde planlamaya çalışıyoruz.


İşlevsellik değişiklikleri ve yeniden düzenleme işlemleri küçük görünüyorsa, bunlar birlikte yapılabilir. Bu yaklaşımın optimal olacağı deneysel olarak seçilen görev boyutu, bir geliştirici veya daha az kişi için 3 günlük çalışmadır. Daha fazla iş olduğu açık olduğunda, mevcut davranışı korurken yeniden düzenleme ve yeni işlevsellik uygulamaya bölünür.


Böylece teknik borcu ortadan kaldırmaya yönelik iş sırası, birikmiş işlerdeki iş görevlerinin sırasına göre belirlenir.


“İş öncelikleri” ilkesinin başka bir uygulaması daha vardır. İyi yazmaya çalışan geliştiricilerin karşılaştığı yaygın sorunlardan biri, performansı optimize etmeye, sürdürülebilirliği iyileştirmeye veya doğrudan çalışma planına dahil edilmeyen diğer şeylere zaman ayırmanın zorluğudur. Bu iyileştirmelere neredeyse her zaman bir iş ihtiyacı vardır. Sistemin daha hızlı, daha istikrarlı çalışmasını ve bakımının daha ucuz olmasını kim istemez? Tüm bu faydalar değerlendirilebilir ve bu değerlendirmeye dayanarak iyileştirme görevleri diğerleriyle birlikte birikmiş iş listesine yerleştirilebilir.


Dolayısıyla, performansı optimize etmek istiyorsanız ancak bunun yerine başka bir sıkıcı hatayı düzeltmeniz gerekiyorsa, belki de optimizasyonun faydalarını ürün sahibinin anlayabileceği bir dilde nasıl açıklayacağınızı bilmiyorsunuzdur.

3. Kodu öncekinden daha temiz bırakın

Çok yakın zamanda yazılanlar dışında hemen hemen her kod, stil ve mimari alanındaki mevcut güzellik fikrinin biraz gerisinde kalıyor. Bir görevin parçası olarak kodu değiştirmeniz gerektiğinde, etkilenen alanda mümkün olan tüm güvenli iyileştirmeleri yapmak iyi bir uygulama olarak kabul edilir. Ne olabilirdi?

  • Modülleri mevcut stile getirmek.
  • Dahili değişken adlarının daha anlaşılır adlarla değiştirilmesi.
  • Davranışı korurken uygulamayı basitleştirin.
  • Diğer modüllere büyük ölçekli değişiklikler getirmeyen yerel yeniden düzenleme.

Bu iyileştirmelerin kodu daha iyi hale getirmesi bekleniyor ancak geliştirme veya test maliyetini önemli ölçüde artırmaması bekleniyor.


Bu prensip nedeniyle, ayrı bir yeniden düzenlemenin planlanmadığı yerlerde bile kodun kalitesi arka planda giderek artar. Üstelik sistemin belirli bir kısmı üzerinde ne kadar sık ​​çalışırsak bu kısma ait kod da o kadar iyi olur. Geliştiricinin en kötü koda sahip parçalar üzerinde en fazla zaman harcadığı projelerle hoş bir tezat.

4. Ne olursa olsun sistem çalışır durumda kalmalıdır.

SCRUM'un temel ilkelerinden biri, her sprint sonunda sistemin kararlı bir duruma ulaşması gerektiğini söylüyor.


“Sprint'in sonunda parçanın hazır olması gerekir, bu da Scrum Takımının hazırlık kriterlerini karşıladığı ve kullanıma hazır olduğu anlamına gelir. Ürün sahibinin piyasaya sürme veya erteleme kararı ne olursa olsun kullanıma hazır olması gerekiyor.”

Teknik borcun ortadan kaldırılmasına yönelik her türlü çalışma bu prensibe uygun olarak yapılır.


Büyük dönüşümler, herhangi bir aşamanın tek bir sprintte tamamlanabilmesi için zorunlu olarak ayrıştırılır. Mesela montaj sistemini iki aşamada değiştirdik ()


VCS ile klasik gitflow'a yakın prensiplere göre çalışıyoruz. Özellik dallarında geliştirme yapılıyor, testler orada yapılıyor. Kural olarak, böyle bir dallanma iki haftalık bir sprintten daha uzun sürmez. Daha uzun ömürlü bir şube neredeyse her zaman ek maliyetlere neden olur.


Deneyimlerimiz bu modeli açıkça doğrulamaktadır. İki hafta içinde büyük bir yeniden düzenlemeyi tamamlayamadığımız her seferinde, bu bir acı ve ıstırap oluyordu. Ve görev ne kadar uzunsa ve açık şube ne kadar uzun süre yaşadıysa, iş o kadar yavaş ilerliyordu ve sorunlar da o kadar fazla oluyordu.


Kararlı bir sürümden her zaman birkaç adım uzakta olma ihtiyacı, en zor ve ilginç mühendislik problemlerinden birini yaratır: Stratejik planların en uygun şekilde ayrıştırılmasını bulmak. Büyük ölçekli değişiklikler ayrı, bağımsız adımlara bölünebilir. Avantajlardan mümkün olduğunca erken yararlanmaya başlamanız tavsiye edilir. Bu iş dökümü ne kadar iyi yapılırsa, işin tamamlanma şansı da o kadar artar.

Sürecimiz neye benziyor

Her sürümde bir kez teknik birikimin ayrıntılı bir incelemesini yaparız:

  • İlgisiz hikayeleri kapatıyoruz (alaka düzeyini kaybetmiş, başka bir şeyin parçası olarak yapılmış, kopyalar).
  • Sorunun vizyonunun değiştiği yerde açıklamayı güncelliyoruz.

Ufukta iş hikayeleri belirdiğinde teknik analiz yapılır ve uygulamaya yardımcı olacak tüm teknik hikayeler iş hikayesiyle ilişkilendirilir.


Sprint planlamasına hazırlık olarak:

  • Teknik ve iş hikayeleri arasındaki bağlantıları kontrol ediyoruz.
  • İlgili tüm hataları, aynı yerde ucuza düzeltilebilecek teknik hikayelere bağlarız.

İş yığınının teknik kısmı nasıl oluşturulur?

Ekipte liderlik rolünü üstlendiğimde, her geliştiriciye ve QA'ya üründe en çok hangi iyileştirmeleri yapmak istediklerini sordum. Taleplerin çoğu platformdaki teknik iyileştirmeler ve yeniden düzenlemelerle ilgiliydi. Daha fazla deneyimin gösterdiği gibi, ürünün tüm önemli teknik sorunları bu isteklere dahil edildi. Dolayısıyla bu uygulamayı, hızlı bir şekilde sıfırdan bir teknik birikim oluşturmak veya yeni bir projedeki teknik borcun durumu hakkında genel bir fikir edinmek için kullanabilirsiniz.


Birikmiş iş yükünün mevcut teknik görevlerle doldurulması yukarıda açıklanan uygulamalar nedeniyle gerçekleşir ve ayrı bir çaba veya analiz gerektirmez. Ayrıca ürünün teknik açıdan iyileştirilmesine yönelik yeni fikirler de birikime eklenir. Bu, böyle bir fikirle ortaya çıkan herhangi bir ekip üyesi tarafından yapılır. Bu aşamadaki en önemli şey fikri kaybetmemek. Önceliğin açıklığa kavuşturulması ve belirlenmesi daha sonra iş planlaması sırasında gerçekleşir.

sonuçlar

  • Teknik borç kaçınılmazdır.
  • Çoğu proje için teknik borcun ortadan kaldırılması iyi bir çaba yatırımıdır.
  • Teknik borç giderilmezse geliştirme hızı giderek sıfıra yaklaşacak.
  • Her şeyi bir kenara atıp yeniden yazma isteği, projenizi öldürebilir veya ciddi şekilde sakatlayabilir.
  • Teknik borcun ortadan kaldırılmasının faydaları, ticari faydalar çerçevesinde çerçevelenmelidir; aksi takdirde, yeni işlevsellik yaratmaya yönelik görevlerin her zaman daha önemli görülmesi riski vardır.
  • Teknik borcu ortadan kaldırmaya yönelik görevler yönetilmeye değerdir. Bu tür görevler muhasebe, planlama ve önceliklendirme açısından diğer proje görevlerinden farklı değildir.
  • Teknik borcu azaltabileceğiniz ve bir iş sorununu aynı zamanda ayrı ayrı yapmaktan daha ucuza çözebileceğiniz durumlar düzenli olarak ortaya çıkar. Bu fırsatların kullanılması gerekiyor.
  • Düşünceli ve zamanında güncellenen kod stili kuralları ve inceleme süreçleri, yeni teknik borcun ortaya çıkmasını yavaşlatmaya yardımcı olur.
  • Kısa yinelemeler, yeni işlevler geliştirmek için olduğu kadar yeniden düzenleme için de faydalıdır.
  • Ekip genellikle projedeki teknik borcun nerede olduğunu ve ne kadar kötü olduğunu bilir. Projenin teknik borcu hakkında fikir oluştururken bu bilgiyi kullanmaya değer.

KATEGORİLER

POPÜLER MAKALELER

2024 “kingad.ru” - insan organlarının ultrason muayenesi