"Quereinstieg" in die Programmierung? Welche Programmiersprache?

Lern erst mal eine Sprache und verinnerliche sie! Später dann noch eine zweite (ähnliche) Sprache zu lernen, ist dann in wenigen Wochen möglich.

Analogie: "Ich will Dolmetscher werden! Mit welchen 2 Sprachen soll ich anfangen?". Am Ende wirst du keinen Job finden, wenn du nur gebrochen 2 Fremdsprachen sprichst.

Das Problem ist ja für gewöhnlich auch nicht die Sprache, sondern das Ökosystem. Einfach "nur" Java zu können, bringt dir im Job nichts bzw. nicht viel. Das JDK ist riesig und die wichtigsten Klassen, Funktionen und Möglichkeiten solltest du im Schlaf beherrschen. Und für gewöhnlich arbeitet man dann noch zusätzlich mit anderen Frameworks - also zusätzlich zum JDK (das vereinfacht gesagt im Prinzip auch nur ein Framework ist).
Dabei ist es prinzipiell erst mal egal, ob du dich für Java EE (heißt demnächst Jakarta EE) oder Spring entscheidest. Oder eines der kleineren Frameworks nimmst, wie z.B. Vaadin, Grails, Dropwizard, Play. Wichtig ist, dass du dich am Ende damit auskennst. Denn diese Erfahrung wird deine Jobauswahl stark beeinflussen.

Wenn eine Firma nur mit Spring entwickelt, dann will sie auch einen Spring Entwickler einstellen. Wenn du dann da ankommst und sagst "aber ist doch alles nur Java und außerdem beherrsche ich Play und Grails", wirst du direkt abgelehnt. Du sollst ja schließlich Geld erwirtschaften und nicht erst mal mehrere Monate damit verbringen, dich mit den Strukturen und Funktionen des Frameworks vertraut zu machen.

Dasselbe gilt für evtl. eingesetzte Datenbanken. SQL Basics zu beherrschen ist nie verkehrt und damit kann man auch schon relativ viel anfangen. Aber in den letzten paar Jahren sind so viele neue Datenbank Technologien auf den Markt gekommen, dass man selbst als SQL Profi nicht mehr für alles geeignet ist, was mit Datenbanken zu tun hat. Früher wurden relationale Datenbanken für alles verwendet. Heutzutage gibt's für jeden Anwendungsfall eine eigene spezialisierte Datenbank. Natürlich wird SQL und relationale Datenbanken immernoch großflächig eingesetzt, aber gerade in Startups und Cloud Umgebungen hat man immer öfter Document Databases, Wide Column Stores, Graph Databases, etc. pp. vor der Nase. Und da kommt man dann mit seinem "JOIN" und "BEGIN TRANSACTION" aus der SQL Welt nicht mehr weit.

Was ich damit sagen will: Die Welt der Software Entwicklung ist verdammt riesig. Und ohne Spezialisierung und gute Kenntnisse kommt man nicht weit.

Und nicht zu vergessen: Du solltest natürlich die wichtigsten Software Design Pattern kennen und anwenden können. Also sowas wie Singleton, Dependency Injection, Factory, etc. pp. Das sind etablierte Standards, um Standardprobleme zu lösen. Die gelten natürlich für (fast) jede Sprache. Darüber gibt's reichlich Infos im Netz, aber auch diverse Bücher (Martin Fowler ist bei solchen Themen eigentlich immer eine gute Anlaufstelle).

EDIT: Bzlg. "wo verdient man am Meisten". Das ist zum einen natürlich Verhandlungssache und zum anderen ist deine Position im Unternehmen und natürlich das Unternehmen selbst entscheidend. Ein Senior Frontend Entwickler wird sicherlich im Normalfall mehr verdienen als ein Junior Backend Entwickler.
Und deine Ansprüche sind natürlich auch wichtig. Ich geb mich z.B. lieber mit weniger Lohn zufrieden und habe dafür viele Freiheiten. Z.B. kann ich aktuell (wenn ich will) das ganze Jahr über Home Office machen (oder sonst irgendwo arbeiten) und kann meine Arbeitszeit nahezu komplett frei einteilen. Kommunikation geschieht fast ausschließlich über E-Mail. Telefonate müssen vorher vereinbart werden. D.h. ich kann unter der Woche mal 'nen Tag frei machen und dafür dann am Wochenende arbeiten. Oder am Abend, wenn ich tagsüber was besseres zu tun habe.
 
Zuletzt bearbeitet:
Ich bin ziemlich unentschlossen, welche "Hauptsprache" ich lernen soll...

Weltweit scheint "C#/.Net" auf dem Vormarsch zu sein, in Deutschland und meiner Region (Raum Frankfurt) herrscht bisher aber eher "Java" vor.

Hat jemand Erfahrung, damit in welchem der beiden Bereich man eher einen Job bekommt? Es könnten ja trotz einem höheren Angebot an Stellen auch mehr Bewerber pro Stelle bei "Java" sein.

Für mich persönlich stelle ich mir .Net +SQL etwas einfacher und angenehmer vor, da man wohl mehr implementiert ist. Bei Java möchte jede Firma ein anderes "Framework/Addon".

Auch ist die Sprache moderner.


Wenn es aber deutlich schwerer sein sollte einen Job damit zu bekommen, würde ich eher auf "Java" setzen. Als Quereinsteiger dürfte das ja sowieso schon nicht so einfach sein.
 
................
 
Zuletzt bearbeitet von einem Moderator:
Ich bin Angestellter in einem mittelständischen Nicht-IT Betrieb aus der Musik- und Veranstaltungsbranche und kümmere mich (heißt: Weiterentwicklung, Technischer Support, Wartung, etc.) um die von der Firma eingesetzte Software zur Verwaltung ihres Geschäfts. In der Branche gibt's (noch) keine wirklich allumfassende Standardsoftware (die meisten arbeiten einfach mit Excel, E-Mails und Stift und Papier). Gleichzeitig erfolgt der Vertrieb der Software über diese Firma. Um den eigentlichen Kundensupport kümmern sich nebenbei 2-3 Mitarbeiter der Firma. Die arbeiten schließlich rund um die Uhr damit und können in wenigen Sekunden jede Frage beantworten. Ich bin da dann nur gefragt, wenn's tiefer in die Materie geht.

Die aktuelle Software ist nun schon ein paar Jahre alt. Und aktuell darf ich sehr viel Daten sammeln und auswerten, um ein möglichst allumfassendes Datenmodell für "Version 2" zu erstellen. Gar nicht so einfach, wenn es keine Standards in der Branche gibt. Für alles gibt es teils 2-3 total unterschiedliche Begriffe, die dasselbe bedeuten. Und jeder benutzt einen anderen. Am Ende müssen wir es halt irgendwie schaffen, dass sich die Leute auf EINE Sprache einigen. Die gute alte ubiquitous language (womit ich schon wieder bei Eric Evans und Martin Fowler wäre :D )
 
Was ich oft sehe bei Neueinsteigern, dass sie sich sehr viele Gedanken über die "richtige" Programmiersprache machen, mit der sie anfangen sollten.

Meiner Meinung nach ist das gar nicht so wichtig. Programmieren bedeutet nicht, eine Programmiersprache zu beherrschen, sondern zu lernen, auf eine bestimmte Art und Weise zu denken und Probleme abstrakt zu betrachten.

Stell dir Programmieren lernen so vor wie Sprechen lernen. Sobald du sprechen kannst, kannst du auch andere Sprachen lernen. Denn in jeder Sprache gibt es grundlegende Dinge wie Nomen, Verben, Satzbau, Fälle und so weiter.

Exakt so verhält es sich beim Programmieren. Dein Ziel sollte also sein, "Sprechen" / Programmieren zu lernen.

Nun gibt es natürlich schon Sprachen, die dafür besser geeignet sind. Nämlich diejenigen, die klar strukturiert sind und dir nicht erlauben, besonders viel "hacky shit" zu produzieren.

Als Beispiele würde ich hier immer Java und C# anführen. Wieso das? Beide Sprachen:

  1. besitzen eine große Standard-Bibliothek, auf die du zugreifen kannst. Bei Java das JDK, bei C# das .Net Framework. Das hilft dir ungemein dabei, dich am Anfang zurecht zufinden. Einfach Google anschmeißen und gut ist. Du wirst in 98% der Fälle auf diese Standardbibliothek verwiesen werden und dafür Beispiele finden.
  2. lassen dich nicht viel grundlegend verkehrt machen. Damit meine ich nicht, dass die beiden Sprachen nicht komplex sind. Aber dadurch, dass sie dich "zwingen", sauber zu programmieren, lernst du recht schnell, wieso du auf diese Weise programmieren solltest.

Sobald du dann wichtige Konzepte wie Objektorientierte Programmierung wirklich verinnerlicht hast kannst du deine Fühler in andere Richtungen ausstrecken.

Auch muss ich einem meiner Vorredner zustimmten: Es ist wichtig, dass du dir gleich von Anfang an ein Projekt überlegst.
Einfach nur irgendwelchen vorgekauten Übungen im Internet nachzutippen ist erstens unendlich langweilig und zweitens nicht im Geringsten effektiv.
Mein erstes Java Programm war "Hello World!" damit ich wusste, dass meine Entwicklungsumgebung richtig eingerichtet ist. Mein zweites Projekt war Bomberman zu programmieren! Das klingt zwar wie ein Riesenschritt, aber es machte unendlich Spaß und mal ehrlich... In Google "how to create a window in java" einzutippen ist nicht weiter schwierig.
 
Aber dadurch, dass sie dich "zwingen", sauber zu programmieren, lernst du recht schnell, wieso du auf diese Weise programmieren solltest.
Eigentlich überhaupt nicht. Diese Sprachen, zumindest C#, sind auch nicht vor schlechter Programmierung geschützt, da hab ich schon viel zu viel schlechtes gesehn.

​Aber ansonsten stimm ich dir voll und ganz zu
 
Hab schlechten Code kann man mit jeder Sprache schreiben.
Habe mittlerweile schon reich Blödsinn gesehen, egal ob in Java, C, C++, VB.Net, JavaScript, Python oder C#.
Bei einer Software(in C++ geschrieben) an der ich arbeite könnte ich den Code halbieren und gleichzeitig neue Features implementieren.^^
Die Portierung auf C# schaffte dann nochmal weniger Code da viele Sachen halt schon im Framework enthalten sind. :)
 
Danke für eure Meinungen, ich habe jetzt einfach mal Java angefangen und versuche mir außerdem Grundlagenwissen wie "Clean Coding" und Standardabläufe anzueignen.

Ich habe wie gesagt schon programmiert, aber bist zu wenig strukturiert.

Welche Entwicklungsumgebung haltet ihr am Sinnvollsten/ wird am häufigsten bei Firmen eingesetzt? Eclipse?
 
Eclipse ist okay. Würde aber in jedem Fall zu IntellJ IDEA Community Edition raten. Ist sehr komfortabel und gibt einem noch mehr Hinweise zu Code Optimierungen.
 
Zuletzt bearbeitet:
Ich bin kein Fan von Eclipse viel zu sperrig und zum Teil auch träge.

Wie schon empfohlen schau dir mal die Jetbrain Produkte an kann die nur empfehlen.
 
Kann mich meinen Vorrednern nur anschliessen, Jetbrains IntelliJ ist sehr angenehm. Eclipse mag ich so gar nicht. Welcher IDE man in im Job nun am haeufigsten begenet, weiss ich nicht, hab aber so meine Befuerchtungen. ;-)
 
Ich bin für und gegen Eclipse und IntelliJ IDEA.

Ich finde die Bedienung und den Umfang von Eclipse deutlich besser. Ist wahrscheinlich auch Gewöhnungssache. Nach so vielen Jahren Eclipse hat man die Shortcuts einfach im Blut und jede andere IDE wird dann schnell nervig. (Quasi wie der Umstieg von Windows auf macOS. Alle Funktionen sind vorhanden. Aber woanders versteckt und anders zu erreichen). Und irgendwelche Eclipse-Shortcut-Settings für IntelliJ machen es auch nicht wirklich besser.

Aber das User Interface ist wirklich träger als das von IDEA. Allerdings arbeiten die Jungs hinter Eclipse ununterbrochen an Performance Verbesserungen. Die kommende Version "Photon" fühlt sich jetzt (Milestone 6) schon besser an als die aktuelle (und die war schon deutlich besser als deren Vorgänger). Ich habe jetzt 5 Jahre auf ein- und derselben Hardware jedes Eclipse Update mitgemacht und kann nur sagen: Da tut sich was!

Die IntelliJ Produkte haben sonst noch den Vorteil, dass man damit auch hervorragend in vielen anderen Sprachen programmieren kann. Eclipse kann das natürlich auch mit diversen externen Plugins, aber so gut wie Java ist dort keine andere Sprache integriert (laut meinen letzten Experimenten von vor 1 1/2 Jahren).

Grundsätzlich machst du mit beiden IDEs nichts falsch. In beiden kannst du Code eingeben, kompilieren, ausführen und debuggen. Auch das Layout sieht bei beiden nach einer typischen IDE aus. Die Unterschiede liegen im Detail. Und gerade als Neueinsteiger hat man sich noch nicht an "Cmd + Shift + R" gewöhnt :D

...

Und um die Runde komplett zu machen, sag ich jetzt einfach noch mal ganz leise NetBeans und verschwinde schnell wieder :D
 
Hmm die Firmen setzen zumindest momentan eher auf "Eclipse".


Ich bin nun aber etwas verwirrt, welche Version ich installieren muss.

Ich arbeite mich durch das Buch "Java ist auch eine Insel". Zuerst installiert man hier das normale "JDK".

Nun soll aber Eclipse genutzt werden und zwar die "IDE für Java Developers" + die "IDE für Java EE", bei Webentwicklungs-Beispielen.

Ist in Java EE alles enthalten was ich auch in Java SE habe? Kann/muss ich beide Java + Eclipse Versionen installieren?
 
Zackorz schrieb:
Hmm die Firmen setzen zumindest momentan eher auf "Eclipse".
Kann man denke ich so pauschal nicht sagen. Die IntellJ Produkte sind im professionellen Umfeld schon sehr verbreitet. Und wenn du mal auf die Idee kommst was für Android zu entwicklen würdest du in Android Studio sofort "zu Hause" sein.
 
Abseits von Android oder anderen Spezialfällen ist die IDE eigentlich ziemlich egal.

In normalen Java Projekten kann einer mit IDEA, einer mit Eclipse, einer mit NetBeans und einer mit dem Windows Notepad programmieren. Am Ende geht dein geschriebener Code immer durch den Java Compiler. Egal welche IDE du zum Schreiben benutzt hast. Solang jeder weiß wie er seine Umgebung einzurichten hat, ist das alles kein Problem. Vor allem mit Maven und Gradle ist das heutzutage ein Kinderspiel: Projekt in die IDE laden und dann den entsprechend Maven oder Gradle Task starten. Fertig. Und selbst über die Windows oder Linux Konsole ist das in wenigen Sekunden erledigt.

Auch Java EE Projekte lassen sich mit den IDEs problemlos einbinden und entwickeln.

Der Code ist ja überall derselbe. Das ist fast wie: "Die meisten Firmen entwickeln Java nur unter Windows, also muss ich mir jetzt eine Windows Kiste zulegen." Solang man keinen Windows-spezifischen Code entwickelt, kann ich genau so gut unter macOS oder Linux arbeiten.

Eine IDE ist ja nur ein Texteditor, der den Code schön darstellt und ein paar Zusatzfunktionen bietet. Ob du nun in Eclipse den "Start" Knopf drückst, oder IDEA, oder du den Befehl zum Kompilieren und Starten selbst in deine Windows / Linux Konsole eingibst, interessiert deinen Code nicht. Der verhält sich immer gleich.
 
benneque schrieb:
Eine IDE ist ja nur ein Texteditor, der den Code schön darstellt und ein paar Zusatzfunktionen bietet. Ob du nun in Eclipse den "Start" Knopf drückst, oder IDEA, oder du den Befehl zum Kompilieren und Starten selbst in deine Windows / Linux Konsole eingibst, interessiert deinen Code nicht. Der verhält sich immer gleich.
Was du schreibst ist etwas kurzsichtig, auch wenn die Wahl der IDE für den Einsteiger zunächst nicht so wichtig erscheint.

Aber seine IDE wirklich zu beherrschen ist der Schlüssel um später im Beruf produktiv zu arbeiten. Shortcuts, Live Templates, Plugins, Debugging Tools etc. Da drüber gibts ganze Bücher. Man sollte die Wahl der IDE schon gut überlegen. Diese wird man normalerweise eben nicht mal eben wechseln.
 
Zuletzt bearbeitet:
Wenn du meine anderen Beiträge auch lesen würdest und dich nicht so kurzsichtig nur auf den letzten Beitrag fixieren würdest, dann wüsstest du, dass ich bereits die Eingewöhnung, Bedienung und Shortcuts der IDEs thematisiert habe ;)

Beim Debugging habe ich in all den Jahren keine wirklichen Unterschiede zwischen Eclipse, IDEA und Netbeans feststellen können. Breakpoint setzen, Variablen ankucken / modifizieren während des Debuggings, Step Over, Step Inside, Step Out. Die Möglichkeiten sind jeweils so ziemlich identisch. Man muss halt wissen WO die Informationen dargestellt werden und wo die Buttons / Shortcuts für die gewünschten Funktionen sind.

Templates beherrschen auch alle 3. Und bei den Plugins sind die IDEs inzwischen auch so ziemlich auf einer Wellenlänge. Ausnahmen sind halt so Spezialfälle wie GWT oder Android. Abgesehen davon kann man eigentlich mit jeder Java IDE an jedem "normalen" Java Projekt mitarbeiten. Mit "normal" meine ich sowas wie: Java EE, Spring, JavaFX, etc. Also Backend und Desktop Anwendungen.

In meinem vorletzten Projekt hatten wir einen total bunten Haufen an IDEs, Betriebssystemen und Vorgehensweisen. Da habe ich auch den ersten (und vermutlich einzigen!) Menschen auf der Welt entdeckt, der auf das Eclipse Git Plugin schwört. :D Wahrscheinlich leidenschaftlicher Masochist - aber das soll jeder machen wie er mag. In Sachen Git Integration ist IDEA natürlich deutlich besser aufgestellt. (Wobei man sagen muss, dass Eclipse auch hier nach vielen Jahren endlich deutlich benutzerfreundlicher wird). Aber zufriedenstellend finde ich das immer noch nicht. Ich bleibe da lieber bei "Git Tower" - einfach, übersichtlich, komfortabel.

Grundsätzlich wollte ich mit dem Beitrag auch nur sagen: Vom Funktionsumfang tun sich die IDEs nicht viel. Ist alles eine Sache der Gewöhnung. Und wenn man unbedingt will, kann man das Layout innerhalb der IDEs zurechtschieben wie man will und die Shortcuts ändern, dann lässt sich auf IDEA ein 80-90% Eclipse (und andersherum natürlich auch) machen.

Ich habe bisher (auch im Bekanntenkreis) keinen Arbeitgeber erlebt, der die IDE bei der Java Entwicklung vorgeschrieben hat. Solang man produktiv ist, sollte das auch jedem Entwickler selbst überlassen sein. Es gibt sogar Java Gurus, die ausschließlich auf Vi (oder Vim) setzen. Warum auch nicht? Wenn die Person damit genau so schnell arbeiten kann wie seine Kollegen und dieselbe Qualität abliefert, finde ich das vollkommen legitim.
 
Zuletzt bearbeitet:
benneque schrieb:
Wenn du meine anderen Beiträge auch lesen würdest und dich nicht so kurzsichtig nur auf den letzten Beitrag fixieren würdest, dann wüsstest du, dass ich bereits die Eingewöhnung, Bedienung und Shortcuts der IDEs thematisiert habe ;)
Weiß ich. Hab deine anderen Beiträge auch gelesen und stimme dir grundsätzlich natürlich vollkommen zu. Deine Aussage (die ich im letzten Post zitiert hatte) war nur wie ein rotes Tuch für mich.:D

benneque schrieb:
Grundsätzlich wollte ich mit dem Beitrag auch nur sagen: Vom Funktionsumfang tun sich die IDEs nicht viel. Ist alles eine Sache der Gewöhnung.
Das ist richtig. Aber es spricht ja schon einiges dafür sich von Beginn an zu überlegen woran man sich gewöhnen möchte.

benneque schrieb:
Ich habe bisher (auch im Bekanntenkreis) keinen Arbeitgeber erlebt, der die IDE bei der Java Entwicklung vorgeschrieben hat.
Wie du sagtest, grundsätzlich lassen sich die IDEs sicher ähnlich einrichten. Glaube Probleme gibt es nur wenn beispielsweise spezielle für IntelliJ IDEA angelegte Code-Styleguides o.ä. firmenintern genutzt werden. Es lässt sich zwischen beiden IDEs vieles, aber nicht alles problemlos abgleichen.

benneque schrieb:
Es gibt sogar Java Gurus, die ausschließlich auf Vi (oder Vim) setzen. Warum auch nicht? Wenn die Person damit genau so schnell arbeiten kann wie seine Kollegen und dieselbe Qualität abliefert, finde ich das vollkommen legitim.
Ist halt sehr projekt-spezifisch. Ich muss beispielsweise beruflich häufig Boilerplate schreiben weil in unserer Architektur fast alles gegen Interfaces implementiert wird und wir DI Frameworks nutzen. Behaupte mal dann ist es einfach unmöglich mit einem einfachen Editor den Code runter zu schreiben denn man durch Live Templates, Auto-Import und -Completion mit wenigen Eingaben generieren kann. Aber es mag sicher Fälle geben wo sowas nicht ins Gewicht fällt. Letzten Endes sagt die Art des Werkzeugs nichts über die Qualität des Produkts aus.
 
Zuletzt bearbeitet:
Zurück
Oben