Lernen wird in der Psychologie definiert als eine dauerhafte (im Gegensatz zu einer vorübergehenden) Änderung im Verhalten, die durch Übung (im Gegensatz zu automatischer ,,Reifung``) erfolgt. Es werden vier Arten des Lernens unterschieden, und zwar in Reihenfolge aufsteigender Komplexität:
Habituation läuft ständig und unbewußt ab und ist kaum zu vermeiden, wenn die entsprechenden Randbedingungen vorliegen. Klassische Konditionierung läuft ebenfalls automatisch ab; ihr Ergebnis kann aber bei Bedarf leichter als eine Habituation von bewußten Überlegungen ``überstimmt'' werden.
Konsequenzen für die Softwaretechnik lauten, in Softwaresystemen und Softwareprozessen unbedingt Reize zu vermeiden, die meistens nutzlos sind und nur selten Bedeutung bekommen. Wird zum Beispiel bei einer bestimmten Aktion routinemäßig eine Dialogbox angezeigt, so wird eine Habituation auf deren Inhalt eintreten (d.h. der Inhalt wird ignoriert) und die Reaktion des Benutzers wird durch Konditionierung automatisiert. Kommt nun an eben dieser Stelle in seltenen Fällen auch eine andere Dialogbox vor, so muß die Habituation durchbrochen werden, damit der Inhalt der Dialogbox wahrgenommen wird und nicht die übliche automatisierte Benutzerreaktion erfolgt. Für dieses Durchbrechen wiederum kann man eine Konditionierung auf einen anderen Reiz gezielt einsetzen (z.B. den üblichen Piepston, vorausgesetzt, daß dieser bei der normalen Dialogbox nicht auftritt.)
Die operative Konditionierung ist im Rahmen der Softwaretechnik vor allem in Zusammenhang mit Motivationsfragen von Bedeutung. Ein Aktions-Konsequenz-Paar, dessen Konsequenz eine positive Motivationswirkung hat, kann man gezielt zum Antrainieren der Aktion verwenden, entsprechend eines mit negativer Motivationswirkung zum Abgewöhnen der Aktion.
Komplexes Lernen setzt die Herstellung mentaler Abbilder der Welt voraus und die Manipulation dieser Abbilder anstelle der Manipulation der Welt selbst. Es handelt sich also vor allem um einen Abstraktionsprozeß. Der Lernende muß die richtigen Abstraktionen finden sowie die richtigen Operationen zu ihrer Manipulation.
Als Konsequenz in der Softwaretechnik sollte man versuchen, bei allen komplexen Lernvorgängen dem Lernenden die Konzepte hinter den zu lernenden Zusammenhängen zugänglich zu machen. Diese Konzepte geben die Gemeinsamkeiten hinter den zu lernenden Zusammenhängen (also deren Essenz) wieder sowie idealerweise auch die Motivation hinter deren Entwurf (also die Begründung), denn es handelt sich ja um bewußt und gezielt für einen Zweck entworfene Artefakte. Somit liegen diese Konzepte schon nah an den Abstraktionen, die zum Lernen ausgebildet werden müssen, und ihre Kenntnis erleichtert deshalb das Lernen. Die Begründungen für die Konzepte liefern zugleich meist Hinweise auf nützliche Operationen auf den Abstraktionen und erleichtern somit das Lernen zusätzlich. Häufig ist es dabei nützlich, sich mittels Metaphern, Vergleichen etc. auf andere Konzepte zu stützen, die den Lernenden bereits geläufig sind.
Ein Beispiel wäre die Erläuterung des Konzepts ,,Verzeichnis`` als eine Datei, die Dateien speichert (anstatt beliebige Daten), um zu erklären, was hinter Einzelteilen wie dem Erzeugen eines Verzeichnisses, dem Betreten eines Verzeichnisses und der Angabe von Verzeichnisnamen als Teil eines Dateinamen steckt. Eine nützliche Ergänzung ist die Entwurfsbegründung, daß Verzeichnisse zum Klassifizieren und Ordnen von Dateien dienen und die Übersicht verbessern. Eine nützliche Metapher ist die des Ordners oder des Aktenschranks, wie er aus dem Büroalltag bekannt ist.
Müssen Zusammenhänge aus Daten erlernt werden, die diese Zusammenhänge nicht vollständig sichtbar machen, so wenden Menschen sogenannte Vor-Überzeugungen an, um sich die Zusammenhänge verständlich zu machen, d.h. ihre Abstraktionen zu vervollständigen. Dies kann zur Ausbildung falscher Abstraktionen führen, indem Zusammenhänge postuliert werden, die gar nicht wirklich gegeben sind.
Ein wichtiger Schluß aus diesem Lernmechanismus lautet, beim Lehren nach Möglichkeit Zusammenhänge vollständig sichtbar zu machen, um ein unkontrolliertes Benutzen von Vor-Überzeugungen zu vermeiden. Falls das nicht möglich ist, sollte eine Vor-Überzeugung mitgeliefert werden, die zwar nicht den korrekten Zusammenhang wiedergibt, aber eine Annäherung darstellt, die zu möglichst wenigen, möglichst unschädlichen Fehlschlüssen führt. Falls das auch nicht möglich ist, sollten wenigstens die häufigsten Vor-Überzeugungen der Lernenden identifiziert und ausdrücklich als falsch gekennzeichnet werden. In diesem Fall können die Lernenden aber eine Abstraktion überhaupt nicht vervollständigen, was einen Lernerfolg weitgehend ausschließt; irgendetwas muß die Lücke füllen.
Es gibt grundsätzlich zwei Arten, wie eine Abstraktion beim komplexen Lernen erworben werden kann: induktiv oder deduktiv. Beim deduktiven Lernen (Lernen des Speziellen aus dem Allgemeinen) wird eine Beschreibung des zu lernenden Zusammenhangs vorgegeben, die in Begriffen abgefaßt ist, die bereits zuvor gelernt wurden. Der Lernende analysiert diese Beschreibung und entwickelt daraus geistig die neue Abstraktion. Deduktives Lernen setzt Sprache oder sprachähnliche Systeme voraus.
Beispiel: ``Ein Stringdenotierer ist eine Kette aus einem Anführungszeichen, einer Folge von beliebigen Zeichen, die nicht selber Anführungszeichen sind und einem weiteren Anführungszeichen''.
Beim induktiven Lernen hingegen (Lernen des Allgemeinen aus dem Speziellen) werden eine Reihe von Beispielen und Gegenbeispielen für die zu lernende Abstraktion vorgegeben. Überwiegend unbewußt wendet der Lernende eine große Zahl von früher gelernten Abstraktionen auf die Beispiele an, um deren relevante Gemeinsamkeiten und Unterschiede herauszufiltern. Die Gemeinsamkeiten werden vor dem Hintergrund der Unterschiede verallgemeinert (was ein unzuverlässiger Schritt ist!) und bilden den Inhalt der neu gelernten Abstraktion.
Beispiel: Stringdenotierer sind zum Beispiel
"ekr"
"kdieiw Fduw dWIEi "
" %(#&@"
"1858745897"
""
" "
"a"
und keine Stringdenotierer sind zum Beispiel
ekr
"alsdk OWERLKJsldk
lskdf"
"lsk"df"
"
Menschen sind enorm leistungsfähig beim induktiven Lernen, zumindest, wenn alle notwendigen Basisabstraktionen bekannt sind. Aus diesem Grund ist es stets vorteilhaft, das Lehren möglichst stark auf induktives Lernen zu stützen. Allerdings erlaubt das induktive Lernen nicht, mit vertretbarem Aufwand eine genaue Grenzziehung einer Abstraktion zu lernen. Zweifelsfälle können also nach einem rein induktiven Lernprozeß oft noch nicht korrekt beurteilt werden. Im obigen Beispiel sind schon eine ganze Reihe von Beispielen nötig, um die meisten Zweifelsfälle auszuschließen, obwohl sonst sicherlich drei positive und drei negative Beispiele ausgereicht hätten. Deshalb sollte eine induktive Lernlektion möglichst mit einer entsprechenden deduktiven vervollständigt werden, die nach der Ausbildung eines Verständnisses für den überwiegenden Teil des Gehalts der zu lernenden Abstraktion dann auch recht schnell aufgenommen werden kann. Zum Beispiel haben Sie die obige Beschreibung dessen, was ein Stringdenotierer ist, nur deshalb so schnell verstanden, weil sie es vorher schon wußten; andernfalls wäre es mit vorheriger Betrachtung der Beispiele erheblich schneller und vor allem sicherer gegangen.