Interview mit David Tielke
David Tielke lebt in Winterberg, studiert Informatik an der Universität Marburg und
beschäftigt sich vorrangig mit den Themen Softwarequalität und -entwicklung. Zudem gibt
er sein Wissen über .NET im Rahmen des Microsoft Student Partner-Programms an andere
Studenten weiter. Sie erreichen ihn über sein Blog.
Golo Roden: David, wie bist Du zur Softwareentwicklung gekommen? Wie und wann hast Du angefangen?
David Tielke: Ich habe im Laufe meines Bachelorstudiums gemerkt, dass einerseits zu wenig aktuelle Softwaretechnikinhalte behandelt wurden, und dass auf der anderen Seite die wenigen Inhalte, die es gab, vom Niveau her derart einfach gestaltet wurden, dass auch die BWL-lastigen Studiengänge diese hören konnten.
Man hatte zwar Grundlagen in Softwaretechnik und Programmierung gehört, allerdings gelang es weder mir noch meinen Kommilitonen eine „Brücke“ zwischen den beiden Bereichen zu schlagen. Irgendwann habe ich dann gemerkt, dass dies nicht besser wurde und begonnen, das ganze Thema in meiner Freizeit aufzuarbeiten.
Zu Beginn stand die Auswahl der Programmierplattform, und nachdem ich ein bisschen über Java und .NET recherchiert hatte, fiel die Wahl sehr deutlich auf .NET und C# als Sprache.
Als ich erste Erfolge beim Programmieren verzeichnen konnte, entwickelte sich eine wahre „Sucht“ nach Themen im Bereich .NET und den verwandten Microsoft-Technologien. Da das sehr viel Zeit kostete, kündigte ich meine Assistentenstelle beim Professor und suchte mir eine Stelle als .NET-Softwareentwickler.
Diese fand ich auch sehr schnell bei der Firma uniserve in Meschede, so dass ich nun quasi mein neues Hobby zum Beruf machen, endlich richtige Projekte entwickeln und damit auch noch mein Studium finanzieren konnte.
Schnell merkte ich aber, dass zu Softwareentwicklung weit mehr gehört als nur das Programmieren, und so versuchte ich, meine Projekte nach den Methoden durchzuführen, die ich in dem Fach Softwaretechnik gelernt hatte – leider mit mäßigem Erfolg.
Zum gleichen Zeitpunkt empfahl mich mein Professor, bei dem ich die Stelle gekündigt hatte, für eine Bachelor-Thesis bei einer Firma, die ebenfalls jüngst zu der Erkenntnis gekommen war, dass zu Softwareentwicklung mehr als Programmieren gehört.
Dort schrieb ich dann für ein halbes Jahr meine Bachelorarbeit und dabei konnte sehr viel über professionelle Softwareentwicklung aus allen möglichen Blickwinkeln lernen. Außerdem hatte ich viel Zeit, mich in die Bereiche Softwareprojektmanagement und Softwarequalität einzuarbeiten. Besonders die Methoden zur expliziten und impliziten Messung der Softwarequalität wie Unittests, Profiling, Metriken, ... haben mich sehr begeistert.
Da ich von 8 bis 17 Uhr für die eine, von 19 bis 0 Uhr für die andere Firma gearbeitet habe, habe ich dann versucht, das gelernte in meine Projekte bei uniserve einzubringen. Dort konnte ich dann von Woche zu Woche sehen, wie nicht nur die Qualität meiner Software besser wurde, sondern wie auch das ganze Projektmanagement schlagartig besser funktionierte.
Nach wenigen Wochen wurde mir klar, dass ich in meinem bald anstehenden Masterstudium mehr zu diesen Themen lernen wollte und fand nach kurzer Zeit einen entsprechenden Studiengang in Marburg, der genau diese Inhalte abdeckte.
Zeitgleich entdeckte ich das Microsoft Student Program, in welchem Microsoft eine kleine Gruppe .NET-interessierter Studenten mit Literatur, Lehrgängen und Software unterstützte, und diesen zudem die Möglichkeit gab, sich zertifizieren zu lassen. Nachdem die Bachelorarbeit beendet und mein Masterplatz in Marburg gesichert war, wurde ich auch im Student Program angenommen.
Heute habe ich mich in Marburg auf Softwarequalität und -entwicklung in verteilten Systemen spezialisiert, im Rahmen des Student Programs reise ich durch Deutschland und halte Workshops an Universitäten und Fachhochschulen, um andere Studenten auch für .NET – eine geniale Technologie – begeistern zu können, und baue schließlich bei uniserve systematisch eine Software für Kameramanagementsysteme auf.
Vor zwei Monaten wurde ich als Microsoft Certified Professional zertifiziert, und lerne derzeit für meine Microsoft Certified Technology Specialist Prüfung. Darüber hinaus versuche ich nach meinem Studium einen Promotionsplatz im Bereich „Softwarequalität in agilen Vorgehensmodellen“ zu bekommen, da in diesem Bereich die Forschung noch nicht weit fortgeschritten ist – aber bis dahin ist es noch ein langer Weg.
Golo Roden: Ein wesentliches Merkmal der IT ist, dass man beständig mit neuen Entwicklungen konfrontiert wird, und diesen folgen muss. Woher nimmst Du die Motivation, Dich quasi jeden Tag weiterzubilden und mit Neuem zu beschäftigen?
David Tielke: Mir fällt das Lernen sehr leicht, wenn ich mich für etwas begeistert habe. Bei .NET geht es sogar so weit, dass ich mir selbst die Frage stellen muss, wie ich verhindere, dass meine Motivation nicht überhandnimmt.
Früher als Kind und als Jugendlicher habe ich mich immer gefragt, wie bestimmte Dinge in der IT-Welt funktionieren, und mir vorgestellt, dass so etwas unglaublich kompliziert sein muss. Heute kann ich mit Stolz sagen, Teile dieser Welt zu beherrschen, und ich freue mich und habe unglaublichen Spaß daran, jeden Tag neue Dinge in diesem Bereich lernen und mein Wissen somit Stück für Stück aufbauen zu können.
Jeder, der den Entschluss fasst, in dieser Branche zu arbeiten, sollte sich der Tatsache bewusst sein, dass die Halbwertszeit von Wissen in der Softwareentwicklung nur ein bis zwei Jahre beträgt und man somit lebenslang neue Technologien lernen muss beziehungsweise darf. Die Frage ist nur, wie man an diese Herausforderung herangeht: Ich mache es mit Spaß und Begeisterung!
Golo Roden: Wenn sich ein Anfänger heute mit dem Thema Softwareentwicklung befassen will – welche Voraussetzungen sollte er Deiner Meinung nach dafür mitbringen, und was siehst Du als No-Go an?
David Tielke: Wie bei allen Themen ist es am wichtigsten, dass man Spaß und Begeisterung für die Thematik mitbringt. Ich kenne viele Softwareentwickler, für die das ganze „nur ein Beruf“ ist, und ich sehe seit Jahren, wie sie immer auf der Stelle treten und sich kaum noch weiterentwickeln, während junge und motivierte Entwicklerkollegen sie bereits eingeholt oder gar überholt haben.
Ebenfalls ist der Spaß am Lesen sehr wichtig: Ich denke, kaum ein guter Entwickler kommt ohne das regelmäßige Studieren von Büchern aus. Da dies meist in der Arbeitszeit nicht machbar ist, sollte man auch in seiner Freizeit gewillt sein, das ein oder andere Buch durchzuarbeiten – auch wenn man dafür nicht bezahlt wird. Aber auch hier gilt wieder: Einige „müssen“ diese Bücher durchlesen, andere „dürfen“ es. Ich zähle mich zu den letzeren.
Man sollte sehr früh versuchen, Praxiserfahrung zu sammeln, weil es etwas anderes ist, nach einem Pflichtenheft zu entwickeln, als nach Vorstellungen, die man selbst nur im Kopf hat. Die ganzen Dinge, die man in Vorlesungen in der Uni gelernt hat, sind nutzlos, wenn man nicht selbst am Kunden gesehen hat, wie schnell sich in einer Software alles ändern kann und wie praktisch es dann plötzlich ist, wenn man beispielsweise im Strategypattern nur eine Strategy ersetzen muss, um das Verhalten des ganzen Systems zur Laufzeit zu verändern.
Dabei ist es wichtig, immer am Ball zu bleiben und sich nicht entmutigen zu lassen, egal, wie kompliziert eine Technologie ist, oder wie lang die Debugsessions dauern. Man sollte seine Projekte und Arbeiten dabei sehr selbstkritisch betrachten, weil besonders bei Softwareprojekten immer Verbesserungen möglich sind.
Insbesondere sollte man auch Feedback und Kritik von anderen dankend aufnehmen und es als Chance sehen, sich weiterzuentwickeln. Wer seine Arbeit nicht gern zur Kritik stellt und mit Feedback nicht richtig umgehen kann, wird nie ein guter Softwareentwickler werden.
Golo Roden: Bei der Vielzahl an Technologien, die es heute gibt: Womit sollte ein Anfänger heutzutage anzufangen?
David Tielke: Wichtig ist auf jedem Fall, zunächst ein solides Fundament in C# und vor allem in objektorientierter Programmierung zu haben. Das Thema der Klassen und Interfaces fand ich besonders am Anfang eine Hürde, aber dank zahlreicher freier Literatur zu dem Thema im Internet ist das mit etwas Geduld zu meistern.
Danach sollte man zu einer Technologie greifen, die keine weiteren Vorkenntnisse voraussetzt, wie zum Beispiel Windows Forms als UI-Framework. Dort können dann all die Konzepte von C# wie Klassen, Events, Delegates, ... wiederholt und gefestigt werden. Auf diese Art hat man danach auf jeden Fall ein ausreichendes Grundverständnis für alle weiteren Technologien.
Des Weiteren sollte man auf jeden Fall einen kleinen Abstecher zu XML machen, weil das eine Technologie ist, auf die sehr viele andere Frameworks zurückgreifen und man einfach überall in .NET mit XML in Berührung kommt, beispielsweise bei den Konfigurationsdateien.
Danach sollte man die weiteren Punkte nach persönlicher Neigung angehen. Für fast alles weitere kommt man um das Erlernen einer oder mehrerer Zusatzpunkte nicht herum – XAML für WPF und Silverlight; SOAP für WCF; HTML, CSS und JavaScript für ASP.NET; SQL für ADO.NET; ...
Hierbei bietet es sich an, eine Technologie zu wählen, bei der man die eine oder andere Hilfstechnologie bereits beherrscht, oder bei der das Erlernen der Zusatzpunkte sehr leicht fällt.
Golo Roden: Du hast Dich auf Softwarequalität spezialisiert – wie kam es dazu? Und welche Rolle misst Du diesem Thema für Anfänger zu?
David Tielke: Zunächst fand ich bereits in den Univorlesungen das Testen von Software eine sehr spannende Sache, weil man so jederzeit in der Lage war, die Korrektheit des Gesamtsystems zu testen. Genau an dem Punkt, an dem ich in meinen eigenen Projekten feststellte, wie wichtig das gesamte Thema ist, kam mein Professor mit der Bachelorthesis zu dem Thema auf mich zu und, wodurch ich mich immer weiter in dieses Gebiet vertiefte.
Ich finde es beeindruckend, wie man mit Methoden und Techniken den stark kreativen Prozess der Softwareentwicklung an die gleiche Qualität wie bei der herkömmlichen industriellen Fertigung heranführen kann.
Auch wenn das Thema nicht direkt zu Beginn bei einem Anfänger auf der Liste stehen sollte, so kommt man daran über kurz oder lang nicht vorbei. Spätestens, wenn man in ein Team kommt, das schon seit Jahren qualitativ hochwertige Software entwickelt, muss man sich mit dem Thema Softwarequalität auseinandersetzen.
Allerdings ist es ebenso wichtig, erst einmal in die vielen Fallen zu treten, die da draußen in der Softwarewelt ausliegen, damit man wirklich versteht, welchen Sinn bestimmte Techniken haben.
Golo Roden: Welchen Rat würdest Du einem Anfänger abschließend mit auf den Weg geben?
David Tielke: Als Anfänger sieht man oft den Wald vor lauter Bäumen nicht. Leider gibt es für Einsteiger nur sehr wenig Literatur, meist wird man zudem direkt zu Beginn mit Techniken und Abkürzungen erschlagen und verliert dann ein wenig die Motivation.
Hier ist es wichtig, am Ball zu bleiben, denn nur die wenigsten verstehen alle Konzepte direkt von Anfang an. Zumeist liest man etwas und stolpert dann zu einem späteren Zeitpunkt in einem Projekt über eine Problemstellung die eine solche Lösung erfordert. Dann erinnert man sich meist und kann mit etwas Nachlesen das Problem lösen.
Falls man Schüler oder Student ist, sollte man versuchen, eine Nebentätigkeit zu bekommen – besonders für Studenten gibt es sehr viele Nebenjobs als Softwareentwickler – oder sich an Opensource-Projekten zu beteiligen, um möglichst schnell „richtige“ Praxiserfahrung zu sammeln. Das bringt nämlich wesentlich mehr als zu Hause im stillen Kämmerlein zu entwickeln.
Auch wenn Programmieren wichtig ist, muss man sich darum kümmern, auch die theoretischen Themen zu beherrschen, da diese für die Entwicklung von qualitativ hochwertiger Software enorm wichtig sind.
Wie in allen anderen Branchen ist auch in der Softwareentwicklung noch kein Meister vom Himmel gefallen. Wichtig ist, dass man sich stetig weiterentwickelt – der Rest kommt von ganz allein.
Veröffentlicht am 15. November 2009