Yüksek kaliteli yazılım geliştirmeyi öğrenememenin gerçeği
(florianbellmann.com)Yazılım kalitesi oluşturma yöntemlerine dair eğitim eksikliği
- Üniversitede bilgisayar bilimi okunurken yazılım kalite güvencesi (QA) eğitimi genellikle eksik kalıyor.
- Zamanın büyük kısmı algoritmalara, bilgisayarların nasıl çalıştığına, dillerin ve kavramların tarihine ayrılıyor.
- Proje yönetimi yaklaşımları ve Scrum üzerine dönemler olsa da QA hiç ele alınmıyor.
Şirketlerin ürünü zamanında çıkarma biçimi
- Şirketler bütçe sorunları nedeniyle QA standartlarını ve önlemlerini projelerden ilk çıkaran taraf oluyor.
- Geliştirme geciktiğinde veya kapsam genişlediğinde QA için yeterli zaman kalmıyor.
- En fazla, yapılandırılmamış asgari testlerden sonra kararsız yazılım yayına alınıyor.
Hamster çarkından çıkmanın yolu
- Bir projede eksik QA önlemleri hakkında konuşabilecek deneyim ve özgüveni kazanmak yıllar alıyor.
- Eksik izleme mekanizmaları fark ediliyor ve üretim sistemlerinin çökmesi gibi sorunlar yaşanıyor.
- QA önlemleri uygulanmadığında, doğru şekilde öğrenememe sorunu ortaya çıkıyor.
Para hakkında konuşmak
- Yazılımın 'daha kararlı' olacağını veya 'bakımının çok daha kolaylaşacağını' anlatmak, geliştirici olmayan kişiler için yeterince somut değil.
- QA yapmamanın maliyeti hakkında konuşmak gerekiyor.
- QA önlemlerini örneklerle birlikte maliyet açısından açıklamak etkili oluyor.
Asgari etkili doz
- QA önlemleri aşırı tasarlanmamalı ve projenin ilerlemesini tıkamamalı.
- Uygulamanın çekirdek işlevlerini test etmek ve bunların her zaman beklendiği gibi çalıştığını doğrulamak önemli.
- 'Asgari etkili doz' (MED) kavramı kullanılarak en önemli kısımlardan başlanıyor.
Dikkatle bakılan şeyler
- Yeni bir projeye başlanırken veya bir projeye katılırken QA kavramları aranıyor.
- Ekibin QA hakkında düşünüp düşünmediğini gösteren belgeler ya da test planları önemli.
- Yeni kod yazarken testleri de birlikte yazmak, kodun gerçekten test edilebilir olacak şekilde yapılandırılmasını sağlıyor.
Proje faydaları
- Kalite hakkında konuşup olası çözümler önererek geliştirici olarak etki alanınızı genişletebilirsiniz.
- QA önlemleri sayesinde proje sağlıklı bir hızda büyüyebilir.
Projeyi iyileştirme yolu
- QA önlemlerini kullanarak projede kaliteli yazılım yazan kişi olarak tanınabilirsiniz.
- Projede MED'i dikkate almalı ve ekip içinde değişim için sesinizi yükseltmelisiniz.
GN⁺ görüşü
Bu yazıdaki en önemli nokta, yazılım geliştirme sürecinde kalite güvencesinin (QA) önemi ve bunun nasıl uygulanacağı konusunda farkındalık eksikliği olmasıdır. QA çoğu zaman göz ardı edilse de, uzun vadede projenin başarısı ve istikrarı için vazgeçilmezdir. Yazı, başlangıç seviyesindeki yazılım mühendislerine QA'nın önemini fark ettirmesi ve gerçek projelerde QA'yı entegre etmenin somut yollarını sunması açısından ilgi çekici ve faydalıdır.
1 yorum
Hacker News görüşü
Yazılım mühendisliği, bilgisayar biliminin (CS) temel bir konusu değil; çoğu zaman başka alanlarda öğretiliyor ve seçmeli derslerde ya da yazılım mühendisliği programlarında ele alınıyor.
Bilgisayar bilimi diplomasına sahip kişilerle çalışmanın daha kolay olduğu deneyimlenmiş. Bu kişiler iyi algoritmaların önemini anlıyor ve parser ya da şifrelemeyi kendileri uygulamaya kalkışmıyor.
Yüksek kaliteli yazılım geliştirme, deneyimli şirketlerde öğrenilebilir.
Hatasız yazılımı zamanında dağıtmak gerektiği iddiası, kaliteli yazılım üzerine bir yazıya başlamak için uygun olmayan bir önkabuldür.
Bilgisayar mühendisliği programları bulunan ve staj ile uygulamalı çalışmayı vurgulayan üniversiteler var.
Üniversitelerin endüstriyel yazılım geliştirmeyi öğrettiği iddiası abartılıdır.
Yazılımın "daha kararlı" olacağı ya da "bakımının daha kolaylaşacağı" yönündeki mantık, kod tabanı üzerinde doğrudan çalışmayan kişiler için ikna edici değildir.
Kalite, zaman, iletişim karmaşıklığı ve maliyet arasından üçünü seçebilirsiniz.
Yazılım geliştiriciler kaliteli yazılım yapmayı öğrenmiş olsa da, şirketleri yöneten MBA'ler ya da yönetim kurulları bunu anlamadığı için bunun pratikte uygulanması zor oluyor.
Kalite, gerçekte yalnızca pratik yaparak edinilebilen bir niteliktir.