您何时不向经验不足的程序员提供帮助?[关闭]


57

当初级程序员需要帮助以始终加入并尝试对其进行培训时,您认为这是一个好主意吗?还是他们会忽略您给他们的所有“教鱼”建议,而只关注您刚给他们带来的“鱼”?知道错误是最好的学习方法,您是否让他们总是自己解决问题?还是您担心他们会变得如此沮丧和沮丧,以至于他们失去了加快速度的渴望?

您何时选择何时帮助比您更初级的人,何时退缩并让他们从错误中吸取教训?


5
+1。很好的问题。用勺子喂食对任何人都没有帮助,但是让某人挣扎也是一大失败。
史蒂夫

1
不要忘记,有时不能自己独自做事,有时会遇到问题或错误,需要一个崭新的头脑来解决。顺便说一句,如果他们失去了付出更多努力的欲望,那也许他们就不应该受到教育。你不能用勺子喂大脑,那永远都行不通。我经常问一个问题,我的老师有很多原因无法回答:出于某种原因,我总是有一种饥饿的好奇心,这使我无法做很多事情,直到我了解很多为止。提防那些学生,他们不仅会浪费您的时间,还会浪费您的时间。从好的方面来说,我更清醒了……
jokoon 2011年

1
不要写他们的代码。给他们看看。给他们建议(如果他们想听)。
卡米尔·汤姆斯克(KamilTomšík)2011年

Answers:


51

在我的一份工作中,我既在学习又在教书(因​​为我当然不知道所有事情,但是我不仅仅知道一些)

不要不惜一切代价将手放在键盘上。这让您和您正在教的人都感到沮丧。即使您给出了逐步的说明,当您把手放在键盘上时,也等同于给他们一段代码并说“这可以解决问题”。

据我了解:

  • 不要为他们输入代码
  • 尝试在他们的水平上讲课(如果他们理解语法,请不要向他们解释。这只会使他们感到厌烦;而是讲授所使用的类/函数)
  • 不要忽略它们,也不要说“自行设计”。您最终将得到的结果是它们稍后出现,除了现在他们遇到问题的3行代码,现在是分布在8个文件中的50行试图解决该问题。
  • 教他们自己学习。最好的方法之一是告诉他们使用stackoverflow。如果他们问我,有时我什至知道答案。我会说“好吧,我将在stackoverflow上问这个问题”。我会给他们一个问题的链接。休息一下,看看一些不同的代码。当他们回来问“那么我该如何解决这个问题”时,只需告诉他们在SO上查找他们的问题(使用您提供给他们的URL)。我发现群众通常比我更好。
  • 当他们从Internet复制并粘贴代码并询问为什么行不通时,请他们解释每一行的作用。如果不能,请告诉他们研究使用的功能/类。如果需要,请提供有关类和功能的说明
  • 进行代码审查以确保他们正在解决问题,而不仅仅是解决它以便以后出现。
  • 对人好点。当某人刚开始在您的代码库中没有文档时,不要仅仅告诉他们阅读源代码。给出有关功能的概括性高级概述。或者,更好的是,开始编写文档:)
  • 要谦虚。不要理会这个问题。如果您不知道,请说不,帮助他们进行查找。很多时候,仅了解域就足以知道要搜索哪些关键字就足以为您提供帮助。

9
我要在其中添加“不要为他们输入代码”的+1:操纵他们的键盘,以便按Ctrl-V会产生电击,其力与剪贴板中的行数成正比。:)
Ingo

哇。我没想到会得到这么多的支持哈哈
Earlz 2011年

2
我猜这是最重要的事情:“很多时候,仅了解域名就足以知道要搜索哪些关键字就足以为您提供帮助。” -曾在这里(大三)
JCasso 2011年

“绝对要教他们学习。”
Steven Mou

+1用于SO。除了获得各种意见之外,答案还会记录下来,以备日后查阅。我发现并不是每个人都保留解决方案的知识。
克里斯

27

苏格拉底式的方法,即问他们一些使他们朝着积极方向思考的问题

[即使您不知道问题出在什么地方,这也很有用,更不用说解决方案了]


3
+1提问。令人惊讶的是,这是一种了不起的教学方式。我不记得这篇文章在哪儿了,但是在某个地方,一位老师只问了一个问题,就教给一群一年级生二进制加法和减法。
Earlz 2011年

-1表示未直接回答问题... +100表示对指导的潜在问题的出色答案:-)...
Newtopian 2011年

@Earlz,如果找到它,请添加链接。


22

我学会了帮助他们设计架构师并在那里停下来。选择正确的工具,为一个或两个复杂的问题制定总体设计,然后由他们来解决。如果他们回来寻求建议,请一小段给他们。如果他们不这样做,那就让他们成为。

对于“被烧毁和沮丧”,您是完全正确的。如果您进行微管理或自选,它们就是您想要的。最后,与您的同事建立友好的工作关系将大有帮助。获得信任和相互尊重所花费的时间将为其自身付出10倍以上的回报。


1
另一方面,我曾经和一个懒惰的人一起工作,以至于每次他们需要记住API的参数时,他们都会问我,而不是自己查找。让我发疯:如果他们愿意,他们可以像其他任何人一样查找memcpy。在那些日子里,我们印刷了手册页的副本。我最后把书交给了我,说:“因为克里斯基克自己看一下!”
quick_now 2011年

1
@快速,或“有时间的时候我会帮助您解决这个简单的事情”,然后再回头...以后...!

10

当我真的需要快速完成工作,很明显他们已经撞墙时以及期望他们在没有帮助的情况下解决问题显然不合理时,我会为他们提供帮助。但是,如果他们没有花时间在某事上,那么最好先尝试一下。

就以“鱼”而不是“以鱼为食”而言,做到这一点的最佳方法是不为人们解决人们的问题。给他们一些想法,让他们接受它。如果他们使用它,但失败了,那么请帮助他们更多。如果他们成功了,那就更好了。


6

如果他们是一个优秀的程序员,他们应该找到一种方法自己完成任务。现在,在某种情况下,几乎不可能找到信息或解决给定问题的方法,只要在合理的范围内伸出援手,似乎就在合理的范围内。不要用勺子喂他们答案。

举例来说,我今年18岁,已经独自学习多年,并且编写了一些疯狂的东西,包括我自己的编译器,并且我自学成才。我只会在我真正坚持的事情上寻求帮助(因为我一直在搜索和试验至少一天,但无济于事)。我还想提供一个反例:在编程课上,我曾经有一个学生要求我调试他甚至没有编译过的代码!

本质上,一个好的程序员,甚至是初级的程序员,也应该能够对大多数问题进行实验和研究。


9
在工作开始时就给人们一些想法,即使他们是高级人才,也通常会极大地提高生产力。以我的经验,在商业环境中,最好是在一两个小时后而不是一两天之后寻求帮助,因为一个人的八个小时的时间对于别人可能已经知道答案的问题来说是太多了。
jprete 2011年

5
但是请记住,是您的客户为您付出了时间!他们会为您花一天时间研究解决方案而感到满意吗?这可以通过询问高级开发人员在15分钟内解决?
亚当·哈特

3
我想在商业环境中,您需要相应地分配时间。一天不会削减。但是,我仍然认为,随着自己的问题解决能力的提高,自己解决问题将使您受益。最后,您可以现在或以后付款。

1
@Adam,问题是应该问高级开发人员还是问自己。毕竟这是一个学习过程。

3

我会指导,但如果他们要我为他们做他们的工作,我就走开了。通常,仅提供一些有关如何解决问题的建议,或者重新编写任务说明的措辞可能会很长的路要走。即使只是告诉他们他们应该在Google中使用的单词也可以提供足够的帮助。最多2分钟。


3

我最近开始使用番茄技术。结果,如果我在不中断我当前任务的思路的情况下不能回答问题,我就开始问我是否可以将答案推迟到番茄时间结束之前,平均要延迟15分钟左右。我发现的一个有趣的副作用是,当我坐在他们的办公桌旁回答问题时,他们通常已经自己解决了这个问题。如果他们还没有的话,那我将更加准备全力以赴。

这不是学校 如果您迅速提供一个事实,他们最终可以自己找到,这不是欺骗。相反,节省他们的时间在商业上是有意义的,根据我的经验,与导师相比,通过反复尝试可以使您在正确的方向上经常进行一些小的推动,而技能的提高却很少。我希望他们在我的帮助下学习10种正确的方法来做事情,而不是9种错误的方法以及一种对自己的方法。

如果可以轻松查找某些内容,请教他们如何做。另一方面,如果您只能从经验中了解到这些信息,例如要研究哪些文件中的某些Bug症状,那么我给出一个无法解释的答案绝对没有错。

相反,更主观的事物(例如体系结构指导)应始终伴随其背后的推理。一方面,初级开发人员对他们的特定任务的思考比您要深入得多。进行交谈可以确保您不会得出结论。另一方面,它可以防止他们将规则不适用于将来可能不适用的情况。

我只能想到一个案例,我彻底拒绝继续帮助同事,那是在花了几个小时多次解释某些内容并经过几个示例之后,在此之后她实际上仍然不知道要输入的下一个语句一些非常重要的提示。那时,如果不认真学习基本面,她几乎没有希望继续她的工作,而且可以肯定的是,她只维持了几个月。


1

当他们第三次回答相同的问题时,我便不再提供帮助。

我告诉他们我很乐意为他们提供帮助,但前提是他们必须先帮助自己。他们从那里要么去另一个池塘钓鱼,以获取免费食物,在这种情况下,他们通常会在不久后被解雇。或者他们努力工作,当他们回来获得更多奖励时就中奖了……更多的东西要学习而不是更多!


1

我认为上下文很重要。

如果我们要处理重要的生产支持问题,而响应时间很重要,那么我实际上会提供很多帮助以及很多解释,以便他们可以了解问题。

如果截止日期不太敏感,那么复杂性将成为驱动力。当然,您可以通过分配技能水平的适当任务来帮助新手,但是如果通过研究可以解决问题,那么我同意其他指导者的意见,即在没有给出确切答案的情况下指导他们是一个好方法。

如果他们问的问题很容易找到其他地方的答案,那么我会引导他们去做自己的工作。沿着这些思路,如果有一个非常死记硬背的过程或解决方案,让它们成为奴隶并没有什么价值,那么如果您没有方便他们检查的Wiki,那么您将感到羞耻。

当涉及到将定制知识转移到企业时,我不会说碎话。尽快讲清楚。新手需要它来帮助以后的所有事情。对业务的了解不会太快或太容易。我曾经有一个老板玩了一个小时的各种花招,试图让我找到答案。我是全新用户,对应用程序或业务一无所知,并且正在处理生产支持问题。我想尖叫:“您为什么&#@ $!玩#@&(* $%!游戏?试图拿出发票的用户正在等待答案!”


1

我认为您在帮助他们之前首先要问他们的问题是您是否对此进行了调查?如果是,请问他们发现了什么,并指出正确的方向。调查它通常被低估,但这是我所学到的最佳实践之一,查找有关您需要的信息可以使您自行学习,也很清楚他们必须首先尝试。

如果问题更复杂,请不要告诉他们该怎么做,而要分享一些想法,请问他们如何认为他们可以解决问题。

如果他们没有任何线索,请尝试将其分解为一个非常基本的层次,即您没有给出所有细节,而是充分描述了解决方案以供他们尝试,有一些非常有用的工具,例如算法流程图

总而言之,尝试在不干扰学习过程的情况下为他们提供指导,始终帮助他们,使他们在完成每个任务时都依赖于您,这将花费您的时间并且适得其反。


1

我避免在简单的事情上有所帮助,例如他们应该知道的语法;或者如果他们不知道他们应该能够自己理解。如果它更复杂,我不介意解释一次。

当涉及到诸如解释流程或我们组织/项目的编码标准之类的事情时,我使用三击规则。我真的认为,如果一个人必须被解释三遍,那他就是la子。实际上,这也是我们评估的标准之一。

学习者有很多事情要做。我希望他们自己拿些东西。如果他们提出:“我遇到了这个问题,我尝试了A,B和C方法,但无法解决问题”,我将为他们提供帮助。如果他们只是想出“我正面临这个问题”而又没有做任何事情,我会请他们回到书本上寻找解决方案。


1

作为我自己的新手程序员(在我目前的工作中大约使用Perl和SQL大约有9个月,并且不了解Perl,并且b)在此工作之前花了几个月的时间修改SQL),在询问编程问题时,我尝试展示到目前为止,我所做的事情,或者在某些情况下无法正常工作(并且难以调试)的情况下,我认为可能是错误所在。在可能的情况下,我一直在尝试学习钓鱼。


1

在以下情况下,我将停止帮助:

  • 如果我习惯于引导Google / Stack
  • 如果我提供了足够的文档和注释,并且它们正在缩短RTFM阶段
  • 如果他们是肮脏的,没有评论,“我现在就破解,稍后再回来” &&£>!$

如果我没有提供足够的文档,或者他们使用的是我编写的工具/类,那么我有责任帮助他们

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.