Foundations for Professionals .NET Professionals im Profil guide to C# guidgen.de

Blog

Nutze den Augenblick
und teile der Welt mit, was Du zu sagen hast.

.NET Professionals im Profil: Ilker Cetinkaya

Donnerstag, 15. Juli 2010, 09:37 Uhr
Permalink | Kommentare (0) | Kommentare als RSSRSS

Ilker Cetinkaya, Berater, Architekt und Entwickler bei Avanade Deutschland GmbH, entwickelt Software mit dem Microsoft .NET Framework seit der Version 1.0. Durch sein langjähriges Wirken bei großen Projekten prägt ihn ein breites und tiefes Know-How, besonders in den Themen Skalierung, Performance und Flexibilität von .NET Anwendungen; sowohl im Web- als auch im Enterprise-Umfeld. Als ausgewiesener Experte für professionelle Software-Entwicklung beschäftigt er sich seit mehreren Jahren intensiv mit den Themen agile Methoden, TDD / BDD, C# 3.0 / 4.0 und Software-Design. Sie erreichen ihn über sein Blog.

Golo Roden: Ilker, wie bist Du zur Softwareentwicklung gekommen? Wie und wann hast Du angefangen?

Ilker Cetinkaya: Ich glaube ich war 9 oder 10 Jahre alt, als ich das erste mal mit Rechnern in Berührung kam. Klassischerweise war es natürlich der C64 mit Datasette. Zunächst habe ich nur gespielt. Auf dem C64 selbst habe ich gerade mal PEEK, POKE und LOAD beherrscht. Ein paar Jahre später ging es dann aber mit dem Amiga 500 richtig zur Sache. Zunächst noch Spielen und Programmieren in frequentivem Wechsel, doch mit der Zeit faszinierte mich das "Anprogrammieren" der Maschine immer mehr.

Anfangs habe ich mich noch sehr auf die "Standards" wie kleine Hilfsprogramme und Verwaltungsanwendungen konzentriert. AmigaBasic war da schon ein probates Mittel. Doch bald trieb es mich in die Spiele- und Grafikprogrammierung. Agnus, Denise, Paula und ich wurden dicke Freunde. Programmiert habe ich damals viel in Blitz, AMOS, C sowie einem C-Derivat namens "Amiga E". Nun, nach vielen und langen Jahren auf der Amiga-Plattform - wir wissen ja, wie die Amiga-Geschichte verlief, oder? - "musste" ich auf die x86er-Plattform und war natürlich zunächst drastisch enttäuscht. Doch bald fand ich dort mit Borland C und Borland Pascal meine "Programmierwelt" wieder, in die ich eintauchen konnte.

Nach vielen weiteren Sprachen und Szenarien kam ich dann Anfang 2001 zu den NGWS und C#. Zunächst natürlich nur aus Interesse und Spielerei, nebenbei machte ich sehr viel in C, PHP, ASP und Visual Basic 6. Erstaunlicherweise ließ aber der Alltagsgebrauch nicht sehr lange auf sich warten, denn ich durfte bei meinem damaligen Arbeitgeber schon 2003 meine ersten Anwendungen in C# entwickeln.

Tja, und heute bin ich immer noch beim .NET Framework und bei C# - und ich bin damit auch recht glücklich.

Golo Roden: Außer mit .NET beschäftigst Du Dich auch intensiv mit agilen Methoden, insbesondere Scrum. Wie kam es dazu?

Ilker Cetinkaya: Ich habe mich für agile Software-Entwicklung um die Jahre 2003 / 2004 angefangen zu interessieren. Lustigerweise aus dem trivial-naiven Grund, dass mich der Name "Extreme Programming" einfach gereizt und neugierig gemacht hat. Damals dachte ich mir: "Yeah, Extreme Programming - klingt krass, muss ich unbedingt mal probieren". Aus diesem "mal probieren" wurde dann aber ganz schnell ein ernsthaftes auseinandersetzen. Ich habe dann Stück für Stück mich intensiv mit XP auseinandergesetzt und es sukzessive - anfangs leider nur in Teilen - umgesetzt.

Durch diese intensive Zeit bis 2007 habe ich vieles über Agilität und Methoden gelernt. 2008 schließlich war es an der Zeit, Scrum näher zu erkunden, weil es mit XP und FDD zur Auswahl stand als Software-Entwicklungs-Methodik in meiner damaligen Firma eingesetzt zu werden. Nun, man hat sich für Scrum entschieden und ich habe mich immer mehr mit dem Thema Scrum beschäftigen dürfen.

Heute kann ich für mich behaupten, zwar einiges schon über Agilität, Scrum, XP und Co. zu wissen. Aber im gleichen Atemzug muss ich auch sagen, dass ich noch einiges darüber lernen will und werde. So beschäftige ich mich zum Beispiel seit über einem Jahr nebenbei mit Lean Management und der Adaption für das Software-Engineering. Gleichzeitig macht es mir auch zunehmend Spaß, immer mehr über TDD, Pair Programming, NLP und Feedback-Loops zu lernen. Die Erkenntnis des Continuous Improvements und des daraus kausal folgenden Lifelong Learnings ist einer der Grundbausteine agiler Handlungsmethodik.

Golo Roden: Welche Rolle spielen agile Methoden Deiner Meinung nach für Anfänger?

Ilker Cetinkaya: Die gleiche Rolle wie auch für Erfahrene oder Experten. Ich bin der festen Überzeugung, das die agile Entwicklungs-Methodik ein wichtiger und großer Schritt hin zu einer neuen Art und Weise der Software-Entwicklung ist. Agile Methoden und Werte sind heutzutage sowohl aus wirtschaftlicher als auch aus professioneller Hinsicht nicht mehr aus dem Tagesgeschäft wegzudenken. Dem Anfänger darf ich den wohlgemeinten Rat geben, sich mit der agilen Software-Entwicklung zügig und intensiv auseinanderzusetzen.

Häufig wird man bei solch einer Aussage mit Antworten wie "Ja, will ich, aber ich weiß nicht wie" oder "Ja, aber bei uns geht das nicht so einfach" oder "Ja, aber wir haben keinen Experten" konfrontiert. Das sind sicherlich Punkte, die für Entwickler Einfluß auf das Lern- und Adaptionsverhalten von Agilität haben. Jedoch sollte man diese Faktoren nicht überbewerten oder unnötigen Respekt vor der Veränderung haben. Agilität ist "salonfähig" geworden. Das bringt zwar auch kritische und ungewünschte Einflüsse mit sich, ist aber im Großen und Ganzen doch positiv.

Denn: Agile Softwareentwicklung ist der Rahmen des modernen, neuen Bilds eines Software-Entwicklers. Das macht es gleichermaßen für den Neueinsteiger sowie auch für den langjährigen "Entwickler-Haudegen" zu einem unübersehbaren - ja ich möchte sogar behaupten zwingenden - Kriterium für den Erfolg als Software-Entwickler. Für den Haudegen, der solche Dinge wie Wasserfall, V-Modell, V-XT oder ähnliches hinter sich gebracht hat, ist es oftmals ein kleines Stück schwerer, sich dem Spirit der Agilität zu nähern.

Golo Roden: Ein wesentliches Merkmal der IT ist, dass man beständig mit neuen Entwicklungen konfrontriert wird, und diesen folgen muss. Woher nimmst Du die Motivation, Dich quasi jeden Tag weiterzubilden und mit Neuem zu beschäftigen?

Ilker Cetinkaya: Es macht mir Spaß! Und das ist kein Witz! Du weißt sicherlich, was ich damit meine, deswegen gehe ich - obwohl es so unglaublich wichtig ist - auch nicht näher darauf ein, sondern möchte auch noch andere Aspekte erwähnen.

Nun, ich denke, dass man in einem Beruf, in dem stetige Neuentwicklung und Neuorientierung "Tagesgeschäft" ist, auch das notwendige emotionale, soziale und intellektuelle Rüstzeug mitbringen sollte.

Emotional, weil Motivation, Spaß, Vertrauen und Neugier oft in kleine und große Emotionen münden und man mit diesen Emotionen auch ein Stückweit umgehen können sollte. Beim Lernen, der Entwicklung und Forschung sind sich Enttäuschung und Euphorie manchmal sehr nah. Hier ist es wichtig, die Emotionen zu verarbeiten und sie "ins richtige Licht" zu rücken. So ist manchmal eine Enttäuschung noch kein Beinbruch, ein Erfolg aber oftmals kein bemerkenswerter Fortschritt.

Sozial, weil Software und Software-Entwicklung längst aus der Nische der Forschung und Technologie herausgetreten sind und sich in unserem Leben verankert haben. Diese Verankerung ist so tief, dass ein Software-Entwickler immer seltener in die Gelegenheit kommen wird, völlig selbstständig und autark ein professionelles Produkt oder eine Dienstleistung ausliefern zu können.

Intellektuell, weil Informationsgesellschaft und Informationsverarbeitung ein herausforderndes Thema sind und bleiben werden. Wir als Gesellschaft sind an einem Punkt, in dem Information ein zentrales Element unseres Lebens einnimmt. Das gilt für uns Geeks und Software-Entwickler umso mehr.

Das hört sich jetzt abgehoben und zum Teil arg philosophisch an. Aber wenn man mal ein paar Minuten darüber in Ruhe nachdenkt, dann fühlt man sich als Software-Entwickler nicht nur in der "Pflicht", neue Dinge zu Lernen, sondern man fühlt sich im "Recht", es zu tun. Und ganz offen: Dafür bin ich dankbar und weiß das auch zu schätzen.

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?

Ilker Cetinkaya: Ich habe ja gerade schon geschildert, dass man als Software-Entwickler eine Reihe von "Soft-Skills" mitbringen sollte. Vielen Entwicklern, die wie ich schon viele Jahre im Geschäft sind, die selbst schon Plattformen und Technologien "überlebt" haben, wird dieses Thema in letzter Zeit vielleicht etwas zu sehr in den Vordergrund gestellt. Ich jedenfalls höre des öfteren Kommentare wie "Ach, diese Philosophiererei und Esoterik mit Soft-Skills und Agilen Werten ist überbewertet."

Diesen Stimmen kann ich nur entgegnen, dass sie sowohl Recht als auch Unrecht haben. Sie haben Recht, denn ein Software-Entwickler ist kein Philosoph und schon garnicht ein Theoretiker. Es geht um konkrete Technologien und Informationsverarbeitung. Sicheres und hochwertiges Anwenden von Mathematik, Logik und Analytik sind Fähigkeiten, die man als Software-Entwickler zwingend mitbringen sollte. Das gilt für den hardwarenahen NUI-Treiber-Entwickler genauso wie für den CRM-Anwendungs-Entwickler.

Doch sie haben auch Unrecht. Denn ein Software-Entwickler ist mittlerweile kein isoliertes, sein 30qm-Kämmerchen mit Starkstrom versorgendes, sich von Kaffee und Pizza ernährendes, an Platinen und ICs herumlötendes, sich mit exotischen Parkleitsystemen beschäftigendes, alle seine 15 Rechner mit 3D-Landschafts-Rendering auslastendes, am Rande der Gesellschaft sozial abgegrenztes Individuum mehr.

Computer, Hardware, Software, Web, Information - das sind Dinge, mit denen heutzutage nahezu Jeder in Berührung kommt. Diesem Umstand müssen wir auch als Software-Entwickler Rechnung tragen. Das gilt für die Industrialisierung, also die Automatisierung und Globalisierung von Software-Entwicklung, als auch für die Sozialisierung, also die Menschlichkeit und Gemeinsamkeit in der Software-Entwicklung.

Damit sind, denke ich, zwischen den Zeilen auch meine No-Gos für einen Software-Entwickler schon genannt: Eigenbrot-Egozentriker, Un-Logiker, Theorie-Bibel-Prediger, Ellenbogen-Ausfahrer, Kontrollwahn-Ausleber, In-Hierarchien-Strukturierer, Chaos-Leben-Bevorzuger, Oberlehrer-Zeigefinger-Heber, Organisations-Verabscheuer, Gesellschafts-Meider, Möchtegern-Neo-In-Die-Matrix-Hacker, Rosarote-Brille-Aufhaber, Informatik-Rein-Aus-Karrieregründen-Studierer, Algorithmus-Fetischisten oder Kreativ-Kultur-Kult-Hedonisten werden es als Software-Entwickler in Zukunft sehr schwer haben.

Damit könnte ich ein ganzes Buch füllen. Spaß bei Seite, ich hoffe ich konnte klarmachen, dass man meiner Meinung nach heutzutage alleine als Software-Entwickler nicht mehr viel erreichen kann.

Golo Roden: Bei der Vielzahl an Technologien, die es heute gibt: Womit sollte ein Anfänger heutzutage anzufangen?

Ilker Cetinkaya: Schön, dass wir uns von der "Esoterik" wieder zur "Technik" wenden.

Ich finde gerade die Entwicklung rund um "Mobile and Communication" unglaublich spannend. Ich bin der Meinung, dass wir mit "Mobile Devices" nur noch ein paar Jahre von einem richtungsweisenden Entwicklungssprung entfernt sind. Die gegenwärtige Apps-Manie ist da nur ein kleines, aber wichtiges Rädchen. Dementsprechend ist Silverlight auch als ".NET-Technologie" mehr als ein kurzweiliges Vergnügen.

Im Web stellt man sich gerade zwei Herausforderungen. Einerseits ist es die clientseitige "User Experience", die mit JS-Libraries, HTML 5, Silverlight und mehr in Richtung "Rich-Internet-Applications" (RIA) zeigt. Das ist für Kreativgeister sicherlich ein spannendes Umfeld.

Andererseits versucht man sich neuerdings - ich muss seufzend sagen: endlich - ernsthaft mit dem Thema performante, instante, relevante und kontextbasierte Informationsgewinnung aus Massendaten zu beschäftigen. OData, Pivot, Twitter, Facebook, NoSql, CQRS, F#, Erlang. Endlich wird Informationsüberflutung nicht ignoriert, sondern mit Technologien kanalisiert. Ein wie ich finde hoch spannender und fordernder Technologiezweig.

Für angehende .NET-Entwickler im Enterprise-Umfeld sind sicherlich die WPF-Smart-Client-Technologien und das generelle Thema "Motional User Interfaces" wie zum Beispiel Surface oder ähnliches interessant. Hier wird es meiner Meinung nach in Zukunft eine deutlichere Wertschöpfung der Technologien geben.

Auch wurde in letzter Zeit schon deutlich, das der Schritt von "Motion" zu "Natural" nicht mehr weit ist. Augmented Reality - unabhängig vom Device - ist ein wichtiger Schritt, das Zusammenspiel von analoger und digitaler Welt harmonisch zu gestalten. Wo die Wii einen Anfang gemacht hat, begeht Microsoft mit Kinect entscheidende technologische Fortschritte. Gaming war schon immer ein Technologie-Treiber. Das fasziniert mich persönlich auch sehr an der Gaming-Technologie.

Nun ja, meine Empfehlungen sind nun Mal von meinen eigenen Präferenzen geprägt.

Golo Roden: Welchen Rat würdest Du einem Anfänger abschließend mit auf den Weg geben?

Ilker Cetinkaya: Puh, Du legst bei Deinen Fragen ganz schön viel Wert auf die Neulinge - schon die vierte "Anfänger-Frage" - sehr lobenswert. Ich weiß gar nicht so genau, ob ich einen Rat "nur für Anfänger" geben kann. Ich denke vielmehr, dass wir auch als "Erfahrene" uns immer wieder selbst Ratschläge geben können und sollten.

Damit möchte ich einen meiner Meinung nach wichtigen Punkt andeuten. Als Anfänger stellt man sich gerne - und natürlich auch berechtigt - in die Position des "Lernenden". Doch auch die langjährigen "Senior Software Developer" oder "Software Architekten" tragen dazu bei. Denn leider gilt oftmals noch "Hackordnung" und das "weise Wort" des Architekten hat ein größeres Gewicht als das des "Greenhorns".

Den Neulingen möchte ich folgendes auf den Weg geben: Versteckt Euch nicht und stellt Euch nicht unnötig unter den Scheffel. Denn ein "Erfahrener", der seinen Standpunkt als "Mastermind" transportiert oder seine Position oder Erfahrung als Entscheidungskriterium hervorhebt, ist keineswegs erfahren genug, um eine moderne, gemeinschaftliche Software-Entwicklung umzusetzen.

Weiterhin solltet Ihr euch bewusst sein, dass Ihr nicht alles lernen und können werdet. Software-Entwickler ist ein Beruf mit vielen Facetten und Möglichkeiten. Das bedeutet immer wieder lernen, immer wieder neu orientieren, immer wieder leisten und liefern. Das ist "Pflicht" und manchmal gar nicht so schwer. Aber das bedeutet auch, sich entfalten, sich einbringen, sich bilden, sich bestätigen, sich entwickeln. Das ist "Recht" und manchmal gar nicht so einfach.

Aber ein Rat ist meiner Meinung nach immer noch einer der wichtigsten, schönsten und besten:

Habt Spaß dabei!

.NET Professionals im Profil: Stefan Lieser

Dienstag, 15. Juni 2010, 09:37 Uhr
Permalink | Kommentare (0) | Kommentare als RSSRSS

Stefan Lieser ist freiberuflicher Berater, Trainer und Autor aus Leidenschaft. Sein Interesse gilt den agilen Methoden der Softwareentwicklung, und er sucht ständig nach Verbesserungen und neuen Wegen. Mit Ralf Westphal hat er die Clean Code Developer-Initiative ins Leben gerufen. Durch seinen Fokus auf Clean Code Developer ist er ferner als Berater in Brownfield-Projekten tätig. Sie erreichen ihn über seine Webseite.

Golo Roden: Stefan, wie bist Du zur Softwareentwicklung gekommen? Wie und wann hast Du angefangen?

Stefan Lieser: Ich habe als Schüler in den Ferien als Datenerfasser in einem Pharmabetrieb gejobbt. Mein Vater hat im gleichen Betrieb gearbeitet und mir den Job besorgt. Tatsächlich habe ich sogar mit ihm in einem Büro gesessen, was eine einmalige Chance war. Denn wer erhält als Jugendlicher schon einen tieferen Einblick in den Beruf der Eltern? Jedenfalls, wenn man mal von handwerklichen Berufen absieht.

Meine Aufgabe war die Erfassung von Fragebögen zu klinischen Studien. Die Abteilung hatte die Aufgabe, diverse Statistiken zu den Daten zu berechnen, Diagramme zu erstellen, ... Dabei fielen immer wieder kleinere Programmieraufgaben an, so habe ich begonnen, in FORTRAN zu programmieren. Das war vor der Zeit der PCs, es gab keine grafische Oberfläche, sondern green-screen-Terminals an einer DEC PDP-11 und später einer MicroVAX.

Nach dem Abitur habe ich Zivildienst gemacht, bin von zu Hause ausgezogen und habe meinen ersten PC gekauft. In der Zeit habe ich jede freie Minute am Rechner gehockt und C, Assembler sowie Turbo Pascal gelernt. Nach dem Zivildienst habe ich in Koblenz Informatik studiert und auch in dieser Zeit ständig Software entwickelt. Hier gesellten sich C++ und Modula-2 hinzu. Mit der Softwareentwicklung habe ich mir mein Studium finanziert. Nach dem Studium habe ich mit zwei Partnern die S&L Netzwerktechnik GmbH gegründet und war 5 Jahre lang Netzwerker. Das war auch schön, aber die Softwareentwicklung liegt mir mehr am Herzen.

So habe ich dann erst als angestellter Entwickler gearbeitet und mich dann erneut selbständig gemacht. Heute arbeite ich als Trainer, Berater und Autor im Bereich Clean Code Developer und Brownfield. Das scheinen auf den ersten Blick zwei Bereiche zu sein, die nichts gemeinsam haben. Brownfield steht quasi am einen Ende der Skala, Clean Code am anderen. Doch die wenigsten Entwickler kommen in den Genuss, in sogenannten Greenfield Projekten "auf der grünen Wiese" anzufangen. Viel häufiger existiert ein Projekt bereits lange Zeit und die Frage lautet, wie schafft man es, dessen innere Qualität zu verbessern.

Golo Roden: Gemeinsam mit Ralf Westphal hast Du die Initiative "Clean Code Developer" ins Leben gerufen. Welche Bedeutung misst Du diesem Thema bereits für Anfänger bei?

Stefan Lieser: Die Clean Code Developer-Initiative soll ein Gegengewicht sein, um zwei Sichtweisen ins Gleichgewicht zu bringen. Wir haben in der Branche schon lange den Fokus auf König Kunde. Dies ist total in Ordnung, aber es fehlt die Sichtweise derjenigen, die sozusagen unter die Haube schauen. Wird die Entwicklung nur davon geleitet, Kundenwünsche umzusetzen, dann fehlt die Perspektive der Softwareentwickler.

Unsere Kunden gehen beispielsweise völlig zu Recht davon aus, dass sie Software erhalten, die immer weiterentwickelt werden kann. Ob sie sich heute ein neues Feature wünschen oder dasselbe Feature erst in einem Jahr entwickeln lassen, sie gehen davon aus, dass es einen fixen Preis hat. Heute ist es jedoch so, dass der Preis für das Feature dramatisch ansteigt, je später es ergänzt werden soll. Das liegt daran, dass nicht ausreichend auf die innere Qualität der Software geachtet wird.

Evolvierbarkeit fällt nicht einfach vom Himmel, sondern muss von den Softwareentwicklern von Anfang an bedacht und umgesetzt werden. Insofern bin ich sehr dafür, dass angehende Softwareentwickler sich von Anfang an in ihrer Ausbildung mit den Bausteinen und Werten der Clean Code Developer-Initiative auseinandersetzen. Wir versuchen daher, mit Ausbildungsstätten in Kontakt zu treten. Ab und zu gelingt dies schon und wir halten Vorträge über die Initiative an Hochschulen oder ähnliches. In der allgemeinen Lehre sehen wir die Inhalte allerdings noch zu selten.

Golo Roden: Ein wesentliches Merkmal der IT ist, dass man beständig mit neuen Entwicklungen konfrontriert wird, und diesen folgen muss. Woher nimmst Du die Motivation, Dich quasi jeden Tag weiterzubilden und mit Neuem zu beschäftigen?

Stefan Lieser: Einerseits ist da die Neugierde, die mich antreibt, mich mit Neuem auseinanderzusetzen. Andererseits blende ich bewusst einiges aus. Vor allem den ständigen technischen Neuerungen renne ich nicht mehr so hinterher, wie ich das früher getan habe.

Dem liegt die Erkenntnis zugrunde, dass Prinzipien und Praktiken der Softwareentwicklung in der Regel deutlich länger Bestand haben als diverse Technologien. Das soll nun nicht heißen, dass ich Technologie für unnötig erachte. Aber ich meine schon, dass man sich auch mal getrost zurücklehnen kann, um eine Technologie nicht als erster einzusetzen. Am Ende fehlt mir selten die Motivation, mich mit Neuem zu befassen.

Für mich liegt die Herausforderung eher darin, meinen eigenen "roten Faden" zu finden und an dem dann beständig weiterzuarbeiten. Fokus ist wichtig. Nicht nur bei der Softwareentwicklung, auch bei der persönlichen Entwicklung. Und regelmäßige Reflektion, um festzustellen, ob das, was man tut, das richtige ist.

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?

Stefan Lieser: Eine wichtige Voraussetzung im Bereich Softwareentwicklung ist die Fähigkeit, zu abstrahieren. Wer damit Schwierigkeiten hat, scheint mir ungeeignet für eine Tätigkeit im Bereich Softwareentwicklung. Damit meine ich nicht, dass man diese Fähigkeit entweder hat oder nicht hat. Natürlich kann man seine Fähigkeiten, zu abstrahieren, weiterentwickeln. Erstaunlicherweise macht das aber vielen Entwicklern große Probleme. Die regelmäßig Reflektion darüber, wie ich an Problemstellungen herangehe und was dann auf dem Weg zur Lösung so alles passiert, ist eine wichtige, wenn nicht sogar die wichtigste Praktik zur Weiterentwicklung.

Damit gehört die Bereitschaft, alles zu hinterfragen und ständig nach neuen Wegen zu suchen, für mich zu einem Beruf in der Softwareentwicklung dazu. Es gibt vermutlich keinen Beruf mehr, den man einmal lernt und dann nur noch ausübt. Aber speziell die Softwareentwicklung lebt von der beständigen Weiterentwicklung. Die Bereitschaft, in diesem Beruf ständig zu lernen, sollte man also mitbringen.

Golo Roden: Bei der Vielzahl an Technologien, die es heute gibt: Womit sollte ein Anfänger heutzutage anfangen?

Stefan Lieser: Ich habe es oben schon angedeutet, Technologien sind überbewertet. Eine Empfehlung für eine bestimmte Technologie muss in einem Kontext stehen. Wenn die Frage lautet, welche Technologie ich empfehlen würde, um als Softwareentwickler einen Job zu finden, würde ich vielleicht "Java" antworten. Das ist aber vermutlich nicht die Antwort, die Du hören möchtest. Aber auch im Bereich .NET kann ich keine solche Empfehlung aussprechen, ohne die Frage in einen Kontext einzubetten. Ich will mich aber nicht vor einer Antwort drücken und daher zwei Dinge empfehlen.

Wie ich weiter oben schon erwähnt habe, halte ich im Bereich Softwareentwicklung Werte, Prinzipien und Praktiken für elementar. Denn diese ermöglichen mir eine Bewertung der zur Verfügung stehenden Technologien. Meine erste Empfehlung lautet also, befasst euch mit den Werten der Clean Code Developer-Initiative.

Die zweite Empfehlung lautet, nicht nur auf Microsoft zu schauen. Natürlich bringt Microsoft eine ganze Reihe hervorragender Technologien hervor. Aber andere Mütter haben auch schöne Töchter. Gerade im Open Source-Bereich gibt es eine ganze Reihe an Technologien, die von vielen Entwicklern nicht beachtet werden, weil sie nicht von Microsoft stammen. Ein Blick über den Tellerrand schadet nicht.

Golo Roden: Welchen Rat würdest Du einem Anfänger abschließend mit auf den Weg geben?

Stefan Lieser: Musiker üben. Sie stehen nicht nur auf der Bühne und "performen", sondern die meiste Zeit üben sie. Softwareentwickler scheinen zu glauben, sie könnten einfach so "performen". Immer. Ohne zu üben. Problematisch daran ist, dass Auftritt und Übung unterschiedliche Anforderungen stellen. Es sind sozusagen zwei völlig andere "Betriebsarten". Beim Auftritt sollte man Fehler tunlichst vermeiden, während man beim Üben eine Umgebung braucht, die Fehler toleriert, um sich weiterzuentwickeln.

Da stellt sich dann die Frage, wie man sich als Softwareentwickler weiterentwickeln kann, wenn man nur in der Betriebsart "keinen Fehler machen" arbeitet. Mein Rat, nicht nur an Anfänger, lautet daher: Regelmäßig üben! Ob man sich dafür jeden Tag einen Zeitrahmen einräumt oder einmal pro Woche, ist eine Frage des Umfeldes. Die Regelmäßigkeit ist es, was zählt. Im Web und in Fachzeitschriften wie der dotnetpro findet man genügend große und kleine Übungen. Daran sollte man seine Fähigkeiten als Softwareentwickler weiter entwickeln.

.NET Professionals im Profil: Bernd Marquardt

Samstag, 15. Mai 2010, 09:37 Uhr
Permalink | Kommentare (0) | Kommentare als RSSRSS

Bernd Marquardt ist selbstständiger Consultant und programmiert seit 1975 in den unterschiedlichsten Programmiersprachen so wohl auf Großrechnern wie auch auf PCs. Er schreibt Artikel für Fachzeitschriften, hat das Buch "WPF Crashkurs" geschrieben und hält Vorträge auf Konferenzen wie den DevDays oder der ADC. Er war für zehn Jahre Microsoft Regional Director und weitere fünf Jahre MVP für C++. Seine Schwerpunkte liegen in den Bereichen der Programmierung mathematischer und grafischer Algorithmen, Parallelprogrammierung, Windows NT-Architektur, Entwicklung mehrschichtiger Applikationen, MFC und natürlich .NET. Sie erreichen ihn über seineWebseite.

Golo Roden: Bernd, wie bist Du zur Softwareentwicklung gekommen? Wie und wann hast Du angefangen?

Bernd Marquardt: Oh je, das ist schon sehr, sehr lange her. Mein erster Kontakt mit einem Computer fand im Jahr 1975 oder 1976 statt - ich kann mich nicht mehr genau erinnern. Aber ich hatte an der Uni eine Vorlesung zum Thema Röntgenspektroskopie belegt, und da musste man bei den Übungen viel rechnen. Das durften die Kursteilnehmer dann mit dem Großrechner der Universität Köln durchführen.

Das war damals eine Control Data CDC Cyber 76. Die Maschine hatte eine Wortlänge von 60 Bit, 64 Kiloworte schnellen und 200 Kiloworte langsamen Arbeitsspeicher. Natürlich waren auch ein paar "Waschmaschinen" angeschlossen, also Festplattenlaufwerke. Die Programmiersprache war Assembler oder Fortran 66. Ein kleines Beispiel:

    PROGRAM TEST
READ(1,100) N
100 FORMAT(I8)
X=0.0D0
DO 200 I=1,N
X=X+DSQRT(DBLE(I))
200 CONTINUE
WRITE(6,300) X
300 FORMAT(3X,9HRESULT = ,F15.5,/)
STOP
END

Schön, nicht wahr? Keine Strukturierung, keine Objektorientierung und natürlich keine mehrschichtige Architektur! Aber Spaß hat das Programmieren trotzdem gemacht. Aber es war auch noch alles sehr mühsam. Alles wurde auf Lochkarten gehackt und musste dann in die Maschine eingelesen werden. Danach konnte es längere Zeit - eventuell auch mehrere Tage - dauern, bis man ein Ergebnis in Form eines Listings erhielt. Und dann bekam man vielleicht nur eine lapidare Fehlermeldung des Compilers zurück.

Damals waren Computer noch richtig groß, machten viel Krach, brauchten tiefe Temperaturen und viel Strom. Aber man konnte damit Dinge ausrechnen, die man auf einem Taschenrechner - ja, die gab es schon! - nicht ausrechnen konnte. Mein erster eigener Mikrocomputer war übrigens ein TRS-80 Level II von Radio Shack, mit Microsoft Basic, 16 KByte RAM, einem 80 KByte-Diskettenlaufwerk und einer Taktfrequenz von satten 900 KHz. Die Grafikkarte in diesem Rechner konnte nur schwarz/weiß-Grafik und hatte eine Auflösung von 128 x 48 Klötzern. Aber die Faszination war in mir geweckt - und sie hat mich bis heute noch nicht losgelassen. Ja, es ist tatsächlich wahr und es gilt auch heute noch für mich: Wenn ich mir einen neuen Rechner bestellt habe, dann kann ich spätestens in der Nacht vor der Lieferung nicht mehr richtig schlafen!

Also am Anfang habe ich dann naturwissenschaftliche Software geschrieben, in erster Linie Programme, mit denen man die Eigenschaften von chemischen Molekülen berechnen konnte. Da braucht man so richtig viel Rechenzeit, manchmal sogar mehrere Tage!

Nach der Universität habe ich mich dann selbstständig gemacht und Anwendungen für andere Firmen entwickelt. Einer der interessantesten Aufträge in dieser Zeit war die Entwicklung eines Programms, welches Fässer, Kartons, Paletten und so weiter automatisch in einen beliebigen Container stauen konnte.

Später stellte sich dann heraus, dass es mir auch sehr viel Spaß macht, das Wissen an andere Softwareentwickler weiter zu geben. Seitdem bin ich sehr oft auf Konferenzen präsent und halte viele Schulungen zu den Themen der Softwareentwicklung.

Golo Roden: Wenn Du einen Schritt zurücktrittst, Dir die aktuellen Entwicklungen in der IT anschaust - wie beispielsweise Cloud Computing oder die Fokussierung auf RIA-Technologien - und diese mit dem Hintergrund Deiner langjährigen Erfahrung beurteilst: Wie stehst Du zu diesen Entwicklungen?

Bernd Marquardt: Ja, eines ist eigentlich klar: Wir lösen mit unseren Computern heute natürlich ganz andere Probleme als vor 30 Jahren. Das bedeutet auch, dass wir eine andere Hardware und andere Softwarekomponenten benötigen. Das fängt beim Betriebssystem an, hört bei den Anwendungsprogrammen auf und schließt natürlich auch die eingesetzte Hardware mit ein. Trotzdem sind alle neuen Strömungen in der IT-Branche für mich sehr interessant.

Nehmen wir zum Beispiel die Parallelprogrammierung. Bis vor Kurzem war dieses Thema einfach uninteressant, weil unsere Prozessoren einfach immer schneller geworden sind. Das ist nun vorbei. Wir haben Prozessoren mit mehreren Kernen, und wenn wir diese voll ausnutzen wollen, müssen wir unsere Software entsprechend entwickeln. Die Parallelität bekommen wir leider nicht umsonst - im Moment jedenfalls.

Aber genau vor diesem Hintergrund ist es höchst interessant, was sich nun auf dem Parallelmarkt tut, das heißt, welche neuen Lösungsansätze es gibt, welche Bibliotheken entwickelt und welche Technologien angewendet werden, um die Parallelprogrammierung so zu vereinfachen, dass sie leicht und fehlerfrei anzuwenden ist. Ganz ähnlich ist das mit dem Cloud Computing. Hier bekommt man beliebige Rechenleistungen, alles hochskalierbar und so wie man es gerade braucht. Ich will damit nicht sagen, dass Cloud Computing die einzig richtige und für alle Szenarien nutzbare Vorgehensweise ist, aber für viele Anwendungen stellt es doch ein gute Lösung dar.

Die IT-Umgebungen werden wohl auch in Zukunft sehr vielfältig bleiben, um eben alle möglichen Anwendungsszenarien abzudecken. Aber das macht es gerade so interessant.

Golo Roden: Inzwischen existieren zahlreiche Frameworks, die auf .NET basieren, und dieses um neue Fähigkeiten erweitern. Dennoch beschäftigst Du Dich auch sehr viel mit den Grundlagen - wie beispielsweise Parallelprogrammierung. Warum?

Bernd Marquardt: Mit der Parallelprogrammierung beschäftige ich mich eigentlich schon von Anfang an. Früher ging es in erster Linie aber darum, die zum Teil sehr langen Rechenzeiten zu verkürzen. Heute in modernen Business-Anwendungen möchte man die Rechenergebnisse natürlich auch möglichst schnell haben, aber es kommt noch ein anderer Aspekt hinzu: Die Benutzerschnittstelle soll möglichst nicht blockiert werden. Das heißt, der Anwender kann einfach immer weiter tippen und klicken. Und das ist schon eine Herausforderung ersten Ranges.

Eine wichtige Aufgabe in dieser Zeit ist es, Verfahren in der Parallelprogrammierung zu entwickeln, die so einfach anwendbar sind, dass wir sie sofort möglichst fehlerfrei für die zu lösenden Aufgabenstellungen nutzen können. Das ist nicht einfach. Und was so alles dabei herauskommt, ist in höchstem Maße spannend. In den letzten Jahren hat es viele neue Möglichkeiten in der Parallelprogrammierung gegeben: OpenMP, Unified Parallel C (UPC), Multithreading, Message Passing Interface (MPI). Und es kommen dauernd neue Ansätze hinzu: Cilk, Tasks Parallel Library (TPL), Parallel Pattern Library (PPL), AXUM, CUDA, OpenCL, ... Die Liste ist natürlich nicht vollständig, aber sie zeigt, welche Dynamik im Moment in diesem Bereich herrscht. Und das macht gerade diesen Bereich der Softwareentwicklung so interessant.

Golo Roden: Ein wesentliches Merkmal der IT ist, dass man beständig mit neuen Entwicklungen konfrontriert wird, und diesen folgen muss. Woher nimmst Du die Motivation, Dich quasi jeden Tag weiterzubilden und mit Neuem zu beschäftigen?

Bernd Marquardt: Ich glaube, das habe ich im Blut! Wenn ich nicht ein Buch mit irgendwelchen neuen Themen neben mir liegen habe, dann werde ich unruhig. Das müssen nicht unbedingt Bücher aus der IT-Welt sein, das können auch Themen aus Physik, Chemie und Astronomie sein. Aber eins ist natürlich klar: Wenn man in der IT-Branche erfolgreich sein will, dann muss man gerne lernen und auch bereit sein, sich ständig mit neuen Themen zu beschäftigen. So ist das eben schon seit vielen Jahren: Man hat gerade C# 2.0 richtig gelernt und alles verstanden, dann kommt ganz schnell C# 3.0 auf einen zu und das Ganze geht wieder von vorne los! Ich habe mir vor kurzem ein Buch über Silverlight 3 gekauft - während ich das gelesen habe, kann mal eben Silverlight 4 raus. Ein langweiliges Leben hat man in der IT-Branche also auf keinen Fall. Und genau daher hole ich mir auch meine Motivation, denn Langeweile mag ich nun mal gar nicht!

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?

Bernd Marquardt: Also eins ist klar: Man muss sich unbedingt für neue Dinge interessieren. Jede neue Version einer Soft- oder Hardware muss eine spannende Angelegenheit sein. Das Ausprobieren eines neuen Verfahrens, einer neuen Technologie und einer neuen Bibliothek sollte auf jeden Fall Spaß machen und niemals als lästige Pflicht empfunden werden.

Außerdem sollte man unbedingt Freude am Tüfteln haben. Es ist nun mal so, dass eine Software nicht einfach eingetippt wird und dann funktioniert sie fehlerfrei, sondern es muss eine Menge Geduld aufgebracht werden, eine Software wirklich komplett zu entwanzen. So kommt es natürlich auch schon mal vor, dass man trotz Debugger und vieler anderer moderner Hilfsmittel längere Zeit nach einem Fehler suchen muss. Aufgeben ist hier nicht angesagt.

Als ein weiteres wichtiges Mitbringsel wurde ich sagen, dass ein Softwareentwickler Spaß an abstraktem Denken haben muss. Man muss sich in eine Maschine hineinversetzen und ein bestimmtes Problem durch Beschreibung mit einem Programmalgorithmus lösen. Ein bisschen Mathematik kann dabei übrigens oft helfen - auch wenn viele Programme heute vollständig ohne höhere Mathematik auskommen.

Na ja, die No-Gos sind dann eigentlich klar. Ich schreib es mal in C# hin:

if(!bNeueDingeInteressant || !bSpassAmTüfteln || (bAbstractDenken == false))
{
goto exit;
}

Oh, oh, und dann noch mit einem goto-Befehl! Also ich mache aus den No-Gos einfach No-Gotos!

Golo Roden: Bei der Vielzahl an Technologien, die es heute gibt: Womit sollte ein Anfänger heutzutage anzufangen?

Bernd Marquardt: Die wichtigste Grundlage für einen Anfänger ist eigentlich eine gute Programmiersprache. Aber da geht der Streit dann auch schon los, denn was ist eigentlich eine gute Programmiersprache? Das kann ganz davon abhängen, in welchem Bereich man programmieren möchte. So können die Präferenzen im naturwissenschaftlichen Bereich durchaus andere sein, als die, die man in Business-orientierten Anwendungen vorfindet.

Ich bin aber der Meinung, dass die erste Programmiersprache, die man lernt - wenn man interessiert ist, dann werden im Laufe der IT-Karriere noch einige Sprachen mehr dazu kommen - einige wichtige Eigenschaften haben sollte. Zunächst einmal sollte die erste Sprache relativ einfach sein. Außerdem sollte sie die heutigen wichtigen Programmierparadigmen unterstützen. Dazu gehören die strukturierte Programmierung ebenso wie die Objektorientierung. Natürlich sollte für die Programmiersprache eine gute, also möglichst vollständige Bibliothek zur Verfügung stehen, die es letztendlich erlaubt, interessante Anwendungen zu entwickeln.

Und natürlich sollte einem die Programmiersprache gefallen, die man nun lernen möchte. Genauso, wie einem eine Sprech-Sprache gut gefallen kann und man diese dann lernen möchte, geht es mit der Programmiersprache.

Ich würde also empfehlen, eine Sprache zu lernen, die auf das .NET-Framework aufsetzt. Alle Punkte, die ich oben aufgezählt habe, treffen eigentlich auf die .NET-Sprachen zu. Sie sind objektorientiert und strukturiert, und es existiert ein nahezu komplettes Framework für die Windows-Programmierung. C++ ist ziemlich kompliziert und ist als Erstsprache nicht so gut geeignet. Andere .NET-Sprachen wie beispielsweise F# oder AXUM sind eher spezielle Sprachen oder Forschungsprojekte. Ich würde als Anfänger den Blick auf eine Standardsprache wenden: Also entweder C# oder Visual Basic. Hier kommt es dann darauf an, welche Sprache besser gefällt.

Und dann kann es auch schon losgehen. Übrigens ein kleiner Tipp: Für die Standard-Programmiersprachen gibt es häufig kostenlose Webcasts im Internet, mit denen man sehr schön in die Welt des Programmierens einsteigen kann. Diese Webcasts helfen auch, wenn man sich noch nicht so im Klaren ist, welche Sprache es denn nun sein soll.

Golo Roden: Welchen Rat würdest Du einem Anfänger abschließend mit auf den Weg geben?

Bernd Marquardt: Wenn es mal nicht so klappt mit dem Programmieren, dann sollte man nicht so schnell aufgeben. Denn dazu ist der Beruf des Softwareentwicklers viel zu interessant und spannend.

.NET Professionals im Profil: Golo Roden

Donnerstag, 15. April 2010, 09:37 Uhr
Permalink | Kommentare (2) | Kommentare als RSSRSS

Golo Roden arbeitet auf freiberuflicher Basis als Wissensvermittler und Technologieberater für .NET, Codequalität und agile Methoden. Im Rahmen von .NET hat er sich auf die Sprache C# und die Architektur von Webanwendungen spezialisiert. Seit dem Jahr 2010 ist er Microsoft Most Valuable Professional (MVP) für C#, außerdem ist er zweifacher Microsoft Certified Professional (MCP), unter anderem für die Entwicklung .NET-basierter Webanwendungen. Sie erreichen ihn über seine Webseite und sein Blog.

N.N.: Golo, wie bist Du zur Softwareentwicklung gekommen? Wie und wann hast Du angefangen?

Golo Roden: Meinen ersten Kontakt zu Computern hatte ich, als ich zwölf Jahre alt war. Die Firma, in der mein Papa arbeitete, stellte damals auf PCs um, und er wollte sich besser einarbeiten können – also kaufte er sich einen PC. Ich weiß noch genau, dass ich eines Tages von der Schule nach Hause kam, die im Flur stehenden Pakete sah und fragte, ob ich die Pakete am Nachmittag auspacken dürfe, da meine Eltern beide wieder in die Firma gehen und arbeiten mussten.

Da sie nichts dagegen hatten, packte ich die Pakete nachmittags aus und schloss die einzelnen Kabel an und – schaltete den PC ein. Da Windows damals noch kaum verbreitet war, hatten wir nur MS-DOS zur Verfügung: Mir blinkte also ein Cursor auf der Kommandozeile entgegen und wartete auf Eingaben.

Ich hatte überhaupt keine Ahnung, was ich machen musste – wie gesagt, es war das erste Mal, dass ich überhaupt vor einem Computer saß – kannte aber die Enter-Taste von der Schreibmaschine. Also fing ich an, Befehle zu raten. Irgendwann habe ich durch Zufall „break“ eingegeben, woraufhin die Meldung „break on“ erschien. Durch Ausprobieren habe ich dann auch noch herausgefunden, dass man diesen Zustand mit Hilfe von „break on“ und „break off“ verändern konnte.

Den ganzen Nachmittag über habe ich nichts anderes mehr gemacht, als weiterhin Befehle zu raten, und gelegentlich auf meinen ersten Befehl zurückzugreifen – ohne auch nur ansatzweise zu verstehen, wofür er gut war.

Im Gegensatz zu meinen Altersgenossen, die größtenteils nur an Computerspielen und daher auch eher am C64 als an PCs interessiert waren, wollte ich etwas anderes: Ich hatte auf dem Firmen-PC meines Papas gesehen, dass man zu Beginn ein Kennwort eingeben musste. Das fand ich spannend! Und was ich wollte, war nichts anderes, als „unseren“ PC ebenfalls durch ein Kennwort zu schützen.

Zu Gute kam mir dann, dass mein Opa in Basic programmieren konnte. Er hatte zwar eigentlich ein Geschäft für Badmintonsport, hatte sich aber sein eigenes System für Warenwirtschaft und Rechnungsverwaltung entwickelt. Er zeigte mir bei einem Besuch, wie man Basic startete, ein kleines Programm eingab, es ausführte und Basic wieder beendete: Mehr als PRINT und INPUT kannte ich dann zwar noch nicht, aber ich war meinem Vorhaben, ein Programm zum Abfragen des Kennworts zu entwickeln, einen Schritt näher gekommen.

Ich weiß nicht, wie es damals weitergegangen wäre, wenn nicht auch mein Papa das Bedürfnis gehabt hätte, seine Kenntnisse zu erweitern: Gemeinsam haben wir einige Bücher zu MS-DOS durchgearbeitet, und uns irgendwann auch an GW-Basic gewagt.

Mein Interesse an Programmierung wuchs und wuchs, je mehr ich darüber lernte. Irgendwann kam dann der Umstieg auf QuickBasic, und irgendwann war auch der Punkt erreicht, an dem ich alleine weitermachen musste – schließlich wollte mein Papa kein Programmierer werden, sondern eigentlich nur seine Kenntnisse als Anwender für die Firma verbessern.

Ein Schritt hat dann zum nächsten geführt, und ich hatte das Glück, dass mich meine Eltern dabei unterstützt haben – zum einen im materiellen Sinne, da sie mir Bücher und Zeitschriften finanziert haben, zum anderen aber auch, weil sie sich so gut wie nie darüber beschwert haben, dass ich so viel Zeit vor dem Computer verbracht habe.

Während der nächsten Jahre bin ich an die Grenzen von QuickBasic gestoßen, außerdem wollte ich unbedingt die vermeintlich kryptische Syntax von C und C++ verstehen. Nach einem kurzen Ausflug zu Assembler habe ich daher begonnen, mich in C++ einzuarbeiten.

Zeitgleich bekam ein Klassenkamerad von seinen Eltern zum Geburtstag ein Modem geschenkt, mit dem es uns erstmals möglich war, in Mailboxen nach Gleichgesinnten zu suchen, und uns zusätzliche Software herunterzuladen. Auch meine Eltern zogen irgendwann nach, so dass ich zu Hause Zugriff auf das Internet hatte, was für das Lernen und den Austausch mit Gleichgesinnten enorm hilfreich war. Außerdem habe ich in dieser Zeit begonnen, mich mit den verschiedenen Webtechnologien wie HTML, CSS und JavaScript auseinanderzusetzen.

Nach meinem Abitur und einem Jahr als Zivildienstleistender lag auf der Hand, dass ich Informatik studieren würde. Meine Eltern haben mir unter anderem des Praxisbezugs wegen empfohlen, die FH zu wählen, ich wollte aber auf die Uni und mich mit den theoretischen Grundlagen beschäftigen – wenn ich damals geahnt hätte, worauf ich mich damit eingelassen habe, bin ich mir nicht sicher, ob ich genauso entschieden hätte.

Kurzum: Die Uni hat meine Erwartungen kaum erfüllt, wobei das eher an meinen Erwartungen als an der Uni lag. Wirklich spannend und von praktischem Nutzen war eigentlich nur ein halbjähriges Praktikum im Hauptstudium, in dessen Rahmen wir paarbasiert eine webbasierte Auktionsplattform entwickeln sollten. Trotzdem bin ich im Nachhinein froh, auf der Uni gewesen zu sein, denn auch wenn ich keinen direkten Nutzen daraus ziehen konnte, so glaube ich doch, dass die Zeit dort mein abstraktes, analytisches und systematisches Denken geschult hat.

N.N.: Du hast Dich auf die .NET-Plattform spezialisiert. Warum gerade .NET und nicht beispielsweise JEE (Java Enterprise Edition)?

Golo Roden: Als technische Grundlage für besagtes Praktikum diente damals J2EE mit Eclipse als Entwicklungsumgebung. Dass wir einige technische Probleme mit unseren Benutzerkonten hatten und die Versionsverwaltung nicht zuverlässig funktionierte, war dabei allerdings die kleinere Herausforderung: Sich in eine derart komplexe Technologie wie J2EE einzuarbeiten, war das eigentliche Kunststück.

Ich hatte immer das Gefühl, dass – egal an welchem Ende man anfängt – jede Antwort gleich wieder zehn neue Fragen nach sich zieht, und der Grad des Nichtwissens somit immer größer statt kleiner wird. So wohl mein Praktikumspartner wie auch ich hatten aber den Ehrgeiz, verstehen zu wollen, wie und warum diese Technologie funktionierte: Es hat uns verdammt viel Zeit gekostet. Wir haben jeden Tag von morgens bis spät Nachts ausschließlich für dieses Praktikum gearbeitet, aber wir haben unglaublich viel gelernt.

Bevor ich anfing, zu studieren, hatte ich noch einige Wochen Zeit, in denen ich mich zwar auch um Dinge wie Wohnungssuche und ähnliches kümmern musste, aber dennoch blieb viel Freizeit: Irgendwo habe ich damals auch zum ersten Mal davon gehört, dass Microsoft eine neue Entwicklungsplattform namens .NET mitsamt einer neuen Sprache namens C# plant.

Da ich Zeit hatte und ohnehin auf der Suche nach einem vernünftigen und sinnvollen Inhalt für meine Webseite war, beschloss ich, mir C# näher anzugucken und dazu ein kleines Tutorial – quasi vom Einsteiger für den Einsteiger – zu schreiben. Das Ergebnis war guide to C#, das meines Wissens nach erste deutschsprachige größere Tutorial zu C#.

Auf diese Weise hatte ich während der Zeit an der Uni einen direkten Vergleich zwischen C# und Java – und je geübter ich in C# wurde, desto mehr missfiel mir Java. Nach meinem Praktikum habe ich mir dann auch ASP.NET und ADO.NET als Alternativen zu J2EE angesehen und schließlich beschlossen, mich auf .NET und C# zu spezialisieren. Obwohl ich für diese Entscheidung und für meine generelle Begeisterung für Microsoft an der Uni stets schief angeguckt wurde, glaube ich im Nachhinein, dass es die richtige Entscheidung war.

Vergangenes Jahr habe ich mein Wissen um J2EE, das inzwischen übrigens nur noch JEE heißt, auf Vordermann gebracht – und bin dabei zu dem gleichen Ergebnis gekommen: Ich würde nicht wieder zu JEE zurück wechseln wollen.

N.N.: Deine Schwerpunkte liegen auf .NET, Codequalität und agilen Methoden. Wie hängen diese Bereiche zusammen?

Golo Roden: Die Plattform .NET bildet zusammen mit der Sprache C# die Basis. Beide zusammen befähigen einen Entwickler erst, überhaupt Anwendungen entwickeln zu können. Essenziell dabei ist, dass man als Entwickler seine Werkzeuge beherrscht. Dass dies bei .NET als Plattform nicht umfassend möglich ist, liegt auf der Hand – dafür ist .NET inzwischen viel zu umfangreich und komplex geworden.

Aus diesem Grund ist es empfehlenswert, sich auf einige wenige Bereiche zu spezialisieren. In meinem Fall sind dies die Sprache C# an sich sowie ASP.NET. Dennoch versuche ich, alle anderen Bereiche von .NET zumindest so weit zu kennen, dass ich beurteilen kann, welche Technologie ich wofür in welchem Kontext einsetzen könnte. Ich versuche auch, mich in jedem Bereich zumindest so weit auszukennen, dass es für einen ersten Einstieg genügt. Insofern bin ich in gewissem Sinne gleichzeitig ein Generalist und ein Spezialist.

Alleine der Wunsch, C# nicht nur irgendwie zu können, sondern diese Sprache wirklich zu beherrschen, ist eine Herausforderung: Angefangen bei nicht-alltäglichen Schlüsselwörtern wie yield bis hin zu Besonderheiten in der Sprachspezifikation wie dem null-Typ oder dem beforefieldinit-Flag bietet C#, aller Konsistenz zum Trotz, viel Potenzial für Stolperfallen.

Erst, wenn man eine Sprache als Entwickler wirklich beherrscht und verstanden hat, wie und warum sie intern auf ihre Art aufgebaut ist, erst dann ist man in der Lage, nicht nur effektiven, sondern auch effizienten Code zu schreiben. Das ist der erste Schritt.

Der zweite Schritt liegt darin, die Sprache in einen Kontext einzubetten. In meinem Fall ist das ASP.NET – denn eine Sprache alleine genügt noch nicht, um komplexe Anwendungen zu entwickeln. Natürlich muss jeglicher Code eine gute Architektur aufweisen, um wart- und evolvierbar zu sein. Das gilt für ASP.NET ebenso wie für jede andere Technologie. Deshalb liegt mir auch das Thema der Architektur von Webanwendungen sehr am Herzen.

Obwohl ein Entwickler mit diesen Bausteinen – C#, ASP.NET und Webarchitektur – bereits produktiv arbeiten kann, ist das Ergebnis noch nicht zwingend qualitativ hochwertig. Dazu gehört für mich nicht nur, dass das Produkt eine hübsche Fassade aufweist, auch das Innenleben muss gepflegt sein: Die Rede ist von sauberem Code, der ebenfalls wesentlich zu langfristiger Wart- und Evolvierbarkeit beiträgt.

Deshalb beschäftige ich mich auch mit dem Thema Codequalität. Dazu gehört für mich auf jeden Fall die Orientierung an CCD (Clean Code Developer), das Schreiben von Unittests, die Durchführung von Codereviews, der Einsatz von Werkzeugen zur statischen Codeanalyse, …

All dies mag aufwändig und vor allem teuer erscheinen. Allerdings ist es ein Trugschluss, zu glauben, dass man durch den Verzicht auf diese Themen Zeit oder Geld sparen könnte – denn letztlich werden die gleichen Fehler trotzdem gemacht, sie fallen nur erst später auf. Dann jedoch kostet ihre Behebung ein Vielfaches von dem, was eine von Anfang an durchgehaltene saubere Arbeitsweise gekostet hätte.

Daher ist es so wichtig, dass Entwickler ihr Augenmerk auch auf Codequalität richten – denn nur dann sind sie in der Lage, nicht nur effektiven und effizienten, sondern auch qualitativ hochwertigen Code zu schreiben.

Zu guter Letzt ist es ideal, wenn das Ausleben von Codequalität auch von einem entsprechenden Rahmenwerk getragen wird. Dieses Rahmenwerk betrifft dabei das Management, aber auch den Entwickler und dessen Team. Aus diesem Grund erachte ich es für wichtig, sich mit agilen Methoden zu befassen – denn sie bieten ein solches geeignetes Rahmenwerk. Scrum stellt dazu die äußere Hülle zur Verfügung, Extreme Programming (XP) füllt Scrum mit dem notwendigen Innenleben.

Nimmt man all diese Aspekte zusammen, dienen also alle drei Themen – .NET, Codequalität und agile Methoden – letztlich der Steigerung der Codequalität. Und genau darum geht es mir: Entwickler zu befähigen, rundum guten Code zu schreiben, anstatt sich mit halbgarem und ausgereiftem zufrieden zu geben.

N.N.: Ein wesentliches Merkmal der IT ist, dass man beständig mit neuen Entwicklungen konfrontriert wird, und diesen folgen muss. Woher nimmst Du die Motivation, Dich quasi jeden Tag weiterzubilden und mit Neuem zu beschäftigen?

Golo Roden: Um ehrlich zu sein: Ich weiß es nicht. In mir verspüre ich einen stetigen inneren Drang, mich verbessern zu wollen, mehr lernen zu wollen, immer weiter voranzukommen und dabei etwas zum Guten zu bewegen. Deswegen muss ich die Motivation nirgendwo hernehmen – ich habe sie einfach.

Natürlich gibt es auch immer mal Tage, an denen man sich nicht aufraffen kann. Mir hilft an solchen Tagen, mir zu sagen, dass es sehr schwer sein kann, einen Stein erst einmal ins Rollen zu bringen – ihn aber am Rollen zu halten, sobald er einmal am Rollen ist, ist deutlich einfacher. Übertragen auf die Softwareentwicklung soll das heißen: Auch wenn man sich zu nichts Großem aufraffen kann, genügt es häufig, mit Kleinigkeiten loszulegen.

Erstens summieren diese sich über den Tag verteilt auch auf, zweitens fällt es leichter, sich an große Aufgaben zu wagen, wenn man bereits im Fluss ist und einfach nur die nächste Aufgabe vom Stapel nehmen muss.

N.N.: 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?

Golo Roden: Ich glaube, dass es nur drei Voraussetzungen gibt, die einen guten Softwareentwickler ausmachen: Zum einen der eben erwähnte innere Drang, immer weiter vorankommen zu wollen. Wem das fehlt, der wird über kurz oder lang schlichtweg keinen Spaß mehr daran haben, ständig etwas Neues machen zu müssen. Das sind dann jene Entwickler, die sich Neuerungen per se verschließen, immer mit dem Argument spielend, dass ihre Vorgehensweise „früher auch schon so funktioniert“ habe.

Wer also von sich aus diesen inneren Drang verspürt, hat eine der drei größten Hürden meines Erachtens bereits genommen. Alles andere ist dann nur noch eine Frage der Zeit und des Aufwands, aber prinzipiell ist diese Motivation eine Schlüsselqualifikation. Das ist die gute Nachricht.

Zugleich ist es aber auch die schlechte Nachricht. Denn wer diesen inneren Drang nicht verspürt, der wird ihn sich, zumindest meines Erachtens, auch nie wirklich aneignen können. Entweder ist man so – oder man ist es eben nicht. Daran ändern kann man in der Regel kaum etwas – ebenso wenig wie an der Tatsache, ob man Links- oder Rechtshänder ist.

Als zweite Voraussetzung ist für einen guten Softwareentwickler Liebe zum Detail erforderlich. Zum einen, weil auch vermeintliche Kleinigkeiten sehr komplexe Auswirkungen haben können, zum anderen aber auch, weil sich Kleinigkeiten so schnell summieren – und das sofortige Beheben eines Fehlers so wohl zeitlich wie auch finanziell deutlich günstiger ist als wenn es zu einem späteren Zeitpunkt erfolgt.

Als Softwareentwickler muss man jederzeit exakt und mit Präzision arbeiten, wie wenn man ein Schweizer Uhrwerk zusammensetzen würde – und nur einen Versuch hätte. Das fängt bei einer wohlüberlegten und durchdachten Namensgebung an und hört bei der Rechtschreibung innerhalb von Kommentaren auf. Dies wird desto wichtiger, je eher man nicht als einzelner Entwickler, sondern im Team arbeitet.

Die dritte und letzte Voraussetzung ist meines Erachtens eine gewisse konstruktive und zugleich reflektierte Einstellung. Tritt ein Problem auf, so ist es für den Kunden zunächst einmal irrelevant, welcher Entwickler des Teams dafür verantwortlich ist – wichtig ist zunächst, dass der Fehler auf saubere Art behoben wird, auch hier spielt also wieder die Liebe zum Detail mit hinein. Zunächst gilt es also, konstruktiv nach vorne zu blicken und zu überlegen, was man machen kann, um die Situation zu verbessern.

Natürlich muss auch überlegt werden, wie es zu dem Fehler kam und wie man zukünftig mit solchen Situationen umgehen will. Eine Retrospektive tut also Not, in der rückblickend bewertet wird, was gut und was schlecht lief. Dies sollte jedoch regelmäßig und zu dedizierten Zeitpunkten stattfinden, um die konstruktive Arbeit nicht ständig zu unterbrechen.

Wer diese drei Voraussetzungen – einen stetigen Verbesserungsdrang, Liebe zum Detail wie auch eine konstruktive und zugleich reflektierte Einstellung – erfüllt, hat gute Chancen, als Softwareentwickler erfolgreich zu sein.

N.N.: Bei der Vielzahl an Technologien, die es heute gibt: Womit sollte ein Anfänger heutzutage anzufangen?

Golo Roden: Das Hauptproblem ist inzwischen, dass viele Anfänger zu viel auf einmal wollen: Da genügt es nicht mehr, eine statische Webseite zu entwickeln, sondern es muss von vornherein eine dynamische Webseite mit Datenbankanbindung und RIA-Frontend sein. Natürlich ist es möglich, sich in die dafür benötigten Technologien auf die Schnelle irgendwie einzuarbeiten – aber die Genauigkeit und Präzision geht dabei verloren.

Paradox an dieser Situation ist, dass die heute verfügbaren Technologien sehr stark von den Grundlagen abstrahieren und somit Glauben machen, man könnte sie so leicht erlernen. Gleichzeitig werden aber genau diese Grundlagen immer stärker gefragt, um mit Ungenauigkeiten in der Abstraktion umgehen zu können. Es schadet also auch heute nicht, sich mit gewissen Basics zu befassen.

Daher würde ich einem Anfänger raten, eine ähnliche Richtung einzuschlagen wie sie die Entwicklung der Technologien an sich genommen hat. Das heißt, er sollte mit kleinen Konsolenanwendungen beginnen und zunächst die jeweilige Sprache lernen. Erst wenn er das beherrscht, sollte er den Schritt zu grafischen Oberflächen oder Webtechnologien wagen. Erst danach sollte er sich mit Datenbankanbindung befassen – und auch hier wieder zuerst mit SQL, erst dann mit O/R-Mappern. Und so weiter …

Letztlich würde ich also dazu raten, Geduld zu haben, und Schritt für Schritt aufeinander aufzubauen, um sich solides Wissen als Fundament anzueignen. Auf anderem Wege kommt man auf den ersten Blick zwar deutlich schneller voran, scheitert aber auch wesentlich schneller – weil die besagten notwendigen Grundlagen fehlen.

N.N.: Welchen Rat würdest Du einem Anfänger abschließend mit auf den Weg geben?

Golo Roden: Wenn ein Anfänger die genannten Voraussetzungen erfüllt und bereit ist, eine gehörige Portion Zeit und Aufwand zu investieren, dann ist das bereits eine sehr gute Ausgangsbasis. Wer zudem nicht so schnell aufgibt und dazu neigt, allen Widerständen zum Trotz beharrlich und geduldig nach Lösungswegen zu suchen, der ist ebenfalls gut beraten.

Letztlich bleibt dann nur noch zu sagen: Auf geht’s!

.NET Professionals im Profil: Neno Loje

Montag, 15. März 2010, 09:37 Uhr
Permalink | Kommentare (0) | Kommentare als RSSRSS

Neno Loje ist Technologieberater und Wissensvermittler für den Softwareentwicklungsprozess sowie erster Microsoft Most Valuable Professional für Visual Studio Team System in Europa. Als zertifizierter TFS-Experte unterstützt er Firmen bei der Einführung vom Team Foundation Server - von der Entscheidung über die Migration bis zur individuellen Anpassung. Sie erreichen ihn über sein Blog.

Golo Roden: Neno, wie bist Du zur Softwareentwicklung gekommen? Wie und wann hast Du angefangen?

Neno Loje: Das ist eine gute Frage. Seitdem ich denken kann, wusste ich, dass ich mal was "mit Computern" machen möchte, und die meisten denken ja auch heute noch genau das: Er macht etwas "mit Computern". Ich glaube, ich war damals sogar so klein, dass ich noch gar nicht wusste, was ein Computer ist, doch das sollte sich zuerst dank eines C64 und später dann in der Schule ändern. Mit 12 oder 13 Jahren gab es den ersten freiwilligen Computerkurs in der Schule, ein Jahr später den ersten Programmierkurs, mit der Programmiersprache Profan. Als ich das Gefühl hatte, alle Möglichkeiten eben dieser ausgereizt zu haben, folgten Visual Basic 4 in 16 und 32 Bit, Visual Basic 5 und 6.

Als ich mich nach dem Abitur auf die Suche nach einer Stelle als Programmierer, so hieß es auf "Altdeutsch", bewarb, war ich schon Autor in der basicpro – doch die Anforderungen der Projekte, die ich bis zum damaligen Zeitpunkt umgesetzt hatte, kamen ausschließlich von mir selbst. Eine tolle Zeit.

Nach ein paar Wochen im Job als Softwareentwickler auf Vollzeit kamen mir aber schon Zweifel: Will ich den Rest meines Lebens damit verbringen, Softwarebugs in altem, schmierigen Code zu beheben? Glücklicherweise durfte ich bei zahlreichen Projekten auf einer recht grünen Wiese anfangen, sodass ich diesen Gedanken nicht weiterzuspinnen brauchte.

Golo Roden: Du wurdest von Microsoft als erster MVP für Team Foundation Server in Europa ausgezeichnet. Wie kam es dazu, dass Du Dich speziell mit dem Team Foundation Server beschäftigt hast?

Neno Loje: Die Geschichte vom Team Foundation Server begann vor etlichen Jahren in den USA. Microsoft lieferte Windows als Anwendungsplattform sowie Visual Studio - und damals noch Visual Basic - an die Softwareentwickler und Softwarehäuser aus, damit diese sinnvolle Anwendungen für Windows schreiben konnten. Und obwohl Microsoft beide Produkte ständig weiter verbesserte, kam von den Kunden die Rückmeldung, dass nicht Visual Studio - sprich der Compiler, Debugger oder die Frameworks - schuld daran waren, dass es zum Teil sehr schwierig war, die Anforderungen umzusetzen, sondern vielmehr lag es an anderen Faktoren, wie der Zusammenarbeit im Team, der eingesetzten, häufig produktionsähnlichen Entwicklungsprozesse und mangelnder Qualitätssicherung, warum Projekte nicht so erfolgreich, pünktlich und kosteneffizient abgelaufen sind, wie man es sich gewünscht hatte.

Microsofts Antwort war ein Produkt, welches alle an der Softwareentwicklung beteiligten Menschen umschließt: Projektleiter, Architekten, Entwickler, Tester, ... Die ersten, die das neue Produkt zu Gesicht bekommen sollten, waren amerikanische Firmen, schließlich waren diese aus Microsofts Sicht einfach näher dran. Irgendwann kam eine Roadshow, die auch in München am Flughafen kurz halt macht. Da ist es dann passiert. Mir wurde klar: Ja, dieser Ansatz ist in der Lage, einigen Projekten wirklich zu helfen - und keine neue Programmiersprache der Welt vermag es, eben diese Probleme zu lösen.

Dass ich dann in Europa als erster MVP ausgewählt wurde, zur Kategorie "Team System" zu wechseln - ich war damals C# MVP - und mit der Produktgruppe zusammenzuarbeiten, war eine Abfolge von Zufällen beziehungsweise ich war zur richtigen Zeit am richtigen Ort.

Golo Roden: Für wie wichtig erachtest Du die Beschäftigung mit Infrastrukturthemen wie Versionsverwaltung, Buildserver, ... für einen Anfänger?

Neno Loje: Enorm wichtig! Und ich glaube, für die Anfänger wird das auch zunehmend normaler. Wir kommen noch aus einer Zeit, wo strukturierte Fehlerbehandlung von einigen Visionären in dunklen Kellerräumen gepredigt wurde. Heute ist das völlig normal.

Auch denken wir viel zu häufig nicht als Team, da der Programmierer früher schließlich alles selbst gemacht hat - und auch die volle Herrschaft über den Rechner hatte. Heute gibt es kleine und große Teams, und selbst in 1-Mann-Projekten arbeitet man zumindest mit Leuten zusammen, welche die Anforderungen diktieren oder die Ergebnisse später prüfen und / oder verteilen. Der moderne Softwareingenieur, der seinen Beruf als eine professionelle Entwicklungsdisziplin sieht, die durchaus noch eher kreative Züge hat, für den sind viele Techniken wie Unit Tests zur technischen Überprüfung seines Werks normales Handwerkszeug. Statt einem Schraubenzieher nutzt er Versionsverwaltungssysteme und Buildserver, beziehungsweise optimalerweise ein System, welches den gesamten Application Lifecycle abdeckt, wie den TFS.

Golo Roden: Ein wesentliches Merkmal der IT ist, dass man beständig mit neuen Entwicklungen konfrontriert wird, und diesen folgen muss. Woher nimmst Du die Motivation, Dich quasi jeden Tag weiterzubilden und mit Neuem zu beschäftigen?

Neno Loje: Mein Beruf ist es ja Wissen zu vermitteln, insofern muss ich, noch etwas eher als ich es früher als Software-Entwickler tun musste, mich ständig und überall fortbilden. Ich habe zwei konkrete Alltagsbeispiele, die ab und zu in ähnlicher Form wiederkehren, die dafür sorgen, dass meine Motivation nicht erlischt:

Ich hielt einen Vortrag, den ich schon unzählige Male gehalten hatte, stets bemüht, ihn dennoch ein wenig mit Begeisterung zu vermitteln. Danach kam ein Entwickler zu mir und sagte: "Ich habe monatelang versucht, die Zusammenhänge zwischen den ganzen Technologien zu verstehen. Nach diesem Tag mit Ihnen ist mir alles klar. Danke dafür!". Er strahle über das ganze Gesicht und schien sich sehr zu freuen.

Das zweite Beispiel basiert auf klassischer Softwareentwicklung: Ich hatte nach einigen Diskussionen und Bemühungen meinerseits unseren Großkunden überredet, einen neuen Weg zur Softwareverteilung auszuprobieren. Die dafür zuständige Abteilung war permanent ausgebucht und brauchte verhältnismäßig lange für die Überprüfung und Bereitstellung von Updates. Nach einigen Wochen kam einer der skeptischsten Mitarbeiter der IT-Abteilung zu mir und sagte: "Seitdem wir die Software nach der neuen Methoden verteilen können, haben wir statt mehrerer Tage nur wenige Stunden Arbeit und können häufiger pünktlich nach Hause."

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?

Neno Loje: Ich glaube, aus den beiden eben genannten Beispielen sieht man ganz gut, dass ein Stück "Weltverbesserer" gerne in einem Entwickler stecken darf. Er sollte nicht bloß umsetzen, was ihm vorgesetzt wird, sondern in der Lage sein, das Kundenproblem zu analysieren und eine optimale technische Lösung anzubieten, statt sich mit traditionell gewachsenen und häufig veralteten Strukturen und Abläufen zufrieden zu geben.

Aber letztlich soll Software immer dem Kunden dienen. Deshalb ist es absolut notwendig, dass Softwareentwickler kundenorientiert denken und arbeiten. Ein ausgeprägtes Qualitätsbewusstsein und zwangsläufig permanente Lernbereitschaft tun den Rest. Auch wird kaum mehr Software alleine im Stillen Kämmerlein entwickelt: Teamfähigkeit wird also immer mehr erwartet und gefordert.

Golo Roden: Bei der Vielzahl an Technologien, die es heute gibt: Womit sollte ein Anfänger heutzutage anzufangen?

Neno Loje: Technologien kommen und gehen. Häufig entscheidet der erste Arbeitgeber beziehungsweise die Uni, was man sich ansieht. Die konkrete Sprache oder Technologie ist auch nicht entscheidend. Die Fähigkeit zu wissen, wie man sie erlernt ist wichtig. Bei mir klappt das mit dem Lernen - und vor allem dem Behalten - nur, wenn mich die Materie auch irgendwie interessiert. Es ist deutlich einfacher, eine Datenbankvorlesung an der Uni zu bestehen, wenn man vorher schon in richtigen Projekten Datenbanken, ihren Nutzen und ihre Eigenheiten kennengelernt hat. Sonst wäre das so, als würde man in einem theoretischen Technologievortrag über die Funktionsweise einer Weltraumfähre sitzen ...

Golo Roden: Welchen Rat würdest Du einem Anfänger abschließend mit auf den Weg geben?

Neno Loje: Es ist eine tolle Zeit, um Softwareentwickler zu werden! Alles fällt leichter, wenn man die Tätigkeiten wirklich gerne mag, wenn man sich wie ein kleines Kind freut, wenn man sieht, wie sich das Projekt von Version zu Version weiterentwickelt und wächst, und die automatischen Tests alle grün leuchten. Will man gut gerüstet sein als Softwareentwickler für das nächste Jahrzehnt, sollte man nicht nur programmieren können, sondern seinen Job "professionell" ausführen. Dazu gehören insbesondere Prinzipien, Werte und Vorgehensweisen. Als Startadressen können hier beispielsweise Was macht einen professionellen Software-Entwickler aus? von Stefan Lieser und das Schulungs- und Zertifizierungsprogramm: Professional Scrum Developer Program dienen.

.NET Professionals im Profil: Christian Wenz

Montag, 15. Februar 2010, 09:37 Uhr
Permalink | Kommentare (0) | Kommentare als RSSRSS

Christian Wenz ist Autor, Trainer und Berater mit Schwerpunkt Webentwicklung und Websicherheit sowie Mitbegründer der Hauser & Wenz Partnerschaftsgesellschaft. Als Buchautor veröffentlicht er seit fast zehn Jahren zu allen wichtigen Webthemen. Er hat zahlreiche Fachartikel verfasst und spricht regelmäßig auf Entwicklerkonferenzen im In- und Ausland. Als Teilhaber der Agentur Arrabiata Solutions GmbH leitet er Entwicklungsprojekte und führt Security-Audits durch. Sie erreichen ihn über seine Webseite.

Golo Roden: Christian, wie bist Du zur Softwareentwicklung gekommen? Wie und wann hast Du angefangen?

Christian Wenz: Indirekt hat mich mein Vater dazu gebracht. Er war Richter und hat auch Rechtspfleger ausgebildet. Unter anderem hat er da auch Zeugnisse erstellen müssen, in denen immer dieselben Textbausteine, abhängig von der Prüfungsnote, zum Einsatz kamen. Dies erledigte er irgendwann auf einem C128 mit PROTEXT. Mich hat da natürlich zunächst eher der ebenfalls eingebaute C64 interessiert.

Für Summer Games und Winter Games gingen mehrere Joysticks drauf. Letztendlich entwickelte ich aber auch ein Interesse für BASIC, und in der Schule gab es dann einen Informatikkurs, in dem mit Pascal gearbeitet worden ist. Programmieren machte mir Spaß, ich habe auch ein paarmal am Bundeswettbewerb für Informatik teilgenommen und so lag es nahe, das Hobby irgendwann in welcher Form auch immer zum Beruf zu machen.

Ich habe bereits nach der Schule als Entwickler gearbeitet; Informatik hatte ich dann später parallel studiert, weil ich gehört hatte, man müsse da nicht programmieren. Hat zu großen Teilen sogar gestimmt.

Golo Roden: Zusammen mit Tobias Hauser hast Du die Hauser & Wenz Partnerschaftsgesellschaft gegründet. Wie kam es dazu?

Christian Wenz: Tobias kenne ich aus der Schule. Bereits kurz danach haben wir mit einem dritten unserer Altersstufe eine kleine Webagentur gegründet und dort doch recht beachtliche Anwendungen auf die Beine gestellt. Währenddessen habe ich auch bei einer größeren Münchner Agentur angeheuert und habe dort ein paar Jahre lang an ziemlich großen Projekten gearbeitet und hatte am Ende richtig viel Verantwortung.

Parallel habe ich angefangen, erste Bücher und Artikel zu schreiben, und später auch Tobias mit diesem „Virus“ infiziert. Als ich 2002 einmal eine Pause vom aufreibenden Agenturalltag einlegen wollte und wir beide in Hinblick auf die Wissensvermittlung eh sehr erfolgreich waren, haben wir beschlossen, unsere Zusammenarbeit auch firmentechnisch auf eine solide Basis zu stellen.

Letztendlich sind wir aber 2005 wieder zurück auf die Projektschiene gewechselt und haben zusammen mit drei weiteren Partnern die Arrabiata Solutions GmbH gegründet. Unsere Themen sind das klassische Webagenturgeschäft, vom Design über die Implementierung bis hin zur Wartung, aber auch zahlreiche Beratungstätigkeiten, beispielsweise im RIA- oder SEO-Umfeld oder bei der Technologiewahl und Onlinestrategie.

Zu unseren Kunden zählen international ausgerichtete Mittelständler und Großkonzerne, die Aufgaben sind also stets sehr spannend. Meine aktuellen Aufgabengebiete sind Performanceoptimierung von Websites, LOB-Anwendungen im Browser, Web Application Security und mobile Anwendungen.

Golo Roden: Ein wesentliches Merkmal der IT ist, dass man beständig mit neuen Entwicklungen konfrontriert wird, und diesen folgen muss. Woher nimmst Du die Motivation, Dich quasi jeden Tag weiterzubilden und mit Neuem zu beschäftigen?

Christian Wenz: Ich arbeite gerne als Wissensvermittler. Dazu gehört es eben auch, immer über aktuelle Entwicklungen informiert zu sein um am Ball zu bleiben. Allerdings denke ich, dass ich ein eher mittelmäßiger Autodidakt bin. Ich muss mich also mit einer Sache schon beschäftigen, um später qualifiziert beurteilen zu können, ob sie mich oder meine Kunden weiter bringt oder nicht.

Das treibt mich natürlich immer wieder an, neues Wissen zu erarbeiten und nicht nur oberflächlich aufzusaugen. Außerdem sehe ich immer wieder, dass ich auch von den Erfahrungen der Vergangenheit profitieren kann.

Der Ajax-Boom ab 2005 kam mir insofern sehr gelegen, weil ich fast zehn Jahre vorher angefangen hatte, JavaScript einzusetzen. Bei der aktuellen Debatte rund um Silverlight finde ich unsere Projekterfahrung mit Flash sehr wertvoll, weil einige Ansätze und Einschränkungen freilich sehr ähnlich sind.

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?

Christian Wenz: Wichtig sind zum einen Neugier und auch der Wille, sich mit der Thematik zu beschäftigen. Gerade Programmiersprachen vergeben nur wenige Fehler, das Frustpotenzial ist hoch. Etwas komisch klingt vielleicht noch, dass man ein Faible für Mathematik und Logik haben sollte. Denn da verhält es sich ähnlich wie in der Programmierung: es gibt klare Regeln und abstraktes Denken ist gefordert.

Das soll natürlich nicht heißen, dass man für die Arbeit als Softwareentwickler den Beweis für den großen Fermatschen Satz nachvollziehen und täglich zwanzig Sudokus im Kopf lösen können sollte, das trifft auch beides auf mich nicht zu – aber wenn in der Schule der Dreisatz schon eine gewisse Hürde darstellte, hat man es auch als Entwickler schwer. Heutzutage ist es – allein schon dank der verfügbaren Dokumentation und Google – sehr einfach, ein irgendwie funktionierendes Programm zu schreiben. Im beruflichen Umfeld spielt die Softwarequalität jedoch eine große Rolle. Und dazu braucht man – meiner Meinung nach – ein „Händchen“ für Mathe & Co.

Golo Roden: Welche Rolle spielt Engagement in der Community für Anfänger – so wohl aus Deiner wie auch aus deren Sicht?

Christian Wenz: Ich denke, das hängt von der Art der Community ab. Beispiel Usergroups: Ich schaffe es ja leider viel zu selten zu den Usergroups denen ich angehöre, im .NET-Umfeld beispielsweise MunichDot.NET, aber die Diskussionen dort sind immer sehr spannend und vielschichtig – fast noch besser als auf Konferenzen. Ein blutiger Anfänger würde sich da allerdings eher schwer tun.

Geht es um Community im Sinne von Blogs, Websites, Wikis und Foren, dann sind diese natürlich heutzutage unverzichtbar. Wobei ich persönlich ganz ehrlich gestehen muss, dass ich zum Beispiel keine Blogreader-Software mehr verwende. Es gibt zu viele interessante Blogs, und ich habe zu wenig Zeit. Um nicht ein zu langes Backlog zu bekommen, besuche ich eine Reihe von Blogs unregelmäßig, aber dennoch häufig; für wichtige andere Neuerungen und Informationen verlasse ich mich auf Suchmaschinen und Twitter.

Wenn ich mich zurück erinnere, wie ich damals mit der Entwicklung angefangen habe und welche Recherche- und Hilfemöglichkeiten es damals gab, so bin ich schon sehr froh, was heute alles zur Verfügung steht. Da ich sehr viel aus der Community ziehe, halte ich es für selbstverständlich, ebenfalls beizutragen. Ich veröffentliche ziemlich viel, spreche sehr gerne vor Usergroups, auch über das INETA Speaker’s Bureau, organisiere und plane technische Veranstaltungen mit und trete natürlich vor allem auf Konferenzen auf. Das Schöne an funktionierenden Communitys: Nur wenige möchten nur bedienen; die meisten tragen nach ihren Möglichkeiten bei. So ist am Ende jeder etwas schlauer als vorher.

Golo Roden: Bei der Vielzahl an Technologien, die es heute gibt: Womit sollte ein Anfänger heutzutage anzufangen?

Christian Wenz: Zum Glück gibt es heutzutage für fast jede Sprache Möglichkeiten, kostenlos mit (fast) professionellen Mitteln zu entwickeln, seien es Microsofts Express Editions oder Eclipse samt seiner verschiedensten Plugins. Ich würde zunächst die Grundlagen der Programmierung lernen, am besten mit besonders einsteigerfreundlichen Sprachen, beispielsweise (Visual) Basic oder auch PHP.

Sobald die Grundlagen sitzen, würde ich mich recht schnell entscheiden, an welcher Art von Anwendungen ich im nächsten halben Jahr experimentieren will: Web? Fat Client? Mobile?

Dahingehend würde ich dann eine Sprache und/oder Technologie aussuchen. Ich denke, die „klassische“ Meinung ist, dass man mit einer „Lehrsprache“ wie etwa Pascal beginnen, alle wichtigen Grundlagen lernen und dann das Wissen auf jede beliebige andere Technologie übertragen sollte. Ich bin ja einen ähnlichen Weg gegangen.

Aber ich denke, es motiviert mehr, wenn man sein sich aufbauendes Wissen gleich in praktische Ergebnisse umsetzen kann. Übrigens konnte ich das damals sogar, denn Pascal war „in“ und Anwendungen eh meist nur Konsolenapplikationen.

Golo Roden: Neben .NET beschäftigst Du Dich auch mit PHP. Wo siehst Du die Stärken und Schwächen der jeweiligen Plattformen?

Christian Wenz: Typische Berater-Antwort: „Hängt davon ab“. Prinzipiell ist PHP natürlich von der Marktverbreitung her aktuell die unangefochtene Nummer 1. Beispiele wie Yahoo! und Facebook zeigen, dass sich Enterprise und PHP keineswegs ausschließen.

PHP ist sehr funktionsreich, performant, einsteigerfreundlich, wird durch eine extrem große Community unterstützt – und ist leider historisch gewachsen. ASP.NET ist etwa fünf Jahre jünger und mir gefällt der Steuerelementsansatz, der PHP im Wesentlichen fehlt. Allerdings gibt es auch einige webuntypische Einschränkungen und Eigenheiten, die gerade im klassischen Agenturalltag zu Stirnrunzeln führen.

Wir haben in beiden Technologien große Projekte erfolgreich umgesetzt. Mehr „Massengeschäft“ machen wir allerdings im PHP-Umfeld, insbesondere da es dort mehrere vernünftige freie Content-Management-Systeme gibt. Die Entscheidung welche Technologie es im Projekt letztendlich wird, hängt immer von mehreren Faktoren ab, unter anderem der bisherigen Systemstruktur des Kunden, dem Skillset der Entwickler, falls es nicht die eigenen sind, politisch motivierten Präferenzen und so weiter.

Golo Roden: Welchen Rat würdest Du einem Anfänger abschließend mit auf den Weg geben?

Christian Wenz: Neugierig sein. Kleine Schritte machen. Sich nicht von didaktisch miesem Lernmaterial und von zu anspruchsvollen Koryphäen frustrieren lassen – viele Veröffentlichungen haben ungeplant arg hohe Voraussetzungen. Und vielleicht nochmal das mit dem Dreisatz üben.

.NET Professionals im Profil: Ralf Westphal

Freitag, 15. Januar 2010, 09:37 Uhr
Permalink | Kommentare (0) | Kommentare als RSSRSS

Ralf Westphal ist freier Softwaretechnologievermittler, Mitgründer des Professional Developer College und Mitinitiator von Clean Code Developer. Er war von 1998 bis 2005 einer der unabhängigen Microsoft Regional Directors für Deutschland und wurde von Microsoft als MVP „Visual Developer Solution Architect“ ausgezeichnet. Sie erreichen ihn über seine Webseite.

Golo Roden: Ralf, wie bist Du zur Softwareentwicklung gekommen? Wie und wann hast Du angefangen?

Ralf Westphal: Wenn ich mich recht erinnere, habe ich 1980 mit dem Programmieren angefangen. Oder war es schon 1979? Jedenfalls stand am Anfang ein Büchlein mit einer Einführung in Pascal. Ganz ohne Computer habe ich das in einem Urlaub durchgearbeitet. Da ging es vor allem um Algorithmen: Sortieren, die Türme von Hanoi und solche Sachen. Danach dann die offizielle Pascal Sprachdefinition. Die hat mich mit der EBNF konfrontiert. Nach dem Urlaub begann der Informatikunterricht in der Schule. Für den hatte ich mich fit gemacht. Unterrichtssprache Pascal. Auf einer Dietz-Anlage mit Bernsteinterminals. Der Lehrer war durchaus bemüht und offen für unsere Ideen. War eine lustige Zeit.

Irgendwie in der Zeit habe ich mich dann auch um einen Computer zu Hause bemüht. Am Anfang war das ein Tandy TRS-80. Darauf habe ich Z-80-Assembler programmiert, zum Beispiel einen Texteditor. Danach kam ein Apple II mit CP/M-Betriebssystem, weil ich weiter Z-80-Assembler programmieren können wollte. Mit Apple Basic habe ich nur wenig gemacht – aber doch zumindest einen ersten Job realisiert. Und meinen ersten Artikel für die damalige Computer Persönlich-Zeitschrift von Markt + Technik habe ich auch über ein Programm in Apple Basic geschrieben. Da ging es irgendwie um die Komprimierung von Programmcode, weil der Hauptspeicher so begrenzt war. Der nächste Artikel hat sich auf der Basis von UCSD Pascal mit 3D-Grafiken beschäftigt.

Als ich 1983 zur Bundeswehr kam, habe ich den Apple mitgenommen und einige Verwaltungsaufgaben damit auf dem Geschäftszimmer erledigt. Ich wurde dort eingesetzt, weil ich durch die Computerarbeit flüssig mit einer Schreibmaschine beziehungsweise einer Tastatur umgehen konnte.

Und weiter? Hm ... in der Uni haben wir eher auf größeren Anlagen gearbeitet. Da erinnere ich mich an ein Seminar in Assembler. Ausbildungssprache Pascal. Gelernt habe ich dort nicht mehr viel. Privat ging es mit Turbo Pascal weiter. Das hatte ich seit meiner Schulzeit, fand es supercool und habe sogar ein Lehrbuch für die Schule dazu geschrieben. Leider ist das nie zum Einsatz gekommen.

Später bin ich auf C und Modula mit CP/M umgestiegen. Das war leading edge technology damals. Beides war von der Firma Lightspeed und konnte sogar zusammengelinkt werden.

„Auf der Arbeit“ bin ich eher mit Unix konfrontiert worden. Zum Beispiel habe ich für ein Forschungsinstitut einen Ganzseiteneditor gebastelt, mit dem man vernünftig – so wie damals mit WordPerfect – Prolog-Code schreiben konnte. VI war den Forschern und auch mir zu umständlich.

Weiter ging es mit 4GL-Sprachen und Smalltalk. Und schließlich ab 1990 C++ für ein bis zwei Jahre. Ab Visual Basic 1.0 dann Visual Basic bis zum Abwinken.

Golo Roden: Du hast Dich auf die .NET-Plattform spezialisiert. Warum gerade .NET und nicht beispielsweise JEE (Java Enterprise Edition)?

Ralf Westphal: Java hat mich 1995 interessiert. „Java in a Nutshell“ oder so hatte ich schon vor dessen Erscheinen bestellt. Ich fand die Sprache auch cool – sie bot damals wegen ihres Fokus auf die Webentwicklung nichts für die Desktop-Branchensoftwareentwicklung. Von 1987 bis 1998 habe ich ja mit einem Partner ein Branchensoftware-Schmiede gehabt – er macht das auch heute noch –, bei der wir MS-DOS- und später Windows-Anwendern etwas bieten mussten. Das Web war ja nur für mutige Early Adopters interessant. Nach einer 4GL-Lösung, die wir ab 1987 entwickelt hatten – und die auch heute noch bei einigen Anwendern im Einsatz ist! – hatten wir auf Visual Basic gesetzt. C++ war uns zu umständlich, Delphi noch nicht ausgereift genug. Also Visual Basic von 1.0 bis 6.0. Außerdem kam dann 1996 / 1997 oder so ASP um die Ecke, so dass wir im Web auch mit unseren Visual Basic-Kenntnissen arbeiten konnten. Java bot uns angesichts dessen zuwenig. Damit war die Weiche gestellt. Als ich 2000 .NET auf der PDC gesehen hatte, wusste ich, dass das der natürlich weitere Weg sein würde.

Golo Roden: Ein wesentliches Merkmal der IT ist, dass man beständig mit neuen Entwicklungen konfrontriert wird, und diesen folgen muss. Woher nimmst Du die Motivation, Dich quasi jeden Tag weiterzubilden und mit Neuem zu beschäftigen?

Ralf Westphal: Das ist mein Job. Dieselbe Antwort gibt dir ja auch ein Bäcker, wenn du ihn nach der Motivation fragst, die ihn jeden Tag Brötchen backen lässt. Im Vergleich zum Entwickler in einem Projekt empfinde ich also keine Spannung zwischen „Arbeit“ und „Fortbildung“. Meine Arbeit ist Fortbildung. Der Zweck: Anderen mit meinem Wissen zu helfen. Ich bin kein „Programmierer“, sondern eher „Softwaretechnologievermittler“. „Trainer“ wäre zu eng gefasst, „Lehrer“ zu institutionell, „Berater“ auch zu eng. Also „Technologievermittler“ und „One Man Think Tank“. Diese Bezeichnung habe ich nach einigem Grübeln gewählt für meine „Firma“ gewählt, weil sie ausdrückt, was und wie ich arbeite: In der Form bin ich Freiberufler, arbeite also allein. Zumindest habe ich solch einen Hut, den ich aufsetze. Inzwischen gibt es noch andere wie „Mitgründer des Professional Developer College“ oder „Mitinitiator von Clean Code Developer“. Wenn ich diese Hüte aufsetze, arbeite ich nicht allein, sondern mit Partnern. Ursprünglich war ich aber eben reiner „Einzelkämpfer“ seit 1998, also „One Man“ Show.

Der „Think Tank“ beschreibt eher den Inhalt meiner Arbeit. Mein Job ist das Nachdenken, das Tüfteln, Ausprobieren. Ich möchte es fast schon als Forschung bezeichnen. Meine Ergebnisse sind weniger Code, als vielmehr Konzepte, Ansätze. Damit erlaube ich mir etwas, das sich viele Unternehmen und Teams nicht erlauben. Während Kollegen eher „normale“ Beratung machen, bei der sie sich auf Technologien konzentrieren, deren Einsatz begleiten oder sie gar für ihre Kunden einsetzen, bewege ich mich oft eine Ebene darüber, das heißt im Konzeptionellen.

Natürlich programmiere ich auch. Jeden Tag. Ich habe also keine Angst, abzuheben. Doch wenn schon die Firmen ihren Kopf nicht aus dem Sand der Projekte heben können, dann will zumindest ich das tun. Das macht mir Spaß, das kann ich – so glaube ich – ganz gut. So sehe ich mich als Ergänzung zu Teams, die sie bei Bedarf „zuschalten können“. Die externe Forschungsabteilung, der Blick von außen, der Spiegel, der Fragensteller, der Impulsgeber.

Damit ich das alles sein kann, muss ich halt immer etwas Neues auf der Pfanne haben, lesen und nachdenken. Früher hatte ich da mal Angst, dass ich da an eine inhaltliche oder motivationale Grenze stoßen könnte. Bisher spüre ich davon nichts. Vor 18 Monaten hatte ich noch keine Ahnung, dass ich heute mit Clean Code Developer unterwegs sein würde. Was in 18 Monaten ist, weiß ich auch nicht. Ich bin aber gewiss, da wird mich etwas Neues, Spannendes beschäftigen, das ich dann in die Community tragen kann.

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?

Ralf Westphal: Welche Art Anfänger meinst du? Einen Schüler, der noch nicht so recht weiß, was er mal werden will? Oder jemanden, der schon in eine Informatikausbildung eingestiegen ist? Oder jemanden, der gerade damit fertig geworden ist?

So ganz allgemein und grundlegend würde ich mal sagen, dass jemand, der sich mit Softwareentwicklung beschäftigen will, Spaß am Nachdenken haben sollte. Das Denken, Nachdenken, Selbstdenken steht de facto leider nicht wirklich hoch im Kurs in unserer Gesellschaft. Zwar sollen Schüler das Denken lernen – dafür ist Schule ja da –, doch passiert das nicht verlässlich genug, meine ich. Solange noch Talentshows und Sport solchen Raum in den Medien einnehmen, wie sie es tun. Solange sich die Nation so unverhältnismäßig über etwas wie die Schweinegrippe echauffieren kann. Solange es gesellschaftsfähig ist, mit technischer, geschichtlicher, philosophischer Unbildung zu kokettieren, solange steht Nachdenken einfach nicht hoch im Kurs.

Das soll jetzt natürlich nicht bedeuten, dass die Welt mehr freiberufliche Nachdenker wie mich braucht. Ich meine nur, dass in der Softwareentwicklung, deren Materie das Virtuelle und Abstrakte ist, Nachdenken ganz wichtig und daher Spaß am Nachdenken Voraussetzung ist. Software entsteht zunächst im Kopf durch rigoroses, systematisches und kreatives Denken mit einer gehörigen Portion Reflexion und Skepsis.

Zum Spaß am Denken sollte dann noch Spaß am grundsätzlich Technischen kommen. Auch da steht es leider in der Grundausbildung schlecht. Technische Unbildung grassiert. Nicht nur ist den meisten schon der Dreisatz ein Buch mit sieben Siegeln, auch die mechanische oder elektronische Funktionsweise von Maschinen interessiert viele nicht. Was unsere moderne Welt zusammenhält – Technologie – wird nicht systematisch als interessant vermittelt. Fernseher und Computer und Handy benutzen alle gern – doch die nächsten Generationen selbst mitgestalten, dazu haben sie keine rechte Lust. Anders kann ich mir die sinkenden Studentenzahlen bei der Informatik nicht erklären.

Zum Spaß am Denken und an Technik im Allgemeinen – Grundfrage: Wie funktioniert das? – sollten noch Fertigkeiten der Visualisierung treten. Software entsteht im Kopf und muss dann kommuniziert werden. Nicht unbedingt in Form von Code, sondern zuerst einmal mit Bildern. Auch Nachdenken profitiert von Bildern. Wer ein gutes Vorstellungsvermögen hat – vor allem ein bildliches – und seine Vorstellungen dann auch noch anderen vermitteln kann, der hat einen Vorsprung. Das habe ich gerade gestern beim Unterricht in der School of .NET gesehen. Die Teilnehmer konnten sich eine Lösung für eine Übungsaufgabe so schwer vorstellen; ihnen fehlten Bilder für ein Modell. Deshalb gab es dann Probleme bei der Codierung.

Noch allgemeiner als Fertigkeiten zur Visualisierung sind solche zur Kommunikation schlechthin. Software ist kein Business für „lonesome rangers“. Der einsame Hacker ist out. In sind Entwickler, die fachliche und methodische Kompetenzen, die sie in einer Ausbildung erwerben, dank Softskills in ein Team einbringen können. Wissen und Ideen nicht nur visuell vermitteln können, sondern auch verbal, das ist wichtig. Zuhören können, emotionale Kompetenz, Selbstdisziplin, moderieren, ... das sind Fertigkeiten, die wir brauchen. Software entsteht im Team.

Die Motivation für eine Karriere in der Softwareentwicklung kommt also für mich aus dem Spaß am Denken, am Abstrakten und an Technik. Die Fähigkeit, sich dann auch erfolgreich einzubringen, machen Softskills aus. Fachkompetenz vermittelt – hoffentlich – eine Ausbildung.

Golo Roden: Gemeinsam mit Stefan Lieser hast Du die Initiative „Clean Code Developer“ ins Leben gerufen. Welche Bedeutung misst Du diesem Thema bereits für Anfänger bei?

Ralf Westphal: Die Bedeutung von Clean Code Developer für Anfänger ist nicht zu überschätzen! Hohe innere Qualität ist keine Sache für fortgeschrittene Entwickler. Sie muss vielmehr vom ersten Tag der Ausbildung an Thema sein. Das ist auch der Grund, warum mich so viele Lehrpläne von Berufsschulen und Universitäten traurig machen. Sie vermitteln einzelne technische Fertigkeiten – aber kein qualitätsorientiertes Bild von der Softwareentwicklung. Beispiel Berufsschule, Ausbildung zum Fachinformatiker Anwendungsentwicklung (FIAE): Nur ein Achtel des Unterrichts sind überhaupt der Softwareentwicklung gewidmet, der Rest beschäftigt sich mit Deutsch, Religion und anderen Themen. Von diesem Achtel beschäftigen sich in einem Semester vielleicht fünf Prozent mit dem Thema Testen. Das sind weniger als ein Prozent in einem Jahr und auf drei Jahre gerechnet vielleicht 0,5 Prozenz, wenn es hoch kommt. Was wollen wir denn da erwarten von ausgebildeten FIAE, wenn sie während oder nach der Ausbildung im Projekt sitzen? Fangen die dann plötzlich mit TDD an?

Für mich liegt die Ausbildung solange im Argen, wie das Thema Testen nicht von der ersten Stunde an konsequent während des ganzen Unterrichts präsent ist. Soviel zum Thema Korrektheit. Dasselbe gilt für die anderen CCD-Werte wie Evolvierbarkeit, Produktionseffizienz und Reflexion.

Vom ersten Tag an. Die ganze Ausbildung durch. Immer. Nur wer diese Werte konsequent bewusst hält, kann am Ende erwarten, sie auch unter Projektdruck nicht zu verraten.

Klar, man kann auch später noch dazu lernen. Aber dann ist es schwieriger. Dann sind eingefahrene Gewohnheiten zu entlernen. Das macht große Mühe – und die Codebasis ist schon ein Brownfield. Warum also nicht mit CCD bei den Anfängern beginnen?

Golo Roden: Bei der Vielzahl an Technologien, die es heute gibt: Womit sollte ein Anfänger heutzutage anzufangen?

Ralf Westphal: Keine Ahnung. Es gibt keinen richtigen Einstieg in Technologien – oder gar Produkte. Die unterliegen ja auch Moden. Selbst wer heute mit PHP beginnt, kann einen guten Job bekommen, glaube ich. Insofern ist die Frage, ob jemand dazu fähig ist, sich selbst und die Marktentwicklung zu reflektieren. Wer das kann, kann dann nämlich auch reagieren. Der fängt mit PHP an und sattelt später um auf Erlang oder so.

Was nutzbringend ist, hängt vom Umfeld ab. Für einen Studenten wäre es vielleicht nicht sehr nützlich, wenn er sich als einziger in seinem Umfeld mit Axum beschäftigt. Dann gehen ihm soziale Kontakte und dadurch Möglichkeiten zum Austausch verloren. Die sind nicht zu verachten.

Ich denke, jeder ist gut beraten, seine Neigungen zu erspüren. Mag man es lieber visuell oder lieber persistent? Mag man es lieber enterprisegroß oder branchensoftwareklein? Das lässt sich aber womöglich erst mit der Praxis erfahren. Als Anfänger muss man deshalb wahrscheinlich einfach mit irgendetwas anfangen.

Technologien sind auch nicht so wichtig. Wichtiger sind Paradigmen und Konzepte. Die Frage sollte also lauten, mit welchen der Paradigmen sollte sich ein Anfänger auseinandersetzen. Da liegt die Objektorientierung nahe. Aber ich füge gleich einmal die Komponentenorientierung hinzu. Da liegt Agilität nahe. Da liegt die asynchrone Programmierung nahe. Da liegen Algorithmen und Datenstrukturen nahe. Ja, auch und gerade die. Da liegen Kommunikationskonzepte wie Nachrichtenorientierung und ereignisgesteuerte Architekturen (EDA) nahe.

Aber ob man sich damit nun auf der Java- oder .NET- oder Ruby-Plattform beschäftigt, ist recht egal. Und ob es bei .NET nun NServiceBus oder MassTransit für EDA ist, ob O/R-Mapping mit OpenAccess oder NHibernate gelernt wird, ... das ist egal.

Die wesentliche Invariante ist: Alles ändert sich. Also nicht anhaften. Keine Paradigma, kein Konzept und schon gar kein Produkt auf einen Thron heben. Denn wo gestern ASP oder Java-Applets die Bringer waren, da ist heute Silverlight der Hit. Alles fließt – wusste schon Heraklit, der unsere Branche nicht kennen konnte-

Golo Roden: Welchen Rat würdest Du einem Anfänger abschließend mit auf den Weg geben?

Ralf Westphal: Widerstehe dem oft ignoranten Druck im Projekt. Da wird auf die Tube gedrückt, da wird keine Zeit für Fortbildung gegeben, da wird kein Wert auf Evolvierbarkeit gelegt. Vor 150 Jahren waren Arbeitsbedingungen in Fabriken mit 16 Stunden Arbeitszeit bei Dreck, Lärm und kärglicher Bezahlung unmenschlich. Heute ist es natürlich viel besser – und auf der anderen Seite immer noch schlimm. Anders schlimm, subtiler schlimm.

Heute stimmt zwar die Bezahlung und so ganz grundsätzlich meist auch die Arbeitszeit. Aber vieles andere stimmt immer noch nicht oder nicht mehr. Menschen wollen es bei der Arbeit nicht nur warm haben und Geld heimtragen, sondern auch Spaß haben und sich einbringen. Dazu sind viele Projekte nicht angetan. Leider.

So mancher Chef schaut – aus welchem Grund auch immer – nur darauf, dass möglichst schnell irgendwie der Kunde befriedigt wird. Das ist kurzfristiges Denken, bei dem Kreativität und Motivation und Qualität über kurz oder lang auf der Strecke bleiben.

Deshalb rate ich, hier sehr sensibel zu sein. Fortbildung ist nicht nur Sache des Mitarbeiters. Innere Softwarequalität ergibt sich nicht von selbst. Motivation ist nicht egal. Wo Projekte darauf keinen Wert legen, ist daher Gefahr im Verzug. Gefahr der baldigen Unzufriedenheit, weil die technische Schuldenlast den Spaß an der Arbeit vergällt. Wer im Brownfield-Morast steckt und auch noch unter Druck arbeitet, treibt auf den Burnout zu.

Aber nicht nur Unlust droht, sondern schlicht schlechtere Chancen auf dem Arbeitsmarkt. Wer keine Gelegenheit zur Fortbildung bekommen hat und nach zehn Stunden am Arbeitsplatz nicht mehr selbst die Energie aufbringen konnte, der fällt zurück. In fünf Jahren hat er den Anschluss verpasst. Heute zum Beispiel noch Visual Basic 6.0-Projekte zu warten, ohne aktiv an .NET-Projekten zu arbeiten, ist unverantwortlich, würde ich sagen. Da wird nicht nur die Visual Basic 6.0-Altlast fortgesetzt, sondern auch eine Entwickleraltlast produziert.

Letztlich ist das jedoch eine Entscheidung, die jeder Entwickler selbst treffen muss. Welche Arbeitsbedingungen will ich zu welchem Preis aushalten? Also: Augen offen halten. Was tut sich in der Softwarewelt? Wenn die Differenz zur eigenen Welt zu groß wird – das kann schnell geschehen –, dann handeln. Insofern sollten Softwareentwickler auch einiges an Veränderungsfreude mitbringen.

.NET Professionals im Profil: herbivore

Dienstag, 15. Dezember 2009, 09:37 Uhr
Permalink | Kommentare (2) | Kommentare als RSSRSS

herbivore arbeitet als freiberuflicher Informatiker und ist Administrator von myCSharp.de. Nach ersten Schritten auf programmierbaren Taschenrechnern bekam er über das Informatikstudium Zugang zur strukturierten Programmierung. Inzwischen entwickelt er schwerpunktmäßig mit C++ und C#. Sie erreichen ihn über myCSharp.de.

Golo Roden: herbivore [tatsächlicher Name ist der Redaktion bekannt], wie bist Du zur Softwareentwicklung gekommen? Wie und wann hast Du angefangen?

herbivore: Bei mir hat alles mit einem programmierbaren Taschenrechner angefangen. Andere für den Privathaushalt erschwingliche Computer gab es zu diesem Zeitpunkt noch nicht. Ich hatte mir den Taschenrechner aber gar nicht gewünscht, weil man ihn programmieren konnte, sondern weil er zehn Speicherregister hatte. Meine Berechnungen damals hatten immer viele Nebenrechnungen, und ich kam mit dem einen Speicherregister meines alten Taschenrechners nicht mehr hin.

Der neue Taschenrechner war eine Offenbarung für mich. Ich stellte dann schnell fest, dass er 49 Programmschritte speichern konnte. Allerdings gingen diese nach dem Ausschalten verloren, so dass die Programme deshalb jedes Mal neu eingegeben werden mussten. Eine andere Speichermöglichkeit als einen Stift und ein Blatt Papier gab es nicht. Jedenfalls war die erste Programmiersprache, die ich lernte, die Programmiersprache dieses Taschenrechners.

Mein erster „echter“ Rechner – nur ein oder zwei Jahre später – hatte 32KB Hauptspeicher und man konnte einen handelsüblichen Kassettenrekorder als Hintergrundspeicher anschließen. 32KB Hauptspeicher waren damals unglaublich viel. Das Basismodell wurde mit 8KB Speicher ausgeliefert. Eine ausführliche Beschreibung des Hardware-Aspekts meiner ersten Schritte findet sich unter Eure ersten Rechner / Schritte mit Rechnern.

Auf diesem Rechner konnte man mit einem sehr einfachen Basic programmieren. Das habe ich mir selbst mittels des beigelegten Handbuchs beigebracht. Im Nachhinein bin ich glücklich, dass sich der dadurch verursachte Schaden in Grenzen gehalten hat – denn strukturierte Programmierung war das nicht. Ich wusste zu diesem Zeitpunkt aber noch nicht einmal, dass es so etwas überhaupt gibt.

Das lernte ich erst im Informatikstudium, das ich zwei Jahre später begonnen habe. Wenn man so will, war das Studium für mich der eigentliche Beginn dessen, was ich als Softwareentwicklung bezeichnen würde. Für mich standen ab dieser Zeit gute und saubere Lösungen im Vordergrund. Dass ein Programm einfach nur das machte, was es sollte, war mir nicht mehr genug.

Golo Roden: Du bist bei myCSharp.de der mit Abstand aktivste Benutzer, und zugleich jemand, der unglaublich kompetent ist. Wie bist Du zu diesem breitgefächerten Wissen und zu myCSharp.de im Speziellen gekommen?

herbivore: Mit dem Studium habe ich mein Hobby zum Beruf gemacht. Und jeder weiß, wieviel Energie man in eine Sache stecken kann, die einen wirklich interessiert und einem wirklich Spaß macht. Darum habe ich dankbar alle Möglichkeiten angenommen, mein Wissen zu erweitern. Mich haben viele unterschiedliche Themen interessiert, also habe ich mich auch mit sehr vielen verschiedenen Themen beschäftigt.

Das Lernen war bei mir immer ein Dreiklang aus Aufnehmen, Ausprobieren und Weitergeben. Natürlich muss man zu einem Thema erst einmal etwas lesen oder hören, um überhaupt eine Basis zu haben. Aber das allein genügt nicht – man muss das Gelernte auch ausprobieren und anwenden. Ich habe in meinem Leben bestimmt schon einige tausend Mini-Testprogramme geschrieben, um irgendwelche Zusammenhänge untersuchen zu können. Und zu guter Letzt trägt es zur Vertiefung und Verbreiterung des Wissen entscheidend bei, das Gelernte anderen zu erklären.

Um Wissen weiterzugeben, muss man es so formulieren, dass andere es verstehen. Dabei merkt man dann auch schnell, wenn einem selbst etwas noch nicht ganz klar ist, und man kann die Lücke schließen. Außerdem profitiert man von den Nachfragen, die andere stellen, weil man dadurch auf neue Aspekte aufmerksam wird.

Das ist auch der Grund, warum ich auf myCSharp.de lieber Fragen beantworte als Fragen zu stellen. Man lernt einfach mehr dadurch.

Dennoch bin ich ganz profan durch eine eigene Frage zu myCSharp.de gekommen, auf die ich eine gute Antwort gesucht und bekommen habe. Das hat mich motiviert, mich zu revanchieren, und auch ein paar Fragen zu beantworten. Auf myCSharp.de habe ich in Was bewegt euch zum Helfen im Forum? beschrieben, was mich zum Helfen motiviert.

Dabei war es inbesondere zu Anfang so, dass ich viele Antworten, die ich gegeben habe, selbst nicht kannte, bevor ich mich mit der Frage beschäftigt hatte. Hier kommen dann wieder die Mini-Testprogramme, aber auch das Stöbern und Nachschlagen in der Dokumentation und eigenes Nachdenken über die Frage ins Spiel.

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?

herbivore: Die Motivation kommt aus der Einsicht in die Notwendigkeit. Wenn man nichts Neues lernt, fällt man zurück. myCSharp.de ist mein Weg, in dieser Hinsicht auf dem Laufenden zu bleiben. myCSharp.de macht mir zum Glück nach all der Zeit immer noch Spaß und ich bin täglich dort aktiv. Es ist ja nicht so wichtig zu wissen, dass es eine neue Entwicklung gibt, denn es gibt viele neue Entwicklungen und die meisten verschwinden scheller als sie gekommen sind – wenn aber wirklich etwas beginnt, sich durchzusetzen, häufen sich auf myCSharp.de die Fragen dazu. Dann weiß ich, dass es Zeit ist, mir dieses Thema genauer anzuschauen.

Die kurze Halbwertszeit des Wissens sollte es übrigens jedem leicht machen, sein Wissen mit anderen zu teilen. Ich hatte nie die Befürchtung, dass ich meinen Wissensvorsprung dadurch verlieren könnte, dass ich mein Wissen mit anderen teile, weil ich genau wusste, dass immer wieder neues Wissen dazu kommt. Und das hat sich auch in der ganzen Zeit, in der ich mich mit Informatik beschäftige, bewahrheitet. Man sollte also nicht auf seinem Wissen hocken, bis es wertlos geworden ist, sondern sein Wissen vorher weitergeben.

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?

herbivore: Ein Anfänger sollte Eigeninitiative und Experimentierfreude mitbringen. Konkretes Wissen ist weniger wichtig. Man braucht eher die Fähigkeit, sich Wissen zu erwerben. Man sollte sich nicht scheuen, Bücher gründlich durchzuarbeiten. Durchlesen alleine hilft nicht. Auch und gerade wenn es in dem Buch keine vorgegebenen Arbeitsaufgaben gibt, sollte man versuchen, das Gelesene sofort umzusetzen und sei es in Form der schon genannten Mini-Testprogramme. Und das auch nicht erst am Ende des Kapitels, sondern möglichst Seite für Seite.

Natürlich kann man durch Ausprobieren nicht alles erschlagen. Gerade bei Architekturfragen zählen abstraktes Denken und vor allem Erfahrung, die man sich natürlich erst nach und nach erwerben kann.

Golo Roden: Bei der Vielzahl an Technologien, die es heute gibt: Womit sollte ein Anfänger heutzutage anzufangen?

herbivore: Man sollte nicht gleich zu hoch hinaus wollen und sich nicht zu schade sein, ganz zu Anfang auch wirklich einfache Programme zu schreiben. Lieber in kleinen Schritten alles gründlich verstehen, als zu versuchen, durch unreflektiertes Zusammenkopieren von Code ein möglichst eindrucksvolles Programm zu Stande zu bringen. Insofern sind einfache Kommandozeilenprogramme für mich auch heute noch das Mittel der Wahl für den Einstieg. Allerdings darf man dabei nicht zu sehr in die imperative Programmierung verfallen.

Es ist wichtig, sich von Anfang an mit der Objektorientierung zu beschäftigen. Das bedeutet unter anderem, den Code an Hand von Klassen und nicht an Hand von Funktionen zu strukturieren. Funktionen in dem Sinne gibt es gar nicht mehr. Bei aller Ähnlichkeit zu einem Funktionsaufruf ist ein Methodenaufruf konzeptuell etwas ganz anderes, nämlich das Senden einer Nachricht an ein Objekt. Die Implementierung einer Methode ist dementsprechend die Vorschrift, wie ein Objekt auf eine solche Nachricht reagiert.

Im Prinzip ist der Begriff „objektorientiertes Programm“ ein Widerspruch in sich. Eigentlich gibt es in einer objektorientierten Anwendung nur eine Menge von Objekten, die miteinander kommunizieren. Der Anstoß, was die Objekte machen, kommt nicht mehr von einem fest vorgegebenen Programm, sondern aus den Nachrichten, die der Benutzer durch seine Eingaben an die Objekte schickt. Das nennt sich dann ereignisgesteuerte Programmierung und ergänzt die objektorientierte Programmierung ideal.

Wenn man Interesse, Spaß, Ausdauer und Beharrlichkeit mitbringt, wüsste ich keinen Grund, warum man keinen Erfolg in der Software-Entwicklung haben sollte. Ich persönlich finde das Vorhandensein eines mathematischem Hintergrunds hilfreich, aber es gibt auch viele, die ohne diesen gute Informatiker geworden sind.

.NET Professionals im Profil: David Tielke

Sonntag, 15. November 2009, 09:37 Uhr
Permalink | Kommentare (1) | Kommentare als RSSRSS

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.

.NET Professionals im Profil: Peter Bucher

Donnerstag, 15. Oktober 2009, 09:37 Uhr
Permalink | Kommentare (2) | Kommentare als RSSRSS

Peter Bucher arbeitet als Webentwickler für die Firma cobra in Konstanz am Bodensee und und wurde von Microsoft bereits drei Mal in Folge als MVP für ASP und ASP.NET ausgezeichnet. Nachdem er zunächst mit ASP Classic gearbeitet hat, kam er über DirectX zu C# und .NET. Peter Bucher engagiert sich aktiv in der Community und leitet die .NET Usergroup Konstanz-Kreuzlingen. Sie erreichen ihn über seine Webseite und sein Blog.

Golo Roden: Peter, wie bist Du zur Softwareentwicklung gekommen? Wie und wann hast Du angefangen?

Peter Bucher: Ich habe ursprünglich eine Ausbildung im Bereich Hard- und Softwaresupport gemacht. Jedoch habe ich mich auch schon vor dieser Ausbildung sehr viel mit PCs, das heißt mit Hard- und Software, beschäftigt und wusste daher schon recht viel. Im Laufe der Ausbildung wurde es mir mit der Zeit langweilig, weil sich die Arbeiten und Probleme dort häufig wiederholten, ich schon vieles in diesem Bereich kannte und ich daher nicht mehr sehr viel dazulernen konnte.

Darum habe ich dann angefangen, mich mit Programmierung zu beschäftigen. Das Interessante an der Softwareentwicklung ist, dass sie ein stetiges Lernen von neuen Dingen erfordert, was mir zusagt.

Zuerst habe ich ein wenig mit Visual Basic 6 herumgespielt, danach dann mit VBScript, Classic ASP – einfach deshalb, weil die Webentwicklung beziehungsweise die Beschäftigung mit Design, HTML und CSS ohnehin schon länger ein Hobby war und mir die statischen Seiten nicht mehr genügten. Mein hauptsächliches Themengebiet war also VBScript beziehungsweise Classic ASP, zunächst nur privat, doch dann konnte ich einige kleinere Projekte für meine Lehrfirma erledigen.

Irgendwann stieß ich dann auf ASP.NET Zone, was damals noch ASP Forum hieß, und habe dort technische Fragen gestellt. Später, als ich dann schon mehr wusste, habe ich das wieder an die Community zurückgegeben, indem ich auch anderen Mitgliedern geholfen habe.

Im zweiten Ausbildungsjahr bekam ich zum ersten Mal die Auszeichnung zum MVP für ASP und ASP.NET. Zu dieser Zeit habe ich mich noch nicht all zu viel mit .NET beschäftigt, und meine ersten Gehversuche waren wenig erfolgreich, da es einfach zu viel neue Themen auf einmal waren. Jedoch wollte ich mich dennoch in .NET einarbeiten, da es interessant aussah und es zudem der nächste logische Schritt war.

Daher habe ich mich eines kleinen Tricks beholfen, um in .NET einzusteigen. Weil es mit ASP.NET nicht auf Anhieb geklappt hat, versuchte ich es statt dessen mit Windows Forms und DirectX, um in C# und VB.NET hineinzukommen. Genau genommen war ASP.NET deshalb zu groß für den Anfang, weil mit ASP.NET das ganze Paradigma von Windows Forms wie beispielsweise Events sowie die Statusverwaltung dazu kam, zusätzlich zum Lernen einer neuen Programmiersprache, OOP, ...

Dieses Vorgehen war eine gute Idee, denn damit konnte ich Erfahrungen mit Profilern sammeln, sowie lernen, was beachtet werden muss, damit eine Anwendung schnell und zügig ausgeführt wird. Quasi nebenbei habe ich mich dadurch sehr gut in C# und das .NET Framework eingearbeitet.

Nachdem ich einigermaßen sattelfest in C# und OOP sowie dem .NET Framework war, wagte ich mich wieder an den Umstieg auf ASP.NET, was dann auch wunderbar klappte. Seitdem arbeite ich hauptsächlich mit ASP.NET WebForms, ab und zu mit ASP.NET MVC und – wenn ich die Zeit dazu finde – ein bisschen mit der Manged DirectX API namens XNA.

Golo Roden: Du hast gesagt, dass .NET der nächste logische Schritt gewesen sei – welche Rolle nehmen in dieser Hinsicht Silverlight beziehungsweise RIA-Technologien im Allgemeinen für Dich ein?

Peter Bucher: In dem Moment, als ich mit .NET angefangen habe, überhaupt keine. Erst ein wenig später kam dann der AJAX-Hype, sowie der Flash- und Silverlight- beziehungsweise RIA-Hype. Ich war und bin immer noch konservativ eingestellt, wenn es um RIA-Technologien geht, dasselbe auch bei Javascript: Nur so viel wie nötig und so wenig wie möglich.

Diese Technologien setze ich deshalb nur dann ein, wenn es Sinn ergibt. Komplette Anwendungen mit Silverlight oder Flash machen meines Erachtens in den seltensten Fällen Sinn, vor allem nicht im Web. Dazu habe ich auch schon bei dem Streitgespräch Heißt die Zukunft RIA? von uns eine Meinung abgegeben.

Dabei muss jedoch immer unterschieden werden, ob eine Anwendung im Inter- oder im Intranet ausgeführt werden soll, wie auch, was die Anwendung letztlich leisten muss.

Im Allgemeinen kann ich sagen, das ich sicherlich etwas mit Silverlight entwickeln werde, sobald es erforderlich ist und ich mich in diese Technologie einarbeiten soll. Allerdings denke ich, dass wenn sich jemand bereits auf einen Bereich von .NET spezialisiert hat, sollte er sich möglichst nicht davon wegbewegen. Natürlich ist eine Sicht auf die anderen Technologien wichtig und hilfreich, aber sich ernsthaft einzuarbeiten halte ich nicht für rentabel bei einer schon sehr stark vorhandenen Spezialisierung.

Golo Roden: Wie siehst Du denn die Marktchancen für ASP.NET im Vergleich zu PHP oder Java? Warum sollte jemand, der heute anfängt, sich mit Webentwicklung zu beschäftigen, gerade auf ASP.NET setzen?

Peter Bucher: ASP.NET und Java gehören eher in den Enterprisemarkt, PHP hingegen findet sich meistens bei kleineren Firmen und vor allem bei Hobbyisten.

Das heißt jedoch überhaupt nicht, dass es nur dort hingehört oder nur dort zu finden ist. So sind auch größere Anwendungen bereits mit PHP umgesetzt worden, ebenso gibt es kleinere Anwendungen mit ASP.NET als verwendeter Technologie.

In den letzten Jahren wurde ASP.NET auch für Privatanwender sowie kleinere und mittlere Firmen interessanter. Es gibt sehr gute Angebote von Microsoft wie beispielsweise, dass die Express-Edition von Visual Studio Web Developer kostenlos abgegeben wird. Damit kann schon fast alles erreicht werden. Es fehlt lediglich die Möglichkeit, Addins zu nutzen, was vermutlich die größte Schwäche ist – jedoch hindert das letztlich niemanden daran, etwas in ASP.NET umzusetzen.

Darüber hinaus wurden die Hostinggebühren für Windows Server immer geringer, denn es gibt inzwischen spezielle Versionen von Windows Server, die für das Web optimiert beziehungsweise limitiert sind und daher günstiger zu haben sind. Für Startups oder kleinere Firmen unter zehn Mitarbeitern gibt es zudem seit neuestem sogar ein Programm namens WebsiteSpark, in dessen Rahmen Microsoft kostenlose Lizenzen für alle Entwicklungswerkzeuge, Grafikwerkzeuge sowie Serverbetriebssysteme für ganze 3 Jahre anbietet.

Neben diesen Gründen für ASP.NET gibt es jedoch auch noch einen technischen Aspekt, und dabei werde ich keine Nachteile der anderen Technologien aufzeigen, sondern nur Vorteile von ASP.NET sowie der .NET-Platform: Wer mit ASP.NET entwickelt, entwickelt letztlich mit .NET-Sprachen und dem .NET Framework. Wer mit Windows Forms, WPF oder Silverlight entwickelt, ebenso. Wer mit Windows Mobile entwickelt, arbeitet zumindest mit einem Subset des Frameworks – jedoch sind genau die selben Sprachen nutzbar.

Ich möchte darauf hinaus, das sich Entwickler auf eine oder zwei Sprachen sowie ein einziges Basisframework zuzüglich eines zusätzlichen, spezialisierten Frameworks wie ASP.NET, WPF oder ähnliches beziehungweise auf ein Subset des .NET Frameworks fokussieren müssen – nicht mehr und nicht weniger. Damit können sie theoretisch in allen Bereichen arbeiten, vom .NET Micro Framework bis zum .NET Compact Framework, über ASP.NET bis hin zum großen .NET Framwork.

Für Umsteiger erleichtert das einiges und Einsteiger können nach einer gewissen Lernphase mit dem schon vorhandenen Wissen relativ schnell einen anderen Bereich von .NET kennenlernen. Zusätzlich ist es natürlich so, dass .NET und die dafür verfügbaren Sprachen die Vorteile aus den schon vorhandenen Technologien mitgenommen, deren Nachteile aber möglichst nicht übernommen haben.

Golo Roden: Gibt es in ASP.NET entwickelte Projekte, die Dich besonders fasziniert haben – an denen Du eventuell auch beteiligt warst?

Peter Bucher: Mich faszinieren viele Teile eines Projekts. Ein solcher Teil war beispielsweise eine Lizenzverwaltung für eine Webanwendung. Dabei ging es darum, einen Algorithmus zu erstellen, mit dessen Hilfe Lizenzen erzeugt werden können. Dazu schrieb ich dann auch die API, um den Algorithmus zu kapseln und in der Anwendung zu benutzen, sowie natürlich die Integration in die Windows- und die Webanwendung.

Dieses Projekt war ein sogenanntes Greenfield-Projekt, das heißt, ich konnte von der grünen Wiese aus starten und hatte keinen Legacy Code, den ich erweitern musste.

Daneben habe ich privat viele Greenfield-Projekte aufgezogen, darunter viele kleinere Sachen wie beispielsweise eine Bibliothek, die es ermöglicht, Objektlisten direkt als XML zu speichern, das ganze automatisiert und ohne aufwändige Konfiguration. Mein größtes Übungsprojekt, das ich immer wieder von neuem umbaue und daran neue Technologien evaluiere, ist meine private Webseite. Interessant ist dabei auch, dass ich daran viel am Backend gearbeitet habe, dies nach Außen aber überhaupt nicht sichtbar wurde.

Fremde Projekte können mich auch faszinieren, jedoch natürlich nie so, wie etwas selbst geschaffenes, das so funktioniert, wie ich es mir vorgestellt habe und worin viel Liebe zum Detail steckt. Um ehrlich zu sein, ist mir relativ wenig Code untergekommen, von dem ich behaupten könnte, das er mich fasziniert. Zumindest keine komplette Anwendung, kleinere Snippets oder Komponenten schon eher.

Ich bin jetzt beim Thema Codestyle angekommen, und merke das erst jetzt. Fremde Projekte gibt es eine Menge, die mich von ihrem Aufbau, der Komplexität oder wegen ihres APIs faszinieren. Dazu zählen beispielsweise NHibernate, Rhino.Mocks, autofac und SubText, um nur einige zu nennen.

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?

Peter Bucher: Das ist eine sehr gute Frage. Damit habe ich mich persönlich auch schon beschäftigt, darum fällt mir die Antwort relativ leicht. Wenn wir vorne anfangen, ist es wohl am verständlichsten: Ich hatte schon von klein auf einen angeborenen „Tüftlerinstinkt“, habe also alles, was mich interessierte, angeschaut und damit herumgespielt.

Als mein Vater den ersten Computer kaufte, war ich sofort davon fasziniert. Später kam ein zweiter Computer hinzu und ich durfte den alten 386er für mich haben. Das hatte auch seinen Grund, denn vorher habe ich den Computer meines Vaters immer umgestellt, manchmal sogar so viel, dass er nicht mehr gestartet hat.

Mit meinem eigenen Computer habe ich genau dasselbe gemacht und so mit der Zeit natürlich Dinge gelernt, die ich sonst nie herausgefunden hätte. Nach einer gewissen Zeit war es kein Problem mehr, meine gemachten Fehler wieder rückgängig zu machen, also beispielsweise Windows neu zu installieren. Wichtig ist: Ich bin eher praktisch angehaucht, sehr interessiert, probiere sehr viel aus und lerne aus Fehlern.

Ich habe, wie bereits gesagt, mit der Programmierung angefangen, weil mich der Computersupport langweilte und er für mich ausgeschöpft war. Das kann bei der Softwareentwicklung nie passieren – ich weiß, man soll niemals nie sagen, aber hier und jetzt schon. Meine Motivation kommt also aus meinem sehr großen Interesse an der Sache, meinem Tüftlerinstinkt und schlussendlich aus dem Wissensdurst, den ich in mir habe.

Es ist ganz klar, dass irgendwann, irgendwo eine Grenze gezogen werden muss, nämlich dann, wenn sich die Frage stellt: Was lerne ich? Wie lange? Und wofür? Auf Grund meiner Berufslaufbahn, bei der auch mit der MVP-Auszeichung nochmals die Weichen gestellt wurden, habe ich mich komplett auf die Webentwicklung mit ASP.NET spezialisiert und vernachlässige jetzt beispielsweise die Spieleentwicklung, obwohl sie mich nach wie vor noch interessiert.

Zusammengefasst kann ich also sagen: Das Lernen fällt mir in diesem Bereich sehr leicht, weil eben das große Interesse da ist. Ich würde sogar sagen, dsas ich implizit lerne. Kinder lernen sehr schnell und mit großer Leichtigkeit, aber wieso? Weil es sie interessiert, sie haben ein riesengroßes Interesse an fast allem, darum lernen sie alles sehr gut und sehr schnell.

Bei mir ist dieses Interesse auf bestimmte Bereiche im Leben fixiert, bei denen mir das Lernen sehr leicht fällt und auch keine wirkliche Anstrengung bedeutet, im Sinne von: Weil ich es gerne mache. Durch diese Tatsache kann ich mir auch erklären, wieso ich zum Autodidakten geworden bin und mir das meiste selbst beigebracht habe, wobei ich bei anderen lernenden Aktivitäten, wie beispielsweise einem Fach in der Schule, durch den Lehrer beigebracht, niemals eine solche Motivation aufgebracht habe.

Die Motivation kommt also aus den Interessen und aus den vielen kleinen und großen Erfolgserlebnissen, sowie auch durch das wiederum implizite Lernen, während ich anderen in der Community weiterhelfe.

Einen sehr wichtigen Punkt möchte ich noch erwähnen: Das Filtern. Im heutigen Informationszeitalter werden wir geradezu mit Informationen überschüttet. Dabei genügt schon die Informationsflut in der IT-Industrie, privates kann man dabei außen vor lassen. Dort ist es wichtig, am besten das herauszufiltern, was interessiert und einen Nutzen bringen könnte. Wenn das nicht gemacht wird, zerbricht man an der Flut und irgendwann platzt der Kopf, oder man bringt keine Energie für die wirklich wichtigen Dinge mehr auf.

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?

Peter Bucher: Wenn es darum geht, die Softwareentwicklung als Berufsziel zu haben, kann ich mich eigentlich auf mein Posting vom Streitgespräch Woran erkennt man einen guten Entwickler? beziehen.

Einen Weg, wie man im Lauf der Zeit besser werden kann, wurde auch bereits in einem Streitgespräch, Die Forderung nach Softwarequalität, thematisiert.

Grundsätzlich bin ich der Meinung das nicht jeder Kandidat als Softwareentwickler geeignet ist, sowie ich auch nicht unbedingt beziehungsweise nur bedingt beispielsweise als Schreiner oder Koch geeignet wäre. Das liegt nicht daran, das es jemand nicht könnte, sondern wie er es kann und vorallem wie sehr es ihn interessiert.

Interesse alleine genügt nicht, da von irgendwoher auch die Motivation zur Lernen aufgebracht werden muss. Wie das in meinem Fall aussieht, habe ich bereits beschrieben, aber das kann von Kandidat zu Kandidat natürlich unterschiedlich aussehen.

Ein No-Go wäre die zu einseitige Fixierung auf Theorie oder Praxis. Das kann auf Dauer nicht gut gehen. Wichtig ist also, das schon von Anfang an Theorie und Praxis miteinander verbunden werden, um weiterzukommen.

Zu hohe Anfangsziele beeinträchtigen die Motivation erheblich, auch der Blick zu anderen Entwicklern, die um einiges weiter sind, mit einem Vergleich zu sich selbst, sind meistens ernüchternd. Darum ist es am besten, sich mit sich selbst vor einem Monat oder einem Jahr zu vergleichen, und sich klar zu machen, dass erstens jeder einmal klein angefangen hat und es, egal was man tut, immer jemanden gibt, der besser auf dem Gebiet ist.

Golo Roden: Bei der Vielzahl an Technologien, die es heute gibt: Womit sollte ein Anfänger heutzutage anzufangen?

Peter Bucher: Ich gehe an dieser Stelle nicht auf die Technologien ein, da sonst garantiert irgendjemand nicht zufrieden ist, mit dem was ich sage. Der Anfänger sollte jedoch damit anfangen, womit er ein gutes Gefühl hat und womit er seine ersten Projekziele erreichen kann. Am besten ist es, vor einer Entscheidung für eine bestimmte Technologie ein paar kleinere Prototypen bauen und diese zu vergleichen, denn auf diese Art sieht man schnell, wie sich das Arbeiten mit der Technologie anfühlt und ob sie den Anforderungen standhält.

Wenn es darum geht, in die Softwareentwicklung einzusteigen, sollte im weiteren Verlauf eine Ausrichtung auf den aktuellen Markt stattfinden, das heißt, man sollte sich entscheiden, in welche Richtung man gehen möchte und welche Technologien dafür eingesetzt werden. Schlussendlich ist dann noch die mehr oder weniger finale Entscheidung zu fällen, worauf man sich spezialisieren möchte. Ohne Spezialisierung wird man schließlich zu keinem Spezialisten, und eine Spezialisierung auf alles ist nicht realistisch.

Dennoch ist es nützlich, zumindest zu einem gewissen Grad auch ein Generalist zu sein, der sich später spezialisiert und zum Spezialisten wird, der allerdings über ein breit gefächertes Allgemeinwissen verfügt.

.NET Professionals im Profil

Sonntag, 4. Oktober 2009, 20:45 Uhr
Permalink | Kommentare (10) | Kommentare als RSSRSS

Softwareentwicklung ist ein faszinierendes Thema – keine Frage. Doch wie gelingt der Einstieg? Wie und womit sollte man beginnen? Woher die Motivation und die Energie nehmen, auf Dauer beständig Neues zu lernen? Welche Voraussetzungen sollte man als Anfänger überhaupt erfüllen, um auf Dauer erfolgreich sein zu können?

All diese Fragen beschäftigen jene, die heute versuchen, einen vernünftigen Einstieg in die Softwareentwicklung zu finden.

Doch diese Fragen haben auch all jene beschäftigt, denen der Einstieg bereits gelungen ist und die sich inzwischen professionell – entweder beruflich oder in der Community –mit Softwareentwicklung beschäftigen.

Warum also nicht einfach fragen, wie es ihnen bei ihrem Einstieg ergangen ist? Welche Hürden sie zu überwindern hatten, welche Erfolgserlebnisse sie hatten, und woher sie ihre Motivation genommen haben?

Dies ist die Idee von .NET Professionals im Profil: Jeden Monat interviewe ich eine Person, die im Bereich .NET professionell tätig ist und sich beruflich oder in der Community einen Namen gemacht hat, zu diesem Thema.

Am 15. Oktober 2009 wird es beginnen …