有趣的是,技术专长并不是其中之一。
如果编写代码是一门科学,那么所有开发人员几乎都是一样的。 但事实并非如此。
就像在艺术中一样,在追求相同结果的过程中,没有两个开发人员具有相同的想法或看法。 尽管有些人努力产生期望的结果,但对于少数人来说,这几乎是自然而然的,就像顿悟在他们开始编写代码或解决问题的那一刻击中了他们一样。
在一篇博客文章中,软件工程专家之一史蒂夫·麦康奈尔(Steve McConnell)谈到了Sackman,Erikson和Grant在1960年代后期进行的原始研究。 他们发现,最好的程序员和最差的程序员之间的初始编码时间比例约为20:1。最有趣的是,他们发现程序员的经验与代码质量或生产率之间没有任何关系。
简单来说,编写好的代码并不是使优秀的程序员与优秀的程序员区分开的唯一因素。
好。 让我们首先从优秀的程序员开始。 谁是一个好的程序员?
因此,如果您是一名程序员并且具有上述所有特征,那么恭喜!!! 你是一个优秀的程序员。 为此感到自豪。
现在来到伟大的。
简而言之,伟大的程序员=优秀的程序员 + 一系列无形的特征。
虽然这并不容易,但是如果您有足够的投入,那么这里就是您可以培养的无形特征,这些特征可以使您从成为一名优秀的程序员到成为一名优秀的程序员。
他们具有突出的学习能力。
他们思想敏锐,这意味着他们具有学习新技术的能力,不会被新技术吓到。
他们有能力整合看似完全不同的信息并即时处理信息。 每个程序员肯定都会遇到他/她不知道答案的情况。 优秀的程序员会发现不同的资源,与合适的人交谈,并找到解决方案,无论它看起来多么不可能。 任何人都可以拥有的最好的技能是知道如何学习,并且优秀的程序员已经掌握了自学技能。
优秀的程序员不会让自己的自我介于工作和学习过程之间。 如果他需要了解一些知识,他将与该层次结构中的任何人接触。 从最低到最高。
他们在实用主义和完美主义之间取得了平衡。
Etsy的首席技术官John Allspaw在他的文章"成为高级工程师"中指出了一个很好的观点。 他说,顶尖的开发商是健康的怀疑论者,他们在工作时往往会问自己和同行的问题。
"我可能会想念什么?"
"这怎么行?"
"您是否会在我对此的思考中尽可能多地打洞?"
"即使从技术上讲,它是否足以让组织的其余部分进行操作,故障排除和扩展?"
这些问题背后的想法是,他们完全了解同行评审的重要性,仅通过扎实的同行评审,才能做出好的设计决策。 因此,他们"乞求"这个坏消息。 优秀的程序员往往会不信任自己的代码,除非他们对其进行了广泛的测试。
话虽如此,他们还具有了解市场动态以及尽早发货产品的能力。 因此,他们有能力进行快速,肮脏的黑客攻击,并提供优雅,精致的解决方案,并具有选择适合于特定情况的智慧。
一些较小的程序员将对某些问题所需的细节缺乏过多的关注。 其他人则陷入完美主义模式。 优秀的程序员可以完美地平衡两者。
他们直觉敏锐
在《尼科马奇伦理学》的第六本书中,著名的哲学家和政治家亚里斯多德讨论了人们获得真正的知识并因此在他们所做的一切成功中都需要具备的五种能力中的第四种:直觉。
亚里士多德的观点很简单。 直觉是我们开始了解一切的方法,直觉获得的知识必须锚定所有其他知识。 实际上,这种获取知识的方法是如此基础,以至于不可能有正当理由。 那是因为凭直觉获得的知识并非基于一系列事实或结论的推理路线。 取而代之的是,我们仅通过内省和立即意识就知道了直觉真理。
从史蒂夫·乔布斯(Steve Jobs)到理查德·布兰森(Richard Branson)到沃伦·巴菲特(Warren Buffet),这些直观的人通常都能成功地做任何事情,因为他们可以比其他人更清楚地看到事物并更快地找到解决问题的优秀方法。 毫无疑问,所有这些人都拥有大量的专业知识和经验。 但是他们似乎也很自然地拥有直觉,这使他们能够掌握复杂问题的实质并找到无法解决的正确解决方案。
优秀的程序员通常基于其丰富的经验和良好的开发意识,对算法,技术和软件体系结构具有直观的了解。 他们能够一目了然地了解其武器库中最适合当前问题的工具。 而且它们的直观能力远远超出了开发和编码范围。 这使他们在与非专业人士和专业观众一起阐明技术和非技术问题时具有很高的通用性。
他们是有远见的人,他们乐于挑战,并且在追求卓越时通常会寻求打破自己的准则(在别人之前)。
他们是主要的沟通者。
Damien Filiatrault正确地说。
"良好的沟通能力与良好的开发技能直接相关。"
为了使您的想法得到传播,您需要使其变得简单并尽可能明确地进行交流。 听起来很简单? 是不是 但是不幸的是,这种缺乏清晰度是工作中所有麻烦的根本原因。 这是由于一种称为"知识的诅咒"的现象。
1990年,斯坦福大学心理学系的一名叫伊丽莎白·牛顿的学生通过研究一个简单的游戏来说明知识的诅咒,在游戏中她将人们分配给两个角色之一:"敲击者"或"听众"。 要求每个敲击者挑选一首著名的歌曲,例如"生日快乐",并在桌子上挖掘出节奏。 听众的工作是猜测歌曲。
在牛顿的实验过程中,共播放了120首歌曲。听众只能正确猜出三首歌曲:成功率为2.5%。但是在他们猜测之前,牛顿让敲击者预测听众正确猜测的可能性。他们预测为50%。敲击者在40分之一时间内获得了信息,但他们认为他们将在2分之一时间内得到了信息。为什么?
当敲击者敲击时,她无法避免听到敲击声。 同时,听众只能听到一种奇怪的莫尔斯电码。 然而,对于听众必须努力工作以调取乐曲的方式,敲击者却感到惊讶。
问题是,一旦我们知道了某件事(例如一首歌的旋律),我们就很难想象不知道它。 我们的知识已经"诅咒"了我们。 我们很难与他人共享它,因为我们无法轻易重新建立他们的心态。
这就是为什么优秀的程序员总是在向团队传达信息后才确认。 他们还可以清楚地理解问题,将其分解为假设,并有凝聚力地提出解决方案。 他们可以快速理解概念或提出正确的问题以进行理解,最重要的是,他们不需要一丁点的记录在文档中。
因此,如果您想成为一名优秀的程序员,则需要确保您与团队之间进行有效的沟通。 这不仅可以使您承担更高的责任,还可以向您的上司展示您对提供优质产品的真正兴趣和投资。
最后的想法。
因此,正如您在这里看到的那样,要成为本领域中的佼佼者,您不需要花哨的学位甚至是金钱都可以进行投资。
您所需要的只是学习的态度,发疯的好奇心以及根据您多年来积累的知识将事物联系起来的直观能力。 同样重要的是,需要养成健康的积极态度,摒弃自我,并有容忍采取回应并采取行动的能力。 一旦完成所有这些操作,我保证您会实现卓越。
正如鲍勃·马利(Bob Marley)所说:
"一个人的伟大不是在于他获得了多少财富,而是在于他的正直和能够积极地影响周围的人的能力。"
领取专属 10元无门槛券
私享最新 技术干货