Test d'aptitude programmeur [fermé]

14

J'ai beaucoup d'amis qui voient ce que je fais, le trouvent intéressant et me posent la question

Do you think I could be a programmer?

Ma réponse est

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

J'aimerais avoir une réponse utile, donc je ne savais pas si quelqu'un connaissait un test d'aptitude assez décent pour quelqu'un qui commencerait à la case départ, mais a des capacités de réflexion critique et de résolution de problèmes?

jondavidjohn
la source
Je propose BuzzFizz: Étant donné trois exécutables différents, peuvent-ils les exécuter et identifier lequel est "FizzBuzz"?
Macneil
15
Ne mélangez pas mathématiques et programmation. Je travaille comme programmeur depuis des années. Je déteste les maths. Un autre exemple: Jeff Atwood est un excellent programmeur. Il déteste les mathématiques (voir codinghorror.com/blog/2007/01/… , point 3).
Arseni Mourzenko
2
@MainMa Je ne peux pas souligner à quel point cela est vrai. Je suis exactement dans le même bateau. Les mathématiques n'ont jamais été ma passion, ni même un point fort, d'ailleurs. Cela étant dit, beaucoup de ceux qui me connaissent témoigneront de mon extrême aptitude (lire: obsession) pour la programmation. Les mathématiques peuvent être une partie importante de la programmation, mais l'une n'engendre pas nécessairement l'autre.
Nathan Taylor
1
peut-être que quand je dis "est-ce que tu aimes les maths?", je veux dire "est-ce que tu respecte les maths?" et comprendre les principes finis des mathématiques qui, je crois, m'aident dans mes processus de pensée logique.
jondavidjohn
2
"apptitude" est une faute de frappe vraiment cool dans ce contexte :-)
Ferruccio

Réponses:

12

"Aimer les mathématiques" est un mauvais test. Je n'ai jamais aimé les mathématiques (principalement parce que 90% des professeurs de mathématiques au lycée craignaient).

Lorsque vous dites «mathématiques», la plupart des gens pensent que vous voulez dire «résoudre soigneusement une équation selon un ensemble de règles très strictes». La programmation n'est pas du tout comme ça.

La programmation ressemble plus au dessin, en ce que ce que vous pouvez réaliser n'est limité que par ce que vous pouvez imaginer.

Ce qui compte, c'est la capacité d'imaginer un système et de voir comment il fonctionne.

  • Pensez-vous à la façon dont les choses fonctionnent?
  • Pensez-vous aux moyens d'améliorer les choses de tous les jours?
  • Pouvez-vous visualiser comment construire quelque chose à partir de blocs de construction plus simples?
hasen
la source
Est-ce plus comme la géométrie?
Gulshan
c'est une science appliquée, donc elle n'a pas vraiment de science pure "équivalente" en soi.
jondavidjohn
1
La programmation ressemble plus à de la menuiserie, vous visualisez d'abord la solution, sélectionnez vos outils, appliquez soigneusement votre métier en utilisant le meilleur bois TDD. Jésus aurait été programmeur si le commodore 64 avait été inventé un peu plus tôt.
Will
2
En fait, ce que vous avez décrit ressemble beaucoup aux mathématiques - contrairement à ce qui se passe pour les écoles de mathématiques.
uman
1
@Brennan: Les seules mathématiques que j'ai trouvées similaires à la programmation étaient les mathématiques discrètes à l'université. La plupart des autres mathématiques que nous avons étudiées concernaient l'application inconsidérée de règles et de formules pour résoudre une sorte d'équation. Vous pouvez dire que ce n'est pas de la vraie mathématique, mais cela n'a pas d'importance pour cette discussion.
hasen
8

Je me souviens de dos comme un enfant faisant un test d'aptitude Brainbench ; J'ai toujours le certificat entreposé quelque part ...

Le plan du test:

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
la source
1
C'est un test très compliqué. Si quelqu'un m'avait dit de passer le test avant de me lancer dans la programmation, j'aurais eu peur. OK, peut-être que je m'en fiche, mais quiconque prendrait le test au sérieux serait effrayé.
hasen
2
Donc? La programmation peut être un domaine compliqué (comme d'autres). Si vous avez peur aussi facilement, ce n'est peut-être pas pour vous. Imaginez si on vous demandait si quelqu'un voulait devenir médecin, à quoi devraient-ils être bons? Je ne pense pas que vous vous soucieriez que cela effraie certaines personnes ... La vie est dure et complexe, ils devraient s'y habituer.
Dan McGrath
2
Eh bien, il est un domaine complexe, si vous approchez la tête sur vous allez échouer. Tous ceux qui ont commencé à programmer ont commencé avec des trucs faciles et ont pensé que c'était vraiment facile. Cette croyance sera probablement maintenue tout au long de leur expérience d'apprentissage. Vous ne réalisez jamais à quel point c'est compliqué jusqu'à ce que vous regardiez en arrière ou que vous regardiez quelqu'un se débattre avec quelque chose que vous trouvez très basique.
hasen
Désolé, par la liste ci-dessus sont des compétences essentielles que vous utiliserez en tant que programmeur. Je pense que vous avez été effrayé par leurs noms, plutôt que par les questions qui pourraient leur appartenir. Ce n'est pas comme si on vous demandait des concepts complexes utilisés en programmation. En d'autres termes, les tests d'aptitudes n'ont rien à voir avec la façon dont vous comprenez les concepts de programmation que vous pouvez apprendre, il s'agit d' aptitudes , donc le commentaire sur "commencer avec des trucs faciles" n'est pas vraiment pertinent ici
Dan McGrath
7

Il y a une chance qu'il y en ait déjà un bon.

Voir par exemple la discussion sur la séparation des moutons programmés des chèvres non programmées :

Tous les professeurs de programmation trouvent que leurs résultats affichent une «double bosse». C'est comme s'il y avait deux populations: celles qui peuvent [programmer] et celles qui ne peuvent pas [programmer], chacune avec sa propre courbe en cloche indépendante. Presque toutes les recherches sur la programmation de l'enseignement et de l'apprentissage se sont concentrées sur l'enseignement: changer la langue, changer le domaine d'application, utiliser un IDE et travailler sur la motivation. Rien de tout cela ne fonctionne, et la double bosse persiste. Nous avons un test qui sélectionne la population qui peut programmer, avant le début du cours. On peut séparer la double bosse. Vous ne croyez probablement pas cela, mais vous le ferez après avoir entendu le discours. Nous ne savons pas exactement comment / pourquoi cela fonctionne, mais nous avons de bonnes théories.

Ce que le test identifie, c'est à quel point les gens sont cohérents avec l'opérationnalisation d'une séquence d'instructions. Cela signifie qu'ils peuvent construire des modèles (abstractions) dans leur esprit et travailler avec eux.

Macneil
la source
2

Je pense qu'un "test" plus important serait de leur montrer un langage / environnement de programmation simple avec lequel ils peuvent jouer. Par exemple, traitement ou python . S'ils peuvent apprendre et apprécier l'utilisation d'une telle langue - peut-être en résolvant une tâche simple ou deux - alors c'est probablement le meilleur "test d'aptitude" que vous pourriez demander.

Justin Ethier
la source
2

"Aimes-tu les maths?" n'est pas un mauvais début. Les mathématiques sont essentielles, après cela ...

Il est conseillé de voir s'ils peuvent prendre un problème et commencer à le décomposer en blocs, juste dans la parole, s'ils peuvent parcourir pas à pas un problème de base est un bon début initial.

  • Comment diriez-vous à un robot comment faire une tasse de thé? Soyez aussi spécifique que possible.
  • Commander un repas chez McDonalds, quelles étapes sont impliquées dans le traitement de la commande, à partir du moment où on le dit au changement / nourriture.
  • Comment fonctionne le système téléphonique?

S'ils peuvent bien y répondre, de la manière analytique et approfondie qu'un programmeur doit jour après jour, ils peuvent probablement y faire face.

Orbling
la source
1

Une fois que vous êtes exposé au codage, vous avez soit la contrainte de le faire, soit vous n'en avez pas. L'aptitude n'est qu'un facteur pour savoir si vous serez bon dans ce domaine. L'exposition à de bons exemples, l'instruction, le temps consacré à la tâche, l'effort sont d'autres. Vraiment vouloir / devoir faire quelque chose, il est beaucoup plus facile de tirer parti des autres facteurs.

JeffO
la source
1

Une meilleure question que «Aimez-vous les mathématiques» est-elle «Aimez-vous résoudre des énigmes logiques»? Ce sont des choses comme Sudoku, etc., ou trouver la réponse à des énigmes telles que "John, Anne, Peter, Mary et Brittany sont des voisins. John a une voiture blanche, Brittany vit à gauche d'Anne, bla bla, dans quel ordre à vivre? "

Parce que c'est ça la programmation: un énorme puzzle logique.

Lennart Regebro
la source
1
J'aime (un peu) les maths, mais les énigmes ne sont que des coups de poing inutiles contre les murs. Je pense que vous avez besoin de motivation pour créer quelque chose d'utile - par opposition à la gymnastique mentale dans le but de montrer à quel point vous êtes intelligent.
Omega Centauri
Eh bien, tu n'as pas besoin de l'aimer, sois juste bon. :-)
Lennart Regebro
1

Je pense qu'une meilleure question est "Aimez-vous construire des choses avec des blocs lego?"

davidk01
la source
1

Tout comme le Gusteau, un personnage du film Ratatouille a déclaré:

Tout le monde peut cuisiner.

De la même manière, tout le monde peut programmer. Mais, tout le monde ne sera pas bon dans ce domaine. La plupart des emplois de programmation nécessitent un niveau moyen d'aptitudes et de compétences.

Répondez simplement oui. Pourquoi? Parce que la plupart des gens veulent juste se sentir appréciés par quelqu'un qu'ils pensent intelligent.

Pablo
la source
2
Je ne suis pas du tout d'accord que tout le monde puisse programmer. Ça craint, mais c'est la vie.
uman
0

Je pense que aimer les mathématiques est important. Ce n'est pas du point de vue que vous appréciez les choses rigoureusement prouvées, qui seraient nécessaires pour être un mathématicien sérieux. Mais, étant donné un problème qui vous tient à cœur, pouvez-vous formuler les problèmes liés à sa résolution de manière mathématique. Je prétends que tout ce qu'un ordinateur fait est mathématique, il prend des données symboliques d'une certaine sorte et effectue une sorte d'opération dessus. C'est l'essence des mathématiques. Vous devez donc être en mesure d'abstraire les choses en une sorte de structure mathématique, et de raisonner sur les étapes à venir. À défaut, vous piratez simplement, jetez du code et espérez qu'il fasse ce que vous voulez. Être capable de résoudre une algèbre compliquée sans faire de fautes de frappe et de se perdre, n'est probablement pas si nécessaire. Mais pouvoir formuler un plan, c'est important. J'écris souvent des programmes de dix lignes pour vérifier que mes mathématiques pas trop compliquées ont été correctes. Combiner les ordinateurs avec les mathématiques, à des fins de vérification, de découverte et oui pour déterminer les détails, quand ils sont nombreux, est la vraie clé.

Omega Centauri
la source