代码说

code is poetry

代码说    
碎碎念:忍字头上一把刀。  换一换

高级程序员、项目经理和架构师

作者:coderzheng 发布于:2014-10-29 17:25 Wednesday 分类:other  阅读模式

在博客园上看到这篇文章:大叔手记(12):我的一次面试经历(谈大叔如何应对面试官),对PM的角色和岗位职责又有了更深的了解,顺便在这里也写些自己的认识。
在一般的公司(游戏、外包OR Team member <10?),是没有真正意义上的PM的,因为团队成员太少(几乎是一人一岗)或者开发流程不规范(纯赶进度收钱走人过河拆桥,完全没有code review,仅仅是为了功能写代码...?),或者只是在原有的程序中做二次开发。。。
所以一般情况下,都是由资历较深的程序员兼任管理者的角色。但是这也仅限于做时间规划,项目进度控制一类的简单工作。

一个高级程序员(即使是资深工程师)是不足以担当一个真正意义上多人协作开发周期至少一年的项目管理者角色的,原因是:软件开发作为一门工程学涵盖的知识点不算少,并且要求PM有实战经验(不仅是技术上的同时也是管理上的)。这样才能保证项目平稳地向前推进、交付和完成。

而一名普通的高级程序员,也许对这些知识点有所了解,但是没有实战经验,缺少管理团队和与客户沟通的经验,根本无法把控整个项目的实施、推进、交付和后期维护。

从这个意义上说,一个好的PM由于兼具技术和管理的能力,价值比高级程序员大应该是毋庸置疑的。

那架构师和PM又有何分别呢?

主要的区别有两点:
1) 专业知识上的广度和深度
架构师在专业知识上的广度和深度要大于PM(可能不是大一点,而是大很多)。
比如一个普通的php项目经理可能很熟悉各种开源程序的二次开发,也熟悉这些程序的架构,知道开发一个普通的应用需要多长时间,主要的工作量分配在哪里。。。但是一个php架构师除了具备这些能力外,还熟知这些CMS程序的弱点和漏洞,并且还知道当访问量和数据量激增时,这些程序会出现什么样的问题,以及如何才能解决这些问题。
一个php架构师除了知道怎样解决网站出现的性能瓶颈之外,还知道php这门语言的底层实现机制,一些常见函数的底层实现原理以及在各种应用场景中可能出现的问题。
一个更强的php架构师,可能不仅熟悉php语言,而且知道如何将c语言编译成相应的php扩展然后作为php引擎来实现,而且熟悉网络应用层的基本原理,操作系统和客户端之间的通信过程,以及apache、nginx、memcache缓存。。。这些常见软件的源码实现及各种改进和优化方案。
一个更更强的网站架构师,可能不仅熟悉php语言下的网站架构,还熟悉asp、.net、java、ruby、python。。。

2) 岗位职责的不同
架构师负责整个应用的基本构建和技术难点攻坚,由于任何一门语言都有其优缺点,因此一旦应用变得庞大,就必须考虑使用不同的语言来实现应用中的需求。因此架构师一般都是精通好几门语言的。
项目经理负责做沟通(从Team到customer,从customer到Team)、人员分配、项目进度掌控、code review、测试、以及bug fix和后期维护等一系列管理方面的工作,在中小型的项目中,项目经理应该是有能力承担架构师这个角色的(许多公司没有架构师也是这个道理,当然不要以为挂CTO头衔的都是架构师)。但是当项目变得庞大,应用场景变复杂的时候,就必须由架构师出马才行了。

到这里,你应该明白高级程序员、项目经理和架构师之间的区别了。

over.

标签: 程序员 PM

你可以发表评论、引用到你的网站或博客,或通过RSS 2.0订阅这个博客的所有文章。
上一篇: php中嵌套引用文件产生的错误  |  下一篇:感谢你给我机会上场