Erfahrungen als C# Softwareentwickler

Softwareentwicklung vs "Softwareentwicklung"

Ich habe nun schon einige Jahre Erfahrungen in der Softwareentwicklung gesammelt, 2 Jahre davon unter Java und 6 Jahre unter C#. Ich mag beide Programmiersprachen und arbeite mit beiden gerne. Ich kenne auch die Insiderwitze und weiß auch diese zu schätzen. Ich weiß, dass es viele Softwareentwickler gibt, die Java mögen, aber dafür bei C# einen schlimmen Hautausschlag kriegen oder andersrum. Das sind alles Punkte, über die man lachen kann.

In meinen Jahren in der C# Softwareentwicklung hatte ich in mal in guten und mal in weniger guten Softwareentwicklungsunternehmen gearbeitet und musste dabei auch einmal die leidvolle Erfahrung machen, dass Unternehmen, welche das Wort "Softwareentwicklung" im Unternehmensnamen tragen, nicht unbedingt auch Softwareentwicklung machen. So gehört es eigentlich für mich als selbstverständlich dazu, dass Unternehmen bei der Softwareentwicklung nicht an den falschen Stellen sparen sollten, weil sie dann mitunter sehr unwirtschaftlich sind. Unwirtschaftlichkeit ist gegeben, wenn Softwareentwicklungsunternehmen (also die Unternehmen, die sich so bezeichnen) nicht in die notwendigen Entwicklungswerkzeuge investieren und keinen vorhandenen professionellen Third-Party-Code nutzen und stattdessen seine Softwareentwickler jedes Rad neu erfinden d.h. von Grund auf entwickeln lassen. Dafür sind heute Softwareprodukte einfach zu kurzlebig und werden innerhalb weniger Jahre wieder runderneuert oder fallen ganz weg und werden durch andere Software ersetzt. Third-Party-Code lässt sich heute in der Regel schnell austauschen, eigener Code dagegen nicht. Bei eigenem Code bindet man sich dann dessen Wartung jahrelang als zusätzliche Last mit an das eigene Bein. Natürlich muss man in einige gute Third-Party-Tools Geld investieren, aber das rentiert sich ja später auch wieder, indem man da nicht selbst Zeit reininvestieren muss.

Ausnahmen würde ich nur dort sehen, wo es tatsächlich um die Sicherheit geht, also in der Steuerungssoftware von Flugzeugen, Zügen, Atomkraftwerken, Medizinischen Geräten, selbstfahrenden Transportmitteln oder bei Weltraumflügen. Wenn Third-Party-Code von vielen Leuten eingesetzt wird, kann man sich auch in der Regel darauf verlassen, dass er gewartet wird (und das nicht nur von einem Entwickler, wo die Gefahr besteht, dass dieser irgendwann mal das Unternehmen verlassen wird). Es gibt OWASP-Codeanalyse-Tools, welche automatisiert Sicherheitslücken in bekannten Third-Party-Tools ausfindig machen und dann automatisiert entsprechende Updates empfehlen (danke smarthouse ;-)). Als ein bereits unverzichtbares Entwicklungstool unter C# sehe ich heute unter anderem ReSharper an. Und auch LINQPad, Notepad++, Postman, Fiddler und weitere nützliche Tools. Wer schonmal mit ReSharper gearbeitet hat, wird wissen, warum man danach nicht mehr darauf verzichten sollte, da es die Wirtschaftlichkeit / Produktivität / Softwarequalität enorm verbessert. Und wenn ich von enorm spreche, dann meine ich das auch. Ich wurde vor kurzem gefragt, ob das ein Ablehnungsgrund für mich wäre, in einer Firma zu arbeiten, wenn dort ReSharper nicht eingesetzt wird. Gegenfrage: Was würde wohl ein Bauarbeiter nach einiger Berufserfahrung bei Neuanstellung in einer Baufirma antworten, dass er ab sofort mit billigem Schraubendreher anstelle eines Akkuschraubers massenweise Schrauben irgendwo reindrehen darf, obwohl er weiß, dass es mit einem Akkuschrauber sehr viel schneller und einfacher geht? Ich setze ReSharper auch privat ein, ich habe kein Problem selbst für die Lizenz aufzukommen.

Bewerbungsgespräche und Coding Tests

Je länger ich Erfahrungen als Softwareentwicklerin gesammelt habe, desto weniger mag ich Coding Tests in Bewerbungsgesprächen. Je wahrscheinlicher ein Coding Test im Bewerbungsgespräch, desto wahrscheinlicher auch eine Absage meinerseits. Warum? Bin ich etwa unfähig, zu programmieren? Sowas ließe sich sehr schnell auch mit gut gewählten Programmierfragen und auch in den ersten Tagen der Probezeit herausfinden, dazu gibt es die Probezeit. Die qualifizierten Arbeitszeugnisse meiner vorherigen Arbeitgeber wurden ja nicht als Scherz erstellt, man kann dort nachfragen, ich kann Codebeispiele zeigen, wenn erforderlich. Ich wurde bei den ersten Unternehmen auch nur mit Programmiertest eingestellt. Warum sollte ich also sowas ablehnen wollen, als erfahrere Softwareentwicklerin? Und die Gegenfrage: Reicht meine Berufserfahrung mit Codebeispielen / Referenzen nicht aus? Wenn ich keine Programmierzeile C# beherrschen würde, wie hatte ich es dann zuvor 6 Jahre lang als Softwareentwicklerin in anderen Softwareentwicklungsunternehmen überstanden?

Der Grund, warum solche Coding Tests zunehmend abgelehnt werden, ist vielmehr der, dass erfahrene Softwareentwickler sich mit zunehmenden Programmierkentnissen auch zunehmend unsicherer fühlen, weil man weiß, was alles beim Coding Test schief gehen kann, möglicherweise, weil man bereits in vorigen Coding Tests schlechte Erfahrungen gesammelt hatte. Zudem wird es als Zeitverschwendung angesehen, da nicht alle Softwareentwicklungsunternehmen Coding Tests machen. Ein Coding Test spiegelt nicht die ganze Erfahrung eines Softwareentwicklers wider, sondern ist nur eine Momentaufnahme vom hier und jetzt. Man hat gegebenenfalls wegen der Aufregung einen Blackout, wählt vielleicht versehentlich die falschen Worte, kennt bestimmte Begriffe unter einem anderen Namen, kennt sich mit der fremden Programmierumgebung nicht aus, man fühlt sich ohne IntelliSense-Unterstützung unsicher. Der Hammer war mal ein Programmiertest mit Visual Studio Live Share, wo dann Visual Studio 2019 (wir reden von einer aktuellen Visual Studio Version!) nicht mal fähig war, Syntaxfehler wie fehlende Klammer oder fehlendes Semikolon anzuzeigen. Oder Coding Tests, wo man eine komplette Software (wie z.B. eine Webanwendung mit SQL-Anbindung und Google Maps womit GPS-fähige Geräte getrackt werden können) in einer Woche erstellen sollte und als "Coding Test" kostenlos abliefern sollte. Hier besteht die Gefahr, dass man ausgenutzt wird. Bei der Nachfrage, ob ein kleiner Coding-Test vor Ort bei dem Unternehmen nicht reicht oder ob ich dann wenigstens für eine solch umfangreiche Software entlohnt werde, hatte sich das Unternehmen nicht mehr bei mir gemeldet. Ja, ich wünsche mir auch manchmal Dienstleistungen zum Nulltarif, aber leider wird einem zu heutigen Zeiten nichts geschenkt. Letztens war ich beim Autohaus auf der Suche nach einem neuen Auto, die wollten mir dort das Auto auch nur zur Probefahrt überlassen, solange ich es nicht kaufen/bezahlen wollte, sie wollten mir das Auto auch nicht als "Probe" schenken. Es gibt viele Gründe für die Ablehnung eines Coding Tests, die auch im nachfolgenden Artikel in Englisch genannt sind, ich stimme diesem Artikel 100% zu:
- Why You Should Never Consent to a Coding Test in an Interview

Weitere Links zu dem Thema:
- Why Coding Tests Are A Bad Interview Technique
- Why Some Developers Hate Coding Skills Tests (And What Hiring Managers Can Do To Change That)
- The Tyranny of the Timed Coding Test
- Why I hate code challenges
- Software developers: Coding interviews are a disaster, and here's why
- Why engineers won’t do your coding test
- Why I Don’t Have Time For Your Coding Challenge
- Why Developers Hate Coding Tests?
- Why Code Challenges are Bad Practice for Hiring Senior Developers
- Why Engineers Won't Do Your Coding Test (Englisch/Deutsch)