Programmierfähigkeitstest [geschlossen]

14

Ich habe viele Freunde, die sehen, was ich tue, es interessant finden und mir die Frage stellen

Do you think I could be a programmer?

Meine Antwort ist

...   ummm  ...  do you like math?

Ich hätte gerne eine hilfreiche Antwort, also wusste ich nicht, ob jemand von einem ziemlich anständigen Eignungstest für jemanden wusste, der von Anfang an anfängt, aber über kritische Denk- und Problemlösungsfähigkeiten verfügt?

jondavidjohn
quelle
Ich schlage BuzzFizz vor: Können sie bei drei verschiedenen ausführbaren Dateien diese ausführen und identifizieren, welche "FizzBuzz" ist?
Macneil
15
Mischen Sie nicht Mathe und Programmierung. Ich arbeite seit Jahren als Programmierer. Ich hasse Mathe. Ein weiteres Beispiel: Jeff Atwood ist ein ausgezeichneter Programmierer. Er hasst Mathe (siehe codinghorror.com/blog/2007/01/… , Punkt 3).
Arseni Mourzenko
2
@MainMa Ich kann nicht betonen, wie wahr das ist. Ich bin genau im selben Boot. Mathe war für mich nie eine Leidenschaft oder gar eine Stärke. Davon abgesehen werden viele, die mich kennen, meine extreme Begabung (sprich: Besessenheit) für das Programmieren bezeugen. Mathematik kann ein wesentlicher Bestandteil des Programmierens sein, aber eines muss nicht das andere sein.
Nathan Taylor
1
vielleicht , wenn ich sage : „Sie tun wie Mathe?“, meine ich zu sagen , „tun Sie respektieren Mathe?“, sauge ich tatsächlich in Mathe von Hand, weshalb wie ich den Computer machen für mich die Mathematik zu tun, aber ich Respekt und verstehe die endlichen Prinzipien der Mathematik, von denen ich glaube, dass sie mir bei meinen logischen Denkprozessen helfen.
Jondavidjohn
2
"apptitude" ist in diesem Zusammenhang ein wirklich cooler Tippfehler :-)
Ferruccio

Antworten:

12

"Lust auf Mathe" ist ein schlechter Test. Ich mochte Mathe nie (hauptsächlich, weil 90% der Mathematiklehrer an der High School saugten).

Wenn Sie "Mathe" sagen, denken die meisten Leute, Sie meinen "eine Gleichung sorgfältig nach einem sehr strengen Regelwerk lösen". Das Programmieren ist überhaupt nicht so.

Programmieren ist eher wie Zeichnen, da das, was Sie erreichen können, nur durch das eingeschränkt wird, was Sie sich vorstellen können.

Was zählt, ist die Fähigkeit, sich ein System vorzustellen und zu sehen, wie es funktioniert.

  • Denkst du darüber nach, wie die Dinge funktionieren?
  • Überlegen Sie, wie Sie alltägliche Dinge verbessern können?
  • Können Sie sich vorstellen, wie man etwas aus einfacheren Bausteinen baut?
hasen
quelle
Ist es eher wie Geometrie?
Gulshan
Es ist eine angewandte Wissenschaft, es hat also nicht wirklich eine reine Wissenschaft, die per se "gleichwertig" ist.
Jondavidjohn
1
Das Programmieren ähnelt eher dem Schreinerhandwerk. Zuerst visualisieren Sie die Lösung, wählen Ihre Werkzeuge aus und wenden Ihr Handwerk sorgfältig mit dem besten TDD-Holz an. Jesus wäre ein Programmierer gewesen, wenn der Commodore 64 etwas früher erfunden worden wäre.
Wird
2
Eigentlich klingt das, was Sie beschrieben haben, sehr nach Mathematik - im Gegensatz zu dem, was für Mathematik an Schulen gilt.
uman
1
@Brennan: Die einzige Mathematik, die ich ähnlich wie das Programmieren fand, war Diskrete Mathematik an der Universität. Bei den meisten anderen Mathematikübungen ging es darum, Regeln und Formeln sinnlos anzuwenden, um eine Art Gleichung zu lösen. Sie können argumentieren, dass dies keine wahre Mathematik ist, aber es ist für diese Diskussion nicht wichtig.
Hasen
8

Ich erinnere mich, dass ich als Kind einen Brainbench Aptitude Test gemacht habe . Ich habe das Zertifikat immer noch irgendwo aufbewahrt ...

Die Testskizze:

Abstract Thinking
    Process Flow
    Spatial Manipulation
Analytical Reasoning
    Inductive Reasoning
    Logic Application
    Word Problems
Attention to Detail
    Following Instructions
    Reading Comprehension
    Rule Interpretation
    Writing Analysis
Mathematical Problem-Solving
    Word Problems
Process Mapping
    General Processes
    Letter Manipulation Processes
    Number Manipulation Processes
    Shape Manipulation Processes
Dan McGrath
quelle
1
Das ist ein sehr komplizierter Test. Wenn mir jemand gesagt hätte, ich solle den Test machen, bevor ich mich mit Programmieren befasse, hätte ich Angst gehabt. OK, vielleicht ist es mir egal, aber jeder, der den Test ernst nimmt, hat Angst.
Hasen
2
So? Das Programmieren kann ein kompliziertes Gebiet sein (wie auch andere). Wenn Sie so leicht Angst haben, ist es vielleicht nichts für Sie. Stellen Sie sich vor, Sie würden gefragt, ob jemand Arzt werden möchte, worin sollte er gut sein? Ich glaube nicht, dass es Ihnen etwas ausmacht, dass es einige Leute abschreckt ... Das Leben ist hart und komplex, sie sollten sich daran gewöhnen.
Dan McGrath
2
Nun, es ist ein kompliziertes Feld, wenn man sich ihr nähert Kopf auf Sie werden scheitern. Jeder, der mit dem Programmieren anfing, begann mit einfachen Dingen und glaubte, dass es wirklich einfach ist. Dieser Glaube wird wahrscheinlich durch ihre Lernerfahrung aufrechterhalten werden. Man merkt erst, wie kompliziert es ist, wenn man zurückblickt oder sieht, wie jemand mit etwas kämpft, das man als sehr einfach ansieht.
Hasen
Tut mir leid, nach der obigen Liste handelt es sich um wesentliche Fähigkeiten, die Sie als Programmierer einsetzen werden. Ich glaube, Sie haben eher Angst vor ihren Namen als vor den Fragen, die unter sie fallen würden. Es ist nicht so, als würde man Sie nach komplexen Konzepten für die Programmierung fragen. Mit anderen Worten, Eignungstests haben nichts damit zu tun, wie gut Sie Programmierkonzepte verstehen, die Sie lernen können. Es geht also um Eignung. Daher ist der Kommentar zum Thema "Beginnen mit einfachen Dingen" hier nicht wirklich relevant
Dan McGrath
7

Es besteht die Möglichkeit, dass es bereits eine gute gibt.

Siehe zum Beispiel die Diskussion über das Trennen von Programmierschafen von nichtprogrammierbaren Ziegen :

Alle Programmierlehrer stellen fest, dass ihre Ergebnisse einen doppelten Buckel aufweisen. Es ist, als gäbe es zwei Populationen: diejenigen, die [programmieren] können und diejenigen, die [nicht programmieren] können, jede mit ihrer eigenen unabhängigen Glockenkurve. Fast alle Forschungen zum Programmieren von Lehren und Lernen haben sich auf das Lehren konzentriert: Ändern der Sprache, Ändern des Anwendungsbereichs, Verwenden einer IDE und Arbeiten an der Motivation. Nichts davon funktioniert und der doppelte Buckel bleibt bestehen. Wir haben einen Test, der die Bevölkerung, die programmieren kann, vor Kursbeginn heraussucht. Wir können den Doppelhöcker auseinander nehmen. Sie glauben das wahrscheinlich nicht, aber Sie werden es tun, nachdem Sie das Gespräch gehört haben. Wir wissen nicht genau, wie / warum es funktioniert, aber wir haben einige gute Theorien.

Der Test zeigt, wie konsequent die Operationalisierung einer Anweisungsfolge ist. Das heißt, sie können Modelle (Abstraktionen) in ihren Köpfen aufbauen und mit ihnen arbeiten.

Macneil
quelle
2

Ich denke, ein wichtigerer "Test" wäre, ihnen eine einfache Programmiersprache / -umgebung zu zeigen, mit der sie herumspielen können. Zum Beispiel Verarbeitung oder Python . Wenn sie eine solche Sprache lernen und genießen können - vielleicht während sie eine oder zwei einfache Aufgaben lösen - dann ist das wahrscheinlich der beste "Eignungstest", den Sie sich wünschen können.

Justin Ethier
quelle
2

"Magst du Mathematik?" ist kein schlechter start. Mathe ist danach entscheidend ...

Es ist ratsam zu prüfen, ob sie ein Problem annehmen und es in Blöcke aufteilen können. Nur in der Sprache ist es ein guter Anfang, wenn sie Schritt für Schritt durch ein grundlegendes Problem gehen können.

  • Wie würden Sie einem Roboter sagen, wie er eine Tasse Tee machen soll? Sei so genau wie möglich.
  • Wenn Sie bei McDonalds ein Essen bestellen, erfahren Sie, welche Schritte zur Abwicklung der Bestellung erforderlich sind, von der ersten Anweisung bis zur Abgabe von Wechselgeld / Essen.
  • Wie funktioniert die Telefonanlage?

Wenn sie sie auf die analytische und tiefgreifende Art und Weise beantworten können, die ein Programmierer Tag für Tag hat, können sie wahrscheinlich damit umgehen.

Orbling
quelle
1

Sobald Sie mit dem Programmieren vertraut sind, müssen Sie es entweder tun oder nicht. Eignung ist nur ein Faktor dafür, ob Sie darin gut sind oder nicht. Exposition gegenüber guten Beispielen, Anleitung, Arbeitszeit, Anstrengung sind andere. Wenn Sie wirklich etwas tun wollen / müssen, ist es viel einfacher, die anderen Faktoren auszunutzen.

JeffO
quelle
1

Eine bessere Frage als "Magst du Mathe?" Ist "Magst du es, logische Rätsel zu lösen?" Dies sind Dinge wie Sudoku usw. oder das Herausfinden der Antwort auf Rätsel wie "John, Anne, Peter, Mary und Brittany sind Nachbarn. John hat ein weißes Auto, Brittany lebt links von Anne, bla bla, in welcher Reihenfolge um sie zu leben? "

Denn das ist Programmierung: Ein großes logisches Rätsel.

Lennart Regebro
quelle
1
Ich mag (etwas) Mathe, aber Rätsel sind einfach unnötig, wenn man den Kopf gegen die Wände schlägt. Ich denke, man braucht Motivation, um etwas Nützliches zu erschaffen - im Gegensatz zu mentaler Gymnastik, um zu zeigen, wie schlau man ist.
Omega Centauri
Okay, du musst es nicht mögen, sei einfach gut darin. :-)
Lennart Regebro
1

Ich denke, eine bessere Frage ist: "Baust du gerne Dinge mit Legoblöcken?"

davidk01
quelle
1

Genau wie der Gusteau sagte eine Figur aus dem Film Ratatouille:

Jeder kann kochen.

Ebenso kann jeder programmieren. Aber nicht jeder wird großartig darin sein. Die meisten Programmierjobs erfordern ein durchschnittliches Maß an Eignung und Kompetenz.

Antworten Sie einfach mit Ja. Warum? Weil die meisten Leute sich nur von jemandem geschätzt fühlen wollen, den sie für schlau halten.

Pablo
quelle
2
Ich bin absolut anderer Meinung, dass jeder programmieren kann. Es ist scheiße, aber so ist das Leben.
uman
0

Ich denke, dass die Vorliebe für Mathematik wichtig ist. Nicht vom Standpunkt aus magst du es, Dinge rigoros zu beweisen, die von einem ernsthaften Mathematiker verlangt werden. Wenn Sie jedoch ein für Sie wichtiges Problem haben, können Sie die Probleme, die bei der Lösung auftreten, auf mathematische Weise formulieren. Ich behaupte, alles, was ein Computer tut, ist Mathematik, er nimmt symbolische Daten und führt irgendeine Operation darauf aus. Das ist das Wesen der Mathematik. Sie müssen also in der Lage sein, Dinge in eine Art mathematischer Struktur zu abstrahieren und über die Schritte nach vorne nachzudenken. Fehlt das, hacken Sie einfach, werfen Code raus und hoffen, dass er das tut, was Sie wollen. Komplizierte Algebra lösen zu können, ohne Tippfehler zu machen und sich zu verlaufen, ist wahrscheinlich nicht so wichtig. Es ist jedoch wichtig, einen Plan formulieren zu können. Ich schreibe oft Zehnzeilenprogramme, um zu überprüfen, ob meine nicht allzu komplizierte Rechnung richtig ist. Computer mit Mathematik zu kombinieren, um Details zu überprüfen, zu entdecken und zu ermitteln, ist der eigentliche Schlüssel.

Omega Centauri
quelle