我如何成为一个更加自治和自给自足的程序员?[关闭]


13

阻碍我成为杰出开发者的最大因素是我对他人的依赖。我觉得我问了太多问题,因为我担心破坏一切并使所有人退缩的后果。因此,我对提出这么多问题持谨慎态度,以至于在问了很多问题之后我基本上就能得到答案。我已经意识到这很糟糕,但我想阻止它。部分原因是有时我根本不了解代码(这是我从未使用过的分支,还是它是全新的产品),但我想减少对其他人的依赖。首先,这些问题不是关于通用模式或语言的问题:通常,我的问题围绕我们在公司中如何进行编码以及如何使事物在我们的生态系统中工作而围绕。我希望能够随身携带规格,而不必觉得我需要在每一步获得帮助。这正常吗?您是否经历过这个过程,如果是这样,您是如何克服它的?


1
也许这只是文化/语言问题……但是,什么使您认为自己将成为杰出的开发人员?是什么让您比99%的其他新开发者好得多?
Stephen C

5
我现在不是一个,但我想成为。我一直努力学习和改进。大多数人甚至害怕承认自己有问题。我想发现我的问题,承认他们并解决它们。任何领域的佼佼者都在努力不断改进,我的目标是做到这一点。
acconrad

Answers:


24

我看到一些新的开发人员开始工作,并立即感到不足。我在职业生涯的早期就做了同样的事情。我认为大多数聪明人至少需要克服两个主要问题:时间感知和他们自身的天赋。

时间感知
聪明的人习惯于相对快速地解决问题。我记得当我不得不花一个小时解决一个微积分问题时感到非常吃惊。花60分钟解决一个问题已不再是问题。那些日子结束了...埋葬他们并说再见。当今大多数软件的复杂性和大小令人难以置信。人们不再了解完成任务所必须使用的所有工具。Douglas Crockford说,JavaScript语言的关键人物之一,

"Misapplication of standard tools...is the new standard."

世界上没有足够的时间来学习所有开发工具。

天生的能力首先,
您的才智,解决问题的能力和天生的技能将您带入了整个开发人员的行列。在这个领域没有什么余地。因此,您如何处理十万行几乎不知道的代码,语言和框架,人们向您推销的设计模式和范例,知道大部分内容的人(如手背),昨天想要的客户以及老板谁期望你的世界?当您的自然能力失败时,请大吃一惊。

是的,那很正常。我仍然对那些扔给我的东西有些反感。

该怎么办?

是时候通过良好的老式努力来提高那些天生的能力了。将问题分解为更小的部分。并意识到,与您过去可能做过的许多事情不同,这些问题确实需要大量时间才能解决。因此,在检查了一个复杂问题后仅15分钟就不要放弃。相反,请解决问题并停止计时。一段时间后,解决问题实际上要花费30分钟。

自信在自我管理能力中起着重要作用。团队,尤其是经验丰富的前辈也是如此。最好不要破坏事物,但这并不意味着您需要不断提出问题。

而是,使用源代码管理。只要您不签入更改,就不会破坏主要产品并使其他开发人员生气。另外,请进行一些您可以理解和测试的更改,并确保在签入之前进行正确的测试。

我什至有一个小的测试项目,可用来编写一次性的简单程序,因此我不必担心主应用程序中的所有操作。

最后,请记住,每个决定都带有一定程度的让与取。没有做出某种程度的牺牲就没有前进。不要为追求完美而努力,要为出色而努力,并注意自己的行为。因为您总是需要准备接受批评并解释您的想法以及您为什么提出它们。为您所做的决定感到自豪。即使他们错了,也有很多东西要学。


2
为此+1,直到您放弃为止。我有时花了2-3天的时间来解决一个问题。至于破坏:尝试TDD,或至少编写单元测试。
ashes999 2011年

12

第一件事就是不要害怕问问题。我什至看到高级架构师都在问有关代码的问题。他们不应该知道一切。他们应该了解足够的知识来完成工作,并能够弄清其余的事情。

最好的策略可能是:

  • 了解如何在Google上进行研究。通过一些调查工作,您几乎可以找到所有问题的答案。Stack Overflow为那些难以解决的问题创造了奇迹。
  • 了解如何调试。我花了几个小时进入古怪,深入的企业代码,才发现变量X是3而不是7。能够读取代码和调试信息可能是实现自治的唯一最佳方法。

并不是说我是一朵特殊的花,但我的问题不在语言上。这与如何用我的语言做事无关。我的大部分问题都是以公司为中心的:关于如何在工作场所中特定于我们环境的领域中做事。如果可以的话,它们就是您无法使用Google的东西。
acconrad 2011年

3
我完全理解;我在同样的情况下呆了三年。第2点是答案:学会调试。人们不经常记住细节。调试是关键。
ashes999 2011年

1
我同意。不断提出问题,直到您比周围的人知道更多的答案为止。继续下去,与质量检查小组联系,直到您发现并修复错误为止。Google是您的专家伙伴;广泛使用他。有一天,您会发现自己发送了一封有疑问的电子邮件,并在回复返回之前自己找到了答案。
安迪·坎菲尔德

5

不要害怕问“大局”问题

我曾经试图找到我可能提出的最微小的问题,但仍然能够继续进行我的工作,因为担心如果我问其他人似乎都知道答案的广泛问题,我将被认为是无能的。我不明白无知和无能之间的区别。无知只是意味着你还没有学到什么,只要它不持久就可以接受。假装不懂事会更糟。

如果您发现人们的答案仅能带您走那么远,您需要请他们教您钓鱼,而不是再给您另一条鱼。询问您的部分如何与整体融合。如果您的问题看起来像“无论如何是SQL”一样基本,请早点询问。您现在可能看起来有些愚蠢,但是以后会显得更加愚蠢。

给自己一个等待期

提出问题后,请不要立即提出问题。根据复杂性,半小时到一天不停地尝试自己解决问题。很多时候您会自己解决。如果没有,您将能够告诉您的同事什么不起作用,这可以帮助他给您一个更好的答案。

另外,如果您的同事不知道答案,请注意他是如何到达的。很多时候,您并不需要您想像的那么多帮助。如果我没有时间问问题,我经常会指出一个模糊的方向,告诉他们我一分钟后会跟进,他们通常会在我到达时解决。

丢掉一些草稿

坐下来,放下脑海里的一切,然后就当作家了。但是,一位作家可以毫不怜悯地判断自己的东西的价值,并摧毁其中的大部分。
-西多妮·加布里埃尔·科莱特

不要害怕编写永远不会发布的代码。您获得的经验越多,您就能越早告诉您走错了路,但是走错路仍然会发生。在很多情况下,直到您首先看到解决方案的错误之处,它的价值才显而易见。


1

自给自足

  • 在该领域的经验和曝光度增加。
  • 增加观察技巧和分析技巧,以理解现有系统及其行为,依赖性。

经常问问题可能会导致您缺乏这两个方面。

如果您更改域,技术,平台,语言,您将回到第一位(几乎不算您增加了解决类似问题和可转让知识的能力)

在真正需要的时候不问问题会浪费很多宝贵的生产时间。

如果您做错了,可能会对您可能造成的损害程度的假设一言不发,这对您有利。或者您认为可能会打破的结果无法对您的假设进行实际评估。很多时候,它可能会让您发现错过的点和角度。

谨慎是好事,但是最好的办法是开始确定问题的本质。最好是将其写下来并检查其难度/价值。

  1. 您可以通过google /论坛还是通过更长时间的研究来解决?
  2. 如果您搞砸了,可以不用花很多钱就可以摆脱或修复它吗?

0

我会说要看一下您正在做的事情,然后开始自己做决定(当然要遵守应用程序规范)。到目前为止,您应该对什么是深远的变化和什么是简单的变化有很好的感觉。从简单的开始。如果您认为自己所做的是正确的,那就去做。

犯错误,而这些错误是无价的。当他们发生时,您可以从他们那里学到一切,因为它们会让您下次做得更好。

一旦您对较小的决定感到满意,就可以开始做出较大的决定。您将需要根据您的项目/环境/团队来决定要走多远。

那是决策方面。您需要做的另一件事是保持大脑活动,以帮助指导您的决策。关注涵盖您技术的网站。在线教程几乎涵盖了从简单到奇异复杂的所有内容。不要害怕问人们为什么要做出某些决定-作为寻求信息的人,不要与人对抗。大多数人非常乐于解释事物,您可以从中学到很多东西。

一旦掌握了技术知识,剩下的就是智慧和信心,而这些都是经验带来的。


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.