3 puan yazan GN⁺ 2023-12-09 | 1 yorum | WhatsApp'ta paylaş

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

 
GN⁺ 2023-12-09
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.

    CMU, yazılım mühendisliği yüksek lisans ve doktora programları yürütüyor ve blog yazısında değinilenler dahil çeşitli konuları öğretiyor.

  • 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.

    Yazılım mühendisliği alanında ekip çalışması ve kaliteye dair naif düşünceleri düzeltme sürecinin eksik olduğuna dikkat çekiliyor.

  • Yüksek kaliteli yazılım geliştirme, deneyimli şirketlerde öğrenilebilir.

    Eskiden bunlar FAANG şirketleriydi; bugün ise TailScale gibi şirketlerden öğrenmek mümkün. Anlamsız mikroservisleri, Docker'ı ve JSON işlemeyi gereksiz yere abartmadan; QuickCheck, hipotez testi ve fuzzing gibi yöntemlerle kalite artırılabilir.

  • 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.

    Hatasız kodun dağıtılabileceğine inanmak gerçeklikten kopuk bir düşüncedir.

  • Bilgisayar mühendisliği programları bulunan ve staj ile uygulamalı çalışmayı vurgulayan üniversiteler var.

    Birçok üniversitenin CS bölümü matematik bölümlerinden ayrıştığı için teoriye odaklanır. Üniversite yalnızca bir meslek okulu değil, karmaşık materyalleri kavrama yetisini geliştiren bir yerdir.

  • Üniversitelerin endüstriyel yazılım geliştirmeyi öğrettiği iddiası abartılıdır.

    Sürekli dağıtım pipeline'larının yaygınlaştığı günümüzde, kalite güvence departmanının hataları elle kontrol etmesi eski usul bir yöntem olarak görülüyor.

  • 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.

    Geliştiriciler, kalite güvencesi (QA) yapmamanın maliyetinden söz eder; çünkü bu, işletmenin ve yöneticilerin anlayabildiği dildir.

  • Kalite, zaman, iletişim karmaşıklığı ve maliyet arasından üçünü seçebilirsiniz.

    Yazılım mühendisliği, fabrika süreçlerini uygulamanın zor olduğu bir takım sporudur; ekip çalışması ve bireysel gelişim ön planda tutulmalıdır.

  • 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.

    Çoğu iş yerinde yazılım geliştiricilerin görüşleri büyük ölçüde göz ardı ediliyor.

  • Kalite, gerçekte yalnızca pratik yaparak edinilebilen bir niteliktir.

    Yüksek kaliteli sonuçlar üretme becerisi, tekrar eden uygulamalarla kazanılır.