Kurze Zusammenfassung als Einführung:
Wir sind ein kleines Java-Webentwicklungsteam, das Anwendungen mit verschiedenen Frameworks und Bibliotheken wie JSF, Hibernate und Seam erstellt, die alle zusammen in JBoss AS bereitgestellt werden.
Zunächst wurde die App zusammengestellt und einige Funktionen hinzugefügt, um potenziellen Kunden ein Schaufenster zu bieten. Es wurde etwas poliert, die App wurde veröffentlicht, sie wurde akzeptiert und funktionierte und im Laufe der Zeit wurden zusätzliche Funktionen hinzugefügt, Fehler wurden behoben, neue Fehler traten auf, wie immer.
Aufgrund hoher Busfaktoren und Startup-Rennen geriet die Entwicklung etwas außer Kontrolle - es wurden immer mehr Funktionen hinzugefügt, da die Kernarchitektur des Systems nicht vollständig verstanden wurde. Es funktioniert immer noch, aber es gibt immer Fallstricke, weil sich das System von seinem Ursprung zu etwas anderem entwickelt hat und am Anfang verschiedene Verknüpfungen verwendet wurden, um die Entwicklung zu beschleunigen - jetzt kommt alles zurück und die Entwicklung verlangsamt sich, weil Problemumgehungen verwendet werden und es ist Es ist ziemlich schwierig, neue Entwickler in das Projekt einzuführen.
Jetzt bin ich dabei, Dinge zu bereinigen und zu organisieren - ein Bug-Tracking-System zu installieren, eine Test- / Qualitätskultur aufzubauen, darüber nachzudenken, wie man automatisierte Tests durchführt, Code-Überprüfungen (all das ausgefallene professionelle Zeug, das uns in der fehlte Anfang) und allgemeine Umgestaltungen wie das Organisieren von Klassenhierarchien und -funktionen, um die Verwendung von Inhalten zu vereinfachen. Das macht alles ein bisschen besser, aber es gibt noch viel zu tun. Da ich nicht die Person bin, die das System ursprünglich erstellt hat (ehemaliger leitender Programmierer links) und nicht so erfahren (seit 2,5 Jahren entwickelt, aber das ist meine einzige Erfahrung in der offenen Welt), bin ich mir nicht immer sicher, was ich tun soll tun.
Hier ist mein Problem:
Refactoring ist immer etwas Gutes und ich mache es ständig, um die Dinge einfacher zu machen. Was mich jedoch verwirrt, ist, wann, wie und warum ich die grundlegende Architektur aktualisieren sollte (dh Bibliotheken, auf die sich das System stützt, Anwendungsserver, Datenbank usw.).
Beispiele:
Wir verwenden derzeit JBoss 4.2.2 - Ich habe irgendwo von JBoss 7.1 gelesen, sollte ich mich dafür entscheiden? Wie kann man das bewerten?
Wir verwenden Seam 2.2, was ein großer Blocker zu sein scheint (funktioniert nicht bei höheren JBoss-Versionen, unterstützt JSF2 nicht). Außerdem werden Quellen angezeigt, die mich auffordern, JEE-Funktionen anstelle von Seam zu verwenden.
Grundsätzlich interessiert mich jeder generische Ansatz für diese Probleme, nicht nur die, die ich in den obigen Beispielen erwähnt habe - da ich möglicherweise zu einem anderen Zeitpunkt über diese Probleme für eine andere Bibliothek auf einem anderen System stolpere (oder jemand anderes mit ähnlichen Problemen konfrontiert sein könnte). .
Also, was ist der Punkt? Soll ich auf dem neuesten Stand sein und nur hochmoderne Bibliotheken verwenden oder soll ich bei dem bleiben, was ich habe? Woran erkenne ich, dass die Technologie, die ich verwende, buchstäblich ein totes Pferd ist und abspringt? Wie oft sollten solche Technologie-Upgrades erscheinen?
Und noch eine Frage neben dem allgemeinen "Wie mache ich Upgrades?" Woran erkenne ich, dass meine Software als "von Profis erstellt" bezeichnet werden kann? Gibt es einen Joel-Test für gut gemachte Software neben dem gesunden Menschenverstand?