Labels

FizzBuzz (2) PHP (2) Quizzler (1)

Sonntag, 14. November 2010

Das FizzBuzz-Problem

Einer der Mitbegründer von StackOverflow, Jeff Atwood, hat eine interessante erschreckende Entdeckung gemacht:
Bei ihm bewerben sich Programmierer, die nicht programmieren können! Hier ist der Originalartikel auf englisch dazu.

Er stellt den Bewerbern im Vorstellungsgespräch eine simple Programmieraufgabe und einige von ihnen scheitern daran.

Die Aufgabe ist wirklich simpel:

Schreiben Sie alle Zahlen von 1 bis 100 auf. Wenn eine Zahl durch drei teilbar ist, schreiben Sie statt der Zahl das Wort "Fizz". Wenn die Zahl dagegen durch fünf teilbar ist, schreiben Sie statt der Zahl das Wort "Buzz".
Sollte die Zahl sowohl durch drei als auch durch fünf teilbar sein, schreiben sie statt der Zahl das Wort "FizzBuzz".
Nutzen Sie eine Programmiersprache Ihrer Wahl.

Es gibt Leute, die keine Ahnung haben, wie sie die gestellte Aufgabe lösen sollen. Das ist soweit nicht schlimm. Schlimm wird es, wenn sich ausgerechnet solche Menschen um Programmiererstellen bewerben.

Aus (richtiger) Programmierersicht ist das eine simple Schleife mit ein paar Conditionals (nein, das hat nichts mit Frisuren zu tun; es sind einfach wenn/dann-Fragen). Eine Quick-and-Dirty-Lösung kann ein (richtiger) Programmierer innerhalb ein-zwei Minuten skizzieren. Ich zeige das mal am Beispiel PHP:
<?php

function istTeilervon($teiler, $cand) {
return ($cand % $teiler) == 0;
}

$i=1;
while ($i<=100) {
$antwort = '';
$antwort.= (istTeilervon(3,$i)?'Fizz':'');
$antwort.= (istTeilervon(5,$i)?'Buzz':'');
echo (empty($antwort)?$i:$antwort).' ';
++$i;
}

?>

Das war's! Mehr braucht man in Jeffs Vorstellungsgespräch nicht.
Das ist jetzt natürlich nur eine mögliche Lösung, und die hat auch ihre Schwächen. Aber für eine schnelles Q&D-Programm, das nicht in die Produktion soll, reicht es.

So sieht es dann aus, wenn man das Programm mit php fizzbuzz.php startet:

1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz 16 17 Fizz 19 Buzz Fizz 22 23 Fizz Buzz 26 Fizz 28 29 FizzBuzz 31 32 Fizz 34 Buzz Fizz 37 38 Fizz Buzz 41 Fizz 43 44 FizzBuzz 46 47 Fizz 49 Buzz Fizz 52 53 Fizz Buzz 56 Fizz 58 59 FizzBuzz 61 62 Fizz 64 Buzz Fizz 67 68 Fizz Buzz 71 Fizz 73 74 FizzBuzz 76 77 Fizz 79 Buzz Fizz 82 83 Fizz Buzz 86 Fizz 88 89 FizzBuzz 91 92 Fizz 94 Buzz Fizz 97 98 Fizz Buzz

Für Programmierer ist das also wirklich nicht schwierig. Aber warum scheitern manche Kandidaten an dieser Aufgabe? Sie haben schließlich in der Regel einen Bachelor in CS (Computer Science). Bemerkenswert ist auch, dass der Originalartikel 2007 geschrieben wurde, aber Jeff Atwood hat dieses Jahr (2010) nochmal nachgelegt: es hat sich nichts geändert. Es fliegen bei diesem Simpeltest immer noch Bewerber durch! Oder "Senior Programmer" brauchen mehr als zehn Minuten für die Lösung.

Damit liegt es nicht an einem extrem verdummten Jahrgang. In den Diskussionen findet man eher den Hinweis, das bei der Ausbildung das selbstständige Denken "wegtrainiert" wurde.
Atwood hat es hier also mit Leuten zu tun, die zwar auswendig gelernte "Best Practices" für memorierte Use Cases anbieten können, aber bei neuartigen, noch so simplen, Problemen ins Schleudern kommen. Es wurde ihnen abgewöhnt, ein eigenes Näschen für den Lösungsweg zu entwickeln.

Das ist nicht neu: sowas verbindet man hier in Deutschland gewöhnlicherweise mit den BWL-Absolventen. Die entsprechenden Sprüche findet man regelmäßig bei Heise- oder auch Spiegel-Online. Dass es auch die Guten trifft, also Naturwissenschaftler, Ingenieure und Informatiker, erklären die Foristen dann immer damit, dass alles der heiligen BWL untergeordnet wurde. Im Heiseforum habe ich dieses Beispiel auch gefunden. Es sollen also auch in Deutschland Bewerber an der FizzBuzz-Aufgabe gescheitert sein. Ich formuliere das jetzt bewusst vorsichtig, weil das Heise-Forum eine Trollhölle ist. Es kann auch sein, dass da irgendein Depp bloß irgendwas behauptet. Atwood dagegen ist eine glaubwürdige Quelle.

Ich glaube ja nicht, dass früher unbedingt alles besser war. Ich habe hier ein Buch von Neil Postman, "Der Verlust des Denkens", rumliegen, dass er in den 80ern geschrieben hat. Auch der nette Herr Kant wird mit seinem "Sapere Aude" und dem Vorwurf der selbstverschuldeten Unmündigkeit seinen Anlass gehabt haben. Früher liefen auch schon Leute rum, die Scripted Dokus auf RTL gekuckt hätten.

Das ist aber alles gar nicht mein Thema. Das hier ist ein technokratisches Programmiererblog, d.h. wir werden in den Folgeposts ein bisschen mit FizzBuzz spielen. Wird bestimmt lustig.

1 Kommentar:

  1. Von einem Informatiker würde man aber eine for-Schleife erwarten. So wirkt es wie von einem Quereinsteiger.

    AntwortenLöschen