Merhaba arkadaşlar, bu postta yazılım kültürü, takım standartları gibi kavramlar hakkındaki düşüncelerimi sizlere aktarmaya çalışacağım. Yazacaklarım hem kendi deneyimlerim, hem okuduklarım, hemde düşüncelerimin karışımı şeklinde olacak.
Öncelikle yazılım kültürü, çalışılan kurumun kültürü ile paralel ilerleyen bir takım prensiplerin bütünüdür. Bu konuda kafa yoran insanlar tarafından her gün geliştirilmeye, farklı bakış açıları getirilmeye çalışılmaktadır.
Sizin kültür ve standartlarınız nasıl iş yaptığınızı , hem kendi personelinize hemde müşterilerinize anlatmanın en iyi yoludur.
Bu kültür ve standartlar , işleri efektif ve sürdürülebilir şekilde, hedefler doğrultusunda çözmeyi amaçlar.
Çalıştığımız yerlerde, bizlerde bulunduğumuz kuruma, takıma göre standartları geliştirebilir, bunları uygulamaya çalışabiliriz. Tabii ki bu tarz geçişler zorlu olabilir fakat iyi niyet ve kararlılıkla engeller aşılarak hem kurumun hem ekibin başka bir seviyeye geçmesi sağlanabilir.
Öncelikle kültür ve standartlarınız oluşturmak ve bunları uygulamak istiyorsanız, nasıl insanlar ile çalışmak istediğinize karar vermeli ve bu kararları paylaşarak takip etmelisiniz.
Personel alımında belirlediğiniz kurallara bağlı kalarak, uyumlu, kendi içerisinde tartışarak her gün daha iyiye gitmeyi hedefleyen ekipler oluşturmalısınız.
İş süreçlerinizi net bir şekilde ortaya koyarak, teknik standartlarınızı bu süreçlere dahil etmelisiniz. Eğer bir yazılım firması iseniz teknik standartlarınıza, işlerinizi dahil etmelisiniz.
Günümüzde bilginin insanlara kolayca ve hızlıca paylaşıldığını düşünerek kurumsal hesaplarınızı olabildiğince şeffaf, dürüst ve eleştirilebilir bir şekilde yönetmelisiniz.
Personel ve müşterinize dürüst davranmalı güven kaybı oluşturma malısınız.
Çalışanınıza mümkün olduğunca teşvik edici davranarak gelişmesini sağlamaya çalışmalı, bir kişinin gelişmesinin takımı, takımın gelişmesinin kurumu geliştireceğini fark etmelisiniz.
Bir takım olduğunuz unutmadan başarının ve başarısızlığını tüm takımı etkilediğinin farkına varmalısınız.
Sizde yazılım takım standartlarınızı ve manifestonuzu belirlemek isterseniz, Lemi Orhan Engin’in paylaştığı maddelerden referans noktası elde edebilirsiniz. Bu yazıdaki her madde gerçekte çok önemli fakat en önemli bir kaç maddeyi kesinlikle yazılım geliştirme standartlarınızın içerisine dahil etmeniz gerektiğini düşünüyorum. Bunlar;
- Kodun sahibi bireyler değil, takımlardır. [Collective Ownership]
- Başkası tarafından incelenmemiş (code review) ya da eşli programlama (pair programming) ile geliştirilmemiş kodu canlıya çıkmayız. [Release Procedure]
- Test/kod kapsamını daima gözlem altında tutarız ve düzenli olarak artmasını amaçlarız. [Test Coverage]
- Programlarken tavsiye edilen pratikleri uygularız. [Programming Best Practices]
- Temiz kod prensiplerini takip ederiz. Okunaklı test kodu ve kaynak kodu geliştirmeye odaklanırız. [Clean Code Principles]
- Kullandığımız editör/IDE’yi, komut satırını, build araçlarını, kod analiz araçlarını, Git ve Vagrant’ı ileri düzeyde bilir ve kullanırız. [Tools in Craftsmanship]
- Sürüm çıkmak ve geliştirmek konularında önerilen standartlara uyarız. [Release & Version Management]
- Testleri olabildiğince otomatikleştiririz (ve daha çok otomatikleştirmek için yollar ararız). [Automatization]
- Herhangi bir teknoloji konusunda saplantılı olmayız. İhtiyaçlarımıza uyan teknolojiyi kullanırız. [Openmindness]
- Teknik borcu olabildiği kadar erken öderiz. Var olan teknik borçları gelecekte ödemek üzere ayrı bir backlog üzerinde kaydederiz. [Technical Debt]
- Eski kod ve tasarımları sürekli yenileriz. Takım olarak sürekli teknik iyileştirme önerileri sunarız. [Refactoring]
- Düzenli olarak toplanır teknik sorunları tartışırız. Farklı sistemlerin ortak sorunlarına kalıcı ortak çözümler araştırırız. [Common Solutions]
- Bilgimizi eğitimlerle, bizzat çalışarak ve başkaları ile paylaşarak arttırırız. [Knowledge Sharing]
- Eğer sizi yavaşlatan bir sorun varsa, 1 günden fazla beklemeyiz. Mutlaka yardım talep ederiz. [Collaboration]
- Hatalar ve olası sorunlar nedeniyle kimseyi suçlamayız. [No Blame Rule]
- Bireysel performanstan ziyade takım performansına önem veririz. Daima yardımlaşır ve bilgi paylaşırız. [Performance Appraisals]
- Takımca tasarlar, takımca geliştirir ve aldığımız kararların sorumluluğunu takımca alırız. [Shared Responsibility]
Sizde kendiniz ve kurumunuz için önemli değerleri belirleyerek, bu değerler doğrultusunda kendi standartlarınız oluşturabilirsiniz. Tabii ki bu standartları oluşturmak ile iş bitmiyor, önemli olan bu standartları belirli aralıklarla tartışarak, gerekirse güncelleyerek, kararlılıkla uygulamaya çalışmaktır.
Umarım faydalı bir yazı olmuş, kültürün ve standartların önemini anlatabilmişimdir.
Herkese iyi hafta sonları…
Kaynakça