Otomatik Mühendis
Joel Testi
Joel testi, 2000 yılında Joel Spolsky tarafından bilişim literatürüne kazandırılmış 12 soruluk bir testtir. Bu test yazılım ekiplerinin kalitesini belirlemek amacıyla kullanılır. Ben, stackoverflow kariyer sayfasında öğrendim ve bir kaç senelik tecrübemle bu soruların günümüzde geçerliliği bir yana, bir yazılım ekibi ne yapmalıdır konusunda yol gösterici olduğunu söyleyebilirim.
stackoverflow kariyer sayfasında kullanımı
Soruları ele almadan önce Joel Spolsky kimdir sorusunu cevaplayalım. Joel, 2000 yılında internet dünyasına adım atan, eski bir Microsoft çalışanı. 2008 yılında ortağı Jeff Atwood ile birlikte stackoverflow‘u kuruyorlar. Stackoverflow her yazılımcının uğrak noktası olan bir soru&cevap sitesidir. Daha sonrasında Stack Exchange adında bir soru&cevap siteleri ağına dönüşüyor. Kısaca günümüz programcılığını hızlandıran bir etkisi olmuştur.
Şimdi sorular: Toplam 12 sorudan oluşmaktadır ve her biri de bir diğeri kadar önemlidir.
- Kaynak kodu kontrol sistemi kullanıyor musunuz?
- Tek bir adımda sistemi oluşturabiliyor musunuz?
- Derleme (build) işlemi günlük yapılıyor mu?
- Hata veritabanınız var mı?
- Yeni bir kod yazmadan önce hataları düzeltiyor musunuz?
- Güncel iş takviminiz var mı?
- İş tanımlamalarınız var mı?
- Programcıların sakin bir çalışma ortamı var mı?
- Paranın alabileceği en iyi araçları kullanıyor musunuz?
- Test elemanınız var mı?
- İş görüşmelerinde adaylara kod yazdırılıyor mu?
- Koridor kullanım testi yapıyor musunuz?
Şöyle bir göz gezdirdiğinizde, her “evet” cevabına 1 puan dersek şu an çalıştığınız firma sizce kaç puan alır? Alması gereken puan 12, eğer 11 alıyorsa hala umut var ama 10 veya daha düşük almışsa umarım fazla mesailer için ayrıca ücretlendiriliyorsunuzdur.
1. Kaynak kodu kontrol sistemi kullanıyor musunuz?
Cevabınız hayırsa Linus Torvalds’ın ihtiyacı doğrultusunda oluşturduğu Git’i ücretsiz repository’ler oluşturabileceğiniz GitHub üzerinden deneyebilirsiniz. Bu gözler network üzerinde aynı anda birden fazla kişinin çalıştığı dosya kaydedilirken, herkes işlemini sonlandırsın diye bellboy zili çalan teknoloji firmaları gördü.
2. Tek bir adımda sistemi oluşturabiliyor musunuz?
Müşteriden bir güncelleme isteği geldi, değişikliği yapmanız 3 dakika. Sonrasında bütün projeyi derlemeniz, ziplemeniz, güvenli bir ftp sunucusuna atmanız, müşteri tarafındaki temsilcinize zipi açıp, belirtilen klasöre kopyalamasını söylemeniz ve bunun yapılmasını beklemeniz ise 1 gün. Sistemler bağlantı noktalarında hata çıkarmaya meyillidirler. Bu kadar bağlantı da bir çok hataya sebebiyet verir. Hata olmasa bile zaman kaybı verimlilik çok fazla düşürecektir. Bunun önüne geçmek için Octopus Deploy gibi uygulama ve servislerinizi bilgisayarlara dağıtacak yazılımlar kullanabilirsiniz.
3. Derleme (build) işlemi günlük yapılıyor mu?
Çalıştığınız ortamlarda hatanın en kısa sürede fark edilmesi için günlük derleme işlemi yapılmalıdır. TeamCity gibi uygulamalar belirlenen aralıklarla projeleri derler ve hata durumunda uyarırlar böylece sürekli entegrasyonu sağlarlar.
4. Hata veritabanınız var mı?
Söz uçar, yazı kalır. Sistemdeki hataları bir yerde saklamalı ve onlar üzerinden çalışmalıyız. Bunun için GitHub üzerinde issues (örnek bir proje) sayfası kullanılabilir. Kurumsal firmalarda Atlassian Jira tercih edilmektedir.
5. Yeni bir kod yazmadan önce hataları düzeltiyor musunuz?
Bunu anlatacak basit bir grafik şu an çalıştığım firmanın duvarında da asılıdır.
Hatanın bulunduğu zaman ile maliyet ilişkisi
6. Güncel iş takviminiz var mı?
Hiç takvimi olmayan yerde de, takvimi değiştirilemez bir kanı olarak kabul eden yerde de çalıştım. İkisi de birbirinden kötüydü. Takvim olmalı ama işin ilerleyişine göre de güncellenebilmeli.
7. İş tanımlamalarınız var mı?
İşler belirli bir dokümantasyon üzerinden mi yürütülüyor? Eğer öyle değilse, analist, programcı, test uzmanı her kim olursa olsun herkes daha fazla yazmalı. Yazılmayan analizler daha sonradan farklı yorumlanabilir, rahatlıkla değiştirilebilir, hatırlanamaz, kod üzerinden ters mühendislik yapılmaya çalışılır. Bunların hepsi yazılım kalitesi açısından kabus senaryolarıdır.
8. Programcıların sakin bir çalışma ortamı var mı?
Günümüzde daha fazla kişiyi bir arada çalışmaya iten açık ofis tasarımları gürültüyü kontrolsüzce arttırmaktadır. Bir de yazılım ekibiyle pazarlama ekibi yan yana çalışıyorsa, bitmek bilmeyen telefon görüşmeleri yazılımcıların dikkatini dağıtacaktır.
Ben kişisel olarak masamda bile telefon bulunmasını istemiyorum. Son çalıştığım yerlerde masamda telefon bulunmuyordu. Konsantrasyonu kaybetmesi çok kolaydır, tekrar kazanması ise en 15 dakikanızı alır. Son olarak Pomodor tekniğini de araştırmalısınız. Çalışmanızı 25 dakikalık kesintisiz tam konsantrasyon halinde yapma disiplinini edinmenizi sağlıyor ve domates sayacınız çalışırken çalışma arkadaşlarınızın sizden uzak durma disiplini edinmelerini öğretiyor. Bunu tomato timer gibi bir web uygulaması ile de yapabilirsiniz ama bu çalışma arkadaşlarınız için ilgi çekici bir unsur olmayacaktır.
9. Paranın alabileceği en iyi araçları kullanıyor musunuz?
Kullandığımız araçlar verimliliği doğrudan etkilemektedir. Derleme zamanı uzadıkça yazılımcı sıkılır, sosyal medya sitelerinde dolaşmaya başlarlar bu da verimliliği düşürür. Bunlar sadece donanımla sınırlı değil, yazılım da çok önemlidir. Visual Studio yerine Not Defteri ile kod yazdırmak bir süre sonra yazılımcının başka işlere bakmasını sağlar. Veya benim de karşılaştığım bir yöntem ise az sayıda lisans almaktır. 100 yazılımcısı olan bir şirket test programından 1 tane lisans alır ve herkes kullanmak için sırasını beklemelidir.
İş veren için notum; Bu tür araçların masrafı, çıkarılan işin kalitesini ve verimliliği arttırarak kendini çok kısa zamanda amorti edecektir. Ayrıca yazılımcılar iyi araçlara anında tav olurlar. Çift monitör, yazılımcıları anında çift kılıçlı minik Drizz’t’lere dönüştürür.
10. Test elemanınız var mı?
Eğer test elemanınız yoksa hemen bir tane edinin. Kimi yazılımcılar test elemanının verimliliği düşürdüğünü düşünür ve kodları teste girmesin diye elinden geleni yaparlar. O tip yazılımcılardan olmayın. Yazılım hataya çok açıktır. Test elemanı sizin hatalarınızı buldukça, siz de bu hataları çözdükçe işin kalitesi artar.
11. İş görüşmelerinde adaylara kod yazdırılıyor mu?
İş ile alakalı, alakasız veya bulunca çok basitmiş dediğimiz ama bulana kadar ter döktüren sorulardan vazgeçilmeli. Bunun yerine az da olsa kod yazdırmak ve bunu birlikte çalışacağı kişilerle paylaşmak güzel bir uygulamadır.
12. Koridor kullanım testi yapıyor musunuz?
Yapılan en büyük hatalardan biri, arayüz tasarımını yazılımcıya bırakmaktır. Yazılımcı saatlerce üzerinde çalıştığı programda neyin ne işe yaradığını evinin yolundan bile daha iyi bilir hale gelmektedir ve bunu anlamayanlara ukalaca yanıtlar verebilir. Koridor testi ise hazırlanan arayüzü daha önce görmemiş birine yani koridordan geçen rastgele birine göstermekten ibarettir. Bir kaç kişiye gösterdikten sonra asıl zorluklar rahatlıkla tespit edilebilir.
Siz de çalıştığınız şirketin puanını yorumlara yazarak burada paylaşabilirsiniz. Puanlar iyi ise güzel bir reklam olacaktır, kötüyse birilerinin bir şeyler yapması gerekecektir. Umarım hepimiz 12 tam puan alan firmalarda şaheserler çıkarırız.