Best Practice Wie geht man mit "schlechten" Projekten um?

HolyFUT

Mitglied
Hallo zusammen,
diese Frage bezieht sich auf Hobby-Projekte, also nichts arbeitsrelevantes.

Ich wollte euch mal fragen wie ihr mit schlecht entworfenen und schlecht entwickelten Projekten umgeht. Um Java zu lernen habe ich mich an ein Projekt rangemacht und habe versucht mein bisheriges Wissen aus anderen Programmiersprachen in Java anzuwenden. Dabei ist mir im laufe der Zeit, bzw. konkret in den letzten Tagen, aufgefallen dass die Struktur des Projekts sehr zu wünschen übrig lässt, was unter anderem zur Folge hat dass manche Sachen unter gewissen Umständen nicht funktionieren werden. Um teilweise Folgefehler in meinem Projekt zu vermeiden, habe ich teilweise den Eindruck dass ich manche Stellen komplett aufbohren muss.

Zugegeben: Die Planungsphase des Projekts fiel sehr klein aus, wodurch natürlich die Struktur eher mehr nach Freischnauze aufgebaut wurde.

Wie geht ihr damit um, sollten es sich um mehrerer dieser Stellen handeln? Würdet ihr euch die Zeit nehmen die Stellen zu bereinigen oder würdet ihr das Projekt mit der neuen Erfahrung refactoren?
 

Blender3D

Top Contributor
Hallo zusammen,
diese Frage bezieht sich auf Hobby-Projekte, also nichts arbeitsrelevantes.

Ich wollte euch mal fragen wie ihr mit schlecht entworfenen und schlecht entwickelten Projekten umgeht. Um Java zu lernen habe ich mich an ein Projekt rangemacht und habe versucht mein bisheriges Wissen aus anderen Programmiersprachen in Java anzuwenden. Dabei ist mir im laufe der Zeit, bzw. konkret in den letzten Tagen, aufgefallen dass die Struktur des Projekts sehr zu wünschen übrig lässt, was unter anderem zur Folge hat dass manche Sachen unter gewissen Umständen nicht funktionieren werden. Um teilweise Folgefehler in meinem Projekt zu vermeiden, habe ich teilweise den Eindruck dass ich manche Stellen komplett aufbohren muss.
Da es sich um ein Hobbyprojekt handelt. Das selbe Projekt mit den neuen Erkenntnissen einfach noch einmal neu machen.
 

Robert Zenz

Top Contributor
Da es sich um ein Hobbyprojekt handelt. Das selbe Projekt mit den neuen Erkenntnissen einfach noch einmal neu machen.
Man muss es nicht direkt wegwerfen und neu machen, man kann es ja auch umbauen bis man damit zufrieden. Das ist gleichzeitig auch eine gute Uebung in Umbauarbeiten und idealerweise wie man Tests schreibt um sicherzugehen dass die Funktionalitaet noch ident ist nach dem Umbau.

auch gewerbliche projekte wirft man irgendwann weg und machts neu.
spätestens dann, wenn man keine fortran-entwickler mehr am markt findet....
Das ist in vielen Faellen auch nicht richtig. Wenn du Projekte hast mit Vielleicht 500 Personenjahren die sich im Laufe von 30 Jahren angesammelt haben, hast du kaum eine Chance das in endlicher Zeit abzuloesen. Da spielt dann auch der Mangel an Programmierer die die Sprache sprechen keine Rolle, du hast keine Wahl und nimmst jeden der es tippen kann (egal was der fuer Gehaltsvorstellungen hat). Es gibt nicht mehr viele COBOL Programmierer, aber die die es gibt, koennen sich ihr Gehalt frei aussuchen weil die Firmen einfach keine Wahl mehr haben.

Das ist jetzt ein Extrembeispiel, aber selbst wenn du ein PHP-Projekt hast, auf dem du 50 Personenjahre ueber die letzten 10 Jahre angesammelt hast, wirst du dir sehr schwer tun das abzuloesen. Da musst du dann schon mit einem echt guten Konzept um die Ecke kommen, und auch das richtige Framework haben, damit du solche Dinge noch in endlicher Zeit abgeloest bekommst. Und dann hast du immer noch das Problem dass alte Bugs zwar weg sind, du aber neue eingebaut haben wirst.

Abloesen von Projekten im gewerblichen Umfeld ist ein sehr, sehr schwieriges Thema wenn es nicht gerade um eine POS- oder ERP-Loesung geht die es bereits zuhauf gibt.

Wie geht ihr damit um, sollten es sich um mehrerer dieser Stellen handeln? Würdet ihr euch die Zeit nehmen die Stellen zu bereinigen oder würdet ihr das Projekt mit der neuen Erfahrung refactoren?
Einfach umbauen. Es ist dein Projekt, selbst wenn du das Projekt auf GitHub oder GitLab hast, glaube ich nicht dass es jemand zweiten gibt wer im Quellcode arbeitet, damit hast du freie Hand. Bau es um, lern dabei, und bau es dann wieder um. Immer und immer wieder. Wenn du wirklich an Grenzen stoeszt wo du sagen musst "Das kann ich so nicht mehr umbauen", dann ein neues Projekt beginnen. Aber das glaube ich gar nicht mal dass es wirklich solche Grenzen in kleineren bis mittleren Projekten gibt.

Zugegeben: Die Planungsphase des Projekts fiel sehr klein aus, wodurch natürlich die Struktur eher mehr nach Freischnauze aufgebaut wurde.
Es gibt auch Momente wo du etwas planst, es dann umsetzt und dann erst bemerkst das es dabei Probleme gibt und du komplett umdisponieren musst. Das kann auch passieren, also selbst eine laengere Planungsphase kann dich vor solchen Dingen nicht bewahren. Nicht zuletzt muss man auch bedenken kann das es selten Projekte gibt die einen solchen Umfang haben dass sie nach ein paar Wochen Tipparbeit "fertig" sind. Es gibt immer noch eine Funktion die man einbauen will, eine Funktion die so nicht sein sollte, ein Fehler der noch weg muss. Klar ist planen wichtig, aber es hilft dir bei einigen Dingen einfach nicht in die du laufen kannst und wirst.

Du kannst 20 Software-Architekten in einen Raum sperren fuer ein Jahr und die sollen dir eine ERP-Loesung komplett durchplanen, ich kann dir versprechen dass du sie innerhalb von zwei Monaten nach Beginn der Tipparbeit wieder in den Raum sperren musst weil sie umplanen muessen.
 

KonradN

Super-Moderator
Mitarbeiter
Es gibt auch Momente wo du etwas planst, es dann umsetzt und dann erst bemerkst das es dabei Probleme gibt und du komplett umdisponieren musst. Das kann auch passieren, also selbst eine laengere Planungsphase kann dich vor solchen Dingen nicht bewahren. Nicht zuletzt muss man auch bedenken kann das es selten Projekte gibt die einen solchen Umfang haben dass sie nach ein paar Wochen Tipparbeit "fertig" sind. Es gibt immer noch eine Funktion die man einbauen will, eine Funktion die so nicht sein sollte, ein Fehler der noch weg muss. Klar ist planen wichtig, aber es hilft dir bei einigen Dingen einfach nicht in die du laufen kannst und wirst.
Das ist dann auch, was mir so gut an der agile Arbeitsweise gefällt. Es werden halt immer nur Iterationen geplant und vor jeder wird halt geplant. Und die Planung kann von der bisherigen Planung abweichen.

Das ersetzt nicht die Architektur, die geplant sein sollte oder die Vision, wohin es gehen soll (oder evtl. besser: gehen könnte).
 

White_Fox

Top Contributor
Ich würde mir erstmal Gedanken machen, was ich am Ende haben will.
Wenn es ein Hobbyprojekt ist, ist möglicherweise der Weg selbst ein Teilziel. Hat das Projekt einen konkreten Nutzen, d.h. will ich schnell wieder was Lauffähiges haben? Was genau würde ich heute anders machen wollen?

Ein Projekt neu zu schreiben ist keine Schande und nicht schlimm, wenn es kein Geld kostet. Aber sich vorher einen Plan machen, gerne auch schriftlich, das ist auch im Hobbybereich nie verkehrt.
 

HolyFUT

Mitglied
Hallo zusammen,
ich danke euch für eure Beiträge zu diesen Thema.

Ich habe mich nun nach Überlegung, und natürlich während ich an der Application geschrieben habe, mich dazu entschieden das Projekt weiterzuentwickeln. Es gibt noch einiges zu lernen und ich will die Erfahrung nicht missen wenn ich an Stellen ankomme die ich vermutlich erst viel später gemacht habe, hätte ich das Projekt jetzt verworfen und neu angefangen. Gestern war dies auch der Fall, da war ich an einer Stelle dran an der ich etwas umdenken musste und da habe ich, trotz der bescheidenen Struktur, etwas neues gelernt.
 

HolyFUT

Mitglied
Hallo zusammen,
ich danke euch für eure Beiträge zu diesen Thema.

Ich habe mich nun nach Überlegung, und natürlich während ich an der Application geschrieben habe, mich dazu entschieden das Projekt weiterzuentwickeln. Es gibt noch einiges zu lernen und ich will die Erfahrung nicht missen wenn ich an Stellen ankomme die ich vermutlich erst viel später gemacht habe, hätte ich das Projekt jetzt verworfen und neu angefangen. Gestern war dies auch der Fall, da war ich an einer Stelle dran an der ich etwas umdenken musste und da habe ich, trotz der bescheidenen Struktur, etwas neues gelernt.
Mittlerweile habe ich meine Struktur aufgebohrt und nachgebessert, ich bin froh dass ich am Ball geblieben bin. Gibt immer wieder was neues zu lernen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Mit Methoden kann man definieren für was <T> steht. Geht das auch irgendwie für Variablen? Allgemeine Java-Themen 12
F 2 JsonArray vergleichen, geht es auch einfacher ? Allgemeine Java-Themen 3
LimDul Hä? Lambda-Ausdruck geht, Methoden-Referenz nicht Allgemeine Java-Themen 8
LimDul Direktes return eines Array geht nicht Allgemeine Java-Themen 20
M Test geht auf Travis und mit Github Action schief aber nicht lokal Allgemeine Java-Themen 3
M Console geht nicht auf (Windows 10) Allgemeine Java-Themen 3
W Enumeration ein Array/List als Eigenschaft mitgeben - warum geht das nicht? Allgemeine Java-Themen 0
P Erste Schritte HauptFrame geht nicht Allgemeine Java-Themen 7
L Applet Applet zu JavaWebStart migrieren - simples sample geht nicht Allgemeine Java-Themen 2
KeVoZ_ Java Mail senden - geht nicht Allgemeine Java-Themen 4
K API - Wie geht das? Allgemeine Java-Themen 2
D Klassenübergreifender Befehl geht nicht Allgemeine Java-Themen 10
X Datentypen Byte geht nicht höher als 126 auch nicht mit casten? Allgemeine Java-Themen 22
J Umwandeln von URL zu File und danach kopieren geht nicht Allgemeine Java-Themen 1
M JUnit Serverseitig? Wie geht sowas? Allgemeine Java-Themen 2
G Erste Schritte Aufgabe - Geht das auch schneller ? Allgemeine Java-Themen 7
E JavaFX String-Wert geht "verloren" - ratlos Allgemeine Java-Themen 2
B Fehler beim Auslesen von Einstellungen. Zwei ähnliche Blöcke, nur eins geht. Allgemeine Java-Themen 5
H Unicode ausgeben ohne Umwandlung - geht das? Allgemeine Java-Themen 3
F Java Anwendung Remote starten geht nicht Allgemeine Java-Themen 0
M Eingabe von Arrays geht über gewünschte Anzahl hinaus Allgemeine Java-Themen 2
K print() geht nicht ohne println() Allgemeine Java-Themen 3
V 2D-Grafik BufferdImage aus gif Datei in Jar erzeugen geht nicht. Allgemeine Java-Themen 6
Fl4sh1 Autovervollständigungfenster geht nicht (eclipse) Allgemeine Java-Themen 10
P Absatz im String / Excel / /n geht nicht Allgemeine Java-Themen 2
Z Java geht nicht im Browser Allgemeine Java-Themen 5
J Laden von JAR Files geht ohne ADMIN Rechte sehr langsam Allgemeine Java-Themen 6
B Keylistener geht nicht Allgemeine Java-Themen 9
R Wie geht man mit CachedRowSet um Allgemeine Java-Themen 2
I Downloaden einer Datei geht nicht? Allgemeine Java-Themen 16
P Input/Output Ordner löschen --> geht nicht Datei --> Ja Allgemeine Java-Themen 6
G JTable mit Keylistener geht nicht Allgemeine Java-Themen 3
C Zugriff auf private Methode per reflection geht nicht mehr Allgemeine Java-Themen 3
R Geht das? JRE 1.4 global, 1.6.20 nur für eine Anwendung? Allgemeine Java-Themen 9
ruutaiokwu junit mit annotations geht nicht? Allgemeine Java-Themen 5
F externe module. geht das in Java? Allgemeine Java-Themen 3
N Java geht nicht mehr zu löschen Allgemeine Java-Themen 5
M XML-Datei geht bei voller Festplatte verloren Allgemeine Java-Themen 4
DStrohma Daten in JAR speichern geht nicht?? Allgemeine Java-Themen 22
S Viele Bilder -> Speicher ausgelastet? / (De-)serialisierung geht nicht mehr richtig Allgemeine Java-Themen 8
B Komplettes Projekt als UML Diagramm mit eUML...geht das? Allgemeine Java-Themen 10
N List<? implements "Interface"> geht nicht Allgemeine Java-Themen 13
C Methodenkopf: Zu was wenns auch ohne geht? Allgemeine Java-Themen 3
A Javakonsolenfenster geht gleich wieder zu Allgemeine Java-Themen 6
M Übergebener String bearbeiten geht nicht. Allgemeine Java-Themen 4
D iText und Table.setTableFitsPage(); geht nicht Allgemeine Java-Themen 12
E Cipher geht mal und mal nicht Allgemeine Java-Themen 3
G Datei löschen nach kopieren geht nicht Allgemeine Java-Themen 5
A Standalone geht - JSP u. Bean nicht Allgemeine Java-Themen 6
D Jar auf Mac starten geht nicht Allgemeine Java-Themen 3
M Klasse Desktop geht nicht mehr (EXCEPTION_ACCESS_VIOLATION) Allgemeine Java-Themen 9
M ireport (Jasper Report) geht nur auf meinen Rechner Allgemeine Java-Themen 3
S Rechner formatiert - nichts geht mehr. Allgemeine Java-Themen 2
S Apache Commons Net geht nicht Allgemeine Java-Themen 5
zilti Wieso geht der StreamReader/Writer nicht? Allgemeine Java-Themen 5
T Geht das vielleicht noch einfacher? Allgemeine Java-Themen 7
M commapi unter vista, geht das? Allgemeine Java-Themen 4
V JavaProgramm von Konsole starten geht nichtmehr Allgemeine Java-Themen 4
V JVM OutofMemory Linux geht, windows nicht Allgemeine Java-Themen 3
Chris_1980 Geht das nicht auch einfacher (Arcanoid Multiball) Allgemeine Java-Themen 2
H Vector<T>[] vecs = new Vector<T>[10]; geht nicht Allgemeine Java-Themen 2
D Geht es auch schneller doppelte Einträge zu löschen? Allgemeine Java-Themen 23
K java geht beim chatten nicht? Allgemeine Java-Themen 2
G Mit Java auf windows 2003 userrechte zugreifen geht sowas ? Allgemeine Java-Themen 2
R Drag und Drop von externen Files geht nur als Application Allgemeine Java-Themen 2
O Input stream geht net Allgemeine Java-Themen 2
J Threads, Doppelpufferung --> Beispiel gefunden, geht net Allgemeine Java-Themen 16
P rar.exe und variablenparameter als String geht net Allgemeine Java-Themen 4
G Da Jikes nicht mit java 5 geht, gibt es eine andere. Allgemeine Java-Themen 4
TheJavaKid warum geht das nicht? Allgemeine Java-Themen 14
G setLastModified geht nicht Allgemeine Java-Themen 8
H Ausführungsgeschwindigkeit reduzieren. Geht das? .. Allgemeine Java-Themen 21
G parseInt geht nicht Allgemeine Java-Themen 10
K Mit Java kleine Freeware Programme erstellen. Geht das? Allgemeine Java-Themen 16
G Konsoleneingabe: vordefinierte werte setzen? geht das? Allgemeine Java-Themen 4
André B. geht das? Allgemeine Java-Themen 6
L JTable: Wenn Zeile markiert dann Meldung. geht nicht Allgemeine Java-Themen 4
G Mouselistener geht aber danach Fehler bei JOptionPane Allgemeine Java-Themen 4
K Object casting geht nicht. Allgemeine Java-Themen 3
M Systemzeit der Java VM geht falsch Allgemeine Java-Themen 4
G Warum einfach wenns kompliziert auch geht? Allgemeine Java-Themen 12
K KeyEvent in eigenem Component geht nicht Allgemeine Java-Themen 3
L Jar-Datei aus Eclipse geht nicht Allgemeine Java-Themen 2
C Was geht noch? Allgemeine Java-Themen 13
P Nur eine Instanz eines Programms zulassen, wie geht das? Allgemeine Java-Themen 15
G Geht das? Allgemeine Java-Themen 4
V StreamTokenizer ???? Wie geht das Allgemeine Java-Themen 3
N Hosting von Projekten Allgemeine Java-Themen 2
A Classpath Library in verschiedenen Projekten Allgemeine Java-Themen 2
S Eclipse Abhängigkeiten zwischen den Projekten in Eclipse Allgemeine Java-Themen 2
ruutaiokwu META-INF-daten bei ungepackten library-projekten während der entwicklung mit einbeziehen...? Allgemeine Java-Themen 2
S Frage zu verschiedenen Java Projekten Allgemeine Java-Themen 6
T Nicht verwendete Klassen in Projekten ermitteln? Allgemeine Java-Themen 2
S Package in verschiedene Projekten einbinden? Allgemeine Java-Themen 3
C Verständnis zur Strukturierung von Java-Projekten/Interfaces Allgemeine Java-Themen 2
G java design von klassen und projekten Allgemeine Java-Themen 6

Ähnliche Java Themen

Neue Themen


Oben