程序员能力测验


14

我有很多朋友看到我在做什么,觉得很有趣,然后问我一个问题

Do you think I could be a programmer?

我的回应是

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

我想提供一个有帮助的答复,所以我不知道是否有人对从方格开始的人进行了相当不错的能力测验,但具有批判性思维和解决问题的能力?


我建议BuzzFizz:给定三个不同的可执行文件,它们可以运行它们并确定哪个是“ FizzBu​​zz”吗?
Macneil 2010年

15
不要将数学和编程混在一起。我从事程序员工作多年。我讨厌数学。另一个例子:Jeff Atwood是一位优秀的程序员。他讨厌数学(请参阅encodinghorror.com/blog/2007/01/…,第3点)。
阿森尼·穆尔琴科

2
@MainMa我不能强调这是多么的真实。我在精确的同一条船上。在这方面,数学从来不是我的激情,甚至不是强项。话虽如此,许多认识我的人都会证明我在编程方面的极端才能(阅读:痴迷)。数学可能是编程的主要部分,但不一定会生出另一个。
内森·泰勒

1
也许当我说“你喜欢数学吗?”时,我的意思是说“你尊重数学吗?”,我实际上是在手工吸吮数学,这就是为什么我喜欢让计算机替我做数学,但是我尊重并了解数学的有限原理,我相信这对我的逻辑思维过程会有所帮助。
jondavidjohn

2
在这种情况下,“ appapp”是一个非常酷的错字:-)
Ferruccio

Answers:


12

“喜欢数学”是一个不好的考验。我从不喜欢数学(主要是因为90%的高中数学老师很烂)。

当您说“数学”时,大多数人认为您的意思是“根据一组非常严格的规则仔细求解方程式”。编程根本不是那样。

编程更像是绘图,因为您只能实现可以想象得到的结果。

重要的是想象系统并查看其工作方式的能力。

  • 您认为事情如何运作吗?
  • 您是否在考虑改善日常事物的方法?
  • 您能否形象化如何从更简单的构建块中构建出东西?

它更像几何吗?
古尔山(Gulshan)2010年

这是一门应用科学,因此它本身并没有真正的“等效”科学。
jondavidjohn

1
编程更像是木工,您首先要可视化解决方案,选择工具,然后使用最好的TDD木材小心地应用工艺。如果Commodore 64是较早发明的,耶稣将是一名程序员。
威尔

2
实际上,您所描述的听起来很像数学-而不是数学学校所采用的方法。
uman

1
@Brennan:我发现唯一与编程相似的数学是大学的离散数学。我们研究的大多数其他数学都是无意识地应用规则和公式来求解某种方程式。您可以辩解说这不是真正的数学,但对本次讨论无关紧要。
哈森

8

我记得小时候做的Brainbench能力测验 ; 我仍然将证书存储在某个地方...

测试大纲:

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

1
那是一个非常复杂的测试。如果有人告诉我在进行编程之前要进行测试,那我会被吓到的。好的,也许我不在乎,但是认真对待考试的任何人都会被吓跑。
哈森

2
所以?编程可能是一个复杂的领域(可能与其他领域一样)。如果您很容易被吓到,那可能不适合您。想象一下,如果您被问到是否有人想当医生,那么他们应该擅长什么?我认为您不会担心会吓到一些人...生活艰难而复杂,他们应该习惯了。
丹·麦克格拉斯

2
好吧,这是一个复杂的领域,如果您直面它,将会失败。每个开始编程的人都从简单的东西开始,并认为这真的很简单。这种信念很可能会在他们的学习经历中得以保持。直到您回头看,或者看着某人为您发现非常基本的东西而苦苦挣扎,您才意识到它有多复杂。
hasen 2010年

抱歉,通过以上列表,您将成为程序员必不可少的技能。我认为您对他们的名字感到恐惧,而不是害怕他们提出的问题。它不喜欢问您编程中使用的任何复杂概念。换句话说,性向测验都无关,与你了解多少编程,你可以学习的概念,它是关于资质,所以关于“开始简单的东西”的评论是不是真的与此有关
达恩·麦格拉斯

7

有可能已经有一个好人了。

例如,参见有关将编程绵羊与非编程山羊分离的讨论:

所有程序设计老师都发现他们的结果显示出“双重驼峰”。好像有两个种群:可以[编程]的人群和不能[编程]的人群,每个人群都有自己独立的钟形曲线。几乎所有对编程教学的研究都集中在教学上:更改语言,更改应用领域,使用IDE并进行激励。它们都不起作用,并且双峰仍然存在。在课程开始之前,我们进行了一项测试,挑选出可以编程的人群。我们可以分开双峰。您可能不相信这一点,但是您会在听完演讲后再说。我们不知道确切如何/为什么运行,但是我们有一些很好的理论。

该测试确定的是人们在执行一系列指令方面的一致性。这意味着他们可以在自己的思想中建立模型(摘要)并与他们合作。


2

我认为一个更重要的“测试”将是向他们展示他们可以使用的简单编程语言/环境。例如,processingpython。如果他们可以学习和享受使用这种语言的乐趣-也许同时解决一两个简单的任务-那可能就是您可能要求的最佳“能力测试”。


2

“你喜欢数学吗?” 不错的开始。数学很重要,在那之后...

明智的做法是,看看他们是否可以解决问题,并开始将其分解为障碍,只是在言语上,是否可以逐步解决基本问题。

  • 您将如何告诉机器人如何泡茶?要尽可能具体。
  • 在麦当劳点餐,从最初被告知到提供零钱/食物,整个过程涉及到哪些步骤。
  • 电话系统如何工作?

如果他们能够以程序员日常所需的分析和深入的方式很好地回答问题,那么他们很可能可以处理。


1

接触编码后,您要么会强迫这样做,要么就不会这么做。能力是您是否会擅长的一个因素。接触好榜样,指导,工作时间,努力是其他。真正想要/需要做某事使利用其他因素变得容易得多。


1

比“您喜欢数学”更好的问题是“您喜欢解决逻辑难题”吗?例如Sudoku等,或找出难题的答案,例如“ John,Anne,Peter,Mary和Brittany是邻居。John有一辆白色轿车,Brittany住在Anne,blah blah的左边,按顺序他们活着吗?”

因为那就是编程的意义:一个巨大的逻辑难题。


1
我(有点)喜欢数学,但难题只是不必要地将脑袋撞在墙上。我认为您需要动力来创造一些有用的东西,而不是为了炫耀自己的才智而与心理体操相对。
欧米茄半人马座

好吧,好的,您不需要喜欢它,只是擅长于此。:-)
Lennart Regebro'1

1

我认为一个更好的问题是“您喜欢用乐高积木建造东西吗?”


1

就像古斯托一样,电影《料理鼠王》中的角色说:

任何人都可以做饭。

同样,任何人都可以编程。但是,并不是每个人都擅长于此。大多数编程工作需要平均水平的才能和能力。

只要回答是。为什么?因为大多数人只想被自己认为很聪明的人欣赏。


2
我非常不同意任何人都可以编程。很烂,但这就是生活。
uman

0

我认为喜欢的数学很重要。从您的角度来看,您不是喜欢严格验证的东西,而这是认真的数学家所必需的。但是,考虑到对您来说很重要的问题,您可以用数学方式解决解决该问题所涉及的问题吗?我声称,计算机所做的一切都是数学,它需要某种符号数据,并对其执行某种运算。那是数学的本质。这样一来,您就可以将事物抽象为某种类似数学的结构,并就下一步的原因进行推理。缺少这一点,您只是在破解,抛出一些代码,并希望它能够完成您想要的工作。可能并不需要那么复杂的代数而又不会造成拼写错误和迷路。但是能够制定计划很重要。我经常编写十行程序来验证我不太复杂的数学是否正确。真正的关键是将计算机与数学结合起来,以进行验证,发现和确定详细信息(是的话)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.