• 高级程序员的评判标准
  • 发布于 2个月前
  • 127 热度
    0 评论
  • 卡农
  • 14 粉丝 42 篇博客
  •   
中午刚吃过饭,正准备打开网页看看新闻, 张大胖在微信上问我:“老刘,你说我是高级程序员吗?”

我愣了一下:“你?工作了六七年了,现在还带着十个人的团队,应该是高级程序员了吧?”

“我总是觉得老李才是高级程序员吧, 人家知识体系完整,基础扎实,精通xxx技术, 开发了系统的核心模块。还有老方,代码写得极为优雅漂亮,还特别擅长解决疑难杂症。”

我说:“你说的都是高级程序员表现出的特质,在不同的公司对高级程序员的定义都不一样。”

张大胖:“有没有比较通用的定义呢?”

“这个......”  

我脑海中一下子出现很多程序员的特质,却一时抽象不出来, 我马上Google了一下,在Quora找到了Stevan Popovic的回答,觉得非常不错,把链接发给了张大胖。 

张大胖说:“老刘你翻墙了啊?我这边的IP被禁了,看不了了,哈哈, 你给我说说内容。”

“第一是独立性 (Independence),在成为高级程序员的过程中,这个人变得越来独立,对别人的依赖很少, 他可以创建合理的任务(通过主动发现问题),并且给出好的解决方案。”  

张大胖深表同意:“这是最基本的,如果一个人一直是被动地等待着被分配工作,在工作中对业务不熟悉,对技术不熟悉,经常需要问别人,寻求别人的帮助,只满足于自己手头的一亩三分地, 那肯定不是高级程序员。”


第二呢是权威的声音 (Voice of Authority),这个人对特定产品或者一个大系统的组件,能发出权威的声音,在团队讨论中,能引导同事找到最佳的解决方案,并且提前指出潜在的问题。”

张大胖说:“这我理解,就是这个人发出的声音会被大家倾听,被大家信服。我发现我的组中有几个人,每次讨论的时候只是带着耳朵去听,坐在哪里一声不吭,还有个爱发言的,但是经验和技能都不够, 思路和方案不能被大家接受,看来就不是高级程序员了。”

我说:“这其实暗含着沟通的能力,不仅仅自己有能力,还得能准确地表达出自己的观点,从而说服大家,引导大家前进。在特定产品或者一个大系统的组件上,你就是那个引路人。”

第三呢是设计(Design), 这个人不仅仅只是Coding,相反,他会对整个系统或项目的设计做出越来越多的贡献。这一条并不是贬低Coding, 因为Coding只是软件开发中的一小部分,更重要的工作是设计, 简单的项目,设计可能只存在于你的脑海中,直接Coding;复杂的项目,设计就需要文档化。当你的想法逐渐变成系统的设计方案,大家来遵守执行的时候,你就是高级程序员。”

张大胖发来一个表示赞的表情,没说话。 

我心中暗笑,这小子最近管理忙,设计层面的工作越来越少了。

第四呢是影响力的范围 (Areas of Influence),  一个较为初级的程序员倾向于“向内看” (Inward Looking), 经常专注于自己手头的Task,需要Fix的Bug。一个更高级的程序员会变得“向外看” (Outward Looking), 这包括招聘,管理,跨部门的协作和沟通,外部客户沟通等等。随着开发人员变得高级,他会不断地扩大影响的范围。”

张大胖说:“我还正纳闷呢,这怎么不说招聘和管理呢,我最近可是在这方面花了不少的功夫,这个影响力啊实在是重要, 我记得上次在公司升职的时候,老板问的一个问题,如果你升了职,你如何利用你的影响力帮助我们的部门?我当时有点懵,幸亏反应快,想起来自己曾经的跨部门协作,总算搪塞过去了。”

我说:“是啊,在小公司不觉得,在大公司,影响力太重要了。你看看人家Stevan Popovic画的图。”

张大胖:“不错不错,以后谁再问我, 我就要求他自问一下。”

1. 我能独立地完成工作吗?
2. 我对于工作的项目和产品能发出权威的声音吗?
3. 我能对整个系统的设计做出贡献吗?
4. 我的影响力在什么范围?  小组?部门?公司?业界?

我说:“我觉得还得再加上一点,站在业务角度进行思考,能用恰当的技术来解决业务问题。”

张大胖表示同意:“嗯,归根结底,技术是要为业务服务的。”

我发了一个笑脸:“对比一下,你是高级程序员吗?”

张大胖又发了一个表情:“我.... 算是吧。”
用户评论