Yazılım Ekibinin Kalitesi Nasıl Değerlendirilir?

Yazılım ekibinin kalitesi basit bir test ile hemen anlaşılabilir. Aşağıdaki test Joel Spolsky’nin yıllar önce kendi başına koymuş olduğu bir dizi kural. 12de 12 yapan firmaların başında Microsoft olduğunu söyleyerek kendi çalıştığımız firmamızı karşılaştırmamızı istiyor. Mükemmel yazılım için olmazsa olmaz değil ama disiplinli ve düzenli çalışan bir ekip için şart. Testi çözmek için günde kaç satır kod yazdığınızı hesaplamanız yada işinizin yzde kaçı hata çözümü olduğunu bulmanız gerekmiyor. Basit bir evet/hayır testi.

Kaynak versiyonlama kullanıyor musunuz?

Yıllardır yedekleme için TFS, Git ve Dropbox kullanmış ve kodları yedeklemek için sürekli farklı farklı zip dosyaları tutanları görmüş birisi olarak diyorum ki GIT kullanın, hem de en derin komutlarına kadar. Gitignore dosyasının ne işe yaradığını öğrenin, bu dosyaya mutlaka bin, obj ve packages klasörlerini yazın. Bunları bilmeyip yıllardır program yazanlardan olmayın.

Tek adımda yeni bir sürüm oluşturabiliyor musunuz?

Bunu önceki şirketimde yaşamıştık. Her şeyi hazırlayıp üretime gönderiyorduk, sonra bir bakıyorduk ki bir yerde ufak bir değişiklik daha yapılması gerekiyor. Haydi sil baştan tüm her şeyi tekrardan üretime gönder.

Günlük yeni sürüm oluşturuyor musunuz?

Buradaki amaç sadece yeni sürüm oluşturmak değil aynı zamanda otomatik test ile tüm metotların çalıştığından emin olmak. Herkesin başına gelmiştir, bir metotta yapılan bir değişiklik başka metotların çalışmasına engel olmuştur.

Hata kayıt defteriniz var mı?

Bugzilla gibi bir program kullanmıyorsanız bilmelisiniz ki tüm hataları aklınızda tutamazsınız. Hangi hata nasıl ortaya çıkmış, düzeltilmiş mi yoksa sonraya mı bırakılmış Bunların bir kaydının tutulmaması ürününüzün kalitesiz olacaktır. Kayıt defteri için karmaşık bir program kullanmanıza gerek yok. Sadece 5 alan bulunduran bir tablo bile yeterli:

  • Hatayı oluşturan adımlar
  • Beklenen davranış
  • Hatalı davranış
  • Atanan kişi
  • Düzeltildi mi

Kod yazarken hata düzeltmesi yapıyor musunuz?

Eğer zaman sınırlaması nedeniyle kodlarınızı alelacele yazarsanız içinde çıkacak hata miktarı artar. Eğer geri dönüp kodlara bakmazsanız daha sonra karşılacağınız hatalar çoğalacak ve size ileride daha çok iş çıkaracak. O yüzden iş ilerleyişi şöyle olmalı:

  • Hata varsa hataları düzelt
  • Geliştirme yap
  • Yeni yazdığın kodları gözden geçir

Güncel bir yapılacak iş takviminiz var mı?

İş takvimi oluşturmak ve olabildiğince bu takvime uymak bir şirketin önünü görebilmesi için olmazsa olmazlardandır.

Yazılım için açıklamalar ve belgeler oluşturulmuş mu?

  • Her projenin bir Readme dosyası olmalı
  • Her projenin çalışma prensibinin anlatıldığı bir How-To-Contribute dosyası olmalı
  • Her metodun bir açıklaması olmalı

Sessiz bir çalışma ortamı var mı?

Yazılımcıların kaliteli iş çıkarabilmeleri için sessiz bir ortamda uzun süre çalışıp konsantre olmaları lazım. Bu konsantrasyon için ortalama 15 dakika geçmesi gerekiyormuş. Düşünün her bir dakikalık rahatsız edilme sizin tekrar konsantre olmanız için 15 dakika kaybetmenize neden olacak. Bu yüzden yazılımcıların kendi küçük odaları olması lazım ki diğer kişiler ve ortam onları rahatsız etmesin

Paranın satın alabileceği en iyi donanım ve yazılıma sahip misiniz?

Bilgisayarın açılmasını beklemek, visual studionun açılmasını beklemek, programının build yamasını beklemek, internet sayfasının açılmasını beklemek, on kuruş fazla verip işleri hızlandırmak varken bedava diye her şeyi kendin yapmak. Bizim işimiz yazılım yapmak ise bunları yapmak için gerekli yazılım, donanım ve internet ile yapmak gerekiyor. Her türlü şirkette çalışmış biri olarak bunları söylüyorum.Evimdeki internet yada bilgisayar şirkettekinden daha iyiyse orada bir terslik olduğunu en baştan anlamak lazım mesela. Yıl olmuş 2018 ama hala 10 yıl önceki teknolojiler ile yazılım yapılıyorsa, son sürüm Windows kullanamıyorsak, internette kota varsa ya da tek monitörle iş yapmak gerekiyorsa o yerden hayır gelmiyor.

Test ekibiniz var mı?

Test işini sadece yazılım ekibine yaptırmak yapabileceğiniz en aptalca şey olur. Mutlaka ikinci bir göz de ürüne göz atmalı.

Yeni işe alınacak insanlardan kod yazmaları isteniyor mu?

İşte en nefret ettiğim şey sadece özgeçmişe bakıp sonra internette cevabı kolayca bulunabilecek bir kaç soruya bakarak işe alıp almaya karar vermek. Sen bir proje yaz ya da daha önce yazdığın projeleri göster diyen yok. Her şey ezbere dayalı. Bir utanmadan bize sadece varolan sayfalara benzer sayfalar oluşturabilecek eleman arıyoruz deyip sen iki gömlek büyük gelirsin demek. Ne çağırıyorsun o zaman? Bana asker adam lazım diyenle bile tanıştım. Sadece verilen işi yapacak, başka hiç bir işe karışmayacak, hiç bir yenilikten anlamayacak. Böyle insanlar kendi işlerini altlarındaki elemanlar kadar anlamayan oluyor genelde. Onları bir kaşık suda boğasım geliyor.

Kodlarınız kullanışlılık testinden geçebiliyor mu?

Hallway Usability Test diye bir şey varmış. Sen bir kod yazıyorsun. Sonra koridordaki rastgele bir kişiyi alıp senin kodunu kullanmalarını istiyorsun. Başarabiliyorsa testi geçiyorsun. Amaç anlaşılır ve tekrar kullanılabilir kod yazmayı öğretmek.