有人说,代码是一门艺术。也有人说,代码只不过是一份工作而已。
在中国,大部分人应该属于后一种,他们并不真正喜欢编程,却每天为了代码而绞尽脑汁,甚至痛不欲生。
韩寒出道时写过一篇文章叫《杯中窥人》,其实代码也是可以窥见一个人的性格和人生态度的。仔细去品读一个人的代码,你可以读出这个人对待生活的态度,对待工作的热情,甚至看出他的性格。
笔者自工作以来,遇到了各种各样的程序员,却一直未能遇到真正热爱编程的人。个中遗憾,希望借今天这篇文章批判一下当今中国程序员的不良作风,以儆效尤。
1) 高调的USB
笔者在刚刚开始工作的时候碰到一个92年的小组长,当时从事的项目是帮助贵州农场做一个自动化管理的项目,他负责日常管理、分配任务等。他是一个不苟言笑,也不喜欢讨论的人。印象深刻的是有一次,我指着一处代码对他说,这里的逻辑有点问题。他看都没看一眼,便对着我大喊大叫:我怎么可能犯这样的错误。我记得我当时的表情,先是一愣。然后,继续坚持说,这里确实错了。后来发现,那里的逻辑确实有点问题,但最终确定到底是不是他写的代码就不确定了。无论如何,这种过分的高调都无异于虚伪的伪装,越是如此,越会让人觉得此人的水平一定一般。换而言之,越是能力比较强的同学,往往越是娓娓道来、不紧不慢... 不过,笔者有一次在QQ空间写一篇文章提到这个事的时候,他本人还来评论里面给我道歉,这说明他其实是意识到自己错误的。写这个片段也不是为了批评他,希望他本人看到也不要介意。我只是想说明这种现象,因为我记得在跟腾讯同学的一次讨论中,他们也提到曾经有遇到过这样过分高调的同学,他们采取的态度就是完全不予理会,任其自身自灭。
在编程行业,高调没有什么用,这里用Linus的一句话回应这类同学:Talk is cheap, show me the code.
2) 死板的懦夫
有一种人,不懂得变通,总是使用一成不变的方式处理问题。不断地Copy,Copy,Repeat... 这类人有一个特点,他们通常不会去研究新技术,也不会去尝试接受别人的思想。即便其所在领域已经出现了很多新的技术,这种人是永远不会去尝试的。他会等待别人都尝试过了,再来沿着别人的足迹走马观花一番。笔者将这类人称为死板的懦夫。笔者在工作中遇到过不少这样的懦夫,且听我一一道来。
在深圳的第一份工作是在某宝(不是淘宝哈),在某宝不幸遇到一个这样的女程序员,该程序员非常健谈,平时看起来没什么,日常交朋友也OK。可一旦和你讨论问题,你就会发现,此人非常死板,记忆比较深刻的一次讨论是,关于Android确认和取消按钮的顺序问题,在找产品确认后,依然不死心,硬是把一个94年的产品助理“骂”通才善罢甘休。从那一次起,我就发现此人脑子非常死板,她在开发过程中,依然坚持使用eclipse(Android官方推荐使用Android Studio)。从她的代码中,你可以看到if代码墙,生怕出现空指针异常。更加凸显这种人性格的,copy是永远是她的主旋律。有一次,公司要求做一个指纹解锁的功能,做好后感觉和app的风格完全不搭。后来我们的测试告诉我,这个解锁他之前看到过,代码也是原封不动copy过来的... 关于她的事迹还有很多很多,这里就不一一举例了。这类人其实就是大家平时口中所说的码农,代码只是他们养家糊口的工具而已。他们把编程当成一份工作,只要完成任务就好。所以,其实她并没有错,只是准确来说,她并不能算一个程序员。
另外,笔者还有一个哥们,也是比较死板。不同的是,他一直坚持使用最新的技术,而他的问题是,他不能接受别人使用不一样的东西。这也是中国程序员很大的一个弊病。印象比较深刻的几个事情是,事件一:他看到某个括号和编程工具格式化不一样他说会感觉到不自然,从某种层面来说,这是对的,这是对代码要求严格的表现。而从另一个层面来说,此人的脑子的确也略显死板。为什么呢?其实笔者以前也是这样的个性,会让代码格式化后和格式化之前几乎没什么变化,或许他是受了我的影响也不一定。可是,后来慢慢地发现,编译器格式化的部分代码并不好看,有些空格甚至显得多余。为什么会有这样,主要是因为接触的语言多了,接触的人多了,开始可以接受多种风格的代码。而从原则上来说,好的编程风格只是为了便于代码阅读。所以,并不一定要求和编译器理解的完全一致,而只需要在整个项目中保持一致即可。
其实,上面这个例子不能完全说明此人略显死板,更多例子继续往下看。在跟他慢慢接触的过程中,发现他基本属于无法适应新的编程工具,或者会强烈抨击某种编程工具上面,这是其一。其二,此人对于不喜欢的东西会强烈抨击,换而言之,他会有非常强烈的爱恨之分。他会把编程语言区分为喜爱和憎恶,而不是try it,然后再来决定爱或者不爱。其三,笔者其实算是一个对编程工具非常随意的一个人,几乎不会去记编程工具的快捷方式,只会记忆一些常用的快捷方式,每次他在的时候,看我在使用的时候,总会告诉笔者各种各样的快捷键。其实那一刻我就明白了,他应该是一个比较死板的人,如果让他换一个编程工具,恐怕写代码的效率都会下降很多。一定有人会问,你不会吗?答案是:会!但不会下降很多。笔者用过的编程工具有:Eclipse, Visual Studio,Xcode,Clion等等。笔者认为,程序员一定不要受限于IDE。
关于上面两位同学的讨论,也只是基于事实进行讨论。如果本人看到,也希望不要介意,仅仅是为了说明这种现象而已哈。
3) 自觉简单的臭虫
笔者在和上面的那个哥们讨论问题的时候,常常会听到一句话,就是:这个太简单了,没必要...,这也是笔者的那个哥们经常说的一句话。很明显,他将编程划分为了简单和困难。
生活中,你可以发现,他将自己不熟练的东西叫做困难,将自己已经熟练掌握的东西叫做简单。其实,严格来说,编程不应该用简单和困难来区分。或许你认为非常困难的地方,对于别人来说,so easy, 而你认为很简单的地方,对别人来说,可能就非常困难。
这里笔者想讲一个故事,这事依然发生在我在某宝工作的时候。那个时候,某宝正处于创业前期,那个时候的业务逻辑相对而言还比较简单。可就在那个时候,你总可以看到一个哥们,在默默地敲代码,哪怕是在开会的时候,他依然一个人在默默地敲代码。起初的时候,我非常不解。后来,我慢慢明白了。之所以看起来他似乎总是有干不完的活,其实是因为他希望将简单的时候做到极致,他在前期写代码的时候一定是做了充分的考虑。以至于在后期逻辑越来越复杂的时候,系统依然非常稳定。就在前几天,笔者已经了解到,某宝现在后台系统已经非常稳定了。我想,这与这位同学的默默付出是划等号的。所以,笔者认为,将简单的事情做到极致,你就已经成功了。或者说,世界上的任何事情不都是由一堆简单的事情组成的吗?何必要将编程划分为简单和困难呢?笔者将上面这类人叫做自觉简单的臭虫,为什么叫臭虫呢?因为臭虫永远是坐坑观天,他的世界永远只有那么大。
4) 虚伪的骗子
有一种人,表面上,他告诉你,他很热爱编程。事实上,你也可以看到他可能买了很多书籍。可是,那些书籍,他真的看了吗?他平时真的有在写程序吗?他真的非常喜欢编程吗?答案是:No!笔者在工作中遇到过不少这样的人。印象比较深刻的是一个94年的哥们,他每天跟我一起下班,每天上班比我还早。看到了他的勤奋,我在工作中,刻意地告诉他一些我的经验。他也虚心接受。可是,慢慢地发现,他依然会一而再、再而三犯同样的错误。为此,有时候我也忍不住发脾气。从上面的事例中可以看出他并不是真正地喜欢编程,而只是疲于奔命而已。印象深刻的是还有一次,我给他讲OC,讲Swift,可以看到他并没有太大的兴趣,只是敷衍在那听着而已。还有一些同学,你看到有一段时间他会非常拼命,仿佛在和代码度蜜月。可是,一旦过了蜜月期,代码就被无情地抛到了一边。这种现象就是大家俗称的三天打鱼、两天晒网。笔者将上面这类人叫做虚伪的骗子。
5) 无语的哑巴
笔者是一个非常喜欢讨论的人。可偏偏就有一种人,每天只顾着写他自己的代码,什么话都不说。说到这里,笔者想提一下在某某生活的工作经历。在那里工作,遇到的的确是一些比较普通的程序员,甚至可以说是三流的程序员。可是他们喜欢讨论,他们遇到问题会找我讨论,也会指出我的问题。这一点我非常喜欢,这是我一直渴望的一种工作方式。如果你觉得笔者的代码哪里有问题,Just tell me please! 但是,不要东拉西扯,请仅仅告诉我,哪里错了,为什么。不过,在某某生活大家给笔者提的一些错误,笔者还没来得及完全改掉,这里向大家说声抱歉啦。笔者将这类总是一言不发,自顾自敲代码的人叫做无语的哑巴。这类人不光是说,只埋头做事不讨论的人。也包括一些虽然喜欢讨论,却并不会讨论的人。这类人有一个问题,要么他会直接打断你的话,要么就是直接屏蔽你说的话,自言自语;要么就始终坚持自己的观点,不会换位思考。笔者认为一个合理的讨论应该是:先听别人把话说完,然后仔细分析别人到底说了什么,到底是什么意思。再来反驳。而不是一上来就恨不得让别人不要说话。试问,这还叫讨论吗?这应该叫独角戏吧!
关于上面文章中提到的人,可能有部分主人公会看到这篇文章。再次提醒,希望不要介意,笔者只是阐述事例而已。
为什么写这样一篇文章呢?只是因为有点遗憾,笔者工作了这么长时间,却没有遇到一个真正喜欢编程、喜欢讨论的人,大多数都是上面这五类人。其实,有时候想想,笔者是幸运的,能够从事自己喜欢的工作。而上面的第二类和第四类人却不幸成为了代码的奴隶、深陷其中、无法自拔。
在此,笔者发出一份编程召集令,希望可以找到真正热爱编程、喜欢讨论的人!
笔者希望你:
1)热爱编程,不做虚伪的骗子
2)喜欢讨论,不做无语的哑巴
3)用代码说话,不做自觉简单的臭虫
4)愿意学习,不做高调的USB
如果你恰好满足上面这些条件,Call me please!
做个广告
欢迎加入Kotlin交流群
如果你喜欢Kotlin语言,欢迎加入Kotlin交流群: 2840094811 ,一起来参与Kotlin语言的推广工作。
PS:配图均是我的偶像,猜猜他们是谁 -_-