Yazılım geliştirme biçiminiz ne kadar kaliteli?
Yazılım ekibinizin (siz de dahil olmak üzere) yazılım geliştirirken kullandığı yöntemlerin kalitesini ölçmek için pek çok yöntem var.
- Peki bu yöntemlerden hangisi size uygun?
- Seçtiğiniz yöntemi uygulayarak sonuç alabilecek bir uzmana sahip misiniz?
- Tüm bunları düşünmek bile içinizi mi sıktı?
O halde kolayı var!
Tüm bunları yalnızca <göreceli küçük bir sayı girin> dakikada Joel Testi ile ölçebilirsiniz!
Joel Testi derken?
Joel Testi, isim babası olan Joel Spolsky (CEO, Stackexchange) tarafından, biz üşengeçler için hazırlanmış güzide bir test.
Bu testle, (dürüst olursanız eğer) sadece 12 adımda yazılım geliştirme şeklinizin kalitenizi belirlemeniz mümkün!
Aklıma yattı! Teste geçelim madem…
1. Versiyon kontrol sistemi kullanıyor musunuz?
Yapılan hataları geri almak/önceden yapılan kayıtları karşılaştırmak/kodunuzu güvenceye almak için kullandığınız bir versiyon kontrol sisteminiz var mı?
2. Tek adımda uygulamanızı derleyebiliyor musunuz?
Yazılmış scriptlerin yardımıyla, tek bir harekette, kullanılabilir nihai uygulamayı otomatik olarak derleyebiliyor musunuz?
Eğer adım sayınız birden fazlaysa, derleme esnasında hatalı işlemler yapma olasılığınız adım miktarı ile doğru orantılı artıyor.
3. Günlük derleme yapıyor musunuz?
Günlük (mesai bitimine dakikalar kalacak şekilde olmadan) derlemeler yapıyor musunuz?
Günün belirli saatlerinde otomatik derlemeler gerçekleştirerek derlemede hataya sebep olabilecek bir problemi (check-in yapılması unutulan bir dosya gibi) önceden tespit etme yoluna gidiyor musunuz?
Versiyon sistemine yapılan check-in’lerin, derleme aşamasını öngörülemeyen bir hata sebebiyle bozması çok yüksek bir ihtimal. Bu ihtimali en aza indirmenin yolu da bu tarz hataları erkenden gözlemlemekten geçiyor.
4. Hata veritabanınız var mı?
Markete giderken alacağımız şeylerin listesini unuttuğumuz bir dünyada yazılımda ortaya çıkan hataları kafamızda tutabileceğimizi düşünmek fazla iyimser olur. (“İyimser” fazla iyimser bir kelime seçimi oldu)
Hatanın oluşma sebebini, bulgularını, düzeltecek sorumlusunu, düzeltilip düzeltilmediğini (statüsünü) bildiren bir hata veritabanı sağlıklı iş akışı beklentisinde olan ekipler için olmazsa olmaz.
Tuzlu (göreceli) ama sağlam bir örnek için sizi şöyle alalım:
5. Yeni kod yazmadan önce mevcut hataları düzeltiyor musunuz?
Yeni bir kod yazmaya başlamadan önce eldeki hataları düzeltiyor musunuz?
Eğer farkettiğiniz hataları düzeltmeden yeni kod yazmaya geçiyorsanız hatalı bir sistemin üzerine yeni hatalara sebep olabilecek bir sistemi inşa ediyorsunuz demektir.
Aşina olduğunuz konuya ait olan bir hatayı hemen düzeltmeniz, birkaç hafta sonra dönüp baktığınızda hatırlayamayacağınız bir noktaya tekrar odaklanarak vakit kaybetmenizi de engelleyecektir.
Amaç hatasız bir yazılım üretmekse: Erken hata giderimi = düşük maliyet.
6. Sürekli güncellenen bir zaman çizelgeniz var mı?
İşlerin ne zaman biteceğinin planlandığı, önem sırasına göre aciliyetlerin belirlenebildiği bir takviminiz/çizelgeniz mevcut mu?
7. Spec (şartname) kullanıyor musunuz?
Uygulamaya ait olan geliştirilecek özelliklerin tanımı, yapacağı iş ve davranışları açık, anlaşılır biçimde şartname üzerinden belirleniyor mu?
Yazılım geliştirilirken şartnameye sadık kalınıyor mu? (Şartname kelimesi de pek resmi oldu)
8. Programcılar sessiz bir ortamda mı çalışıyor?
Açık ofis kültürüyle beraber kontrolümüzün dışında olan faktörlerden (gürültü gibi) dolayı dikkat dağınıklığına sebep olabilecek ortamlara maruz kalabiliyoruz.
Yazılım geliştiriciliği, tam verimli odaklanmanın 10-15 dakika sürebildiği ve dış faktörlerle bu odağın kaymasının çok kolay olduğu bir meslek türü. Hal böyle olunca, yazılımcının sakin bir ortamda çalışmasını sağlamak önem kazanıyor.
9. Yapılan iş için en iyi araçları kullanıyor musunuz?
Kullandığınız araçlar/sahip olduğunuz kaynaklar gerçekten yapmakta olduğunuz işi gerçekleştirmek için en iyi seçim mi? (Notepad ile kodlama yapıp, MS Paint kullanarak logo düzenleyen bir insan akıl sağlığını uzun bir süre muhafaza edebilir mi?)
10. Test ekibiniz var mı?
Geliştirdiğiniz uygulamayı sürekli test etmeye atanmış bir ekibiniz var mı? Yazılımınızı baştan aşağı test eden bir ekibiniz bulunmuyorsa hata dolu bir uygulamaya zemin hazırlıyorsunuz demektir.
11. İş görüşmelerinde adaylara kod yazdırıyor musunuz?
İş görüşmelerinde adaylara kod yazdırırak aday hakkında pek çok şey öğrenebilirsiniz. Anlık performansla %100 doğru veriler elde edemeseniz bile, yılların verdiği deneyimin etkilerini görebilmeniz, çözüm yöntemlerini inceleyebilmeniz pek ala mümkün.
Kaliteli yazılım üretebilmek için önce yetenekli yazılımcıları bir araya getirmek gerekiyor.
12. “Hallway usability” testi yapıyor musunuz?
Koridor… kullanıla… ne?!
Basitçe anlatmak gerekirse: kodunuzu kullanacak insanlara gösterip, kodun kullanımıyla ilgili bir problem görüp görmediğini soruyor musunuz? Birkaç insanın fikrini sorduğunuzda, kod içerisinde anlaşılması güç noktaların neresi olacağını kestirmeniz kolaylaşacaktır.
Sonuç olarak…
Yukarıdaki sorulardan kaç tanesine “evet” dediniz? Joel’a göre 12 mükemmel, 11 kabul edilebilir, 10 ve altı ise problemli bir skor.
Joel’un testine göre, uzun vadede kaliteli yazılım üretebilmek için titiz (abartmadan) olmak gerekiyor.
Peki sizin skorunuz ne?
Yorumlayarak aktardığım “The Joel Test: 12 Steps to Better Code” yazısına buradan ulaşabilirsiniz.