3 Punkte von GN⁺ 2023-12-09 | 1 Kommentare | Auf WhatsApp teilen

Fehlende Ausbildung dazu, wie man Softwarequalität aufbaut

  • Wenn man an der Universität Informatik studiert, fehlt eine Ausbildung zur Software-Qualitätssicherung (QA).
  • Der Großteil der Zeit wird für Algorithmen, die Funktionsweise von Computern sowie die Geschichte von Sprachen und Konzepten aufgewendet.
  • Es gibt Semester zu Projektmanagement-Ansätzen und Scrum, aber QA wird überhaupt nicht behandelt.

Wie Unternehmen Produkte termingerecht ausliefern

  • Unternehmen streichen aus Budgetgründen QA-Standards und -Maßnahmen als Erstes aus Projekten.
  • Wenn sich die Entwicklung verzögert oder der Umfang wächst, bleibt nicht genug Zeit für QA.
  • Instabile Software wird nach minimalen, unstrukturierten Tests veröffentlicht.

Wie man dem Hamsterrad entkommt

  • Es dauert Jahre, Erfahrung und Selbstvertrauen aufzubauen, um auf fehlende QA-Maßnahmen in Projekten hinzuweisen.
  • Man stößt auf fehlendes Monitoring und erlebt Probleme wie ausfallende Produktionssysteme.
  • Wenn QA-Maßnahmen nicht umgesetzt werden, entsteht das Problem, dass man es nie richtig lernt.

Über Geld sprechen

  • Zu erklären, dass Software „stabiler“ werde oder „viel einfacher zu warten“ sei, ist für Nicht-Entwickler nicht konkret genug.
  • Man muss über die Kosten sprechen, die entstehen, wenn keine QA gemacht wird.
  • Es ist wirksam, QA-Maßnahmen anhand von Beispielen in Kostendimensionen zu erklären.

Minimale wirksame Dosis

  • QA-Maßnahmen sollten nicht überentwickelt werden und den Projektfortschritt nicht blockieren.
  • Wichtig ist, die Kernfunktionen einer Anwendung zu testen und sicherzustellen, dass sie immer wie erwartet funktionieren.
  • Mit dem Konzept der „minimalen wirksamen Dosis“ (MED) beginnt man bei den wichtigsten Teilen.

Worauf man genau achten sollte

  • Wenn man ein neues Projekt beginnt oder dazustößt, sucht man nach QA-Konzepten.
  • Wichtig sind Dokumente oder Testpläne, die zeigen, dass das Team über QA nachgedacht hat.
  • Wenn man neuen Code schreibt, sollte man die Tests gleich mit schreiben, damit der Code tatsächlich so strukturiert ist, dass er testbar ist.

Vorteile für das Projekt

  • Indem man über Qualität spricht und mögliche Lösungen vorschlägt, erweitert man seinen Einfluss als Entwickler.
  • Durch QA-Maßnahmen kann ein Projekt in gesundem Tempo wachsen.

Wie man ein Projekt verbessert

  • Mit QA-Maßnahmen kann man in einem Projekt als jemand bekannt werden, der hochwertige Software schreibt.
  • Man sollte im Projekt die MED berücksichtigen und im Team zur Stimme für Veränderung werden.

Meinung von GN⁺

Das Wichtigste an diesem Beitrag ist das mangelnde Bewusstsein für die Bedeutung von Qualitätssicherung (QA) im Softwareentwicklungsprozess und dafür, wie sie umgesetzt werden kann. QA wird oft übersehen, ist aber langfristig entscheidend für den Erfolg und die Stabilität eines Projekts. Der Beitrag ist für angehende Softwareingenieure interessant und nützlich, weil er die Bedeutung von QA verdeutlicht und konkrete Wege zeigt, wie sich QA in realen Projekten integrieren lässt.

1 Kommentare

 
GN⁺ 2023-12-09
Hacker-News-Kommentare
  • Software Engineering ist oft kein Kernthema der Informatik (CS), sondern wird in anderen Bereichen gelehrt und meist in Wahlfächern oder speziellen Software-Engineering-Kursen behandelt.

    An der CMU gibt es Master- und Promotionsprogramme für Software Engineering, in denen viele verschiedene Themen vermittelt werden, darunter auch die im Blogpost erwähnten.

  • Die Zusammenarbeit mit Menschen mit einem Informatikabschluss ist erfahrungsgemäß einfacher. Sie verstehen die Bedeutung guter Algorithmen und versuchen nicht, Parser oder Kryptografie selbst zu implementieren.

    Es wird darauf hingewiesen, dass es im Bereich Software Engineering an einem Prozess fehlt, naive Vorstellungen über Teamarbeit und Qualität zu korrigieren.

  • Die Entwicklung hochwertiger Software kann man in erfahrenen Unternehmen lernen.

    Früher waren das FAANG-Unternehmen, heute kann man es bei Firmen wie TailScale lernen. Dort werden nicht sinnlos Microservices, Docker oder JSON-Verarbeitung inflationär eingesetzt, sondern Qualität durch QuickCheck, Hypothesentests und Fuzzing erhöht.

  • Die Behauptung, man müsse fehlerfreie Software termingerecht ausliefern, ist eine ungeeignete Prämisse für einen Artikel über Qualitätssoftware.

    Zu glauben, man könne fehlerfreien Code ausliefern, ist realitätsfern.

  • Es gibt Studiengänge für Computer Engineering sowie Universitäten, die Praktika und Praxiserfahrung betonen.

    Viele Informatikfakultäten sind aus Mathematikfakultäten hervorgegangen und legen den Schwerpunkt auf Theorie. Eine Universität ist nicht einfach eine Berufsschule, sondern ein Ort, an dem die Fähigkeit trainiert wird, komplexes Material zu beherrschen.

  • Die Behauptung, Universitäten würden industriellen Softwarebau lehren, ist übertrieben.

    Heute, wo Continuous-Deployment-Pipelines weit verbreitet sind, gilt es als veraltet, wenn QA-Abteilungen Bugs noch manuell prüfen.

  • Das Argument, Software werde dadurch „stabiler“ oder „wartbarer“, überzeugt Menschen nicht, die nicht direkt an der Codebasis arbeiten.

    Entwickler sprechen über die Kosten, die entstehen, wenn man auf Qualitätssicherung (QA) verzichtet, weil das die Sprache ist, die Unternehmen und Manager verstehen.

  • Man kann drei von vier Dingen haben: Qualität, Zeit, Kommunikationskomplexität und Kosten.

    Software Engineering ist ein Teamsport, auf den sich Fabrikprozesse nur schwer anwenden lassen; wichtiger sind Teamarbeit und die individuelle Weiterentwicklung.

  • Softwareentwickler haben gelernt, wie man hochwertige Software erstellt, können das in der Praxis aber oft schwer umsetzen, weil MBAs oder Vorstände, die Unternehmen führen, das nicht verstehen.

    An den meisten Arbeitsplätzen werden die Meinungen von Softwareentwicklern weitgehend ignoriert.

  • Qualität ist letztlich eine Eigenschaft, die man nur durch praktische Übung erwerben kann.

    Die Fähigkeit, hochwertige Ergebnisse zu liefern, entsteht durch wiederholte Praxis.