开发者的人品问题

article/2025/9/19 2:04:06

程序员都知道:绝大多数编程中的问题,最终都是自己的人品问题。当遇到奇怪的问题时,我们总是喜欢怀疑系统、怀疑编译器、怀疑网络、怀疑硬件……就是不愿意怀疑自己的人品。熬过几个不眠之夜后,最终还是发现自己的代码存在人品问题。只有极少数的情况才是系统的问题。

同样,一些程序员在职业发展中遇到问题时,也总是喜欢怀疑公司不好,怀疑战略有问题,怀疑流程制度不合理,怀疑老板和同事……就是不愿意怀疑自己的人品。

在大大小小的IT企业中,总能看到一些技术并非最顶尖的程序员做成大事的例子,也总看到一些技术牛人被埋没而不能一展才华的现象。我想,除了机遇之外,还有一个很重要的因素,那就是:程序员的人品问题!

当然,这所说的“人品”,依然是调侃的说法,并非指道德问题。其实,人品问题指的是程序员的软实力。如果将程序员的编程技能称为硬实力,那么编程技能之外的东西统统可以称为软实力。不容置疑,编程技能是一个优秀程序员必须具有的硬实力,对程序员的职业发展起着最直接的作用,但程序员的软实力同样不可忽视。

如何修炼自己的人品呢?我想谈谈自己的一些经验和教训。


 

程序员相轻

在长期与程序员打交道的过程中,发现大多数程序员和我一样,喜欢以自我为中心,特别是年轻的程序员。也许我的观察可能不完全正确,但从许多程序员的言谈举止中,确实可以感受到我曾经的浮躁心态。

喜欢以自我为中心的人,往往会自以为是,并按自己的思路和想法行事,不太愿意听取别人的想法和意见。同时,这样的人,性格相对内向,喜欢沉浸在自恋和自负的虚幻空间里,其他人的思想都看不上。当两个都很自我的程序员相遇时,他们不是互相倾听和学习对方的优点,而更喜欢找对方的缺点,从而显摆自己的优势。这就是所谓“程序员相轻”现象!

不知道各位程序员是否存在程序员相轻的心态,反正以前的我经常看不起别的程序员,甚至还看不起那些德高望重的老前辈。能被我欣赏的程序员更是寥寥无几。同事编写的代码在我眼里就是小儿科,或者干脆就是垃圾。我认识许多过来的程序员,那些曾经很自我,但现已放下,从而潇洒编程的程序员。他们现在都在一些公司的团队里担当重要角色,但据他们反映,“程序员相轻”的现象在IT企业里是普遍存在的。

现在的软件开发,大都需要团队协同来完成的。团队作战是需要团队每一个程序员相互信任和尊重,将分散的力聚在一起形成合力,从而攻克一个又一个的项目工程。如果一个团队中的程序员相轻现象严重,团队中的成员就会从相互争论演变成相互指责,逐渐失去成员间的相互信任和尊重,内耗日渐严重。最终,团队的力量就四分五裂,大家并不向同一个方向使力,整个团队将变得毫无战斗力。

我想,对于程序员的职业发展来说,要过的第一个坎就是克服“程序员相轻”的心态。只有修正了这一人品问题,才能将自己的思想从狭隘封闭的自我空间中解放出来,才能踏上一条宽广的职业发展之路。那么,克服程序员相轻的心态很难吗?其实不难!很简单:放下自我!

世界上最难战胜的对手就是“自我”,而世界上最重的包袱也是“自我”。因为自我,人必自恋,心必自私,行必自负,荣必自欺,败必自卑。程序员相轻这一最大的人品问题,就是因为太自我。如果敢说“我的人品没问题”,那就得先放下自我。自我放下啦,人品问题也就放下啦。既然这样,我们何不将这沉重的包袱放下,让心灵轻松自由起来的呢?


 

沟通交流

大多数程序员是比较含蓄的。比起复杂的人际交往,我们更喜欢单纯的技术工作。因此,在与人交流的时候,程序员会表现出两方面的不适应:一是不善于倾听;二是不善于表达。其实,我以前也是这样。在听别人讲话时喜欢默不作声,而心里总盘算自己的思路。轮到我讲话的时候,却不能有效地表达自己的思想,讲的话很难让人理解。有时候,又喜欢打断别人讲话,将自己的观点强加于人,也不管是否听懂对方的意思,就大加指责,甚至出言不逊。

沟通交流障碍是大多数程序员普遍存在的另一个人品问题。而在团队协作中免不了相互沟通,如果一个程序员在沟通方面存在障碍,是很难融入团队开发工作的。因此,程序员应该努力提升自己的沟通能力,修炼沟通交流方面的人品。当然,提升自己的沟通能力,并不是要求我们练成辩论家的口才,只要能做到有效地倾听和有效地表达就已经足够了。

其实,做到有效的倾听还是比较容易的,特别是当对方的表达能力很强的时候,我们只需要静下心来认真倾听即可。即使不是很容易听懂别人的话,就多问问,请对方再讲讲。反正,一定要先理解别人的意思,才表达自己的意见。或许在你看来别人的想法是错的,不妨先让人家把话说完。没准等人家说完之后,你会发现原来自己错啦;即使自己没错,也能可能理解错了人家这样想的原委。理解是从倾听开始的,认真倾听体现了对人的尊重。设身处地想想,如果是你在发言时,是否希望人家都能认真倾听你的心声,理解你的思想呢?那么,在别人发言时,我们为什么就做不到认真倾听呢?

然而,倾听的目的是为了理解别人的想法。一些人默不作声,貌似在听人家讲话,实际上想着别的事情;而一些人却是不懂装懂,假装点头,让人家误以为听懂了。对于有效的沟通来说,这些现象不但没有好处,反而会带来更多坏处。问题得不到解决,隐患埋藏得更深。因此,倾听就要认真仔细的听,努力从讲述者的思绪去理解问题,真正理解别人的想法。懂就懂,不懂就不懂,千万别不懂装懂。不管你是菜鸟还是大牛,多问问,没人会瞧不起你!

相对来说,做到有效地表达会难些。很多程序员会有这种感觉,让我写代码容易,让我说出来就难。只可惜,代码是写给机器的,沟通交流面对的却是人。因此,提升语言表达能力也是非常重要的,除非你不打算与人打交道。

其实,在语言表达方面还是有一些简单的原则可以借鉴的。首先,要记住,不管怎样讲,要把握得住讲话的逻辑线索;其次,先讲背景,建立起沟通的上下文,再讲具体的细节;然后,在讲解中穿插关键词语的简短解释。相信这样讲解是可以让许多人理解的。这就好像编程,得有完整的逻辑主线,得有上下文,还得有变量定义,等等。

另外,在讲话时尽量少用指代词,就是少用“这个”、“那个”、“它”等词语。不妨直接说出这些指代词背后的真正名词,不过是多说几个字而已,但听者更容易准确地知道你指的什么。比如,你向别人请教时说“这个东西有问题,你知道原因吗”,人家一定会反问“什么东西”。但如果你说“Memcached命中率有问题,你知道什么原因吗”,人家就可以立即开始思考问题的原因啦。尽管在你的头脑里“这个东西”指的就是“Memcached命中率”,但人家并不清楚。这就好像编程时对变量命名一样,相信编程经验丰富的你基本上不用a、b、c这样的通用名字,一定会用bufferSize、totalAmount、lastChild等等让人一眼就能明白的单词。那么,既然你能在编程中可以养成良好的命名习惯,为什么不能在语言表达中也养成良好的命名习惯呢?

程序员如果把沟通交流的人品修炼好了,保证你的职业发展会驶上快车道。


 

协作能力

我以前喜以欢单打独斗。如果我不能掌控全部代码,我宁愿不做;或者动不动就把本该人家写的代码也写一份,搞得别人很没面子。后来我知道,就算我是千里码,日编千行,夜编八百,也很难独自完成现代的大型系统开发。在现代的软件企业里,协作能力也是对程序员人品的重要考验,我们应该努力提高在协作方面的人品。

首先,提高协作能力要善于分清责任和义务。其实,这个很简单,就是根据大家约定的分工做事情,该谁做的就由谁做,该谁担责任的就谁担责任。不要盲目做事,更不要随意插手人家的事情。程序员应该牢记自己的责任,切实履行自己承担的义务。只有这样,才能赢得同事们的尊重和信任。其实,对一个有战斗力的团队来说,不但需要忠实履行义务的成员,更需要敢于承担责任的成员!

其次,就是要随时了解和关心别人在做什么。我以前喜欢闷头做事情,守好自己的一亩三分地,其他的都不闻不问。这对于协作开发来说是非常不好的。在一个协作的团队中,不了解别人在做什么,自己的事情也肯定做不好。分清责任和义务,并不是说可以不了解和关心他人的事情,千万别为了分清责任和义务而走极端。

最后,就是做事要积极和灵活。在这一点上,可以说是仁者见仁,智者见智,修炼起来确实需要些悟性的。做事积极主动相对比较容易,看到团队的问题主动提出来,并从自我做起加以解决;对于没人承担或谁都不愿做的事情,试着去做做;自己取得了成果,主动与大家分享一下;别人的工作有了进展,多多鼓励和支持一下。不过,做事灵活就更不容易把握,这要求既能成事,又不失原则。这种人品只有在摸爬滚打中才能修炼出来,就看大家的悟性啦。


 

职业修养

毋庸置疑,程序员是一种职业。一些人是因为生存而选择了做程序员,一些人是因为兴趣爱好而选择了做程序员。可能大多数程序员和我一样,既是为了生存,也是喜欢编程,所以选择了做程序员。不管怎样,吃了程序员这碗饭,就得对得起程序员这一职业。既然程序员是一种职业,那就有职业化的要求。一名程序员是否具有职业化的修养,可能是企业老板最关注的人品指标。

职业化与专业化有很大不同。我们常常会称赞某人很专业,说的是这个人有某方面的专长。某方面的事情他是专家,他也很愿意去做那些事情。这叫着专业化。

职业化首先要求我们要有专业的技能,除此之外,还要求我们有职业的态度、职业的意识和职业的道德。工作中的事情,并不每一件都是你喜欢和擅长的,但你也得去做。简而言之,专业化就是“将喜欢的事情做得很好”,而职业化就是“将交给你的事情当作喜欢的事情,并将事情做好”!

我承认,和大多数程序员一样,我也想加入核心技术团队,也喜欢做创新性的工作,喜新厌旧,不想干编程中的体力活。但在一个企业里,不可能人人都参加核心技术开发,修建软件大厦总要有一些人会去做施工队,去干搬砖头的体力活。于是,当有工作交代下来的时候,如果不是我喜欢和擅长的,也只好硬着头皮去做,不情愿的牢骚只能暂时憋在心头。当然,既然接了这单子的买卖,也就想尽办法努力去做好,一来是要面子,二来是怕将来留下麻烦。多年下来,也逐渐在一些不喜欢和不擅长的工作中找到快乐和成就感。后来才明白,这就叫职业化。

另外,项目开发团队中最怕出现情绪化的程序员。尤其是在核心开发工作中,情绪化的程序员无疑就是整个项目的定时炸弹。尽管这样的程序员可能有着极高的专业化造诣,一旦项目客观要求发生变化,与其原来的喜好和理想不符的时候,他们就可能就会产生抵触情绪,甚至干脆撂挑子不干啦。其实,情绪化是不成熟的表现,更是缺乏基本的职业修养。想想自己过去也曾有过类似的表现,如今想来真是可笑啊。

其实,做到职业化也没那么难,只需要乐观的心态和那么一点点牺牲精神。既然工作和纳税一样是无法避免的,我们何不快乐面对工作。既然这件事情总得有人做,牺牲一下又何妨,权当行善嘛。当然,要做就得做好,得有那么一股劲。让我干体力活,我就权当锻炼,即使让我扫地,我也要比别人扫得干净!这样才能在工作中找到快乐和成就感。在职业生涯中,也许会失去某些东西,但也会得到某些东西。

有职业化修养的程序员在企业和团队里是值得信赖和让人放心的,将这样的人放到重要和核心的技术项目中将是项目成功的有力保障。因为,不管项目需求如何变化,不管技术方案如何调整,有职业化修养的程序员都会认真做好需要的每一件事情,这可以有效地保证企业和团队的整体利益和目标。因此,想要你的职业发展一帆风顺,一定要修炼职业化人品!


 

尾声

是否能认识到人品问题,关键看自己,是否打算修炼人品,关键也要看自己,外人是帮不了的。哲学家说,外因对事物发展的影响有限,而内因才是推动事物发展的根本因素。所以,如果程序员自己不愿意修炼自己的人品,无论外人如何苦口婆心都是没用的,反而会让他觉得你讨厌。

人必须要自己经历了一些事情,才会有切身的体会。面对问题,如果开始从自身找原因啦,也就是缘份的开始。当苦苦求索,而不得其解时,也就是机缘到啦。某一天,自己突然想明白啦,或者偶遇高人点化,心中突然豁然开朗,就是顿悟。顿悟之后才发觉原来一切都很简单,以前纯粹是自寻烦恼。程序员不就是那么回事儿嘛!从此,我们就可以轻松潇洒地做程序员啦。

但要记住,程序员还是程序员!别修炼了半天人品,修成了专家,成了辩论家,成了哲学家,成了思想家,就是不会编程啦。如果大家都得道成仙了,谁来干活呢?当然,因为你的道行高,大家希望把你供起来,但千万别自己把自己供起来。真的,程序员修炼人品,不是为了摆脱编程工作,而是为了找到编程的快乐。

有一位大和尚曾对我说:真正的快乐不在于你拥有多少,而在于你付出了多少!如果你将每一件事都当善事来做,心就会快乐。所以我想,行善从编程开始好啦……


 

李战作者简介:

李战,阿里软件的老顽童,资深架构师。有近20年的软件开发经验,属最老一代程序员之一。早年从硬件设计与开发,后来转向纯软件领域,历经汇编开发时代到今天的云计算开发时代的整个历程。目前在阿里软件从事云计算方面的研究与开发工作。


 

(本文来自《程序员》杂志10年01期


http://chatgpt.dhexx.cn/article/ShUlECM9.shtml

相关文章

A. 人品问题

A. 人品问题 Time Limit: 1000ms Case Time Limit: 1000ms Memory Limit: 65536KB 64-bit integer IO format: %lld Java class name: Main Submit Status PID: 1064 Font Size: - “人品既不能被创生,也不能被消灭。只能从一个人转移到另一个人,从…

BNU 1082 人品问题

这个题我是1A 突然觉得自己好叼 #include<bits/stdc.h> int main() {printf("25\n");return 0; }

人品问题

Description 网上出现了一种高科技产品——人品测试器。只要你把你的真实姓名输入进去&#xff0c;系统将自动输出你的人品指数。yzx不相信自己的人品为0。经过了许多研究后&#xff0c;yzx得出了一个更为科学的人品计算方法。这种方法的理论依据是一个非常重要的结论&#xff…

人品差的人,开口闭口都是这些话,一定不要深交!

说话之道&#xff0c;也是为人之道。 言语是思想的发声&#xff0c;从一个人的话里&#xff0c;往往可以听出其内心的声音。 从而初步判断出一个人的人品如何&#xff0c;是否值得交往。 那些人品差的人&#xff0c;开口闭口都离不开以下三种话&#xff0c;身边若有此类人&a…

adb logcat 命令行用法

本文为转载。 作者 :万境绝尘 转载请著名出处 eclipse 自带的 LogCat 工具太垃圾了, 开始用 adb logcat 在终端查看日志; 1. 解析 adb logcat 的帮助信息 在命令行中输入 adb logcat --help 命令, 就可以显示该命令的帮助信息; [plain] view plain copy octopusoctopus:~$ ad…

java logcat_logcat -- 基本用法

1.Log类是一个日志类&#xff0c;我们可以在代码中使用logcat打印出消息 常见的日志记录方法有&#xff1a; v(String,String) --verbose 显示全部信息 d(String,String) -- debug 显示调试信息 i(String,String) -- information 显示一般信息 w(String,String) -- warning 显…

Logcat使用

目录 一、Logcat窗口 二、过滤 logcat 消息 三、Logcat的日志级别 四、设置日志信息颜色 一、Logcat窗口 Logcat在哪里&#xff1f;我都是直接点击工具栏中的Logcat图标。 Logcat窗口是用来查看应用日志的啦&#xff0c;我把每个部分标注了一下。 二、过滤 logcat 消息 一…

[Android]Logcat调试

Android采用Log(android.util.log)工具打印日志&#xff0c;它将各类日志划分为五个等级。 Log.e 打印错误信息 Log.w 打印警告信息 Log.i 打印一般信息 Log.d 打印调试信息 Log.v 打印冗余信息 不同等级的日志信息&#xff0c;在日志栏中会以不同颜色和等级(E、W、…

java logcat_使用 Logcat 写入和查看日志

Android Studio 中的 Logcat 窗口会显示系统消息,例如在进行垃圾回收时显示的消息,以及使用 Log 类添加到应用的消息。此窗口可以实时显示消息,也可以保留历史记录,因此您可以查看较早的消息。 要仅显示感兴趣的信息,您可以创建过滤器、修改消息中显示的信息量、设置优先级…

adb 抓取logcat 日志

&#xff08;1&#xff09;确保计算机里面有以下三个文件&#xff0c;才能抓取logcat日志&#xff08;只需要这三个文件就可以了&#xff09;。如果你的计算机有android sdk&#xff0c;以下三个文件会在你的sdk下的platform-tools文件夹里面。如果需要打印logcat日志的计算机没…

新版logcat最全使用指南

前言&#xff1a; 俗话说&#xff0c;工欲善其事&#xff0c;必先利其器。logcat是我们通过日志排查bug的重要武器之一。从某个版本开始&#xff0c;logcat改版了&#xff0c;改版之后&#xff0c;也许某些人觉得不太习惯&#xff0c;但是如果稍微学习下之后&#xff0c;就发现…

logcat命令介绍

1.android log系统 2.logcat介绍 logcat是android中的一个命令行工具&#xff0c;可以用于得到程序的log信息 log类是一个日志类&#xff0c;可以在代码中使用logcat打印出消息 常见的日志纪录方法包括&#xff1a; 方法 描述 v(String,String) (vervbose)显示全部信息d(Stri…

logcat命令总结

一、logcat命令介绍 1.android log系统 2.logcat介绍 logcat是android中的一个命令行工具&#xff0c;可以用于得到程序的log信息 log类是一个日志类&#xff0c;可以在代码中使用logcat打印出消息 常见的日志纪录方法包括&#xff1a; 方法 描述 v(String,String) (verv…

Android Studio 使用 Logcat 写入和查看日志

使用 Logcat Logcat是日常开发的重要组成部分。如果您看到其中一个“强制关闭”或“已停止”对话框&#xff0c;您要做的第一件事就是检查与此崩溃相关的 Java 堆栈跟踪。这些被记录到一个名为 Logcat 的工具中&#xff0c;其目的是显示来自您设备的所有日志。它显示来自模拟器…

Android logcat命令详解

参考网址&#xff1a;https://www.cnblogs.com/JianXu/p/5468839.html 一、logcat命令介绍 二、logcat缓冲区 三、logcat命令参数 四、logcat格式化输出 五、logcat优先级 一、logcat命令介绍 1.android log系统 2.logcat介绍 logcat是android中的一个命令行工具&#xf…

机器学习:EM算法

一、初识EM算法 EM算法也称期望最大化&#xff08;Expectation-Maximum,简称EM&#xff09;算法。 它是一个基础算法&#xff0c;是很多机器学习领域算法的基础&#xff0c;比如隐式马尔科夫算法&#xff08;HMM&#xff09;等等。 EM算法是一种迭代优化策略&#xff0c;由于…

什么是em?

em是一个相对大小&#xff0c;我们可以这样来设置大小&#xff0c;如&#xff1a;1em,0.5em等。 所谓相对&#xff0c;必然存在一个参照物。这里的参照物指的就是父级元素的大小&#xff0c;按照css元素的继承关系&#xff08;并非所有元素都有继承关系&#xff09;&#xff0…

em和rem单位

我们在制作web端页面时&#xff0c;基本都是使用像素px作为单位&#xff0c;但是我们知道移动端设备具有多种多样的宽度&#xff0c;而使用物理单位在不同宽度和不同分辨率的手机上会有一定差异&#xff0c;那么在某些设备可能就会出现页面不美观的问题。所以为了解决此问题&am…

em与rem

rem 相对于浏览器的根元素html的字体大小来计算&#xff0c;如果没有设置&#xff0c;大多数浏览器默认大小默认为16px 默认情况下浏览器通常有字体大小 16px&#xff0c;但这可以被用户更改为从 9px 到 72px的任何值根 html 元素将继承浏览器中设置的字体大小&#xff0c;除非…

GMM的EM算法实现

在 聚类算法K-Means, K-Medoids, GMM, Spectral clustering,Ncut一文中我们给出了GMM算法的基本模型与似然函数,在EM算法原理中对EM算法的实现与收敛性证明进行了详细说明。本文主要针对如何用EM算法在混合高斯模型下进行聚类进行代码上的分析说明。 1. GMM模型: 每个 GMM 由…