17 Aralık 2012 Pazartesi

Hiç ilkeleri olmayan yazılım takımı olur mu?

Toplam kalite yönetimi uygulayan şirketlerin çoğunun girişinde tabelalar üzerinde büyük puntolarla şirketin misyonu ve vizyonu yazar. Şirketin ilkeleri ve ulaşmak istediği nihai hedef açık seçik belirtilir ki, şirketin ne amaçladığı, yaşatılmak istenen kurum kültürünün ne olduğu çalışan çalışmayan herkes tarafından bilinsin. Tüm stratejiler bu ilkeler çerçevesinde oluşturulur. İlkelerin benimsenmesi için çalışanlar eğitilir ve amaca hizmet edecek aktiviteler gerçekleştirilir. Misyon ve vizyon, şirketlerin "ben buyum ve bu olmak istiyorum" dedikleri ulvi ilke ve amaçlardır.


Yazılım geliştirmek, özellikle de takım halinde yazılım geliştirmek belli bir disipline sahip olmayı gerektirir. Hızla değişen yazılım dünyasına, ışık hızında gelişen teknolojilere, projelerin türlü ihtiyaçlarına ayak uydururken kalıcı, dayanıklı, esnek ve kaliteli yazılım geliştirmek için elinizde size yol gösterecek tek şey yazılım ilkeleridir. Yazılım ilkeleriniz sizin, takımınızın ve kurumunuzun misyon ve vizyonudur. "Ben şu şekilde yazılım geliştiriyorum" diye anlatabileceğiniz kültürdür, disiplindir.

Yazılım geliştiren her takım ya da kurum yazılım ilkelerini belirlemeli, takip edeceği disiplini oluşturmalıdır. Çalışanlarından da bu ilkelere uymasını beklemelidir. İlkeleri esnetmemeli, herkesten aynı hassasiyeti beklemelidir.

Nasıl yazılım geliştiriyorsunuz diye sormuştum geçenlerde. Başka bir şekilde sorayım: İlkeleriniz nedir? Hangi disiplinleri uyguluyorsunuz? Yazılım kültürünüz ana hatlarıyla nedir?

Size ipuçları vermiştim. Şimdi ise biraz daha detaya gireyim, sorduğum soruya verdiğim cevabımı ana başlıklarıyla sizlerle paylaşayım.
Yazılım geliştirme manifestom
Aşağıda belirtilen ilkeler, Agile Manifesto ve Software Craftsmanship Manifesto üzerine değer verdiğim ilkelerden oluşmaktadır. 
Yetenekli, motive ve yenilikçi yazılım geliştirme profesyonelleri olarak bizler, sorunsuz çalışan, iyi tasarlanmış, yüksek kaliteli yazılım geliştirmeyi amaçladık. Bu amaca ulaşmak için en iyi teknik ve teknolojileri kullanırız ve aşağıdaki değerlere odaklanırız. Bizler...
  • İyi tasarlanmış, okunaklı, anlaşılabilir, temiz, iyi test edilmiş ve daima değişikliklere ayak uydurabilecek yazılım geliştiren...
  • Anlaşılır, kapsamlı ve detaylı ama yeterli analiz ve belgeleme yapan...
  • Sürekli öğrenen, yeteneklerini geliştiren, en iyi pratikleri uygulayan, bilgisini başkaları ile paylaşmaktan zevk alan ve proaktif olarak gözlemleyen ve sorunları çözen çalışanlarız.
Biliyoruz, bu değerlere sahip olmak hiç de kolay değil. Ama aşağıda belirtilen prensipleri takip ederek bunu başabileceğimize inanıyoruz.
  • Kodlama ve analizde şirket standartlarını kullanırız.
  • Başkası tarafından incelenmemiş (code review) ya da eşli programlama (pair programming) ile geliştirilmemiş kodu canlıya çıkmayız.
  • Test/kod kapsamını (test/code coverage) daima monitör ederiz ve düzenli olarak artmasını amaçlarız.
  • Yazılım geliştirme, kullandığımız işletim sistemi, IDE ve araçtan bağımsızdır. Bir yazılım geliştirici istediği araçlarla geliştirme yapabilir.
  • Yazılımları unit, integration, functional, performance, regression, acceptance gibi birçok açıdan test ederiz.
  • Testleri olabildiğince otomatikleştiririz.
  • Sürekli entegrasyon (continuous integration) ile yazılım kalitesini sürekli takip ederiz. Testlerin daima geçmesine çalışırız.
  • Tasarımının esnekliğini sağlamak için yazılımı test güdümlü programlama (test driven development) ile geliştiririz. 
  • Yeni özellikler geliştirmek, sorunları çözmek ve kodda denemeler yapabilmek için versiyon kontrol sisteminde sürekli yeni dallar (branch) yaratır ve kullanırız.
  • Yeteri kadar ve iyi hazırlanmış belgeler yaratırız.
  • Yarattığımız belgeleri güncel tutarız. Güncellenemeyecek kadar eski belgeleri siler ya da arşivleriz.
  • Eski kod ve tasarımları sürekli yenileriz (refactor). Takım olarak sürekli teknik iyileştirme önerileri sunarız.
  • Bilgimizi eğitimlerle, bizzat çalışarak ve başkaları ile paylaşarak arttırırız.  
Herkese disiplin ve ilkeler ışığında bol kaliteli yazılım geliştirmeler diliyorum.

0 yorum:

Yorum Gönder

Template developed by Confluent Forms LLC; more resources at BlogXpertise