Ein Umstand, der in Unternehmen auf Entscheiderebene außerhalb des IT-Umfelds gerne verdrängt wird: Softwareentwickler sind Spezialisten und benötigen deshalb spezielle Hardware. Wer denkt, dass “Software schreiben” ungefähr mit dem Schreiben von Textdokumenten vergleichbar ist, liegt in etwa so richtig wie jemand, der meint, Autofahren hieße, auf einem Stuhl zu sitzen und beide Füße unregelmäßig auf- und abzubewegen.
Oberflächlich mag der typische Softwareentwickler Quellcode schreiben, was nicht so entfernt vom Schreiben von Textdateien zu sein scheint.
Tatsächlich ist der Quellcodeeditor nur ein Bestandteil von vielen, die die Integrierte Entwicklungsumgebung (“IDE”) eines Entwicklers ausmachen: Damit der Quellcode überhaupt ausgeführt werden kann, muss er kompiliert werden. Bisweilen muss ein Entwickler während der Ausführung des Programms an bestimmten Stellen den Ausführungsfluss Schritt-für-Schritt überwachen (“debuggen”), wozu die Anwendung in den Arbeitsspeicher geladen werden muss.
Der Quelltext bewegt sich auch nicht im luftleeren Raum: Anwendungen werden in Projekte und Bibliotheken aufgeteilt, häufig handelt es sich um einige hunderte bis tausende Dateien, die gemeinsam kompiliert und in den Arbeitsspeicher geladen werden müssen. Allein das Lesen der Quelltexte und das Erstellen der Kompilate kann bei mittelgroßen Anwendungen mehrere Minuten, bei größeren sogar viele Stunden andauern.
Auch wenn IDEs inkrementelles Kompilieren ermöglichen, wird des öfteren ein “Build” (alle Kompilate und dazugehörige Dateien) wieder gelöscht und vollständig neu erstellt.Zudem sind Softwareanwendungen im Unternehmensumfeld verteilt und kommunizieren mit Datenbanken, anderen Systemen und/oder der im Unternehmen eingesetzten Middleware.
Normalerweise ist der Entwickler bestrebt, auf seinem Rechner die Bedingungen, unter denen seine Anwendung später ausgeführt werden soll, en miniature nachzubilden: Auf diese Weise ist er unabhängig von Wartezeiten und kann ggf. auch offline (z.B. im Zug) arbeiten.
Was deshalb wirklich entscheidend für einen Entwicklerrechner?
Die Leistung:
Ein Softwareentwickler benötigt ein für seine Ansprüche äußerst leistungsfähiges System, was sich insbesondere auf
a) die Festplatte
b) den Hauptspeicher
c) die CPU und
d) Grafikkarte + Display bezieht.
Die Festplatte ist deshalb so wichtig, weil zum Erstellen von “Builds” oft tausende Dateien gelesen und geschrieben werden. Normalerweise liegt in langsamen Festplatten der Schwachpunkt von Entwicklersystemen (abgesehen von Virenscanner, die die Buildverzeichnisse überwachen). Sinnvoll können hier Solid State Discs (flash-basiert) oder RAID-Systeme (RAID 0 oder 0+1, aber nicht 5) mit SATA oder SAS sein, die den Datendurchsatz erhöhen.
Der Hauptspeicher muss sehr großzügig dimensioniert sein: Zur Zeit sollte ein Rechner für die Anwendungsentwicklung verteilter Systeme über mindestens 8 GByte Hauptspeicher verfügen, besser wäre gleich das Doppelte (einige Notebook-Workstations bieten mittlerweile 16 GByte an).
Softwareseitig bedingt dies den Einsatz von 64-Bit-Betriebssystemen.Wird mit virtuellen Maschinen gearbeitet (was immer mehr zunimmt), ist ein Mehrprozessor– wenigstens ein Multicoresystem sinnvoll. Um die Fülle an Informationen einer IDE wie Eclipse, Netbeans oder Qt auf einen Bildschirm zu bekommen, empfiehlt sich zudem ein hochauflösendes Display und eine entsprechende Grafikkarte.
Wie separat dargelegt, macht sich eine Leistungssteigerung bei Entwicklerrechnern schnell bezahlt. Um Entscheidern (und nach besserer Hardware strebenden Entwicklern) eine objektivere Entscheidungsgrundlage an die Hand zu geben, würde ich mir einen Benchmark wünschen, der
a) die Leistungsfähigkeit eines Systems hinsichtlich der o.a. Kriterien für einen Entwicklerrechner misst,
b) kostenlos verfügbar,
c) plattformunabhängig und
d) einfach bedienbar ist.
Ein Benchmark der mit Referenzprojekten arbeitet, der gängige IDEs startet, auf denen kleine, mittelgroße und große Referenzprojekte mit der IDE erstellt werden, wobei dies noch mit parallel laufenden Middlewareservern kombiniert werden sollte.
Falls jemandem ein solcher Benchmark bekannt ist, wäre ich dankbar für einen Hinweis ()! Interessenten, die ein derartiges Projekt auf die Beine stellen möchten, können mich gerne ansprechen.
Schreibe einen Kommentar