在之前的一次采访中,我被问到一个问题:'从0到10,你如何评价自己是程序员?'
我发现这是一个非常难以回答的问题,因为我不知道衡量我的技能有多好的指标。此外,了解您的表现如何有助于理解您需要改进哪些才能成为更好的程序员。
那么有没有办法知道你的工作有多好?
答案 0 :(得分:59)
打电话给您以前的雇主,并与继承您所有旧代码的人交谈。他们会告诉你程序员有多好。 ;)
答案 1 :(得分:16)
这是个难题。从纯粹内省的角度来看,我认为“良好的程序员”的最佳指标之一就是:你喜欢自己的手艺多少?我遇到了很多开发人员,其中一些非常好,但我从来都不认识任何人谁是一个9-5开发人员并且管理得比平庸的结果更好。
当然,向内看并不是衡量胜任力的最佳方式。我认为你的同事程序员能够给你一个相当可靠的答案。在描述这样一个问题时涉及社交礼仪,但潜力仍然存在。根据我的经验,与你合作的人将会对你的表现有最好的理解,只要因为他们是那些如果你犯了错误就必须清理乱七八糟的人。 : - )
最后的花絮:编程解决问题,纯粹而简单。想想你如何解决困难问题。首先,您如何在艰难的挑战中做出情绪反应?第二,你的代码会是什么样子?你是否只是盲目地穿越丛林,直到你得到一些类型的结果,或者你的方法是否有条不紊,测量良好且(最重要的是)进行了大量研究?真正优秀的程序员不是那些知道一切或者能够用八种语言实现Dijkstra算法的人,他们是那些花费数小时时间倾注在教科书和模糊博客上的人,以找到这样一个想法的微小金块。对手头的问题至关重要。如果你有耐心和热情通过深刻的挑战,以及谦虚地寻找他人的想法,那么你就可以顺利通往“10”。
答案 2 :(得分:16)
10 - 你不知道你什么都不知道。
9 - 你只是吹牛,你可能没有你想象的那么好。即使你真的很好,你也缺乏政治技巧,无法看出选择“9”的人对你说的是什么。那个,或者你在业界非常有名/崇拜(即你曾经写过一本书,它有一个绰号,如“______ Book”或大多数开发人员会立刻认出的缩写),并且不怕扔你的名字。 8 - 你真好,而且你知道,但是你很聪明地意识到挑选9或10的耻辱。你最好能够支持它。7 - 你很好,但是你知道你有很多需要学习的东西。
6 - 你很有能力,有很多东西需要学习,但对你的能力不是很有信心。你确定你不是7岁吗?5 - 体面的初级开发者。你刚刚离开学校,并且足够聪明地意识到你对现实世界的编程并不了解,但你知道如何将代码整理在一起。
4 - Mediocre junior dev。你刚刚离开学校,但你的基本编码技能还有待改进。你很难通过大部分的编程课程,但出于某种原因决定你仍然希望从事软件开发的职业。你也不相信自己,所以面试官为什么要这样?
3或以下 - 如果您对编程能力缺乏信心,为什么要申请编程工作呢?
所以“正确”答案大概是5-7,这取决于你面试的工作类型。 8有足够的经验,她不会问这个问题。
答案 3 :(得分:11)
这个面试问题实际上并不是说你作为开发者有多好。这是关于你有多少自我意识,以及你(无论面试者)你提出的任何数字的合理性。
在面试中回答这个问题的正确方法(与哲学答案相反)是选择最强大的领域,并提供一些好的证据来表明你在这些特定领域的开发人员中排名前X%。
例如,您可能会说在创建可靠的软件时,您处于最高Y%,因为这是您的专长之一。然后你可以举一些例子。或者你可以说,判断发展技能的合理方法是赚多少钱。
你不应该做的是从字面上理解这个问题。这通常不是面试官想要的。
答案 4 :(得分:8)
作为采访潜在开发者的人,我会说6-8之间的任何地方都是这个问题最安全的答案。我想平均反应大约是7.我认为除掉无能(0-5)或无知(9-10)之外真的更多。如果您决定回答9岁以上,请准备好证明。
如果您真的想要为自己认真回答这个问题,我会说Programmer Competency Matrix是评级应该包含的领域的一个很好的起点。
答案 5 :(得分:7)
我认识多年来一直使用该面试问题的人。他说最优秀的程序员倾向于给自己评分为7分。特别是那些将自己评为10分的人通常对自己的能力充满信心,因为他们从未遇到一个非常优秀的程序员。但是从未见过一个人,他们会从谁那里学到任何真正的技能?当然也有例外。但如果你已经调整到社区,你可能会知道例外是谁。
顺便提一下,这种现象并不仅限于编程。我发现它在许多方面都是正确的。自我评价为10分的人通常不是很好。非常擅长X的人很好,因为他们找到了其他擅长X的人,所以他们会把自己比作一个更难对付的同龄人,而且一般不会自我评分为10.我发现这是真的对于像乒乓球或国际象棋一样远的X值。
答案 6 :(得分:5)
任何编程语言似乎都有三个级别的熟练程度:
我认为这会带你从1到1的范围。 10
值得注意的是,对一种语言的深入了解可能妨碍学习另一种语言。因为一旦你从语言'A'的角度思考,你必须重新学习你的大脑来学习语言'B'。显然,这仅适用于移动到完全不同类型的节目,例如C-> C ++,C# - > F#,Java-> Scala等...所以我认为它不可能成为一个“完美的程序员”。
答案 7 :(得分:5)
你的项目euler评级可能会给出一个想法(不是你的技能,而是你对不放弃直到最后的热情):
答案 8 :(得分:3)
一种完全有效的方法,“你会如何从1 - 10评价自己?”是指出inherent problem with self-assessment。总结那篇引人入胜的论文中的实验结果:
你可以合理地总结这一点,因为50%的自我评估是谎言而另外25%是错误的。所以,你可以选择询问面试无人机,如果他们要么在浪费你的时间,要么在心理上评估你......
答案 9 :(得分:2)
此外,了解您的表现如何有助于了解您需要改进哪些才能成为更好的程序员。
实际上,了解您需要改进的内容对于了解您的表现非常重要。只要看看与你合作或与之互动的人,并试着找出你希望自己做得更好的事情。这将慢慢帮助你成为一个更好的程序员。随着您的成长,请查看其他团队和源代码(其他开源项目),以帮助您进一步提高自己。
我认为更好的方式可能回应自我评价的问题,就是说我自己评价 x百分位和我曾经合作过的所有其他人。
答案 10 :(得分:2)
简短的回答是,你衡量自己与同龄人的关系。也就是说,找一个不知道任何事情的人并指定一个0,选择你个人认识的最好的程序员并指定一个10 - 你认为自己与这两个人相比如何?接近最好的?那将是一个8.中间?这将是一个5。
不要回答0或10并尽量保持客观。问题的关键在于不是将您评为程序员,而是评估您在自我评估中的技能。你的见解,就是这样。
答案 11 :(得分:1)
衡量优秀程序员的唯一指标是:LOC / hr。其他每个指标都是多余的:p
答案 12 :(得分:0)
定义100%的比例。
确定自己保持在100.0大关。
确定其他开发人员和知名IT人士的职位。
计算你的好多少。
答案 13 :(得分:0)
每分钟字数。
答案 14 :(得分:0)
我被问过这个问题几次。当我刚离开校队时,我说7/8。现在我已经工作了几年,我说4,尽管我觉得我现在好多了。
我不认为0-10是直线图。我把它看作指数图。所以我确定我仍然说十分之四,但我相信我比90%的编码员更好。我看到他们的一些工作,这让我感到害怕。我从事过银行软件SSL软件,实际上它很可怕。所以有10%的编码员比我更好比我好。我不确定我是否会赶上他们。在我看来,达到4很容易。更难以达到5.从5到6是令人难以置信的可怕。
值得8,9或10的伟大程序员。
答案 15 :(得分:0)
体验。您拥有的“越多越好”的经验范围越广。你只知道你经历过的事情。
您开发的系统的大小和复杂性(或在没有损坏的情况下成功运行)。
答案 16 :(得分:0)
这里非常有价值的讨论。爱它。 作为受访者,我想回答如下问题。
我想首先分析一下这个问题。
分析取决于几件事情 语言,框架,问题的本质, (我是PHP和Wordpress的家伙所以答案是在这种情况下) 1.插件补丁工作, 从头开始建设 3. api的用法
我的常用方法是(在大多数情况下) 1.理解功能的给定(或已建立)范围(相对于当前问题陈述) 2.计算解决的最好方法之一(每次肯定有不止一种方式......) 3.编码 4.实时测试场景(用于性能调整) 5.在任何程序员的初始阶段,所有四个步骤都是递归的,直到获得最终解决方案,但随着经验的增长,1 2步骤变为递归。
理解任何语言的基本哲学的能力都是imp。休息是解决问题的态度。
在PHP中,我认为我是6.5。
答案 17 :(得分:0)
您可以随时与其他程序员竞争,看看您的思维能力有多好。您可以尝试www.topcoder.com或www.spoj.pl或wwww.codechef.com等网站 他们为您提供排名,您可以看到自己的表现如何。然而,这些纯粹测试你的算法大脑,而不是你编码的方式。如果我被问到这个问题,我会说我是一个不断学习的人,并且相信制造和纠正错误,我不怕自我批评我的代码,也不会让别人指出别人指出我的错误,你可以决定它的规模。
答案 18 :(得分:0)
作为一名程序员,有很多“优点”;评估过程会根据您感兴趣的内容而有所不同。以下是一些想法:
答案 19 :(得分:0)
在我看来,这是一个很难(并且在采访的背景下甚至是 UNFAIR )的问题!到目前为止,我一直在为三家不同的公司工作。我遇到的每个地方都很少有优秀的程序员(比我好得多),很多优秀的程序员和一些程序员都应该做得更好。但是不可能将它们分为0到10个类别!
答案 20 :(得分:0)
如果你想要答案的声音字节:
当我开始专业工作时,我可能是2岁,现在我说我大约7岁,但每天我都努力达到10岁。
答案 21 :(得分:0)
我认为重要的是不要过度估计语言知识的重要性。
程序员可以拥有的最大技能是解决问题和设计方面。当你开始实际使用你选择的语言时,它几乎只是打字。 (接受您希望使用解决问题和设计技巧的一个领域是代码布局,以解决可读性和维护问题)
因此,程序员的衡量标准是他们能够将不同的想法或问题集中在一起以解决特定问题。 更多的技能可能只是增加了可以利用的知识领域。
当然,这一切都不能作为确定自己技能的指标 - 但其他人已经说过,这无论如何都是一个不可测量的问题。 : - )
答案 22 :(得分:0)
作为一名采访者,我会问这个问题,看看候选人是如何表达自己的。
另外,它显示了他们是如何自我批评以及他们为自己和同事们设定的标准。
它不仅告诉你他们对上帝/糟糕编程了解多少,它还告诉你他们与客户进行交互以提取需求的程度以及他们与团队其他成员的匹配程度。
0-10的实际排名不太重要。
答案 23 :(得分:0)
如果有人抱怨你的几个软件系统正在生产中,你的盘子上没有任何东西,这只是意味着你的系统设计得很好,编码很好,而且,与其他公司代码猴子不同,你没有一个6个月的故障单队列让你忙碌。
如果是这种情况,请拍拍自己。你做得很好。
请记住,软件在赚钱之前不会完成。