News

Freitag, 12. Februar 2010 | News

Himmlische Wege aus der Maven-Hölle: Wie viel Freiheit verträgt ein Entwickler?

(Link zum Artikel: http://www.it-republik.de/jaxenter/news/053888)
  • Teilen
  • kommentieren
  • empfehlen
  • Bookmark and Share

Unser JAXenter-Beitrag "Maven - eine Ausgeburt der Hölle" hatte die polemische Kritik von Kent R. Spillner am verbreiteten Build-Manager Maven paraphrasiert - und dabei wohl in ein Wespennest gestochen. Die lange Liste der Kommentare zum Beitrag spiegelt die mehr oder minder leidvollen Erfahrungen mit Maven-Build-Prozessen wider.

Eine Leitfrage, die noch immer nicht aufgelöst scheint, schwebt über der ganzen Diskussion zu den vermeintlichen Stärken und Schwächen der verschiedenen Buildsysteme:

Welche Freiheitsgrade sollen dem Entwickler beim Aufsetzen eines Build-Prozesses zugestanden werden?

Maven - Konfigurationshölle oder Dependency-Himmel?
Die vielfach geäußerte Hauptkritik an Maven ist die, dass Maven-Builds, wie es Kommentator MK ausdrückt, zu "komplex, fehleranfällig und langsam" seien. Das halbe Internet lade Maven herunter, kommentiert auch RPR, und baue dadurch zu viele Abhängigkeiten auf. Unzählige unnötige Ordner würden von Maven verlangt, die dann aber nichts oder nur einen einzigen Eintrag enthielten. Man könne Maven diesbezüglich zwar konfigurieren, doch sei das ein ebenso aufwändiges und zudem schlecht dokumentiertes Unterfangen.

Kommentator jiai bestätigt: "Maven funktioniert in den Default-Einstellungen gut", doch:

Sobald man nur beginnt, die Position des lokalen Repositorys zu ändern, ist man aber bereits in der Konfigurationshölle. jiai

Dass bei 99 Prozent der Fälle allerdings genau diese Standardeinstellungen völlig genügen, entgegnet Sascha den Maven-Kritikern. Ja, Maven könne ein Monster sein, wenn man in die Tiefe gehen müsse. Für den normalen Entwickler sei dies allerdings so gut wie nie erforderlich.

Maven definiert eben einen Standard - und gerade dieser Standard hat wohl viele Projekte eher auf einen Weg in den "Dependency-Himmel" geführt:

Wir haben uns vor einigen Jahren für Maven entschieden, weil es uns in der "agilen" Entwicklung aus der Dependency-Hölle befreite. Sascha

“Mit Maven [haben wir es] endlich geschafft, das Bibliothekenwirrwarr auf den einzelnen Entwicklungsrechnern sinnvoll in den Griff zu bekommen. Marc Teufel

Der Standard für die Directorystruktur, der defnierte Ablauf des Builds - das ist meines Erachtens eine gute Sache, es gibt eigentlich so gut wie nie einen Grund, warum das jedes Projekt anders machen sollte. Florain

Wie viel Freiheit braucht ein Entwickler?
Gut, Maven hat einen Standard etabliert - einen Standard, der für einige funktioniert, für andere aber zu wenig Freiheitsgrade erlaubt. Wie viel Freiheit verträgt ein Buildsystem? Die Argumentation von Sascha ist interessant:

Erlaubt ein Build-Tool die volle Kontrolle und freie Konfigurierbarkeit des Prozesses, so entfernt man sich immer mehr von einem Industrie-Standard, der Projekt-übergreifend das Arbeiten erleichtert.

Es soll eben nicht die ganze Freiheit geben. Gerade die ist problematisch. Der Vorteil bei Maven ist gerade die deklarative Herangehensweise. Wenn es in einem Build-System auch noch Variablen, Conditions und Schleifen gibt habe ich eine Programmiersprache. Sascha

DevKnight stimmt Sascha in diesem Punkt voll zu:

Flexibilität ist ja schön und gut, aber bisher hab ich noch kein Problem gehabt, was nicht im Maven-Umfeld lösbar war. DevKnight

Außerdem geht es um Standardisierung im Build-Prozess. Ich will doch als Consultant nicht in jedem Projekt ein anderes Build-Tool mit anderen Pradigmen/Strukturen haben. Von daher ist der Maven-Ansatz, viele Dinge zu standardisieren und zu vereinheitlichen, zu befürworten, weil Standardisierung am Ende immer Zeit und damit Geld spart. DevKnight

Flexibilität und Standards miteinander zu vereinen, ist laut Dierk König die Kunst und Lösung für dieses Dilemma. Wem Maven zu starr sei und Ant zu viele Freiheitsgrade erlaube, der solle sich einmal das Groovy-affine Gradle-Build-System anschauen, das dem Entwickler die Möglichkeit belasse, sich an Industriestandards zu halten, an den Stellen, an denen es ihm sinnvoll erscheint, jedoch auszubrechen und flexibel zu konfigurieren.

Gradle lässt Dir die ganze Freiheit - und gibt Dir trotzdem einen Standard (apache maven, hört, hört) vor. Das ist ja gerade der Trick! Man folgt dem Standard, wenn er taugt. Dierk König

Gradle ist ein build-toolkit. Das kann man wohl so sagen. Und ja - man kann programmatisch eingreifen. Anders als bei reinem Ant hat man aber sinnvolle Defaults, die dazu führen, dass man nur dann eingreift, wenn es nötig ist. Dierk König

Eine versöhnliche Erkenntnis trägt Marc Teufel bei, nämlich dass auch das jeweilige Projekt, das man zusammenbauen möchte, zu dem gewählten Ansatz eines Build-Tools passen muss.

Aber auch ich muss zugeben, dass sich Maven bei uns auch nicht für jedes Projekt eignete. So bauen wir unsere Eclipse RCP-Projekte beispielsweise ohne Maven, sondern ausschließlich auf Basis von Ant. Auf Biegen und Brechen geht da gar nichts...blockquote

Ich denke, man muss viel mehr von Fall zu Fall unterscheiden, welches Buildwerkzeug Sinn macht. blockquote

Die Frage steht nun aber immer noch im Raum:

Wie stark sollte ein Entwickler beim Build-Prozess bevormundet werden?

(hs)

Anzeige

Kommentare

Gravatar Ulrich Cech 12.02.2010
um 15:01 Uhr
"Wie stark sollte ein Entwickler beim Build-Prozess bevormundet werden?"
Ich würde es nicht als "bevormunden" bezeichnen, dies klingt viel zu negativ, sondern eher als die Einhaltung von Standardsprozessen. Gerade im Build-Bereich will ich als Entwickler keine komplizierten Logiken oder ähnliches in einen Build-Prozess bringen, sondern mich um die Business-Aufgaben kümmern, der Build sollte im Idealfall einfach funktionieren.
Man muss auch unterscheiden, welche "Funktionalitäten" allgemein überhaupt in den Build-Prozess eingeschlossen werden. Mittlerweile gehen Build-Prozesse weit über das reine Kompilieren von Sourcen hinaus. Es sollen Testcases ausgeführt werden, für die Testumgebung werden Datenbanken oder andere externe Systeme benötigt, die vielleicht sogar auf anderen Servern laufen, die wiederum erst gebootet werden sollen und am besten am Ende auch wieder heruntergefahren werden sollen usw. usw.
Man sieht, man kann hier seiner Phantasie freien Lauf lassen.

Maven hat den großen Vorteil, dass es vom grundsätzlichen Design her bei sehr minimaler Konfiguration beginnt, im einfachsten Fall kompilieren, Tests ausführen, JAR-File erzeugen. Und dies läuft alles über eine einzige Konfigurationsdatei, die sogar ein "Nicht-Entwickler" verwenden/erweitern könnte.
Über das Plugin-System kann man sich quasi in jede Phase des "vorgegebenen" Maven-Buildprozesses einklinken und durch Zusatzfunktionalitäten ergänzen, und die Auswahl an bereits vorhandenen Plugins ist immens.

Je mehr Freiheiten ein Build-System hat, desto eher werden diese auch benutzt. Das ist schon psychologisch bedingt, weil man "das ja ausprobieren muss/will". Mit diesen Freiheiten, und das zeigt die Erfahrung ziemlich eindeutig, öffnet man Tür und Tor, um von einem "einheitlichen" Vorgehen wegzukommen.

Alternative Frage: Warum brauchen wir "Design Pattern"? Man kann jedes Problem auch anders lösen (vielleicht sogar mit weniger Codezeilen), warum soll man sich von Design-Patterns 'bevormunden' lassen? Trotzdem werden diese verwendet, weil sie viele Vorteile bringen (kennt man das Design-Pattern, kann man den Code viel schneller nachvollziehen und somit bspw. die Einarbeitungszeit deutlich reduzieren u.v.m.).
#zitieren
Gravatar RPR 12.02.2010
um 21:54 Uhr
>> Wie stark sollte ein Entwickler beim Build-Prozess bevormundet werden?
Ganz einfach: Gar nicht:
1. Unterstützung ja - Bevormundung nein.
2. Standards ja - Zwangsjacke nein.
3. best practice ja - "Abstrakte Regeln" nein.

Etwas ausführlicher:
Zu 3.: An best practice wird sich jeder vernünftige Entwickler sowieso halten (die anderen sollten lieber erst ein Buch lesen oder jemanden fragen). "Abstrakte Regeln" (eines Außenstehenden) bringen nur Sand ins Getriebe.
Wenn die Maven-Regeln wirklich _so_ gut sind, würden sie sich auch ohne den Einsatz von Maven durchsetzen. Und tun sie das? Nun, wohl nur ein Spinner wird die Maven-Regeln ohne Not einsetzen wollen und die ganzen leeren Verzeichnisse anlegen...

Zu 2.: Das Zwangsjacken-Design von Maven, das allein der Not der Maven-Entwickler entsprungen ist, für ihre Meta-build-steps ein starres fixes Gerüst haben zu müssen, sich freudig als etwas erstrebenswertes verkaufen zu lassen - also dazu muss man IMHO schon ein ganz schön halsstarrer Pedant sein.
Das ganze erinnert mich an die "guten" alten EJB1-Architekturen, die ganzen Pseudo-Standards ("wenn das Verzeichnis nicht auf "intern" endet, dann ....") - ich glaube jeder weiß, was ich meine.

Zu 1.: Ein gutes Tool hat die wichtigen Sachen bereits "on board" - ein schlechtes Tool halt nicht oder zwingt einen zum Umkonfigurieren (oder gar reverse eneniering) in undokumentierten Tiefen. Oder noch schlimmer: Es zwingt einen, sein Projekt umzubauen.
Ist Maven besser, wenn man mit einem 15-Zeiler POM des selbe erreicht wie mit 20 Zeilen ANT-Code, aber dafür vorher stundenlang sein Projekt umstrukturieren musste? Geschmackssache? Aber was hat das mit dem Thema bevormundenden Regeln zu tun... Ich denke, der Punkt ist gar keine Sache des Tools: "A fool with a tool is still a fool" - es kommt _nicht_ auf das Tool an, sondern auf den, der es in der Hand hat.
Ein Dodel wirds sowohl mit Ant als auch mit Maven und mit allem anderen auch verbocken. Sogar etwas so vergleichsweise einfaches, wie nen ollen build ...

IMHO gibt es kaum einen Bereich, in dem die persönlichen Skills des Ausführenden so sehr über wohl und wehe des "Projekts" entscheiden wie in der IT.

Deswegen hilft hier keine Bevormundung sondern die oben genannten "Ja-Punkte".

(Übrigens einfach erweiterbar auf viele Sachen wie "Spring oder EJB", "Java, Scala oder Groovy" oder eben auch "Maven oder ANT"...)
#zitieren
Gravatar Sam 12.02.2010
um 22:23 Uhr
@RPR: Gut gesprochen! #zitieren
Gravatar sascha 15.02.2010
um 10:26 Uhr
Schieben wir mal die Polemik der Frage beiseite und werfen einen eher unvoreingenommenen Blick auf die IT. Sie lehrt uns, dass IT immer eine Vereinfachung, aber keine Bevormundung ist. Die meisten hier verwenden Java als Entwicklungsplattform und fühlen sich durch den GarbageCollector nicht bevormundet. EIn C Entwickler in einer embedded Umgebung wird sowas nie verstehen können. Wenn ich einen Code Genrator wie Rails, Grails oder Roo einsetze interessiert es mich nicht wie der Code aussieht. Ob 2, 3 oder 4 Zeichen eingerückt, ob Tab oder Space ist mir egal. Setze ich Rhapsody ein, habe ich nur noch Modelle. Der erzeugte Code? Wenn interessiert es. Die Tools sollen tuen und dies möglichst ohne dass ich viel damit zu tun habe. Das Ergebniss muss stimmen. Insofern unterwerfen wir uns täglich einer gewissen Bevormundung.

Bei Build-Systemen kommt es darauf an, dass sie bei grossen System "skalieren". Besteht ein Projekt aus 800.000 und mehr Zeilen Quellcode in ca. 120 technischen Projekten, welche wiederum ca. 200 Fremdbibliothken verwenden, dann muss ein Build-Tool einfach in der Anwendung sein und trotzdem mit der Komplexität zurecht kommen. Es muss agile Änderungen zulassen und nicht gleich zusammen brechen, wenn mal ein Fehler gemacht wurde. Ebenso wie beim Quellcode sollte die Konfiguration des Builds monton sein. Der Job als Entwickler ist kritisch genug, da will ich mich nicht auch noch mit dem Build-System belasten. Ich vereinfache also. Die als Bevormundung zu bezeichnen halte ich für grotesk.

Aber wie RPR schon geschrieben hat. Kein System ist so perfekt, als dass es nicht Idioten gibt, die seine Möglichkeiten vor die Wand fahren. Und ich muss nicht mal auf Spring, EJB, Scala oder Groovy verweisen. Schon beim Kern-Java gibt es solche Probleme. Beliebt seit Java 5 und dem Iterable Interface die ConcurrentModificationException. Oder Boolean.getBoolean. Ich schweife ab.

Vor 2 Jahrnen habe ich mal meine Erfahrungen vom Umstieg auf Maven 1 und von Maven 1 auf Maven 2 beschrieben. Könnt ihr hier nachlesen: http://www.speexx.de/blog/2008/01/03/500_000_codezeilen_sind_zu_beherrschen.html
#zitieren
Gravatar Flo 15.02.2010
um 12:08 Uhr
Aus meiner Sicht liegt kein Mehrwert darin, dass jedes Java Projekt seine Source-Code und Build-Ergebnis Verzeichnisse anders benennt - im Gegenteil: einheitliche Nomenklatur macht es Leuten die neu in das Team kommen viel einfacher. Und das gilt nicht nur für Verzeichnisnamen, sondern in allen Bereichen.
Das Maven zu starker Standardisierung drängt/ermutigt/zwingt finde ich deshalb positiv.

Meiner Meinung nach werden im Build-Prozess immernoch viel zu viele Extra-Würste gebraten - und das ist das, was letztendlich sowohl Maven (voller Plugins), Ant (mit tausenden Zeilen) als auch andere Build-Tools vom Himmel zur Hölle werden läßt.

Wir sollten häufig über unseren eigenen Schatten springen und uns nochmal fragen: Brauchen wir dies&das wirklich? Worin genau liegt der Vorteil zum Standard? Werden wir es auch noch in 3 Monaten unbedingt und ganz dringend benötigen? Und wenn wirklich, ist das hier überhaupt der richtige Ort um das einzubauen?
Beispiele:
1. Verzeichnisnamen: Eigentlich egal, also nehmen wir die mit dem besten Tool-Support: Mavennomenklatur. Alte Projekte, die ihre Namen nicht ändern können, weil das zu teuer wäre sollten bei ihrem alten Buildprozess bleiben. Lieber nur Schritt für Schritt zu einer "neuen Welt" wechseln, aber die neue Welt so schön und rein halten, wie sie ist - anstatt gleich alle Leichen aus der alten Welt mit rüberbringen.
2. Datenbankserver für den Test rauf und runter fahren: Hat nix mit dem Build zu tun, sondern mit sehr speziellen Anforderungen einiger Tests, und da sollte das dann auch hin: In die @Before Methode des entsprechenden Tests. Somit funktioniert das dann auch aus der IDE etc.
3. Buildergebnis auf den Fileserver hochkopieren, eMail schicken wenn der Build gebrochen ist, etc: Gehört alles nicht in den Core-build (= übersetzen von Sourcecode in Bytecode). Es hat also aus meiner Sicht nix in Maven poms zu suchen. Es sollte ein Extra-Script (z.B. in Ant) sein, mit dem man dann genau das machen kann. Und zwar ein Skript "copyBuildResultsToFileserver" und ein zweites Skript "sendMailIfBuildFailed". Devide&Conquer. Dann kann sich jeder Teil auf seine Punkte konzentrieren ohne zu groß und zu kompliziert zu werden.
#zitieren
Gravatar azgard 15.02.2010
um 21:06 Uhr
Also wer schon einmal selbst den Aufbau einer kompletten Build Infrastruktur gemacht hat (CI Builds -> Release Repository -> Code Analysis), der wird sofort die Vorteile des Maven "quasi" Standards begreifen.

Ich kann mit Hudson als CI System schnell und einfach meine ganzen Maven Projekte bauen lassen und behalte trotz "komplexer" Multi Module Projekte (und ggf. Abhängkeiten zu externen Modulen von anderen Entwicklern) die Übersicht über den Zustand meines Projektes (einfacher Zugriff auf alle Testergebnisse).

Mit Nexus steht mit ein komfortable Ablage aller Release Artefakte zur Verfügung (inkl. QA Staging).

Mit Sonar kann ich "out-of-the-box" alle Maven Projekte analysieren und mit firmenweiten Code Style Guides abgleichen lassen.

Und jetzt noch mal mit Ant ;-)
#zitieren
Gravatar RPR 15.02.2010
um 22:03 Uhr
Hallo Azgard,
natürlich hat ein (wie auch immer gearteter "Quasi"-Standard Vorteile - wenn man sich sonst auf keine vernünftige(re) Struktur einigen kann.
Hudson hat nichts mit Maven zu tun und ein Repository-Manager (wie Nexus) ebenfalls nicht; auch Sonar nicht. Alles ist mit Ant (und Ivy) genauso gut möglich.
Damit sollte deine letzte "Frage" auch schon beantwortet sein.

Außerdem sei bitte noch kurz angemerkt, dass diese ganzen Tools (wie build-tools selbst übrigens auch) ganz sicher noch kein Projekt gerettet haben- höchstens beiläufig unterstützt (was ja auch OK ist, aber deine Lobeshymnen sicher nicht verdient hat) - bei dieser Tool-Aufzählung kommt mir unweigerlich wieder der "fool with a tool" in den Sinn.

Weil "geil" manche Leute offenbar das Verwalten von maschinenerzeugten Kompilaten (sic!) finden, ist mir echt ein Rätsel - da ist null Kreativität drin, sondern höchstens ein wenig Wichtigmacherei - sei es dir vergönnt. :-)
Kein Wunder, dass in den meisten build-Teams abgewrackte Entwickler drin sitzen, die man zu sonst nichts mehr brauchen kann - und die ergötzen sich dann an der "Wichtigkeit" ihrer intelligenzlosen Skripte ...

Ein anständiges Anforderungsmanagement (damit meine ich nicht (nur) die Tools, sondern das Abklopfen der Anforderungen auf Sinn und Verstand sowie deren zeilgenaue Umsetzung) würde manchem Projekt mehr helfen als - noch mal - die Verwaltung maschinengenerierter Kompilate.
#zitieren
Gravatar azgard 16.02.2010
um 09:46 Uhr
Hallo RPR,

natürlich kann man auch mit Ant alles umsetzen, es ist aber eben alles eine Frage der Effizienz und Transparenz.

Mir ist es lieber wenn jeder Entwickler meines Teams in jedes Projekt problemlos "eintauchen" kann und sich um die angemerkten Anforderungen kümmern kann und sich nicht Gedanken um den Buildprozess zu machen.

Die von mir angemerkte Build Infrastruktur nutzt eben die Synergien die durch den Einsatz von Maven entstehen, dadurch mach ich mir und das Leben meiner Kollegen einfacher. Darum geht es denke ich.
#zitieren
Gravatar MoWe 16.02.2010
um 13:15 Uhr
Ich sehe es wie RPR: die beschriebene Infrastruktur hängt nicht von Maven ab - unabhängig davon, wie man Maven einschätzt. Wir haben eine Infrastruktur aufgesetzt, die Hudson, Sonar, Japex und ein paar andere Dinge im Verbund einsetzt - ohne Maven als Build-Tool einzusetzen. Eine Artefakt-Verwaltung fehlt noch, aber auch die lässt sich einbinden ohne mit Maven bauen zu müssen. #zitieren
Gravatar azgard 16.02.2010
um 13:42 Uhr
@MoWe:

Ich bezweifle keineswegs das das alles auch ohne Maven geht, jedoch wieviel Zeit und Resourcen benötigt man denn um das selbe Ergebnis zu bekommen?
#zitieren
Gravatar sascha 16.02.2010
um 15:51 Uhr
Es darf bei der ganzen Diskussion nicht um pro und contra Maven gehen. Das ist ermüdent und ist ähnlich bescheuert wie die Frage ob Windows oder Unix. Es geht um Effizienz. Ich bin mir sicher: eine grosses System kann ohne Probleme mit Ant verwaltet werden. So wie es auch mit Gradle oder make zu verwalten ist oder was auch immer für ein Tool gerade den Geschmack der Zeit trifft. Mir liegt es fern jemanden von Maven zu überzeugen. It's a tool, stupid.

Effizienz aber geht immer auf Kosten von Freiheitsgraden. Zur Effizienz gehört es auch, dass Menschen mit weniger Know-How in einer bestimmten Technik entweder a) schnell jemanden haben, der schnell ihre Probleme lösen kann oder b) sich schnell einarbeiten können in die Lösung des Problems. Es ist ein Irrglaube, dass alle Entwickler gleich gute Skills haben. Zumindest habe ich solche Teams noch nicht gesehen oder aufgebaut. Warum auch soll sich ein Webentwickler gross umd das Build-System kümmern. Er hat genug Probleme mit dem IE6. Sein Build-System muss tun, ohne dass er davon gross was mitbekommt. Das beduetet: egal ob Maven, Ant, Gradle oder make: dass Build-System wird ihn immer "bevormunden".

Der Entwickler interessiert sich auch nicht für Hudson, Nexus oder Sonar... (okay, für Letzteren, wenn ich ihm die miserable Testabdeckung und die Findbugs nogoes um die Ohren haue). Das sind Werkzeuge, die für ihn transparent sind. Genauso wie der "javac" - wer hat den denn wann zum letzten mal wirklich benutzt - oder was auch immer. Die müssen einfach nur tun.

@RPR: Puh, dass mit dem maschinenerzeugten Kompilaten und den abgehalfterten Entwickler, die jetzt das build-System machen. Dazu zwei Dinge:

1. jedes maschinenerzeugte Kompilat ist eine Fehlerquelle weniger. Der Entwickler kann sich auf die wirklich krativen Dinge verlassen. Je mehr du automatisieren kannst um so besser.
2. warum sind ältere Etwickler beim build-System? Weil sie die nötige Erfahrung und geistige reife haben. Weil sie schon zu viel Scheisse in ihrem Entwicklerleben gesehen haben und wissen worauf es ankommt. Weil sie keine schnellen Ad-hoc Änderungen vornehmen, die das System instabil machen. Weil sie wissen, dass der Code eines Systems nur ein kleiner Teil ist und das System als Ganzes auch in 5 oder 10 Jahren noch funktionieren muss. Ein Thema, das Entwickler unter 20 Jahren Berufserfahrung nicht mal annährend verstehen können.
#zitieren
Gravatar MoWe 16.02.2010
um 16:13 Uhr
@azgard: das ging recht flott von der Hand. Das Nicht-Verwenden von Maven für den Build war kein echter Engpass. Wie gesagt, die Aussage ohne Wertung über Maven an und für sich. Zum Bauen haben wir übrigens (da Eclipse-Kontext) Buckminster eingesetzt. #zitieren
Gravatar RPR 16.02.2010
um 22:40 Uhr
Hallo,
@azgard:
>> natürlich kann man auch mit Ant alles umsetzen
Aha, das hörte sich oben aber noch ganz anders an - freut mich :-)

>> Mir ist es lieber wenn jeder Entwickler (...) sich nicht Gedanken um den Buildprozess (muss).
Oder wie sascha sagt:
>> Warum auch soll sich ein Webentwickler gross umd das Build-System kümmern.
Voll daneben, wirklich!
Jeder Enwickler muss sich um den Build seiner Software (mit-)kümmern und ihn verstehen, wie soll er sonst agil seine Software testen können?
Wenn Entwickler den build-Vorgang nicht mehr verstehen (wollen), dann würde ich die Axt an der Wurzel ansetzen, dann ist da etwas ganz falsch gelaufen. Entweder die Entwickler haben die falsche Einstellung oder der build (von einem separaten build-team) ist so komplex und Selbstzweck (Existenzberechtigung fürs build team) geworden, dass sich keiner mehr freiwillig da rein graben will. So geht das aber nicht! In beiden Fällen. Eine Firma die so etwas zuläßt ist krank!

>> Der Entwickler interessiert sich auch nicht für Hudson, Nexus oder Sonar...
Blödsinn! Das sind seine Arbeitsergebnisse, das ist Infrastruktur, die ihm in seiner Arbeit hilft. Oder meinst du, das wäre Infrastruktur fürs Business? Wenn es aber weder das business noch die Entwickler interessieren würde, dann wäre das Ding unnütz!
Ist es aber offensichtlich nicht. Deswegen: Wenn sich _eure_ Entwickler nicht mehr für den build Prozess interessieren, dann nehme ich an, ihr habt ein eigenes build team, das halt seinen Selbstzweck (gegen diese) verteidigt. Siehe einen Absatz höher.

>> jedes maschinenerzeugte Kompilat ist eine Fehlerquelle weniger
?? Hat das jemand bezweifelt? Hier ging es um Kreativität contra (Selbst-) Verwaltung. Du nix verstähn?

>> warum sind ältere Etwickler beim build-System? Weil sie die nötige Erfahrung und geistige reife haben.
*LOL* *ROFL* *hau-mich-weg*
Du hast dich geoutet! *ggg*
Es sein dir dein vorgezogener Ruhestand und ein versöhnliches Selbstbild vergönnt - aber mit der Realität in einer funktionierenden IT hat das nichts zu tun.
#zitieren
Gravatar sascha 17.02.2010
um 12:41 Uhr
@RPR
Wollen wir hier ernsthaft diskutieren oder Kinderspielchen spielen. In der Tat, für Kinderspielchen bin ich zu alt, meine letzten Flanmesware hatte ich im Fido-Netz. Denn ich muss mich nicht outen oder verraten oder was immer du in meinem letzten Posting erkannt haben magst. Im Gegensatz zu dir verstecke ich mich nicht in der Anonymität - dein gutes Recht - sondern du kannst bei jedem Posting von mir hier auf das verlinkte Blog klicken und schauen a) wie alt ich bin und b) was ich gerade mache. Können wir also zur Sache zurückkehren, oder soll ich deine pupertierenden Absonderungen in Zukunft ignorieren?

Das Ding ist: ich schreibe von der realen Entwicklungswelt. In der nicht immer die neuesten Tools verwendet werden können. Einer Welt in der C-Compiler zertifiziert werden müssen und deswegen nur alle 4-6 Jahre ein Neuer verwendet wird. Weil so eine Zertifizierung 250.000 Euronen kostet und von der entwickelten Software Menschenleben abhängen. Ich schreibe von Software, die älter ist als die meisten Entwickler die sie warten. Ich schreibe von Software, die auf der grünen Wiese begonnen wurde und die auf über 1.000.000 Codezeilen angewachsen ist. Bei dem es kein separates Build-Team gibt, weil hierfür kein Budget vorhanden ist, es trotzdem funktionieren muss und ich keinen Bock habe mich mehr als 4 Stunden im Monat um das Build-System zu kümmern. Ich schreibe von Software, deren Entwicklung Millionen gekostet hat. Ich schreibe von Software bei deren Entwicklung ich in halben Dekaden und weiter denken muss und nicht in Wochen oder Monaten, vielleicht 1-2 Jahren.

Und trotzdem: ich programmiere immer noch selbst, bin kein Verwalter. Ich mach mir immer noch die Finger schmutzig, wühle im Dreck, manipuliere Bytecode. Ich habe zu viel Scheisse von jungen, unerfahrenen Teams gesehen, deren Beseitigung Jahre gedauert hat - wenn die Firma nicht vorher den Bach runter gegangen ist. Und ich bin dankbar dafür, dass es dies jungen unerfahrenen Teams gibt, die diese Scheisse bauen. Denn deren Dreck weg zu räumen, damit verdienen ich meine Brötchen.

Und wer bist du, RPR?
#zitieren
Gravatar RPR 17.02.2010
um 21:06 Uhr
Armer Sascha, sorry dass du dich so auf den Schlips getreten fühlst. Dass du dich in so einer Art rechtfertigen musst, zeigt aber nur, dass du die (bierernste) Kritik sehr wohl verstanden hast und sie dir deswegen (leider) ziemlich an die Nieren geht.
Leider, ja, denn es tut mir echt leid. Es ist nicht meine Absicht, Leute zu demütigen, aber ich hab ein Problem damit, wenn Leute Blödsinn verbreiten, um sich damit gar zu offensichtlich selbst auf die Schulter zu klopfen, wie du es oben getan hast. (Ist heutzutage zwar ziemlich verbreitet; stinkt aber trotzdem.)
Meist sind es nur Vertriebs-Märchen und ach so durchsichtige Hypes über die ich hier (zurecht) herziehe. Und die letzten zwei Sätze waren wirklich unter meinem Niveau.
Und sieh, ich bessere mich schon: Ich nehme keine deiner zahreichen Einladungen, dich weiter zu entbös/den an!

Also Sascha: Gib nicht so an, dann wird dir auch keiner über den Mund fahren; benutz nicht so viele Worte wie "Dreck", "pubertierend", "Scheisse" etc. so etwas fällt nur auf dich selbst zurück.
Solltest du eigentlich wissen in deinem Alter ;-)
#zitieren
Gravatar sascha 17.02.2010
um 21:27 Uhr
@RPR
Ich habe beschrieben wer ich bin. Du leider nicht. Schade. Damit bist du jetzt im mentalen Trollfilter. Bye.
#zitieren
Gravatar ChrisCross 18.02.2010
um 12:08 Uhr
Schade, dass dieser eigentlich interessante Thread so ausartet.
Ich bin als Berater in Java Projekten sehr an Build-Prozessen interessiert. Wichtig sind als erstes die Anforderungen an den Build-Mechanismus. Danach kann man mit Erfahrung und ein wenig Hilfe von Mr. Google sicherlich geeignete Lösungen konzipieren.
Auch für Ant-Nutzer ersichtlich, hat Maven doch einige Konzepte bei den Java Build-Prozessen durchgesetzt:
1. Dependency Management
2. Strukturierter Aufbau von Projekten
3. Standardisierte Phasen

Persönlich bin ich nicht der Meinung, dass jeder Entwickler den gesamten Build/Release/Deploy/ Prozess beherrschen muss.
Auch sollte nicht jeder Entwickler an dem Prozess "herumschrauben" müssen und sich jede Firma einen selbst entwickelten Prozess aufbauen müssen.
Für 1.000.000 Code Zilen braucht man schließlich auch noch Zeit ;-) (Sorry)


Eine gute Übersicht der aktuellen Tools bietet:
http://www.hjug.org/present/Java_Build_Tool_Comparison.ppt
#zitieren

Folgende Links könnten Sie auch interessieren

zurück zum Seitenanfang