Softwareentwickler Job - aber nicht gut genug?

2 Antworten

Ich würde behaupten, diese Selbsteinschätzung ist ziemlich gesund, Respekt vor der Komplexität der Technologien ist wichtig.

In diesem Berufsfeld ist es völlig normal, vieles nicht zu wissen. Wer trotzdem der Meinung ist, allwissend zu sein, macht in der Regel einiges falsch.

Viel wichtiger ist nicht, dass Du alles nötige kannst, sondern dass Du dir alles nötige in überschaubar viel Zeit aneignen kannst.

Ein anderer wesentlicher Teil des Jobs ist es, Zusammenhänge zu finden, die sich hinter vielen Schichten verbergen. Es kommt immer mal wieder vor, dass Du einen Fehler korrigieren musst und die Lösung dann am Ende an einer ganz anderen Stelle oder sogar nicht einmal im eigenen Code liegt.

Das ist auch der Grund, warum ich allen, die den Job nur für's Geld machen wollen, von ihrem Plan abrate. Um das langfristig und ohne Verzweiflung machen zu können und auch langfristig ein hohes Gehalt wert zu sein, braucht man eine gewisse Begeisterung, die die benötigte Motivation liefert. Nur so kann man einer Firma den Mehrwert bieten, für den sie dann auch bereit ist, ein entsprechend hohes Gehalt zu zahlen.

Deshalb wollte ich Fragen, was genau man konkret können MUSS (!), um einen Job in diese Richtung zu bekommen.

Das hängt von sehr vielem ab: Programmiersprachen (ja, Mehrzahl), Entwicklungsbereiche (z.B. Web, Mobile, Gaming, etc.), Technoligien je Bereich, Entwicklungsschicht (Frontend, Backend, Datenbank, etc.), wie modern die Firma arbeitet, etc.

Und dann erwartet auch niemand von einem Berufseinsteiger, dass er direkt alles kann, das wäre utopisch. Firmen achten in der Regel mehr auf das Mindset (was ich oben angesprochen habe), als auf den konkreten Tech Stack. Vorerfahrung ist zwar nützlich, ein Mitarbeiter mit dem richtigen Mindset und etwas mehr Einarbeitungszeit kann aber ebenso wertvoll für die Firma sein bzw. werden. Du musst allerdings offen und ehrlich mit deinen Fähigkeiten umgehen und auch akzeptieren, wenn eine Firma einen erfahreneren Kollegen sucht, oder bei einem Anfänger nicht bereit ist, dein gefordertes Gehalt zu zahlen. Aber zumindest über letzteres kann man ja reden.

Manche Firmen fahren auch die mMn. fragwürdige Praktik, dass sie einfach wild Technologien aufschreiben, in der Hoffnung, dass sich irgendwer angesprochen fühlt. Das funktioniert vielleicht bei einigen, aber andere - wie Du - fühlen sich davon abgeschreckt. Das heißt aber nicht, dass sie das auch alles wirklich brauchen, wenn dich eine Firma interessiert, dann ruf einfach an und frag jemanden mit Ahnung (am besten einen Teamleiter), woraus die tägliche Arbeit tatsächlich besteht, oder wohin die technologischse Reise gehen soll. Auf so ein Gespräch kannst Du dich in der Bewerbung dann auch beziehen, das bringt dir ggf. einen kleinen Pluspunkt.

Es gibt aber durchaus einige Dinge, die man in der modernen professionellen Softwareentwicklung kennen "muss" - Anführungszeichen, weil man unter Umständen auch ohne klar kommt (dann aber Hilfe braucht) und weil es Firmen gibt, die selbst nach zig Jahren es immer noch nicht geschafft haben, aufzuschließen.

Ich arbeite im .NET-Umfeld, wie allgemeingültig das ist, kann ich daher nicht sagen. Einiges ist aber definitiv überall nützlich:

  • Die verwendeten Programmiersprachen - Logisch oder? Und natürlich solltest Du alle Features wenigstens kennen und die wichtigen Features beherrschen. Bei C++ könnte das etwas schwierig werden, da es so extrem umfangreich ist, aber naja ... C++ eben
  • Entwicklungsumgebung - Auch logisch, oder? Sollte in Fleisch und Blut übergehen
  • Verwendete Basis-Frameworks - Z.B. mit C# ist das .NET, wer die wichtigen Dinge (alles kann man nicht kennen, es ist riesig) nicht beherrscht, wird Probleme haben
  • Effizient recherchieren - Es kommt immer vor, dass Du etwas nicht weißt und es kommt nicht in Frage, dass Du dann drei Tage blöd auf den Code starrst, oder für jede Kleinigkeit die Kollegen fragen musst
  • SQL - Ein ORM nimmt dabei zwar viel Arbeit ab, aber es denkt nicht für dich. Absolutes Minimum ist DQL, aber auch DML ist sehr wichtig. Den Rest braucht man mit einem ORM nur selten, ohne ein ORM braucht man aber auch min. noch DDL
  • Git - Das ist *die* Quellcodeverwaltung, derzeit quasi konkurrenzlos, egal womit man arbeitet. GitHub oder GitLab sind bekannte/beliebte Implementierungen
  • Container - Z.B. Docker, noch kein "Muss", aber viele Firmen arbeiten schon damit und es wird wegen der deutlichen Vorteile auch noch einiges an Relevanz dazu gewinnen
  • Design-Prinzipien - Viele Firmen "ignorieren" das leider und rennen dann regelmäßig gegen die Steine, die sie sich selber in den Weg gelegt haben.
  • S.O.L.I.D. - Gehört eigentlich zu den Design-Prinzipien, aber so wichtig, dass ich es separat aufführe
  • Architektur-Prinzipien - Das ist ein Aspekt, durch den man sich abheben kann, wichtig für alle Projekte, allerdings auch hier: Viele Firmen "ignorieren" es mit entsprechenden Nachteilen
  • CleanCode - Ich hab das Gefühl, es ist nicht sehr beliebt und man muss den Regeln nicht folgen (hat sowieso jeder eine eigene Meinung), aber man sollte sich wenigstens damit auseinandersetzen und dann begründete Entscheidungen treffen
  • CI/CD - Auch ein Aspekt zum sich abheben, damit kann man viel Zeit sparen, aber man muss auch wissen, wie man damit umgehen kann
  • (Unit)Testing - Wird meistens eher stiefmütterlich behandelt, kann aber Leben retten - je nach Branche sogar wortwörtlich ^^
  • Logging - Auch das wird meistens eher stiefmütterlich behandelt, kann im Fehlerfall aber einiges an Kopfzerbrechen ersparen.
  • Web-API-Designs - Z.B. REST oder gRPC
  • Im Web HTML/CSS, JavaScript - Logisch? Wobei JavaScript je verwendeter Technologie aber weniger von Bedeutung ist, z.B. Blazor nimmt mir fast sämtlichen JavaScript-Code automatisch ab.
  • Agile Methoden/Tools - Also z.B. Scrum oder Kanban und Tools wie z.B. Jira. Da findet man sich aber meistens ziemlich schnell rein, außerdem arbeiten selbst Firmen, die auf dem Papier gleich arbeiten, häufig völlig anders, man sollte sich also kein "Das muss so und Punkt"-Mindset zulegen

Einiges davon natürlich spezifisch für die verwendeten Programmiersprachen/Technologien. Und vermutlich fehlt in der Liste auch noch das Eine oder Andere. Und auf eine Reihenfolge habe ich auch nicht geachtet.

Im .NET-Umfeld geht die Reise viel in Richtung Web-Entwicklung mit ASP.NET Core und Blazor, entsprechend sollte man sich damit auskennen. Zu ASP.NET Core gehört dann auch eine Reihe von Microsoft.Extensions.*** Frameworks, die mehr oder Weniger Teil von ASP.NET Core sind. Und immer wenn mit Datenbanken gearbeitet wird, wird meistens das Entity Framework Core genutzt.

Es gibt aber auch noch einige Firmen, die mit längst begrabenen Technologien wie WinForms oder WPF arbeiten, die brauchen das alles dann natürlich nicht, können aber auch nicht von den Vorteilen profitieren und die Arbeit macht weniger Spaß :)

Desktop- und Mobile-Entwicklung könnte by the way auch immer mehr mit ASP.NET Core und Blazor "zusammenwachsen", z.B. arbeite ich aktuell an einem Projekt mit einem Blazor-Frontend und einer gemeinsamen Code-Basis, das aber auf Mobile und Desktop (ohne Backend-Server) und im Browser (mit Backend-Server) laufen kann.

Für .NET gibt's auch eine nicht offizielle Developer-Roadmap:

https://www.mindmeister.com/app/map/2629840249?t=CjSlrIg9TU

Allerdings würde ich der Must-Know-Markierung nicht immer zustimmen, das ist mMn. häufig zu viel. Aber die Auflistung ist denke ich durchaus vollständig.

Woher ich das weiß:Berufserfahrung – C#.NET Senior Softwareentwickler

Hemo20  08.06.2024, 21:49

Respekt an die Antwort!!!

cleanercode  09.06.2024, 19:45

Nicht vergessen:

Don't be S.T.U.P.I.D :)

Aber der Senior wird wissen, dass es keine Beleidigung ist.

Guten Tag,

Das Gefühl, welches du bekommst, weil du weißt, dass du nicht alles weißt, ist völlig normal. Das wirst du auch im Job später oft erfahren und du wirst dich einfach mit der Zeit daran gewöhnen.

Zu deiner Frage, was du konkret lernen musst, um einen Job zu bekommen, hängt von der Rolle und den Jobs, für die du dich bewerben möchtest ab.

Wenn du dich z.B. als Web-Entwickler oder Backend-Developer bewerben möchtest, sind manche skills wichtiger als andere.

Zeit spielt auch eine Rolle, falls du jetzt eher schnell einen neuen Job brauchst, dann solltest du dich genau auf die gefragten Skills fokussieren. Wenn du unter keinem Zeitdruck stehst, kannst du dich eher in verschiedenen Bereichen ausprobieren und deine Skills erweitern, was dir später sehr viel helfen wird.

Wichtig dabei ist natürlich auch, dass diese langen Listen nicht unbedingt ein Ausschlusskriterium sein müssen, sondern oft einfach eine Wunschliste für den idealen Kandidaten sind.

Hoffe das hilft dir weiter.

LG

Woher ich das weiß:eigene Erfahrung