一名高效程序员可以扮演5种基本角色来高效地完成他/她的工作,这些角色以某种方式组合后更符合开发团队中的某些“人物”。你是其中的哪个(或哪些)角色?
编码者
当我们在低层次积极参与编写代码并解决问题时,我们所担任的就是这样一种角色。编码者在编程同时致力于其他小问题,但通常专注于某一项特定任务而非整体架构。如果一个非IT人员询问你工作,你告诉他们你是一名程序员,这就是他们想象中你整天所做的事。
调查者
我们想要理解一个系统需要如何工作时,我们就会担负起这种角色。调查者不会让事情有任何不明之处;她/他对事物的工作原理以及事物固定的行为方式的理解有着与生俱来的渴望。这种对代码工作原理理解的内在意愿使得调研者成为优秀的捉虫者。
理论家
在思考并解决抽象问题时,我们扮演这种角色。理论家善于将抽象问题分解成具体方案,并且善于构建系统架构,即使她/他不是非常善于实际用代码来实现这些方案和架构。
逻辑者
该角色允许我们有批判性和逻辑性地思考问题。逻辑者是这些角色中最善于分析的,他们会思考这段代码为何以某种方式运行,而不仅仅是代码如何运行。她/他能够以同等权重来考虑所有可能的情况,并做出无偏见的决定,而不允许他/她的未经证实的观点来影响他们的判断。
沟通者
该角色允许我们与其他人交流并解释复杂问题。沟通者能够理解深奥的技术思想和策略,并向技术和非技术人员解释清楚。她/他善于以多种方式沟通,无论是书写(例如评论或文档),还是口头表达(例如他/她的经理提出“这个按钮是干什么的?”)。
在任何特定时间,所有的程序员都担任过这五种角色,并且能够按照意愿在这些角色之间转换。然而,在我看来能够最大程度利用这五种角色的人非常少,实际上我们中大多数人会发现只有一种或两种固有角色最适合我们。
例 如,你可能是一位优秀的逻辑者但却不善沟通,正因为如此你也许能够确定一段代码如何进行优化却可能无法向你的老板解释为何这样做很重要。同样地,你也许是一位一流的编码者但是一位糟糕的理论家,因此你在开始编写代码解决问题前需要获取该问题的详细解释。这里有许多可能的组合,其中一些更为高效。
角色组合
何时可将这些基本角色组和成更加复杂的角色。也许你在职业生涯中已经遇到一个或多个扮演这些角色的人。在你的团队中,有没有一些这样的人?你是这些人中的一员吗?
编码者 + 逻辑者 + 理论家 = 优化者
优化者是能够快速有效提高代码质量的人,无论她/他是否编写了最初的代码。他们是查找哪里存在或可能引起性能问题的专家,因为他们是一流编码者,可能已经在一个框架或者另一个框架中实现过类似解决方案。当出现性能问题时,我们可以让优化者来帮我们修复问题。
编码者 + 调查者 + 沟通者 = 问题解决者
问题解决者是你在特定问题上需要帮助时可以求 助的人。她擅长获取一个给定问题并将其细分成许多组成部分使它们更易于独立研究。问题解决者是专门帮助你修复bug和重构代码的人。
理论家 + 逻辑者 + 沟通者 = 架构师
架构师负责系统设计以满足规定的要求。为完成系统设计,她能够抽象思考并对比许多彼此不同的方案以寻得最优方案。她还要能够向实际实现设计的程序员解释她的架构。
上述角色源于一些角色的组合。我们可能还会发现一些效率低下的组合,通常是由于一个人忘记担任一种或多种角色而导致。
理论家 + 编码者 + 沟通者 – 逻辑者 = 空想架构师
空想架构师为解决方案设计了架构,但却忽视了他的团队要用代码来实际实现描述方案。他不能从长远角度考虑或公正分析他的设计,他所谓的“完美”设计,一旦编写后,往往最终陷入不可维护的混乱。
编码者 + 逻辑者 – 沟通者 = 象牙塔开发者
象牙塔开发者善于依据自己的理解编写代码。他得到一个问题后将自己锁在象牙塔内,直到他“完善”了自己的方案时才出现,并且从为他的代码编写文档。他也许很聪明,但他不能(或不愿)将自己的才华与任何人分享,所以他的代码艰涩难懂,难以维护。
编码者 + 理论家 – 调查者 – 逻辑者 = “我永远没错”的开发者
“我永远没错”的开发者不能或不愿批判性地分析她自己的代码,因为他坚信代码是完美的,不需进行测试或研究。他的代码永远不会出现bug,因此总是其他人的错误。
这些仅仅是一些我在职业生涯中遇到的组合。我见过各种不同水平的五种角色,这些角色组合深深吸引了我。你遇到哪些角色的组合?除这些外,是不是还有其他角色我遗漏了,可以加入到列表中?请在评论中告知!
相关推荐
【高效程序员应该养成的七个习惯】是每个程序员提升工作效率和质量的关键。首先,理解需求是高效工作的基础。程序员应避免因需求理解偏差而导致的无效工作,通过快速建模和早期原型展示来验证需求理解,让客户能实际...
Thinkphp5内置了RBAC(Role-Based Access Control)角色权限控制,可以根据用户角色分配不同的操作权限,如管理员可以管理所有内容,而普通用户只能浏览和评论。这增强了系统的安全性,也确保了内容的有序管理。 ...
这个系统充分利用了Thinkphp5框架的强大功能,实现了高效、稳定且易于维护的博客系统。 Thinkphp5是基于PHP7优化的一个轻量级的MVC(Model-View-Controller)框架,它以简洁、高效的代码设计原则,提供快速开发能力...
《程序员计算器:高效便捷的计算工具》 在日常的编程工作中,计算器往往扮演着不可或缺的角色。尤其是对于程序员来说,处理二进制、十六进制、字节大小转换等问题时,一个强大而贴心的计算器能够极大地提升工作效率...
在IT行业中,程序员是软件开发的核心角色,他们需要处理大量的代码、笔记和项目信息。为了高效地工作,拥有一款专为程序员设计的记事本工具至关重要。"程序员专用记事本"就是这样一个针对开发者定制的工具,它旨在...
在IT行业中,程序员的成长路径通常会经历从初学者到高级程序员的阶段,而软件设计师则是一个更为专业和高级的角色。这个“程序员高级程序员程序设计辅助理解软件”压缩包文件,显然是为那些寻求晋升或者增强自身技能...
- 对软件架构有深入的理解,能够设计出高效、可扩展的系统架构。 - **发展方向:** - 进一步深化对特定领域的了解,成为该领域的专家。 - 提升项目管理能力,逐步转型为项目经理或技术经理。 - 持续关注最新的...
8. **项目管理**:了解基本的项目管理知识,如进度跟踪、风险管理、需求管理,可以帮助程序员在团队中扮演更积极的角色。 9. **健康与工作生活平衡**:长期坐姿工作可能导致健康问题,书里可能会提醒程序员注意姿势...
在这个数字化的时代,ASP.NET、XML等技术在构建高效、可扩展的Web应用中扮演着关键角色。这里,我们将深入探讨由标题"程序员资源下载地址集合"所涵盖的主题,以及与描述相关的学习资源。 首先,ASP.NET是微软公司...
10. **编号查找**:预览编号可能是一种高效查找和分类简历的方式,方便求职者根据编号选择合适的模板,也便于招聘方管理大量简历。 11. **适应性**:简历应根据应聘的职位进行调整,强调与目标岗位最相关的技能和...
总的来说,这个【程序员前后台帮助文档】提供了从后端到前端的全面技术指导,涵盖了Java编程的基础与进阶,JavaScript和HTML5的现代网页开发实践,以及jQuery的高效前端交互设计。无论是初学者还是经验丰富的开发者...
"程序员 简历模板.zip"这个压缩包文件提供了一套专门为程序员设计的简历模板,帮助求职者高效地打造一份吸引眼球的简历。下面,我们将深入探讨程序员简历制作中的关键知识点。 1. **个人信息**:程序员简历的开头应...
在IT行业中,程序员扮演着至关重要的角色,从硬件通信协议的构建到数据传输、操作系统、数据库平台的开发,再到应用层面的数据营销平台的搭建,他们的工作无处不在,对IT产业的发展起着决定性作用。然而,中国的软件...
他们能够设计出高效稳定的软件系统,并且对于操作系统、网络通信协议(如TCP/IP)等有着深刻的理解。架构师的角色往往要求他们在技术决策方面具有较高的权威性。 #### 第五境界:思想家 到了这个阶段,程序员已经不...
标题提到“生活中的程序员必备的放松课程”,这意味着这门课程并非传统的技术课程,而是旨在帮助程序员们在紧张的工作之余进行放松与调节心态的一种特殊课程。对于长时间处于高压环境下的程序员而言,这类课程能够...
程序员需要对至少一种编程语言有深入的理解,并且掌握软件开发的流程和方法。在迈向项目经理的角色时,需要从微观的技术实现转向宏观的技术选型和架构设计。这不仅包括了解不同技术的优缺点,更要能够结合项目需求,...
这些宝贵的经验使得他对创业公司中的程序员角色有着深刻的理解和独到的见解。 #### 三、不同阶段的创业公司对程序员的要求 - **种子轮**:创始人亲自参与编程,此时的程序员通常需要具备较强的技术实力和个人贡献...