it-swarm.cn

杰出的程序员与真正的优秀程序员有什么区别?

你知道他们是谁。他们是编程的摇滚明星:

  • 他们的编码速度提高了10倍。

  • 他们的代码就可以了。

  • 他们不仅从内到外都知道他们的主要语言,而且还知道其幕后工作方式。

  • 在您提出任何问题之前,他们都知道大多数问题的答案。

  • 他们中的一些人发明了我们都使用的编程原理。

  • 而且,它们也往往在特性上显得谦虚。

这些人是什么?他们的思考过程是否与普通程序员有所不同?还是他们只是非常有才能的人而努力工作?

换句话说:我怎么能像他们?我知道我认为我需要学习成为一个好人,但是接下来的十年似乎将需要我来学习它,然后我的知识就会过时了。

59
Robert Harvey
  • 谦虚:一个杰出的程序员永远不会声称自己的代码是最好的,事实上,他们总是在寻找更好的方法(他们有很多机会。)

  • 患者:一个杰出的程序员将具有无限的耐心(这并不意味着他们会在问题上浪费几天。请参阅:疑难解答)

  • Troubleshooter:一个出色的程序员将能够在几分钟内解决问题,这对于您普通的程序员来说可能需要几天的时间。

  • 好奇:一个杰出的程序员将无法抗拒试图找出发生某些事情的原因。

  • Engineer:一个杰出的程序员将对系统进行工程设计,而不是将框架混杂在一起(这并不意味着他们不会使用框架。)

88
ChaosPandion

在最后一个要点中,您遇到了很多问题:

“而且他们也往往在特征上谦逊。”

我认为这是谦卑的结合-不仅外在,而且内在。他们接受错误,犯错,并很快从挫败感中恢复过来。许多程序员会尝试某些事情,失败,然后很快就变得非常情绪化,这是编写好的代码的厌恶状态。您必须接受自己并不完美,并且会搞砸(经常!),并且您可以做的最好的事情就是学习如何在搞砸时快速恢复。这真是谦虚confidence,就像“我知道我要搞砸了,但我也知道如果我继续努力,我最终会到达那里。”

NLP中有一句话:“没有失败,只有反馈。”要成为一名摇滚明星程序员,我认为您必须接受这一点。没有什么您不能编码。刚开始时您可能会很慢,但是如果您继续尝试并且拒绝在失败或搞砸了时停下来,那么您会成功的。在此过程中,您将学到成为最好的方法之一。

当然,建议仅与其来源一样好,所以……所有这些只是我的意见。

28
Pax Noctis

他们非常关心自己的代码。

25
JaredPar

就我个人而言,我所知道/知道的最好的程序员都了解这些基础知识,而不是任何给定语言的专家。他们只是在几乎所有方面都有足够的经验。规范的“万事通”。

它不只是基础科学,它在实际操作中的经验也具有重要的价值。例如,那些了解Unix哲学并因此可以使用给定的各种工具(他们知道在哪里知道的IOW)解决未知问题的人远远超出了Java编写线程和并行解决方案的专家)的价值。

杰出的程序员也尊重那些先于他们的人。当他们将SQL视为正式的API时,他们不讨厌关系数据模型或畏缩,也不会对FORTRAN产生数学上的印象。他们知道OO并非最终目的,最重要的是,他们了解编程是一门ART,而不是一门科学。

15
Jé Queue

当我刚开始的时候,我和那个家伙一起工作,我认为他在编程方面所做的一切都非常出色。他很可能仍然是,但现在他已升任东南亚公司的董事。

无论如何,他保持事情简单,简单的事情就起作用了。他从来不想写过多的代码行,而他所做的一切都是如此。我玩追赶了一年只是为了接近他的水平。不过,另一件事是时间。他做事情的时间比我当时久了,而且他有机会一遍又一遍地问这些确切的问题,直到他(貌似)知道所有答案。

他也不怕问任何问题。我认为那是最大的事情。

11
user2358

程序员能力矩阵

许多主题可帮助您确定编程主题的水平。

10
Maniero

我从有关德州扑克的书中学到了这个问题的答案,但是它适用于所有令人沮丧的工作。最好的编码器永远不会倾斜。继续倾斜是指某些事情无法按预期工作的时间,并且您的响应方式会在整个应用程序中造成指数错误。在锦标赛扑克中,这会使您下注失败并被淘汰。

在编程中,倾斜会使您费力并编写仅在应用程序的某些实例中有效的可笑的代码补丁。倾斜使程序员忽略了整个项目的需求,立即获得满足以解决当前的问题。通常,今天问题可以解决,但是明天应用程序就会受苦。

最好的编码人员会采用倾斜的概念,并以一种允许他们始终从外部角度查看问题的方式进行管理。如果失败,则喝一些咖啡因。

7
JMC

杰出的程序员:

  • 关心他们的代码
  • 关心使用他们的代码的用户
  • 关心将维护其代码的人员
  • 关心生产力
  • 关心过程,而不仅仅是产品

关于“ 10x”因子的两件事:

  1. 它必须端到端地应用。如果测试,返工和维护需要10倍以上的时间,那么编写代码的速度就不能快10倍。
  2. 我认为“ 10倍”因素反映了大量程序员的贫困状况,而不是少数程序员的贫困状况。
6
darreljnz

他们中的大多数看起来都是保留的,没什么特别的。其中一些看起来是超级智能的。从所有可能的角度来看,他们更喜欢两次检查/调试事物,它们的软件在世界上是没有缺陷的:p IMO有些程序员可能会比较慢,但是质量更好,即使是普通人也可以理解其软件的工作原理!

我有一个朋友,他在10岁时写了他的第一个ASM程序,现在他24岁,还没有读完大学,但这并没有阻止他创建自己的公司,赚了几百万:)但是从我的眼中他在所有方面都很灵巧:)

杰出的程序员很可能会说此代码可以用另一种更好的方式编码,而不是说它完全错误会降低其他程序员的声誉:)

“这些人到底是什么?他们的思维过程中有什么与平均水平以上的程序员根本不同的东西吗?还是他们只是非常有才华的,努力工作的人?”

我认为他们是这样出生的,它在他们的DNA里面:p我不知道他们的思考过程,但是我认识的最好的程序员患有癫痫病

3
shegy

很少有什么能使特殊与典型区别开来。

例外:

  1. 对他的工作充满热情,并努力交付杰作。

  2. 即使在编码开始之前,性能和质量仍是他们的首要目标。

  3. 他们认为每次发布后都会不断改进。

  4. 他们对替代品保持严格的警惕,并且是早期采用者。

  5. 他们在职业生涯中的主题是:“少写多传达”。

  6. 即使不进行编码,他们也会一直在思考逻辑观点。

典型值

  1. 有时有些热情,但努力交付,因为毕竟这是一项工作。如果不是杰作,那就可以了。至少准时交货。

  2. 稍后再考虑性能,反正PC现在足够快了。

  3. 仅在没有其他保存工作的选项时才进行改进。

  4. 没有时间去研究其他技术。坚持您现在的工作要求。必要时会学习其他东西。

  5. 他们的主题是:“按要求做,及时到达家中”。

3
RPK

杰出的程序员适用 Spartan Principles

引人注目的图片:

enter image description here

本文: http://willcode4beer.com/design.jsp?set=codeReduction

这句话:

任何傻瓜都会使事情变得更大,更复杂,更暴力。朝相反的方向前进需要一点天才和极大的勇气。 - 艾尔伯特爱因斯坦

2
Ates Goral

第一-他们知道面对死线会切断什么。

0
Gedean Dias

自我提升,我的意思是尽可能以最佳方式。拥有像编程这样的工作,尤其是在团队中,意味着您的个人贡献适合大背景或谁负责哪一点,现在还不是很明显。我们作为“伟大的程序员”而广为人知和了解的人是IMO,他们掌握了使自己的贡献广为人知的艺术,却没有听起来自负或以自我为中心。在许多情况下,这是通过创建我们其他人赖以挣钱的工具,库和软件来获得的。

0
Gaurav

很好的相关文章: 自由电子(来自randsinrepose.com)

抱歉,我在这里没有总结文章,但要点与散文并不容易分开。

0
Nicole

具有自我激励和自我决定的素质,以及愿意进入未知深渊的意愿,并且乐于接受绝对困惑的感觉,这是一个巨大的过程。它并不像您最初想的那样重要,因为大脑在它一直在做和思考的事情上变得更好。我上大学时一无所有,然后仅仅凭着坚强的毅力就变得非常富裕,永不放弃,成为那个在其他所有人都厌倦了试图解决这个问题时遇到问题的那个人。经历了这种持久性之后,问题变得越来越容易,从成为大学的菜鸟到现在让大多数人感到羞耻。纯粹的天赋是不够的,有时会导致您的桂冠停滞不前。

另外,对于Robert Harvey,当我提到与我从头开始编写的CMS有关的内容时,您总是在弄虚作假。您会看到其他几个列出的链接,这些链接可能已经写也可能没有写。您正在压低那些具有自我激励的人,这很讽刺,您发布了此内容。您是这个小宇宙中的“男人”,而不是凭自己的优点来阅读事物,而只是随心所欲地删除和删除。您也非常喜欢《星球大战》,可能会在杂货店的自动开门处挥手,以为自己有力量。

0
Joonha

他们纯粹是凭直觉进行编程的。无需考虑它flows

0
John Shaft

但似乎未来十年我将需要学习它,然后我的知识就会过时了。

它会。您已经确定这些人要快10倍,这就是为什么他们在1年内学习它并花10倍的原因。对于答案的重要部分,我认为这是他们已经非常聪明(在任何东西),他们都喜欢编码,由于某种原因,他们有(或发现)大量的空闲时间来练习编码或从事个人项目。

如果您在这里问这个问题,您可能没有所需要的(不要担心,我在这里回答,所以我可能也不是)。如果您喜欢编码,尽管您仍然可以变得疯狂起来,但请不要担心。

0
Kevin

这里有很多关于谦卑,工程,激情,病人,疑难解答的精心设计的帖子。 IMO这些都是必需的。但是,他们描述了前30%的程序员。

我想您是在问真正的杰出程序员,即前1%。

我羡慕偶尔与我合作的非常稀有的人才之一,就是他们能够保持非常大的数量,关于他们中复杂系统的细节一次去脑袋,以便能够快速回忆起它。我认为有时候我可以真正做到这一点,有时每月一次。这种感觉很棒。我正在考虑的开发人员似乎能够位于该区域大部分时间

除了谦虚,好奇心,工程学,热情,耐心和故障排除能力之外,正是IMO的这一特性使它们真正与众不同。

0
Kyle Hodgson

优秀的编码人员对项目的影响超出了他们自己的代码范围,并由于经验而在问题发生之前就发现了问题。它们使团队中的每个人都变得更好,并从不良的设计和管理中节省了他们的项目。

他们实际上创造了一些非凡的东西。

0
JeffO