`
zhb8015
  • 浏览: 399505 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
Group-logo
Spring Roo杂谈
浏览量:0
社区版块
存档分类
最新评论

高效程序员(转)

阅读更多

 

我认为一名高效程序员可以扮演5种基本角色来高效地完成他/她的工作,这些角色以某种方式组合后更符合开发团队中的某些“人物”。你是其中的哪个(或哪些)角色? 

编码者 


 


当我们在低层次积极参与编写代码并解决问题时,我们所担任的就是这样一种角色。编码者在编程同时致力于其他小问题,但通常专注于某一项特定任务而非整体架构。如果一个非IT人员询问你工作,你告诉他们你是一名程序员,这就是他们想象中你整天所做的事。 

调查者 


 


我们想要理解一个系统需要如何工作时,我们就会担负起这种角色。调查者不会让事情有任何不明之处;她/他对事物的工作原理以及事物固定的行为方式的理解有着与生俱来的渴望。这种对代码工作原理理解的内在意愿使得调研者成为优秀的捉虫者。 

理论家 

 
在思考并解决抽象问题时,我们扮演这种角色。理论家善于将抽象问题分解成具体方案,并且善于构建系统架构,即使她/他不是非常善于实际用代码来实现这些方案和架构。 
逻辑者 


 


该角色允许我们有批判性和逻辑性地思考问题。逻辑者是这些角色中最善于分析的,他们会思考这段代码为何以某种方式运行,而不仅仅是代码如何运行。她/他能够以同等权重来考虑所有可能的情况,并做出无偏见的决定,而不允许他/她的未经证实的观点来影响他们的判断。 

沟通者 


 


该角色允许我们与其他人交流并解释复杂问题。沟通者能够理解深奥的技术思想和策略,并向技术和非技术人员解释清楚。她/他善于以多种方式沟通,无论是书写(例如评论或文档),还是口头表达(例如他/她的经理提出“这个按钮是干什么的?”)。 

在任何特定时间,所有的程序员都担任过这五种角色,并且能够按照意愿在这些角色之间转换。然而,在我看来能够最大程度利用这五种角色的人非常少,实际上我们中大多数人会发现只有一种或两种固有角色最适合我们。

例 如,你可能是一位优秀的逻辑者但却不善沟通,正因为如此你也许能够确定一段代码如何进行优化却可能无法向你的老板解释为何这样做很重要。同样地,你也许是一位一流的编码者但是一位糟糕的理论家,因此你在开始编写代码解决问题前需要获取该问题的详细解释。这里有许多可能的组合,其中一些更为高效。 

角色组合 

何时可将这些基本角色组和成更加复杂的角色。也许你在职业生涯中已经遇到一个或多个扮演这些角色的人。在你的团队中,有没有一些这样的人?你是这些人中的一员吗? 

编码者 + 逻辑者 + 理论家 = 优化者 

优化者是能够快速有效提高代码质量的人,无论她/他是否编写了最初的代码。他们是查找哪里存在或可能引起性能问题的专家,因为他们是一流编码者,可能已经在一个框架或者另一个框架中实现过类似解决方案。当出现性能问题时,我们可以让优化者来帮我们修复问题。 

编码者 + 调查者 + 沟通者 = 问题解决者 

问题解决者是你在特定问题上需要帮助时可以求 助的人。她擅长获取一个给定问题并将其细分成许多组成部分使它们更易于独立研究。问题解决者是专门帮助你修复bug和重构代码的人。 

理论家 + 逻辑者 + 沟通者 = 架构师 

架构师负责系统设计以满足规定的要求。为完成系统设计,她能够抽象思考并对比许多彼此不同的方案以寻得最优方案。她还要能够向实际实现设计的程序员解释她的架构。 

上述角色源于一些角色的组合。我们可能还会发现一些效率低下的组合,通常是由于一个人忘记担任一种或多种角色而导致。 

理论家 + 编码者 + 沟通者 – 逻辑者 = 空想架构师 

空想架构师为解决方案设计了架构,但却忽视了他的团队要用代码来实际实现描述方案。他不能从长远角度考虑或公正分析他的设计,他所谓的“完美”设计,一旦编写后,往往最终陷入不可维护的混乱。 

编码者 + 逻辑者 – 沟通者 = 象牙塔开发者 

象牙塔开发者善于依据自己的理解编写代码。他得到一个问题后将自己锁在象牙塔内,直到他“完善”了自己的方案时才出现,并且从为他的代码编写文档。他也许很聪明,但他不能(或不愿)将自己的才华与任何人分享,所以他的代码艰涩难懂,难以维护。 

编码者 + 理论家 – 调查者 – 逻辑者 = “我永远没错”的开发者 

“我永远没错”的开发者不能或不愿批判性地分析她自己的代码,因为他坚信代码是完美的,不需进行测试或研究。他的代码永远不会出现bug,因此总是其他人的错误。 

这些仅仅是一些我在职业生涯中遇到的组合。我见过各种不同水平的五种角色,这些角色组合深深吸引了我。你遇到哪些角色的组合?除这些外,是不是还有其他角色我遗漏了,可以加入到列表中?请在评论中告知! 

分享到:
评论

相关推荐

    【高清完整pdf】高效程序员的45个习惯 敏捷开发修炼之道

    本书名为《高效程序员的45个习惯 敏捷开发修炼之道》,由Venkat Subramaniam和Andy Hunt两位作者共同撰写。书中所提到的45个习惯,不仅涉及软件开发过程、编程和调试工作,还包括了开发者的个人态度、项目和团队管理...

    高效程序员的45个习惯英文完整版

    高效程序员的45个习惯 英文完整版 V.Subramaniam, A.Hunt - Practices of an Agile Developer - Working in the Real World. 2006.pdf

    怎么样培养高效程序员

    【高效程序员的培养】是一个重要的主题,涉及到提升软件开发效率和质量的关键因素。Phil Chu 提出的高效程序员的七个习惯是每位IT从业者应当关注和实践的。以下是对这些习惯的详细解析: 1. **理解你的需求**:正确...

    高效程序员的10个习惯

    高效程序员的10个习惯,学习高效的编程方法。

    高效程序员45个习惯

    高效程序员45个习惯,为你的个人拓展提供发展方向

    高效程序员的10个习惯,希望对你有所帮助

    标题和描述中提到的“高效程序员的10个习惯”,实际上是在强调软件开发领域中,尤其是敏捷开发过程中,程序员应当遵循的一系列最佳实践和心态。这些习惯不仅有助于提升个人的工作效率,还能增强团队协作,最终确保...

    高效程序员应该养成的七个习惯

    因此,一个高效程序员的成长离不开良好的工作习惯的培养。以下将详细介绍高效程序员应该养成的七个习惯,这些习惯对于程序员的工作效率和质量提升有着至关重要的作用。 首先,理解需求是高效程序员工作的基础。一个...

    火币网-郑晔-成为高效程序员.pdf

    火币网-郑晔-成为高效程序员

    如何使用搜索技巧来成为一名高效的程序员

    如何使用搜索技巧来成为一名高效的程序员, 如何使用搜索技巧来成为一名高效的程序员, 如何使用搜索技巧来成为一名高效的程序员。

    高级程序员的45个好习惯

    《高级程序员的45个好习惯》一文,详细列举并解读了这些高效实践,涵盖从敏捷开发到学习态度,再到软件交付、敏捷反馈、编码规范和调试策略等多个方面,旨在为程序员提供一个提升自身能力的指南。 首先,敏捷开发...

    VB 转 VB.net程序员

    ### VB转VB.NET:程序员的进化之路 #### 一、为何选择VB.NET? 在深入了解VB.NET之前,我们先探讨一下为什么会有这么多VB程序员选择转向VB.NET。从文章中可以看出,作者之所以喜欢VB,主要是因为其可视化编程环境...

    高效程序猿的7个共同特征

    高效程序员是IT行业中备受推崇的群体,他们不仅具备深厚的技术能力,还拥有一系列良好的个人品质和工作习惯。Justin James在文章中提出了高效程序员所应具备的七个共同特征,这些特征涵盖了学习态度、工作方法、解决...

    系统架构设计程序员向架构师转型之路

    这将帮助他们在解决复杂问题时,能够提出高效且可靠的解决方案。同时,了解不同技术之间的相互作用也是至关重要的,例如理解如何在微服务架构中集成数据库和缓存系统。 在技术广度上,架构师需要掌握多种技术和工具...

    高效程序员应该养成的习惯

    要成为一个有效率的程序员要知道些什么?正确的支配自己的时间。。。

    卓有成效的程序员 卓有成效的程序员

    这本书旨在揭示那些高效程序员的思考模式和工作习惯,帮助程序员们提升自身的专业素养,从而在软件开发领域取得更大的成就。 书中可能会涵盖多个关键知识点,包括但不限于: 1. **时间管理和自我规划**:高效...

    程序员专用 编程输入法

    总的来说,程序员专用的输入法如精灵输入法,是通过提供高效便捷的编码环境,帮助程序员提升工作效率,减少错误,从而更好地投入到软件开发工作中。这样的工具对于经常进行编程工作的人员来说是非常有价值的。

    程序员计算器

    《程序员计算器:高效便捷的计算工具》 在日常的编程工作中,计算器往往扮演着不可或缺的角色。尤其是对于程序员来说,处理二进制、十六进制、字节大小转换等问题时,一个强大而贴心的计算器能够极大地提升工作效率...

Global site tag (gtag.js) - Google Analytics