经常有人发帖讨论「怎么做一个成功的程序员」,「如何才能成为一个优秀的程序员」,我并不太同意这些文章中的看法,想在这里我想提出一些我对于程序员这个职业自己的想法。
和标题中写的一样,我的目标不是成为一个优秀或者成功的程序员,我想成为一个开心的程序员。因为程序员是一个工作和生活密不可分的职业只有成为一个开心的程序员,才能过着开心的生活。
我相信那些想让自己或者别人成为优秀的程序员的人的最终目的也是能过上更开心的生活:少一点烦恼,多一点自由做自己想做的事情。
可能大家会不太同意我对开心的生活
的定义,这个没关系,尽管把上面的定义替换成你认为能让你开心的事情就行了,那我们是不是只有成为优秀的程序员这一条路才能实现自己的目的呢?答案是NO。
我相信大家都同意程序员这个职业是需要一定天赋的,特别是那些站在顶端的程序员,至少都会有一些过人之处。
在每一个群体中优秀和不优秀都是有一定比例的,我们假定优秀程序员的比例是20%(著名的二八理论),再考虑一下通过自身努力从普通程序员晋升优秀程序员的比例,假设有40%的能站在优秀程序员的行列,这就好像优秀的程序员有一个60分的及格线,过了及格线你就是程序员,没有过你就是普通甚至平庸的程序员。
不管你同意不同意,就结果来说肯定有一部分的人成不了优秀的程序员,如果对这些人鼓吹优秀程序员
理论,就会造成目光放自己够不着的地方,连自己原本能够做好的事情都做不好了。整天会想我怎么才能成为一个优秀的程序员。
这是在我身上发生的真实的事情。在我刚走上工作岗位的时候,作为一个新手,如果我有什么不懂的问题想问问别人的时候,我的pm就会说你应该先搜索一下,然后记录问题,同样的问题决不能再犯第二次。老实说我的心里很受打击。
我并不是不会用搜索引擎,而是我觉得和活生生的人讨论更容易发现问题的本质,以现在的人工智能的水平来说,搜索引擎根本模仿不了人类复杂的思考过程,更不用说给你提成一些建设性的建议。
这种打击把我变成一个不愿意交流的程序员,我开始练习怎么更高效的和搜索引擎交流。我形成了一套自己解决问题的方法:遇到问题先找到问题的根源,拿jvm进程突然消失
为例,第一次碰到的时候我慌了手脚,通过查找我发现我可以从jvm的日志文件中找到更准确的问题描述,再对问题进行第二次查找发现是内存不够,再搜索一下怎么调节jvm
内存,我终于一个人解决了实际问题。
慢慢的我成为了一个优秀的程序员,但是我工作的并不开心。遇到新进来的人问我遇到过的问题的时候,我在心里会有一点鄙视他们(这种问题都解决不了),然后让他们自己去解决问题。不仅如此,有时候和别人意见产生分歧的时候,我会经常性的情绪失控,我都不知道自己是怎么了。
等我明白的时候我已经离开了当初的公司。独立思考
是我当时信奉的优秀程序员法则
的第一条。经过了一年多的时间我自认为成为了优秀的程序员,但确因为缺少与领导和同事的沟通,也没有给别人任何的帮助,所以我是一个没有人认可的优秀的程序员,加上我的工资还是停留在原来的水平,我觉得是时候离开了。
庆幸的是我入职的第二家公司里面的同事都很热情开放,慢慢的我也喜欢上了和身边的同事讨论问题和交流看法,偶尔还会帮他们解决一些实际的问题,那种获得别人打心底的认同的感觉确实让人挺开心的。
更换工作之后我时常会思考上一份工作究竟失败在哪里?我工作上从来没有出过差错,更没有什么不良的表现,只是默默的做自己的事情,唯一不足的和别人沟通不够。
其实我早就发现了自己人际交往能力很弱,但是每次都用程序员都不擅长人际交往这个借口来搪塞自己。想要在有人的地方避开人际交往,这就是我失败的原因。
我相信很多程序员都犯过这种错误,因为程序员都有着不同常人的自尊心,是一个很容易受伤的群体。不善交际,不修边幅同样导致了程序员的社会认可程度低,最终产生了一群外表光鲜,内心折磨的挨踢程序员。
看过不少国内外程序员对比的文章,我产生了一种想改变程序员处境的冲动(原谅我的自大)。
我做了头脑风暴式的思考。
程序员加班,导致没有时间进行社会交际。程序员圈子小,没有机会认识各种各样的群体。程序员爱宅,进一步缩小了活动范围。大部分程序员工资不高,想交女朋友也有心无力。
我的解决办法是做一个开心的程序员,做好自己的事情,不要太在意别人的看法。
程序员受歧视,别的行业就没有人歧视吗?
程序员加班,护士要上夜班,加班比程序员还频繁。
程序员圈子小,当兵的圈子更小,都是男的。
很多问题除了程序员这个行业存在,其他行业也同样存在,我们不能将他们太过放大化。
不是优秀的程序员?根本不是问题,有工作就说明是有你能做到的事情,你只要能做好自己的事情,注意身边的人际交往,就算不是优秀的程序员,一样会得到别人的认可,活的开心最重要。
祝你早日成为一个开心的程序员!