www.codeworx.org/game-dev/Was macht einen Programmierer aus?

Hallo und herzlich Willkommen zu meinem kleinen Essay

"Newbie's Guide to Programming"

Was ich hier vermitteln möchte, ist nicht irgendeine Programmiersprache

oder ein Programmierstil oder ähnliches.

Vielmehr möchte ich mich mit der Frage beschäftigen :

"Was macht einen Programmierer aus?"

Leider ist es gerade in der von mir angepeilten Zielgruppe oftmals so, dass sich einige falsche Vorstellungen über das Programmieren herausbilden. An dieser Stelle möchte ich dann auch gleich eine Warnung aussprechen : Für manchen wird die Lektüre dieses Textes nicht gerade motivierend erscheinen, geschweige denn wird es ihn erfreuen zu lesen, dass er eigentlich lieber gleich die Programmierung sein lassen sollte. Dieser Text ist keine Do-it-Yourself-Anleitung, die, nachdem man sie durchgearbeitet hat, sofort ungeheures Wissen in eure Köpfe presst. Dieser Text mag unbequem sein, aber das ist die Arbeit als Programmierer oftmals auch. Fall sich also jemand von diesem Text enttäuscht zeigen sollte, bitte ich darum, keine Hassmails auf mich loszujagen, denn ich berichte nur über die Realität und will etwas Licht ins Dunkel des Programmierdjungels bringen.

Dass ich dabei einigen ihre Illusionen nehme, ist ein durchaus beabsichtigter Nebeneffekt, der aber von ihnen nicht negativ gesehen werden muss : Nehmen sie es als Anreiz, ihre Motivation, Programmieren zu lernen nochmals zu überdenken.

Um zu den angesprochenen falschen Vorstellungen zurückzukommen und zugleich einen Einstieg in meine Ausführungen zu finden ( das etwas hohe Sprachniveau in diesem Essay ist btw. Durchaus beabsichtigt, da es für diejenigen, die über die nötige Intelligenz und den nötigen Sachverstand vermögen, ganz sicher kein Problem darstellen mag, einen in höherem Schriftdeutsch geschriebenen Essay zu verstehen und es gleichzeitig auch eine Art Vorbereitung auf das Niveau "richtiger" Programmierbücher abseits der "in 21 Tagen" und "xxx für Dummies" Reihen darstellen soll ), möchte ich nun mit einem gerade unter

Neueinsteigern verbreiteten Vorurteil aufräumen: Programmierer wird man nicht, indem man ein Buch, ein Tutorial (wobei diese eher 2. Wahl darstellen) oder sonstetwas liest, sondern indem man sich mit der Sprache auseinandersetzt.

Oftmals werden Programmiersprachen mit realen Sprachen verglichen, so dass ich diesen Vergleich hier nun einmal aufgreifen möchte. Wie bei einer realen Sprache muss man verschiedene Dinge lernen und beherrschen. So gibt es auch in einer Programmiersprache "Vokabeln", dass sind die Anweisungen und Komponenten der Sprache, als auch "Grammatik", also Syntax der Programmiersprache und das Wissen um die Bedeutung des Kontextes. Wie bei einer realen Sprache auch ist es unsinnig, nur die Vokabeln oder nur die Grammatik zu lernen, da das Eine ohne das Andere keinen Sinn macht. Was nützt es mir, jede französische Vokabel zu kennen, ohne einen einfachen Satz bauen zu können ?

Nichts.

Genau so ist es bei einer Programmiersprache auch. Übrigens ist auch die Lernmethode prinzipiell nicht anders als bei einer realen Sprache auch. Auch eine Programmiersprache kann ich durch Anwendung dieser viel schneller verstehen lernen als durch pures Auswendiglernen. Nur durch Auswendiglernen kann man noch lange nicht programmieren.

Was bei reale Sprachen von Programmiersprachen unterscheidet, ist dass kein Dialog stattfindet.

Das heißt, sie sagen dem Computer zwar was er tun soll, das heißt aber noch lange nicht, dass er ihnen auch etwas anderes mitteilen will, als das, was sie ihm sagen, was er ihnen mitteilen soll. In der Tat ist alles, was er ihnen mitteilt, von ihnen bestimmt, da sie ihn per Anweisung auffordern, irgendetwas auf dem

Bildschirm oder sonstwo auszugeben. Von daher müssen sie ein Programm nur verstehen können, indem sie es lesen, und wissen, was es bewirkt, aber sie müssen

es nicht wie der Computer übersetzen, weil sie dem Computer ja praktisch beim Programmieren ihre Sprache aufzwingen, und er selbst dann die Übersetzung vornimmt.

Wie sie vielleicht wissen, erfordert es eine Menge an Aufwand, um eine Fremdsprache zu lernen.

Sie müssen regelmäßig ihre Vokabeln lernen, sie müssen sich am Anfang genau über die Bedeutung von diesem oder jenem Gedanken machen, aber sobald sie einen gewissen Grad an Erfahrung erreicht haben, relativiert sich der Aufwand und sie müssen sich nicht mehr mit den grundlegenen Mechanismen auseinandersetzen, weil sie sie gelernt haben.

Und nun raten Sie mal, wie man eine Programmiersprache am effektivsten lernt ?

Wenn Sie noch keinen blassen Schimmer von der Programmierung haben und ihnen die meisten Vokabeln unbekannt sind, werden sie viel Zeit damit zubringen, indem sie versuchen zu verstehen, wieso etwas so und so funktioniert und nicht anders.

Sie werden es mitunter nicht immer als Vergnügen ansehen, aber sobald sie einen gewissen Kenntnisstand erreicht haben, können sie anhand der Dinge, die sie bereits kennen, auf die Funktion der unbekannten Dinge schließen und ihre Anstrengung so minimieren.

Spätestens zu diesem Zeitpunkt wird ihnen die Tätigkeit als Programmierer Spaß machen. Sie kennen viele Dinge und es entsteht automatisch eine magische Neugier auf die Dinge, die sie noch nicht kennen in ihnen. Auch komplexe Zusammenhänge erscheinen ihnen immer klarer. Am Anfang hingegen steht erstmal langweiliges Erlernen der Grundlagen. Das ist überall so, und wer hier nicht die Zähne zusammenbeisst und durchkommt, der mag vielleicht frustriert sein, aber , und das versichere ich ihnen, bei weitem nicht so frustriert

als wenn er gleich zu Beginn ein 10000-Zeilen Programm vorgesetzt bekommt und einen Tippfehler oder ähnliches Suchen muss. So eine Fehlersuche ist das frustrierenste, was die Programmierung zu bieten hat, aber sie gehört dazu. Fehlerfreie Programme gibt es nicht. Auch wenn wir versuchen Fehler zu vermeiden, irgendwo machen wir doch welche.

Das ist nicht schlimm, aber natürlich ist so ein "Showstopper" auch nicht gerade etwas, was für Heiterkeit sorgt.

Deshalb komme ich nun zum zweiten Punkt :

Programmieren ist keine Hexerei, sondern in gewissem Sinne eine Wissenschaft.

Ein Programmierer sollte wissen, was er tut, und warum etwas so funktioniert, wie es funktioniert. Um das zu erreichen, ist Konzentration und Sorgfalt nötig. Das lässt sich schon dadurch erreichen, dass der Code lesbar gestaltet wird. Nicht ist schlimmer als unformatierter Code, der einfach straight untereinandergeschrieben wurde, ohne ihn sinnvol zu unterteilen oder ihn zu kommentieren und seine Funktion zu erklären.

Schon diese recht einfachen Maßnahmen helfen, so manchen Bug zu vermeiden, und ist er erstmal drin, so ist er in einem in Sinnabschnitte und formatierten Quelltext sicherlich leichter aufzuspüren als in einer endlosen, verwirrenden Textwüste.

Kommentare sind nicht nur für Feiglinge oder Dünnbrettbohrer, sondern dienen einfach einer kurzen Erklärung und Beschreibung des Programmteils, in dem sie stehen. Es mag einige Programmierer geben, die es vorziehen, sich x-fache Arbeit zu machen, als dass sie kommentieren oder formatieren. Sie als angehender Programmierer sollten darauf achten, dass der Code so gut lesbar und verständlich wie möglich ist.

Ein weiteres Manko ist, dass viele Newbies, die in dem nun geschilderten Fall eigentlich als "Lamer" bezeichnet werden, es sich sehr einfach machen möchten, indem sie auf vorgekaute Lösungen von anderen, engagierten Menschen hoffen, die ihen hoffentlich gleich funktionierenden Code liefern, mitsamt einer Beschreibung wie er zu benutzen ist.

In der Tat wird man mit so einem Verhalten auf wenig Gegenliebe stoßen, wie die vielen Flames in den einschlägigen Foren beweisen. Die Leute dort, die einem einen Lösungsansatz liefern, und davon ausgehen, dass der Hilfesuchende mit Hilfe dieses Ansatzes und vielleicht einer Beschreibung der Vorgehensweise in der Lage ist, daraus die Lösung für das Problem zu entwickeln kann, werden im Gegenteil oft genug noch als "arrogant" und "herablassend" bezeichnet, weil sie die Meinung vertreten, dass man Programmieren nur dadurch lernen kann, dass man es tut, und nicht dadurch, dass

man einfach ohne Nachdenken vorgekauten Code übernimmt, ohne sich damit zu befassen.

Ein derartiges Verhalten zeigt vor allem eines : Derjenige hat kein Interesse am Programmieren und an der Kunst, die das Programmieren darstellt, sondern will vielmehr nur wenig tun und dafür auch noch bewundert werden. Das dies der falsche Weg ist, dürfte aus meinen Ausführungen jawohl hervorgegegangen sein.

Ich habe am Anfang des Artikels bereits gesagt, dass dies hier kein Patentrezept ist.

Es gibt solche Patentrezepte nicht. Niemand lernt von heute auf morgen Programmieren,

das ist ein Prozess der sich oftmals über einen langen Zeitraum erstreckt. Ja, im Prinzip lernen wir alle immer weiter, denn sobald wir aufhören zu lernen, hieße das ja, dass wir alles könnten. Das würde aber gleichzeitig bedeuten, dass man damit aufhören kann, da es keine neuen Herausforderungen gibt, denen man sich stellen kann, und letztlich stellt jedes noch so kleine Projekt eine solche Herausforderung dar. Die Hreausforderung und der Willen zu Lernen sind der Hauptantrieb des Programmierers, ebenso wie der Wunsch nach der

absoluten Kontrolle über die Maschine, und eben nicht das profane Geld, das nicht wirklich genauso glücklich macht wie das Erreichen eines Ziels dass man sich selbst gesteckt hat.

Ihr erstes Ziel sollte sein, eine Programmiersprache zu erlernen, und es spielt dabei prinzipiell keine Rolle, welche. Auch wenn es oftmals anders aussieht, wer wirklich etwas auf dem Kasten hat wird akzeptiert und angesehen und kann etwas bewegen, egal welche Sprache er benutzt oder welche Art von Software er schreibt. Allein das Können und der Lernwille zählen.

In diesem Sinne wünsche ich ihnen einen schönen Tag (oder eine gute Nacht)

und möchte ihnen viel Glück wünschen, wenn sie immer npch den Wunsch haben,

Programmieren können zu wollen. Wenn Sie es wirklich wollen, werden sie es auch schaffen, das wird sie ncihts aufhalten können.

Sebastian Porstendorfer

sp_sebisoft@gmx.de

PS : Bitte entschuldigen Sie die sicher vorhandenen Rechtschreibungs- und Grammatikfehler.
Nobody is perfect, there's still something to learn - even if you are a genius (which i am not, i think.)