Ich denke, die wenigsten, die beruflich mit Softwareentwicklung zu tun haben, werden nur eine Sprache "sprechen", denn die ist zunächst einmal nebensächlich. Es müssen konkrete Probleme gelöst werden und je nachdem, um welches Problem es geht, wählt man auch eine passende Sprache. Die Wahl hängt wiederum von verschiedenen Faktoren ab. Neben technischen Erfordernissen werden selbstverständlich auch vorhandene Kenntnisse berücksichtigt.
Um eine neue Sprache anwenden zu können, braucht man lediglich ein paar Stunden. Nach ein paar Tagen Übung hat man die Syntax und ein paar "Grundfunktionen" in der Regel drauf. Aber: jedes "System" hat seine Eigenheiten und bis man die kennt, vergeht einiges an Zeit - und Erfahrung sammelt man auch nach zig Jahren noch.
Also auf Grund meiner Berufserfahrung kenne ich viele Sprachen: Angefangen mit Pascal und C um dann auch C++ zu machen, als das raus gekommen ist ... Visual Basic ist auch nicht an mir vorbei gegangen. Als Java raus gekommen ist, wurde Java auch im Detail begutachtet.... 2003 der Wechsel zu C# und beruflich war ich ab da vor allem in C# unterwegs.
Eine Sprache zu lernen geht sehr schnell. Aber aus meiner Sicht gehört aber eben deutlich mehr dazu, um wirklich als Software Entwickler arbeiten zu können:
Das ‚Ecosystem‘ ist wichtig und das muss man kennen. Das ist in der Regel extrem umfangreich. Bei Java ist da neben dem Framework die vielen ‚üblichen Verdächtigen‘: JEE mit entsprechenden Implementierungen / Erweiterungen kommen einem da gleich in den Sinn...
Bei .Net sieht die Welt anders aus, da hat man dann keinen Application Server sondern ist schon damals Richtung Microservices gegangen (als diese Kuh noch nicht durchs Dorf getrieben wurde). Dafür gibt es dann andere Libraries: WCF war zum Beispiel viel bei uns im Einsatz aber natürlich auch ASP.Net (lange ohne Microsofts MVC, das hatten wir in einer eigenen Lib vor Microsoft)....
Umsteiger oder Leute, die beides machen, sind mir oft etwas suspekt, Das liegt einfach daran, dass diese Leute oft Technologien/Libs aus dem anderen Bereich nutzen wollen. Logging in .Net? Log4net kommt dann zum Einsatz weil man log4j ja schon kannte und so. Nur eben hat das .Net Framework das schon alles drin (TraceSource/TraceListener) so dass es einfach unnötig ist....
Aber man kann da viel machen. Ich selbst habe Java lange nur privat für mich genutzt (Bin halt auch viel auf Mac und Unix unterwegs und da war .Net lange nicht verfügbar so man von Mono mal absieht). Aber da habe ich dann auch immer sehr viel Zeit drauf verwendet, eben den ‚Java Weg‘ zu erkennen und zu gehen und nicht gewisse Dinge aus der anderen Welt mit zu nehmen ....
Und aus meiner Sicht sollte man sich nicht überladen: Man kann .Net und Java gleichzeitig machen, ja. Aber das ist eine zusätzliche Belastung, Aber die Entwicklung geht rasant voran und man kommt aus dem Lernen nie heraus. Was will man denn alle abdeckende?
- Vorgehensweisen -> Gib mir unsere jährliche Kuh, so wie wir geben unseren Managern neue Buzzwords. Da kommt man im beruflichen Bereich kaum dran vorbei...
- Technische Entwicklungen im Umfeld: Datenbanken sind hier zu nennen, aber auch die Laufzeitumgebungen (z.B. Container oder Cloud)
- Sprachentwicklung: ständig kommt was Neues. Und das muss man kennen. Bei .Net geht es jetzt z.B. los, dass man sich vom Bytecode verabschiedet und man doch bitte Dinge direkt für die CPU übersetzen soll und so. Aber die Bedeutung von .Net nimmt auch ab - Microsoft scheint sich verstärkt auch wieder C++ zuzuwenden. Das muss man alles können.
Also ich versuche mich, auf eine Sprache zu konzentrieren. Daher gab es beruflich auch einen Wechsel hin zu Java (aber auch mit Anteil C++). Und ich würde jedem empfehlen, sich ebenfalls auf eine Sprache zu konzentrieren. Gerade am Anfang hat men ehh mehr als genug zu lernen. Und man sollte zusehen, dass man etwas meistert. Ist nicht immer leicht, aber das ist in meinen Augen wichtig. Also am Anfang eher mal beschränken: also wenn man noch generelle Probleme hat, überhaupt etwas Code zu schreiben, dann lässt man erst einmal die GUI weg. Wenn man im Java Bereich noch nicht drin ist: was will man dann noch x weitere Hochzeiten haben, auf denen man tanzen will? (Also noch die iOS Applikation in Swift oder so?) Da sollte man auch realistisch sein und bleiben. Also immer das Gleiche: Die Klöße isst man einen nach dem anderen. Bei der Entwicklung eines Produktes entwickelt man ein Feature nach dem anderen, .... also nicht verzetteln!
Das wäre so meine Sichtweise und mein Senf zu diesem Thema,