Verglichene Sprachen: Java, Go Seniorität: Senior Domäne: Client-Server Webapplikation
I: Du arbeitest ja zur Zeit als Softwareentwickler, wie würdest du da deine Rolle einschätzen.
B: Ich bin aktuell Tech-Lead des Projekts, also quasi der der Entscheidet wir wir das Projekt technisch weiterentwickeln. Insofern ist das mehr eine Senior Rolle.
I: Und welche Programmiersprachen hast du insgesammt schon mal über einen längeren Zeitraum regelmäßig eingesetzt
B: Jetzt in den letzten Jahren hab ich hauptsächlich Java entwickelt weil die Firma in der ich Arbeite Hauptsächlich Java benutzt. Aktuell gehört noch Go zu meinem Täglichen Brot privat benutzt ich Hauptsächlich Rust, als Student hab ich Hauptsächlich C und Python gemacht.
I: Ok das ist ja schon einiges. Das heißt momentan ist am Häufigsten Java und an zweiter Stelle Go
B: Genau
I: Das heißt von der Reihenfolge wie du es gelernt hast war dann C das erste?
B: Wenn man ganz früh anfängt hab ich zuerst Basic gelernt, danach war so eine Zeit Turbopascal, Delphi, dann wahrscheinlich PHP und dann Java solche Sachen wie Pyhton und Ruby halt während des Studium. C kam dann erst so gegen ende meines Studium weil ich da an einem lehrstuhl gearbeitet hab wo es hauptsächlich um Netzwerk und Betriebssysteme ging. und da war einfach C das normale.
I: Für die nächsten Fragen wäre es ganz gu wenn wir mal zwei Sprachen im Vergleich sehen. Ich denk da bietet sich Java und Go an wenn du die am Häufigsten benutzt hast
B: (überlegt) Es kommt immer drauf an was man erreichen will. Ich bin jetzt nicht der größte Java fan. Ich würde jetzt kein Projekt in java starten, das ist aber eine persöhnliche Sache. Prinzipiell weiß ich das Java alles kann was ich brauch und es ist eine erwachsene Sprachen und man kann alles erreichen, es hat auch eine große Community. Aktuell finde ich so Sprachen wir Go und Rust persöhnlich interessanter und finde es auch schneller damit Sachen umzusetzen.
I: Kannst du das an was festmachen, die Geschwindigkeit ist eine Sache, aber da spielen natürlich auch immer mehrere Sachen mit rein. Liegt das daran das die Standartbibliotheken schon mehr abnehmen oder das die Syntax kompakter ist
B: Was immer ganz ist bei sowas wie Go und Rust ist, das man am Ende Binarys hat, Man kompiliert das auf die Plattform auf der man es laufen lassen möchte und braucht keine JVM. Das macht es einfach es irgendwo zu deployen da man es nur ausführen muss und nicht vorher noch java installieren muss. Die JVM hat natürlich auch einen Overhead der irgendann vernachlässigbar ist. Aber so für, ich habe spaß an dem was ich tue finde ich das: ich hab ein Binary, ich kann das schnell bauen und das schnell irgendwo deployen ganz angenehm, Von der Standartlibrary her denke ich das die sich nicht so viel nehmen. Was natürlich cool bei so sprachen wie go und Rust das die sich wesentlich schneller weiterentwickeln. Bei Java häufig das problem das eine neuen Java Version dann eine paar Jahre gedauert hat. das wollen sie jetzt zwar prinziepiell ändern aber mal schauen wie das dann wird. Java war halt immer so hinter her bei dem was gerade hip ist. Es fühlte sich halt immer sehr Altbacken an. Ich weiß nicht ob das jetzt besser wird.
I: Wenn man jetzt mal die COmmunitys vergleicht bzw. die Entwicklerkultur. Sind dir da unterscheide aufgefallen
B: (überlegt) Naja also ich mag beide Communitys. ich hatte jetzt noch mit keiner wirklich probleme. Für mich persöhnlich kommt es immer so rüber das Java mehr so Enterprise, also Unternehmen software ist. Also Enterprise software so, ich weiß nicht wie man das ausdrücken soll, also wenn man so an deutsche Banken denkt oder deutsche Versicherungen denkt. DIe bauen das dann einmal unnd dann läuft das dann noch nach 10 Jahren auf Java 6 obwohl das schon längst outdated ist. Bei GO hat man dann eine recht Junge Communtiy die auch gewöhnt ist schnell zu iterieren und schnell auf die neuste Version zu gehen und schnell neue Sachen auszuprobieren. Gerade wenn man sich den ganzen Cloud bereich anschaut mit Kubernetes und so. da ist GO einfach die trendige Sprache und die Hälfte der Software ist geschrieben in Go und da merkt man halt schnell das man wenn man Java erwähnt nicht so weit kommt. was aber nicht unbedignt so schlecht ist
I: Du meitest gerade das du das gefühl hast da in den Communitys auch große Firmen unterwegs sind bei java. Siehst du das so das die das auch bremsen würden oder ist das eher ein positiver aspekt ist da firmen das vorrantreiben
B: Ich meinte nicht unbedignt das da groß Firmen dahinterstehen. eher das man merkt das Java Projekt, (überlegt) ICh weiß wie man das ausdrücken soll. Die haben für mich immer so einen Enterprise touch. Die sind irgendwie groß und nicht cool und funktioneiren halt irgendwie. Ich hab halt noch nie jemanden sagen hören, das ist ein kleines Java Projekt. Java projekten scheinen irgendwie immer groß zu sein von Natur aus. Ich glaueb nicht Firmen das Java bremsen, java hat sich immer weiterentwickelt. Was ich halt sehe in der Firma in der ich jetzt arbeite, (Firmenname), Das halt häufig die Firmen hinterherhängen. Das die noch lange nicht auf der letzten Java Version sind. Das die dann irgendwie Stecken bleiben auf einer alten Java Version die vielleicht vor 10 Jahren released wurde. Wenn man dann Software baut die diese Firmen benutzten hat man dann das Problem das man selbst nicht deien Software auf neue Java Versionen updaten kannst und die Features aus den neuen Versionen auch nicht nutzten kannst weil du immernoch die Kunden auf den alten Versionen supporten muss. Das bremst uns dann wiederrum in der Innovation.
I: Würdest du jetzt sagen das hat einen direkten einfluss auf deinen Alltag als entwickler wenn du da mit älteren Java Versionen arbeiten musst.
B: Als ich noch in Position war das ich direkt an (....) , was ja unser Hauptprodukt ist, gearbeitet habe war das so. Also das es einen aktiven Einfluss hatte wie ich arbeite und was ich konnte und was ich nicht konnte. Wir hatten da auch echt probleme damit.
I: Kannst du die Probleme noch ein bisschen ausführen
B: Einmal hattest du dann ein Problem so das man Software geschrieben hat die funktioniert lokal aber mit Java 6 auf dem Jenkins funktioniert es halt nicht. Und Lokal hat man halt kein Java 6. installiert und benutzt s nicht default, weil es keinen Sinn macht. Das heißt du musstest dann das Problem anders lösen weil du konntest nicht das benutzt, du konntest nicht die Library benutzten, also du konntest eine Library garnicht benutzten weil die garnicht mehr mit Java 6 kompatibel war. Was dann noch dazu kommt ist das es mehrere Java Mschinen gibt. Also es gibt ja zum Beispiel OpenJDK, OracleJDK, IBM hat ihr eigenen JDK, früher gab es noch was das hieß JRocket, das heißt dann hattest du eine Java Version aber verschiedene JVMs und selbst die haben sich unterschiedlichen verhalten. Das habe ich zum BEispiel mal hart gelernt als es um XML Parsing ging. Weil XML parsing für jede JVM ein bisschen anders war und dann muss man da so herum programmieren. Das hast du bei GO halt nicht wirklich das problem das du eine Runtime hast. Du kompillierst das mit der Version die du gerade hast und dann läuft das. Der Kunde muss nicht eine bestimmte Version haben. Es ist halt eine Binary
I: Ok das heißt ist so das das Java Ökosystem fragmentierter wurde
B: genau
I: Gibt es den Probleme da komme ich mit Java viel schneller vorran als mit Go, oder auch umkehrt. ODer gibt es probleme die du mit der einen Sprache ganz einfach Lösen kannst wo du mit der anderen Sprache nicht weißt wie du es machst.
B: (überlegt) Ne wüsste ich nicht. Ich denke ich könnte in allen Sprachen das selbe machen. Was höchstens ein Grund sein könnte das ich jetzt eine ganz spezielle Library oder ein ganz spezielles Protokoll brauche wo es für die eine Sprache nichts gibt. aber da wüsste ich jetzt auch kein Beispiel. Also ich denke beide Sprachen sind schon ähnlich stark am Ende.
I: Das meißte das wir jetzt darüber gesprochen haben waren ja eher Rationale Gründe, oder würdest du die teilweise auch als persöhnliche einschätzung wiedergeben und eher auf der emotionalen schiene verbuchen
B: Also manches davon klar ist persöhnliche Einschötzung und wieviel spaß mir die Sache mach. Aber normalerweise versuche ich da schon recht fair zu sein wenn ich über Programmiersprachen rede. Ich hab auch jetzt nicht so das ich sage eine Proigrammiersprache mag ich garnicht. Ich mag das eigentlich gerne mal die Sprache zu wechseln.
I: DU hattest ja vorher erzähl das du am Anfang als du dort angefangen hast an dem Hauptprogramm gearbeitet hast und da noch die Probleme mit den älteren Java Versionen hattest. War das mit ein Grund dafür das du gesagt hast du gesht jetzt auf das neue Projekt wo du dich damit nichtmehr beschäftigen musst.
B: (überlegt) nein. Darauf hatte ich jetzt keinen einfluss das ich das projekt wechsle. Also kalr hatte ich Einfluss aber das war jetzt nicht ich verlasse diese Projekt hier aktiv. Aber natürlich haben wir uns gesagt wenn wir ein neues Projekt anfangen das wir das nicht wieder machen, das wir gleich verscuhen die neusten Versionen zu supporten und nicht wieder so einen Rattenschwanz da aufbauen. Das haben wir schon mitgenommen.
I: Als du damals angefangen hast bei ("Firmenname"), war da die Sprache mit der dort gearbeitet wurde ein Grund dahin zu gehen oder kam das einfahc mit und die gründe waren andere.
B: Die Sprache war kein Grund. Wie gesagt ich bin eigentlich kein großer Java Fan. wie gesagt in meiner Privaten Zeit würde ich nie Java schreiben. Es war die Sprache der Firma, es gab da auch keine Diskussion. Ich hatte auch nicht vor das zu diskutieren. Für mich war das auch kein Grund nicht dahin zu gehen. Ich wollte zu der Firma gehen, ich wusste die machen Java und ich wusste ich kann Java prinzipiell, auch wenn es nicht meine private Lieblingssprache ist. Es ist jetzt auch ncith so das es eine sprache ist die schmerzhaft ist. Ich bin ja nicht in eine FIrma gegangen die Cobol macht.