阿里软件资深架构师李战谈:开发者的人品问题文 / 李战程序员都知道:绝大多数编程中的问题,最终都是自己的人品问题。当遇到奇怪的问题时,我们总是喜欢怀疑系统、怀疑编译器、怀疑网络、怀疑硬件……就是不愿意怀疑自己的人品。熬过几个不眠之夜后,最终还是发现自己的代码存在人品问题。只有极少数的情况才是系统的问题。同样,一些程序员在职业发展中遇到问题时,也总是喜欢怀疑公司不好,怀疑战略有问题,怀疑流程制度不合理,怀疑老板和同事……就是不愿意怀疑自己的人品。在大大小小的 IT 企业中,总能看到一些技术并非最顶尖的程序员做成大事的例子,也总看到一些技术牛人被埋没而不能一展才华的现象。我想,除了机遇之外,还有一个很重要的因素,那就是:程序员的人品问题!当然,这所说的“人品”,依然是调侃的说法,并非指道德问题。其实,人品问题指的是程序员的软实力。如果将程序员的编程技能称为硬实力,那么编程技能之外的东西统统可以称为软实力。不容置疑,编程技能是一个优秀程序员必须具有的硬实力,对程序员的职业发展起着最直接的作用,但程序员的软实力同样不可忽视。如何修炼自己的人品呢?我想谈谈自己的一些经验和教训。程序员相轻在长期与程序员打交道的过程中,发现大多数程序员和我一样,喜欢以自我为中心,特别是年轻的程序员。也许我的观察可能不完全正确,但从许多程序员的言谈举止中,确实可以感受到我曾经的浮躁心态。喜欢以自我为中心的人,往往会自以为是,并按自己的思路和想法行事,不太愿意听取别人的想法和意见。同时,这样的人,性格相对内向,喜欢沉浸在自恋和自负的虚幻空间里,其他人的思想都看不上。当两个都很自我的程序员相遇时,他们不是互相倾听和学习对方的优点,而更喜欢找对方的缺点,从而显摆自己的优势。这就是所谓“程序员相轻”现象!不知道各位程序员是否存在程序员相轻的心态,反正以前的我经常看不起别的程序员,甚至还看不起那些德高望重的老前辈。能被我欣赏的程序员更是寥寥无几。同事编写的代码在我眼里就是小儿科,或者干脆就是垃圾。我认识许多过来的程序员,那些曾经很自我,但现已放下,从而潇洒编程的程序员。他们现在都在一些公司的团队里担当重要角色,但据他们反映,“程序员相轻”的现象在 IT 企业里是普遍存在的。现在的软件开发,大都需要团队协同来完成的。团队作战是需要团队每一个程序员相互信任和尊重,将分散的力聚在一起形成合力,从而攻克一个又一个的项目工程。如果一个团队中的程序员相轻现象严重,团队中的成员就会从相互争论演变成相互指责,逐渐失去成员间的相互信任和尊重,内耗日渐严重。最终,团队的力量就四分五裂,大家并不向同一个方向使力,整个团队将变得毫无战斗力。我想,对于程序员的职业发展来说,要过的第一个坎就是克服“程序员相轻”的心态。只有修正了这一人品问题,才能将自己的思想从狭隘封闭的自我空间中解放出来,才能踏上一条宽广的职业发展之路。那么,克服程序员相轻的心态很难吗?其实不难!很简单:放下自我!世界上最难战胜的对手就是“自我”,而世界上最重的包袱也是“自我”。因为自我,人必自恋,心必自私,行必自负,荣必自欺,败必自卑。程序员相轻这一最大的人品问题,就是因为太自我。如果敢说“我的人品没问题”,那就得先放下自我。自我放下啦,人品问题也就放下啦。既然这样,我们何不将这沉重的包袱放下,让心灵轻松自由起来呢?沟通交流大多数程序员是比较含蓄的。比起复杂的人际交往,我们更喜欢单纯的技术工作。因此,在与人交流的时候,程序员会表现出两方面的不适应:一是不善于倾听; 二是不善于表达。其实,我以前也是这样。在听别人讲话时喜欢默不作声,而心里总盘算自己的思路。轮到我讲话的时候,却不能有效地表达自己的思想,讲的话很难让人理解。有时候,又喜欢打断别人讲话,将自己的观点强加于人,也不管是否听懂对方的意思,就大加指责,甚至出言不逊。沟通交流障碍是大多数程序员普遍存在的另一个人品问题。而在团队协作中免不了相互沟通,如果一个程序员在沟通方面存在障碍,是很难融入团队开发工作的。因此,程序员应该努力提升自己的沟通能力,修炼沟通交流方面的人品。当然,提升自己的沟通能力,并不是要求我们练成辩论家的口才,只要能做到有效地倾听和有效地表达就已经足够了。其实,做到有效的倾听还是比较容易的,特别是当对方的表达能力很强的时候,我们只需要静下心来认真倾听即可。即使不是很容易听懂别人的话,就多问问,请对方再讲讲。反正,一定要先理解别人的意思,才表达自己的意见。或许在你看来别人的想法是错的,不妨先让人家把话说完。没准等人家说完之后,你会发现原来自己错啦; 即使自己没错,也能可能理解错了人家这样想的原委。理解是从倾听开始的,认真倾听体现了对人的尊重。设身处地想想,如果是你在发言时,是否希望人家都能认真倾听你的心声,理解你的思想呢?那么,在别人发言时,我们为什么就做不到认真倾听呢?然而,倾听的目的是为了理解别人的想法。一些人默不作声,貌似在听人家讲话,实际上想着别的事情; 而一些人却是不懂装懂,假装点头,让人家误以为听懂了。对于有效的沟通来说,这些现象不但没有好处,反而会带来更多坏处。问题得不到解决,隐患埋藏得更深。因此,倾听就要认真仔细的听,努力从讲述者的思绪去理解问题,真正理解别人的想法。懂就懂,不懂就不懂,千万别不懂装懂。不管你是菜鸟还是大牛,多问问,没人会瞧不起你!相对来说,做到有效地表达会难些。很多程序员会有这种感觉,让我写代码容易,让我说出来就难。只可惜,代码是写给机器的,沟通交流面对的却是人。因此,提升语言表达能力也是非常重要的,除非你不打算与人打交道。其实,在语言表达方面还是有一些简单的原则可以借鉴的。首先,要记住,不管怎样讲,要把握得住讲话的逻辑线索; 其次,先讲背景,建立起沟通的上下文,再讲具体的细节; 然后,在讲解中穿插关键词语的简短解释。相信这样讲解是可以让许多人理解的。这就好像编程,得有完整的逻辑主线,得有上下文,还得有变量定义,等等。另外,在讲话时尽量少用指代词,就是少用“这个”、“那个”、“它”等词语。不妨直接说出这些指代词背后的真正名词,不过是多说几个字而已,但听者更容易准确地知道你指的什么。比如,你向别人请教时说“这个东西有问题,你知道原因吗”,人家一定会反问“什么东西”。但如果你说“Memcached 命中率有问题,你知道什么原因吗”,人家就可以立即开始思考问题的原因啦。尽管在你的头脑里“这个东西”指的就是“Memcached 命中率”,但人家并不清楚。这就好像编程时对变量命名一样,相信编程经验丰富的你基本上不用 a、b、c 这样的通用名字,一定会用 bufferSize、totalAmount、lastChild 等等让人一眼就能明白的单词。那么,既然你能在编程中可以养成良好的命名习惯,为什么不能在语言表达中也养成良好的命名习惯呢?程序员如果把沟通交流的人品修炼好了,保证你的职业发展会驶上快车道。协作能力我以前喜以欢单打独斗。如果我不能掌控全部代码,我宁愿不做; 或者动不动就把本该人家写的代码也写一份,搞得别人很没面子。后来我知道,就算我是千里码,日编千行,夜编八百,也很难独自完成现代的大型系统开发。在现代的软件企业里,协作能力也是对程序员人品的重要考验,我们应该努力提高在协作方面的人品。首先,提高协作能力要善于分清责任和义务。其实,这个很简单,就是根据大家约定的分工做事情,该谁做的就由谁做,该谁担责任的就谁担责任。不要盲目做事,更不要随意插手人家的事情。程序员应该牢记自己的责任,切实履行自己承担的义务。只有这样,才能赢得同事们的尊重和信任。其实,对一个有战斗力的团队来说,不但需要忠实履行义务的成员,更需要敢于承担责任的成员!其次,就是要随时了解和关心别人在做什么。我以前喜欢闷头做事情,守好自己的一亩三分地,其他的都不闻不问。这对于协作开发来说是非常不好的。在一个协作的团队中,不了解别人在做什么,自己的事情也肯定做不好。分清责任和义务,并不是说可以不了解和关心他人的事情,千万别为了分清责任和义务而走极端。最后,就是做事要积极和灵活。在这一点上,可以说是仁者见仁,智者见智,修炼起来确实需要些悟性的。做事积极主动相对比较容易,看到团队的问题主动提出来,并从自我做起加以解决; 对于没人承担或谁都不愿做的事情,试着去做做; 自己取得了成果,主动与大家分享一下; 别人的工作有了进展,多多鼓励和支持一下。不过,做事灵活就更不容易把握,这要求既能成事,又不失原则。这种人品只有在摸爬滚打中才能修炼出来,就看大家的悟性啦。职业修养毋庸置疑,程序员是一种职业。一些人是因为生存而选择了做程序员,一些人是因为兴趣爱好而选择了做程序员。可能大多数程序员和我一样,既是为了生存,也是喜欢编程,所以选择了做程序员。不管怎样,吃了程序员这碗饭,就得对得起程序员这一职业。既然程序员是一种职业,那就有职业化的要求。一名程序员是否具有职业化的修养,可能是企业老板最关注的人品指标。职业化与专业化有很大不同。我们常常会称赞某人很专业,说的是这个人有某方面的专长。某方面的事情他是专家,他也很愿意去做那些事情。这叫着专业化。职业化首先要求我们要有专业的技能,除此之外,还要求我们有职业的态度、职业的意识和职业的道德。工作中的事情,并不每一件都是你喜欢和擅长的,但你也得去做。简而言之,专业化就是“将喜欢的事情做得很好”,而职业化就是“将交给你的事情当作喜欢的事情,并将事情做好”!我承认,和大多数程序员一样,我也想加入核心技术团队,也喜欢做创新性的工作,喜新厌旧,不想干编程中的体力活。但在一个企业里,不可能人人都参加核心技术开发,修建软件大厦总要有一些人会去做施工队,去干搬砖头的体力活。于是,当有工作交代下来的时候,如果不是我喜欢和擅长的,也只好硬着头皮去做,不情愿的牢骚只能暂时憋在心头。当然,既然接了这单子的买卖,也就想尽办法努力去做好,一来是要面子,二来是怕将来留下麻烦。多年下来,也逐渐在一些不喜欢和不擅长的工作中找到快乐和成就感。后来才明白,这就叫职业化。另外,项目开发团队中最怕出现情绪化的程序员。尤其是在核心开发工作中,情绪化的程序员无疑就是整个项目的定时炸弹。尽管这样的程序员可能有着极高的专业化造诣,一旦项目客观要求发生变化,与其原来的喜好和理想不符的时候,他们就可能就会产生抵触情绪,甚至干脆撂挑子不干啦。其实,情绪化是不成熟的表现,更是缺乏基本的职业修养。想想自己过去也曾有过类似的表现,如今想来真是可笑啊。其实,做到职业化也没那么难,只需要乐观的心态和那么一点点牺牲精神。既然工作和纳税一样是无法避免的,我们何不快乐面对工作。既然这件事情总得有人做,牺牲一下又何妨,权当行善嘛。当然,要做就得做好,得有那么一股劲。让我干体力活,我就权当锻炼,即使让我扫地,我也要比别人扫得干净!这样才能在工作中找到快乐和成就感。在职业生涯中,也许会失去某些东西,但也会得到某些东西。有职业化修养的程序员在企业和团队里是值得信赖和让人放心的,将这样的人放到重要和核心的技术项目中将是项目成功的有力保障。因为,不管项目需求如何变化,不管技术方案如何调整,有职业化修养的程序员都会认真做好需要的每一件事情,这可以有效地保证企业和团队的整体利益和目标。因此,想要你的职业发展一帆风顺,一定要修炼职业化人品!尾声是否能认识到人品问题,关键看自己,是否打算修炼人品,关键也要看自己,外人是帮不了的。哲学家说,外因对事物发展的影响有限,而内因才是推动事物发展的根本因素。所以,如果程序员自己不愿意修炼自己的人品,无论外人如何苦口婆心都是没用的,反而会让他觉得你讨厌。人必须要自己经历了一些事情,才会有切身的体会。面对问题,如果开始从自身找原因啦,也就是缘份的开始。当苦苦求索,而不得其解时,也就是机缘到啦。某一天,自己突然想明白啦,或者偶遇高人点化,心中突然豁然开朗,就是顿悟。顿悟之后才发觉原来一切都很简单,以前纯粹是自寻烦恼。程序员不就是那么回事儿嘛!从此,我们就可以轻松潇洒地做程序员啦。但要记住,程序员还是程序员!别修炼了半天人品,修成了专家,成了辩论家,成了哲学家,成了思想家,就是不会编程啦。如果大家都得道成仙了,谁来干活呢?当然,因为你的道行高,大家希望把你供起来,但千万别自己把自己供起来。真的,程序员修炼人品,不是为了摆脱编程工作,而是为了找到编程的快乐。有一位大和尚曾对我说:真正的快乐不在于你拥有多少,而在于你付出了多少!如果你将每一件事都当善事来做,心就会快乐。所以我想,行善从编程开始好啦……作者简介:李战,阿里软件的老顽童,资深架构师。有近 20 年的软件开发经验,属最老一代程序员之一。早年从硬件设计与开发,后来转向纯软件领域,历经汇编开发时代到今天的云计算开发时代的整个历程。目前在阿里软件从事云计算方面的研究与开发工作。(本文来自《程序员》杂志 10 年 01 期)
http://www.cnblogs.com/bdel/articles/digest_1.html

阿里软件资深架构师李战谈:开发者的人品问题相关推荐

  1. 非科班的“他”奋斗六年在职阿里核心资深架构师,现年薪百万!

    因为对软件开发感兴趣,所以找工作的时候就一直投IT行业的职位.刚踏入这个行业时,以为突击一下东拼西凑的面试材料,就能有个很好的收获.结果却是,别说大公司了,就是很多看不上的小公司的笔试题都过不去. 焦 ...

  2. 阿里P9资深架构师:支付宝和蚂蚁花呗的技术架构及双十一实践

    每年"双11"都是一场电商盛会,消费者狂欢日.今年双11的意义尤为重大,它已经发展成为全世界电商和消费者都参与进来的盛宴.而对技术人员来说,双十一无疑已经成为一场大考,考量的角度是 ...

  3. 阿里P8资深架构师耗时一年整理Java工程师成神之路

    1.基础篇 01:面向对象 → 什么是面向对象 面向对象.面向过程 面向对象的三大基本特征和五大基本原则 → 平台无关性 Java 如何实现的平台无关 JVM 还支持哪些语言(Kotlin.Groov ...

  4. 阿里资深系统架构师九峰谈云计算

    为什么80%的码农都做不了架构师?>>>    阿里资深系统架构师九峰谈云计算 被誉为改写IT面貌的"第三次IT革命"的主角云计算,已经从最初的"萌动& ...

  5. 资深架构师谈云原生生态的基石Kubernetes

    谈到Kubernetes就不得不谈到容器.几年前容器技术大热,现在基本归于平淡,之前大家提到的容器通常是指Docker容器,甚至很多人认为容器就等同于Docker,还有很多人像操作虚拟机一样使用容器. ...

  6. 专访阿里云游戏首席架构师李刚:如何解决云服务技术两大痛点?

    原文链接:点击打开链接 摘要: 对于阿里云来说,游戏相关的项目合作一直在增加. 对于如今的游戏行业来说,云服务早已不是什么新鲜的话题.一定程度上,不论是近期兴起的手游,还是曾经的端游和页游,如今都会或 ...

  7. 你和阿里资深架构师之间,差的不仅仅是年龄(进阶必看)

    导读:阅读本文需要有足够的时间,笔者会由浅到深带你一步一步了解一个资深架构师所要掌握的各类知识点,你也可以按照文章中所列的知识体系对比自身,对自己进行查漏补缺,觉得本文对你有帮助的话,可以点赞关注一下 ...

  8. 阿里云王牌架构师杨曦:也谈系统缓存设计误区及高阶使用技巧

    阿里云高级解决方案架构师 杨旭 世界最大混合云的总架构师,4年前,开始作为双11阿里云技术负责人,负责搭建全球最大的混合云结构,把 "双11"的电商业务和技术场景在阿里云上实现,并 ...

  9. 你和阿里资深架构师之间,差的不仅仅是年龄(进阶必看) 1

    读:阅读本文需要有足够的时间,笔者会由浅到深带你一步一步了解一个资深架构师所要掌握的各类知识点,你也可以按照文章中所列的知识体系对比自身,对自己进行查漏补缺,觉得本文对你有帮助的话,可以点赞关注一下. ...

最新文章

  1. TYVJ P1069 cowtour 看不懂题意
  2. 如何在Linux使用Eclipse + CDT开发C/C++程序?
  3. 【算法】Logistic regression (逻辑回归) 概述
  4. 【PAT乙级】1072 开学寄语 (20 分)
  5. Intel INDE(集成原生开发人员体验)的Windows开发指导
  6. Unix 多进程编程
  7. qt种实现搜索栏功能
  8. Win2003 运行 命令行 快捷操作
  9. Android Binder机制(二) ------- 服务的实现
  10. 天天生鲜(Python)Django项目学习资料(视频、源码)
  11. SosoApi使用手册
  12. x722网卡驱动linux,Intel英特尔E810/X722网卡驱动1.4.24版For Linux RDMA(2021年4月8日发布)...
  13. Scala语言精华版笔记整理
  14. php仿qq空间网页源码,516 仿QQ空间网页头部代码
  15. citrix vdi 服务器性能要求,如何评估VDI存储要求
  16. 迷宫问题----经典回溯法解决
  17. word插入题注以及将编号由一.1改为1.1
  18. Secure Socket Tunneling Protocol Service服务无法启动(win7)
  19. 编辑距离(Edit Distance) 一文读懂(Python实现)
  20. 精挑细选【三十首】车载导航专用高清mv视频影音库打包下载

热门文章

  1. Mybatis错误 Result Maps collection already contains value for xxx
  2. perl 获取匹配正则表达式字串
  3. CUMCM-2017-problem-A
  4. 一台服务器,启动多个redis
  5. CNN经典分类网络发展历程GoogLeNet、SqueezeNet、ResNet、ResNeXt、DenseNet
  6. 广州大学数据结构课程设计
  7. 【python】——setup.py build_ext --inplace命令解析
  8. 城市交通类毕业论文文献包含哪些?
  9. 大数据学习路线-(值得收藏)
  10. Java:pdf转word