阅读更多

3顶
0踩

非技术

转载新闻 高效程序员的 5 种角色

2015-05-19 10:29 by 副主编 mengyidan1988 评论(1) 有6677人浏览
我认为一名高效程序员可以扮演5种基本角色来高效地完成他/她的工作,这些角色以某种方式组合后更符合开发团队中的某些“人物”。你是其中的哪个(或哪些)角色?

编码者



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

调查者



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

理论家


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



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

沟通者



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

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

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

角色组合

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

作者:ashiontang
  • 大小: 45.9 KB
  • 大小: 44.5 KB
  • 大小: 32.7 KB
  • 大小: 32.8 KB
  • 大小: 18.5 KB
来自: 伯乐在线
3
0
评论 共 1 条 请登录后发表评论
1 楼 p98989695q 2015-05-21 12:21
后面几项不是被PM承包了么?产品汪们总说:别想那么多,写好代码就行

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • Dao层通用化,Spring3.0+Hibernate3.3.2通用Dao层整合

    Dao层通用化,Spring3.0+Hibernate3.3.2通用Dao层整合 数据Dao层大家也写了很多了,只要是每对应一个表的话就会有对应的一个类进行增删查改(没算中间表),如果按照面向对象的思维来讲,中间表也算一个表也应该有对应的...

  • Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(三)

    在前两章我为大家详细分析了JAR包的选择和必须的配置文件,那么这一章,我就对例子的层次...另外在这些层次下,还以业务功能再进行分包,这样做是为了方便在以后的功能扩展中,能更好的管理和维护代码。如果将所有类都

  • spring mvc高级篇(六):Spring+SpringMVC+Hibernate整合(采用泛型+注解优化)

    一个典型的使用了SpringMVC和Hibernate框架的应用,其结构如下图所示。 SpringMVC+Hibernate应用的程序结构  SpringMVC的主控制器DispatcherServlet接到请求后会调用特定的Controller。在Controller中又会调用...

  • Spring3+SpingMVC+Hibernate4全注解环境配置

    这里xml头包括了注解的路径,然后配置DataSource,配置Hibernate,最后一段就是启用注解了,说是在这个版本已经不需要写了,反正我项目现在正在跑着,先复制上来再说。最后路径扫描,我是定义到包的,因为通配符好像...

  • 学习SPRING MVC + SPRING + HIBERNATE 逐步搭建总结

    一直用myeclipse,最近才用了一下IDEA,相比IDEA支持最新版本,没有先在IDEA上练习SPRING MVC,用MYECLIPSE成功后再去试。 使用了MAVEN环境方便看源码和随意加包,也是刚上手。 版本 myeclipse 2014 tomcat ...

  • strus2+spring+hibernate+maven+注解开发 整合加上实现登录模块

    第一步导包:maven管理jar包的坐标  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  4.0.0  cn.tedu.zzx  SSH  0.0.1-SNAPSHOT  war ...

  • spring2.5整合hibernate3.3的泛型Dao并加入spring jdbc的支持

    以前写的一个改进版泛型dao,在这里。基本实现了0代码编写dao。现在又加入了spring jdbc的支持,使得dao即可以用实体对象进行数据存取,有可以用jdbc的底层化操作删除,更新。结构见图: 具体代码和上图对应:DaoTest...

  • Spring Boot常用注解(绝对经典)

    一、Spring常用注解 Spring常用注解(绝对经典) 二、Jpa 1、@Entity ,@Table(name="") 表明这是一个实体类,一般用于jpa,这两个注解一块使用,但是如果表名和实体类名相同的话,@Table可以省略。 2、@...

  • Spring + Spring MVC + Hibernate项目开发集成(注解)

    在自己从事的项目中都是使用xml配置的方式来进行的,随着项目的越来越大,会发现配置文件会相当的庞大,这个不利于...这里我将使用最新的Spring,Hibernate来进行框架的搭建,经过测试,顺利运行。分享旨在与大家一起

  • Apache 2.0系列的重要安全补丁 >

    http://www.ooso.net Apache 站点上发布新的安全补丁,目前的apache系列都要赶快把补丁缝上.原文如下: Vulnerability CAN-2004-0493 has been announced by its discoverer, before 2.0.50 could be released. It is a remote exploit which al

  • mysql4.1以上版本连接时出现Client does not support authentication protocol问题解决办法

    http://www.ipbfans.org/index.php?q=node/38shell> mysqlClient does not support authentication protocol requestedby server; consider upgrading MySQL client官方的说法是MySQL 4.1 and up uses an

  • Apache的AddDefaultCharset

    看了这篇文章:配置 Apache 强行指定浏览器编码选择 ,俺也有些感想: apache 2的配置文件中,AddDefaultCharset缺省是ISO-8859-1,所以很多人刚开始用的时候会把它改成GB2312,这样就可以避免乱码问题. 我也推荐人家用这个解决办法在一段时间里,直到有一次看到一个UTF-8编码的页面,始终是乱码,无可救药的乱码,任你如何调整浏览器的设置.无奈之下我把AddDef

  • 为什么flush不生效?

    老早就看了这篇文章: 类似socket传输的flush() 非常简单的代码,却总是不能在我的服务器上正常运行,如下:代码片段: for($i = 1; $i 500; $i++)print " ";????ob_implicit_flush();????for($j = 1; $j 30; $j++) {????echo $j."";????sleep(1);????} ?> 百思不得其解,最

  • PRADO v1.6 Tutorial(中文版)

    http://www.xisc.com/documentation/tutorial-cn.html

  • pear帮助手册的chm版

    在pear的站点上看到有chm版本的手册下载了,我想这东东以后会和php手册,mysql手册,js手册一起,常备俺的案头,时时不忘拿出来翻阅一番: 下载地址

  • php+ImageMagick+imagick API 配置指南

    php+ImageMagick+imagick API 配置指南 原文地址:http://www.5ilinux.com/blog/archives/000104.html

  • phpBB 2.0.11 released - Critical update

    http://www.phpbb.com/phpBB/viewtopic.php?f=14&t=240636Changes since 2.0.10 Fixed unsetting global vars - Matt Kavanagh Fixed XSS vulnerability in username handling - AnthraX101 Fixed not confi

  • apache2的中文手册

    找到了apache2的中文手册下载: 下载地址

Global site tag (gtag.js) - Google Analytics