Ich arbeite in einer Firma, die Joel Test mit 11 Punkten bewertet - zumindest auf dem Papier.
In der Praxis funktioniert jedoch nichts so gut wie erwartet, und das Projekt läuft seit einem halben Jahr auf DEFCON 1 . Jetzt freuen sich die meisten meiner Kollegen, wenn sie um 18 Uhr nach Hause gehen können - am Sonntag.
Eine der anscheinend guten Methoden, die ich als nicht funktionierend empfand, ist die Verwendung von statischen Analysewerkzeugen. Das Projekt verfolgt sowohl gcc -Wall-Warnungen als auch ein proprietäres und sehr teures "C / C ++" - Tool.
Gcc-Warnungen weisen häufig auf echte (wenn auch meistens harmlose) Fehler hin.
Die proprietären Tools listen jedoch Dinge wie implizite Casts und die Größe eines String-Literal auf. Implizite Casts werden ebenfalls in ihr Stylebook aufgenommen.
Die übliche Praxis ist, dass die Leute dazu gedrängt werden, jede einzelne Warnung zum Schweigen zu bringen. Beachten Sie, dass dies Warnungen ausschließt, bei denen es sich überwiegend um Fehlalarme handelt. Dies ist nicht das Problem.
Das Ergebnis ist:
- Die Leute fügen jedem R-Wert und jedem Argument einen Typ-Cast hinzu und verbergen dabei echte, problematische Typenkonflikte.
- Die Leute melden sich mit einem Fehler oder verwenden ein anderes problematisches Sprachmerkmal (strlen statt sizeof, strncpy statt strcpy usw.).
- Die Warnungen werden stummgeschaltet.
- Die Fehlerberichte rollen herein.
Das Wichtigste ist, dass der ursprüngliche Code von Leuten funktioniert und geschrieben wurde, die im Rahmen ihrer Sprachfähigkeiten auf Nummer sicher gingen, während dies bei den Korrekturen nicht der Fall war.
Nun, ich glaube nicht wirklich, dass diese Firma gerettet werden kann. Ich würde jedoch gerne wissen, ob es eine bessere, am besten funktionierende Möglichkeit gibt, die "Pro" -Tools zu verwenden, oder ob ich sie ganz vermeiden sollte, falls ich in Zukunft die Entscheidung treffen sollte.
Eine Lösung, bei der nicht alle Programmierer Genies sind, die nichts falsch machen können. Denn wenn ja, müssen die Werkzeuge nicht unbedingt verwendet werden.