Vom Industriekaufmann zum Anwendungsentwickler

Christoph Reps

Titelbild

Morgen Onlinehandel... gar kein Bock

So oder so ähnlich sind meine Gedanken gewesen, als ich abends mal wieder vor meinem Rechner saß und nach Jobs suchte: Sichtlich gefrustet von meinen damaligen Tätigkeiten und meinem Alltag. Eigentlich bin ich ja Industriekaufmann. Eigentlich stehe ich mit 32 Jahren sowas von mitten im Leben. Eigentlich habe ich darauf keinen Bock mehr. Aber was will ich sonst machen.

Coden, das ist geil, das will ich machen, schließlich beschäftige ich mich schon seit drei Jahren privat mit C#. 
Alles klar, Anwendungsentwickler in die Suchleiste gehackt und Enter. Sehr cool, es gibt ja etliche Stellen in dem Bereich. Direkt die Erste angeklickt. Total begeistert die Anzeige gelesen, bis zu dem Punkt Anforderungen:

Abgeschlossenes Studium im Bereich der Informatik

„Das habe ich nicht, da brauche ich mich auch nicht bewerben.“ Das wiederholte sich bestimmt 50 – 100 mal in alle Himmelsrichtungen. Nicht nur an diesem Abend, sondern immer und immer wieder.

Irgendwann bin ich dann, nachdem ich wieder locker 10 Anzeigen hintereinander auf- und zugemacht hatte, auf ein Stellenangebot von ATMINA gestoßen. Die Stellenanzeige begann mit „Du hast vermutlich ein Studium in xxx abgeschlossen“. Ich habe natürlich direkt die Augen im Geiste verdreht.

Aber da in der Anzeige die Rede von C# war, einer Programmiersprache in der ich schon ein bisschen Erfahrung hatte, habe ich mich weiter auf der Website umgesehen.

Auf der Seite begrüßten mich Logos von Angular oder TypeScript, gefolgt von Begriffen wie Progressive Web Apps, Portal Anwendungen und Fachanwendungen.

Übrigens...Wenn Du dir hier gerade denkst, „das ist doch alles easy, was quatscht der da?“ dann schick uns direkt Deine Bewerbung 😄. Wenn Du dich aber unsicher fühlst ob Du dich bewerben solltest oder vielleicht denkst, „meine Erfahrung reicht niemals“, möchte ich Dir hier von meiner Erfahrung als Quereinsteiger aus einem komplett nicht-technischen Beruf erzählen.

Was soll schon schief gehen?

An dieser Stelle habe ich mir zumindest gedacht: was zur Hölle ist das alles und wo kann ich da bitte mein C# Wissen verwenden?

Klar – Unternehmensseiten haben üblicherweise nicht nur den Zweck, potentielle Bewerber anzulocken, sondern hauptsächlich potentielle Kunden und Partner zu überzeugen. „Was soll schon schiefgehen“ – das sagt Gronkh meistens, wenn er in seinen Lets-Plays irgendwas Verrücktes macht. Was soll schon schiefgehen, habe ich dann auch gedacht und mir für 7 Euro einen Monat das Office Paket geholt, um eine wortwörtlich lebensverändernde Bewerbung zu schreiben.  

Aber wie mache ich ATMINA klar, dass ich diese Stelle unbedingt haben will? „Ich habe voll Bock“ ist jetzt nicht gerade die überzeugendste Argumentation. Studiert habe ich auch nicht, und wie gesagt, eigentlich bin ich gelernter Industriekaufmann.

Hätte ich zu dem Zeitpunkt gewusst, wie viel wichtiger Motivation ist als ein Bachelor in Irgendetwas, hätte meine Bewerbung aus zig Seiten bestanden, in denen ich von all den coolen Momente erzählt hätte, die ich bis dahin im Bereich Programmierung erlebt hatte. Irgendwie musste ich das aber auf eine DIN-A4 Seite bringen. Schließlich ist meine Bewerbung dann doch eher zu einer Geschichte (aus wahren Begebenheiten) geworden; ich habe einfach angefangen niederzuschreiben was ich bisher gemacht hatte und vor allem warum.

Die Torwächter

Das erste Gespräch

Rüdiger Schwertz schrieb mir eine E-Mail, dass er gerne mit mir Telefonieren möchte, um über meine Bewerbung zu sprechen. Ein Termin war schnell gefunden. Es war kein klassisches „Wieso sollte ich dich einstellen?“-Gespräch, sondern wir haben uns eine Stunde darüber unterhalten, warum ich, jemand der mitten im Leben steht, alle Zelte abbauen und noch einmal eine neue Ausbildung machen möchte.  Zum Ende unseres Gesprächs haben wir direkt über das weitere Vorgehen gesprochen und Rüdiger hat mir erklärt, dass ich als nächstes einen Online-Fragebogen zugeschickt bekomme.

Der Fragebogen

Kurz darauf ist auch schon die besagte E-Mail von Thorsten Thiel gekommen, mit dem Link zum Fragebogen und einem Termin, um die Ergebnisse zu besprechen. Die E-Mail habe ich Donnerstag erhalten und der Termin ist auf den darauffolgenden Montag datiert gewesen. Ein angenehmer Zeitraum, um die Ruhe und Zeit zu finden, den Bogen zu bearbeiten.

Vorgestellt habe ich mir, dass dort jede Menge fiese Programmieraufgaben drin sein würden, in Sprachen, die ich zu dem Zeitpunkt nur vom Lesen kannte. Tatsächlich sind es aber 4 oder 5 Fragen zu allgemeineren Themen aus der Informatik gewesen. Im ersten Moment dachte ich, „Das war’s. Du hast keine Ahnung von den Themen.“ Durch meine Nervosität habe ich natürlich den Einleitungstext nur überflogen und Hinweise wie „Nimm dir Zeit“, oder „Manche Fragen benötigen etwas Recherche um sie zu beantworten“, erst gar nicht wahrgenommen. Gut, dass ich dann doch nochmal in Ruhe gelesen und realisiert habe, dass ich die Vorteile einer zustandslosen REST API nicht auswendig wissen muss.

Halb so wild

Danach waren die Fragen keine wirklichen Probleme mehr, sondern einfach Aufgaben, deren Lösungswege ich in meiner eigenen Zeit und mit Hilfsmitteln recherchieren konnte. Mir war klar: Antworten zu Copy & Pasten ist natürlich nicht das Ziel; es geht eher um die Fähigkeit, sich Wissen eigenständig anzueignen. Daher sollte man seine Antworten auch erläutern können. Zum Schluss gab es noch eine Fragestellung, bei der es darum ging, ein mögliches Problem zu erkennen und mit einem Codebeispiel zu lösen. Dazu wurde ein kleiner Editor auf der Seite bereitgestellt, den man auf seine bevorzugte Sprache stellen konnte, um den Codeschnipsel zu schreiben.

Den Fragebogen ausgefüllt und abgesendet, habe ich gespannt auf den Montag und die Ergebnisse gewartet. Thorsten Thiel hat mich zum vereinbarten Termin angerufen und wir haben uns ausführlich über meine Antworten unterhalten.  Als es Rückfragen zu den Aufgaben gab, konnte ich meine Angaben entsprechend erläutern. Sehr schön war, dass es sich nicht wie ein klassisches Frage-Antwort Gespräch anfühlte, sondern mehr wie Fachsimplen über die verschiedenen Themen. Es ist genug Zeit gewesen, um auch meinen Fragen zu ATMINA oder den Aufgaben selbst nachzukommen. Danach hat Thorsten mit mir den nächsten Schritt und somit auch letzten technischen Termin vereinbart und hat mir erklärt, was wir dort machen werden.

BestFileSystemEver

Bei diesem letzten Termin widmet man sich, zusammen mit Thorsten, einer Programmieraufgabe auf seinem eigenen Rechner oder, falls man vor Ort ist, gerne auch auf einem gestellten Notebook. Es soll nicht die Version 2.0 von Instagram oder WhatsApp programmiert werden, sondern, und ich zitiere aus meinen E-Mails:

Ziel ist hier nicht direkt ein kompilierbares Stück Code, sondern vielmehr über eine Aufgabe nahe unserem Arbeitsalltag zu sprechen, Lösungsansätze zu finden und Teile davon dann auch umzusetzen. Wir werden dafür ca. 1 – 1,5 Stunden benötigen.

Pünktlich um 17 Uhr startete das Zoom Meeting und nach einem kurzen Plausch hat mir Thorsten dann die Aufgabenstellung erklärt. Ziel war es, sich ein simples Dateisystem zu überlegen und dies dann in Code umzusetzen. Sprache und IDE konnte ich frei wählen; im vorherigen Termin hatte ich Thorsten schon gefragt, ob wir uns für die Aufgabe auf C# einigen können, weil ich damit die meiste Erfahrung hatte. Das war natürlich kein Problem.

Ich habe meine Idee von der Implementierung erklärt und sollte diese dann in der IDE umsetzen. Zu dem Zeitpunkt habe ich Visual Studio Code verwendet und in meinen vorherigen Projekten definitiv schon etliche Klassen angelegt. Doch in dem Moment, in dem ich dann aber die Klasse „File“ anlegen wollte, war ich so nervös, dass ich dafür gefühlt 100 Jahre gebraucht habe. Ich habe Thorsten dann auch gesagt, dass ich richtig nervös bin und ich das eigentlich besser kann. Das Verständnis für die Aufregung war jedenfalls da. Man vergisst bei sowas oft die banalsten Dinge. Mit ein paar kleinen Hilfestellungen von Thorsten haben wir dann die Klassen FileFolder und die Basisklasse FileOrFolder erstellt.

namespace Filesystem
{
    class Folder : FileOrFolder
    {
        public List<FileOrFolder> Files { get; set; }

        public Folder()
        {
            Files = new List<FileOrFolder>();
        }

        public void Add(FileOrFolder itemToAdd)
        {
            if (itemToAdd is FileOrFolder)
            {
                Files.Add(itemToAdd as FileOrFolder);
            }
        }

        public bool Contains(string name)
        {
            return SearchFilesList(name);
        }

        private bool SearchFilesList(String name)
        {
            bool isFileFound = Files.Exists(x => x.Name == name);
            if (isFileFound == true)
            {
                return true;
            }

            foreach (var item in Files)
            {
                if (item is Folder)
                {
                    isFileFound = ((Folder) item).Contains(name);
                    if (isFileFound == true)
                    {
                        return isFileFound;
                    }
                }
            }

            return false;
        }
    }

Die Klassen haben wir dann mit typischen Methoden ausgestattet, wie zum Beispiel einer Contains Methode, die überprüft, ob ein Ordner den gesuchten Eintrag enthält. Der für mich entscheidende Punkt war, als ich dann die Programmlogik schreiben sollte. Dafür musste ich dann neue Objekte der Klassen instanziieren und nachdem wir über meine Namensgebung gelacht haben, fühlte ich mich auch entspannter und wurde sicherer in dem, was ich an Code schrieb. Ich meine, wer kann schon Objektnamen wie BestFolderBestFileEver oder EvenBetterFolder widerstehen? Wir haben die 1,5 Stunden auch voll ausgeschöpft und hatten am Ende das BestFileSystemEver erfunden 😉.

namespace Filesystem
{
    class Program
    {
        static void Main(String[] args)
        {
            File file = new File
            {
                Name = "BestFileEver"
            };
            Folder folder = new Folder
            {
                Name = "BestFolderEver"
            };
            Folder folder1 = new Folder
            {
                Name = "NochBessererOrdner"
            };
            folder1.Add(file);
            folder.Add(folder1);
            Console.WriteLine(folder.Contains(file.Name));
            Console.ReadLine();
        }
    }
}

Thorsten hat seine Erfahrung mit mir und den Ergebnissen aus unseren Terminen dann mit in das Entscheidungsgespräch bei ATMINA genommen und ich hatte absolut keine Idee davon, wie ich in den Gesprächen und Aufgaben abgeschnitten hatte und ob ich eine Chance hätte. Aber da dieser Beitrag im Blog von ATMINA erscheint, ist das Ergebnis vermutlich offensichtlich. Drei Tage nach dem Termin habe ich von Rüdiger die Glückwünsche zu den erfolgreichen Terminen mit Thorsten erhalten und er hat mich in die Firma eingeladen um das Team kennenzulernen.

Themen:

  • Jobs
  • Allgemein
  • Softwareentwicklung
  • Mitarbeiterförderung

Kontakt