He's Pirate.
强迫症
关于强迫症滴碎碎念
三 29th
刚从Google Reader中看到了Kevin最新的日志(链接),发现Kevin又被强迫症所害。想起自己一年多前,也是被强迫症搞得心力疲惫。所以很想写点什么。
那应该是07年年底的时候,我加入FreeWheel有了个3个月左右的时间。上班没多久,我就开始负责构建系统中报表部分的展现模块。因为是start-up,因为是从头开始构建一个新的系统。对于我来说,很是兴奋,很想大干一场。可现实总是出现不如意滴,比如兄弟团队符合给我提供数据的同事那边经常需要调整数据库schema,调整查询方式,然后还是有PM这边断断续续提出来的需求。慢慢的,自个身上的锐气就变成了怨气。因为总是出现很多新的变化,使得我最初所设计的小框架无法轻易支持或者说扩展。后果就是代码结构越来越混乱,伴随着的就是代码质量的下降。那会尝尝对着IDE发呆,因为不知道明天有会产生怎样的变动。过了元旦,系统上线了。各方面开始慢慢稳定下来,我窃喜以为终于有个机会可以好好收拾自己的代码了。于是我又怀着极大滴热情开始着手重构的事宜。我心想,前阵子各种对于理清代码结构或者提升架构的点子终于可以好好发挥了。结果进行了一两个礼拜,中间换了好几种思路,都觉得没有一个最perfect的状态,总有各种不满,然后导致我严重怀疑自己。于是在JavaEye上发了个帖子发泄了下(链接)。
强迫症的状态是越来越明显,我开始每天的失眠,每天的不停的在IDE里面敲code,实现我的新想法,然后最后又开始自我否定,全部删掉。坦白讲,那会有点崩溃的。因为本来觉得代码烂是别人的问题,比如需求变动,接口变动。结果等到各方面都稳定的时候,发现我还是不能写出让自己觉得舒坦的code。所以一下子就怀疑自己了。我那会不停的买书,翻书,各种讲设计,讲模式,讲重构的,我挨个的从中寻找我的解药,可惜最后还是无解。知道有一天在SMN上和robbin以及gigix的聊天使我一下来醒过来了。
robbin告诉我,代码分什么好坏,然后拿着JavaEye举例子,说如果现在给我看JE的源码也许我照样觉得很丑陋。但是就是这份也许很多程序员觉得很垃圾的代码,却支撑起了一个业界专业的一个网站,让很多人在上面交流技术,经验。这就是那份代码的价值,即便也许会有人觉得他很丑,但是他的价值是巨大的。
robbin的话一针见血,让我一下子就翻过劲儿来了。而gigix说的则是更好。嗯,其实他没怎么说我应该如何解决我的困惑。只是把他和他同事曾经的一段聊天记录发给了我看看。记录里,他们在讨论代码的价值,某位高人是这么讲,代码的价值是通过客户来实现的,如果你的项目使得客户获得了更大的收益,那么你这个项目的代码就是有价值的。而做不到这一点,你代码写的在天花乱坠其实也没什么用处。譬如重构,如果重构是为了减轻客户维护的成本,或者减轻系统某方面的开销,那么做这个重构就是有价值,如果重构只是为了程序员自己心里是否舒坦,那么这个是没什么意义的。至少浪费客户的时间与金钱。
gigix和他同事都是做咨询滴,所以看待问题就是看代码对于客户是否能产生商业价值。而对于自己公司的产品,我想更是应该这么要求。
强迫症很快好了起来,我不再每天对着IDE纠结。而是不停以是否为公司代码的商业价值去编码,去重构,去设计。我再也不只考虑自个是否舒服了。因为只考虑自个看着是否舒服不符合公司的利益。如果只为满足自己的喜好,那下班回家做opensource去,在公司为公司写的代码,衡量他的唯一标准就是以公司的利益。无他……
再往后,顺带着自己又多了些变化,特别是和同事争论或者讨论的时候,我只留心对于公司是否有好处的东西,如果你只是说因为某某书上说要这样那样,而要求我这样那样,对不起,我没兴趣。而如果你告诉我,你是从公司利益角度出发,来思考,觉得某些地方应该有change之类的,那么我会非常乐意倾听与讨论。
至此,关于代码的强迫症在我身上已经完全不存在了,直到今天,我依然每天都是以比较良好的心态去写着代码,改着代码。再也没有怀疑过自己。当然,我还是尽量把代码写的让自己舒服的,但是如果某些原因导致我怎么也没办法写出让自己看着特爽的代码,我也不会睡不好。因为我知道,如果某些地方实在复杂,那么就很难找到完美的状态。而抱着实用的心态去解决问题,才能产生最大的价值。
回忆到此结束。随着我对于代码的心结揭开,其他强迫症迹象也都纷纷好转。终于又过上的幸福快乐滴生活。哈哈。。。当然,这段经历对我来说,实在影响很大,我后来也对强迫症这种行为产生的兴趣,并且思考很多。下面是一些碎碎念。
我觉得强迫症一般都会发生在完美主义的人身上,因为只有一个人特别要求完美,才会对不够完美的地方玩命的思考,玩命的拧巴。如果说是一个大大咧咧的人,他很难对一项事物具有太大的执着。
所以像天天强迫自己每天要看多少书,写多少code的人来说,他肯定是希望他的编码技艺是最好的,是不会犯错滴。
一天洗手20次的人,肯定是对自己有强烈的洁癖,从不想让手有不干净的细菌。
总之,他强迫症所在的地方,就是他潜意识里最希望自己在那方面完美的地方。
而解决办法,其实就是很简单的,从另外的角度思考问题,也许每天只是强迫看过多书与编过多的code,并不一定能真正得到非常大的提高。反而是自己丧失了灵性。而每天洗手太多,也许并不能把手洗的更干净,反而造成脱皮等等更不好的情况发生。
这是第一点,先认识到强迫症所在并不一定有助于解决自己想变得完美的那个方面,然后再想想如何真正的去改善。比如也许更多的和高手切磋会更加显著的提高编码技艺,比如我如果勤剪指甲会使得手自然携带细菌数量就会减少。
当然,方向很重要,比如我当初就是方向错误,只顾着自己的审美观,而没去考虑代码真正的商业价值。所以还有一点就是一定要认识到自己强迫症的目标是否是一个伪命题。如果是那么立刻收手啦。人生短暂,应该把时光浪费在美好滴事物上滴。
嗯,俺滴碎碎念说完了,review了一遍,感觉也许都没说到点,不过也无所谓啦,强迫症本来就是一种自我拧巴的过程,自我累的时候,大脑自然就会出来调停,告诉你,要休息了,不要内战啦。
最后祝福Kevin速度摆脱强迫症滴干扰:D
最近评论