为什么我这么低端:一个程序员的自我修养
作为专职程序员2年多了,应该说我是一个半路出家的程序员,决定写程序只是不想这辈子到处漂,我希望有一个能够让我在一个小镇上工作三天休息四天的手艺而已,或许我只是想在一定的年龄到一个小镇上去做一个麦田的守望者,能够看着一帮孩子成长,让他们快乐,安全,自由的玩耍。初衷往往是美好的,到我编码到一定的阶段后,我发现自己爱好上了这份事业,因为我是一个喜欢思考的人,没事想着优雅的代码以及能够更好的理解计算机让我乐此不疲。
写的代码多了,看的书也多了,慢慢的我发现自己原来只是一个IT民工而已,自己只是在别人的基础上做了一些低级的工作,没有思想,没有总结,没有知识的积累,如果拿数据来说话的话,我是一个失败的程序员。看到啄木鸟社区上的一段话:“每日至少抽一刻钟,解答邮件列表中初学者的问题;每周至少抽两个小时,整理新学知识将体验分享/发表出去,通过blog/wiki/mailList/个人网站……每旬至少抽四个小时,来翻译自个喜欢的自由软件的文档;没有至少抽8个小时,快乐的编程,推进自个儿的项目;每年至少参加一次自由软件的活动,传播自由软件的思想,发展一名‘自由人’……只要我们每个人都坚持这样,10年!就足以改变中国软件的整体面貌”。我在思考,我自己做了什么?有什么的数据证明我是一个合格的程序员?或者更简单的证明我是一个程序员?当我反问自己的时候,心中有一种莫名的悲哀,为自己!
具体的总结一下2009年以前的我:一个低级的程序员,一个低级的blogger,一个低级的美工,一个低级的摄影爱好者,一个低级的伪球迷,一个低级的文学爱好者,一个低级的影迷;一个中级的war3 player,一个中级的互联网爱好者,一个中级的wii爱好者,一个中级的象棋手……有什么高级的?没有!其实我上大学的时候,除了看了几本书外,基本没有其他什么技能,这不是教育的悲哀,是我的悲哀!我原以为好好学习就什么都好了,我自己都不知道为什么会如此的幼稚,而且持续了18年!
当看到这个总结的数据的时候,我希望对自己做一个调整:什么爱好需要努力让自己高级起来,什么爱好需要弄成中级,什么让自己继续的低级下去?目前我的角色是一个程序员,而且我爱好这份职业,如果在这方面我不能让自己高级起来,我怎么可能让自己在其他方面有所突破?为此,我在思考:一个程序员的自我修养!
找到编码的感觉
经过两年的积累,逐渐认识了Java,Python。所学的知识当然要围绕这两门语言展开,一些框架的学习,经验的积累,设计模式的学习都围绕这两门语言展开。其实学了这么多,慢慢的发现基础知识不牢固,很多东西学习也只是皮毛,知其然,而不知其所以然,简单的说就还是个民工,只能进行简单的堆砌,想向上走一步:没门。所以补习理论知识成为好多程序员迫在眉睫的问题。
很多程序员估计像我一样,对文件操作,多线程,Socket等的高层次的编码还停留在理论阶段,只是做了一些demo,了解了一下API,基本没有在实际中应用到相关的知识,或者是简单的实践了一下。其实我们都停留在写代码的原始阶段:简单的堆砌代码,而没有真的找到写代码的感觉。虽然我自以为看了《重构》,看了《First Head in Design pattern》,《敏捷软件开发原则,模式与实践》,《模型驱动设计》等书就可以有所突破,其实我错了,没有量变就没有质变。
寻找编码的感觉,慢慢的熟悉了各种API后,有一种信手拈来,得来全不费工夫的感受的时候,慢慢的就自然理解了大师书中的知识了,或许你到时候会说:其实这就是我工作中碰到的问题的总结。
所以:平均每天编码150行以上,找到编码的感觉。
教是最好的学
在学习的过程中,能够写读书笔记放到网上是一个好的习惯。学习的过程中,必定会碰到很多问题,告诉别人你是怎么解决这些问题的是一种简单的教,一方面可以让自己记忆更加深刻,一方面可以传递知识。
当然,你学到一定的程度,就需要把知识做一个阶段性的总结,不要怕别人笑话,写出来,分享出去,告诉别人这是我的心得。如果现在让我做一个设计模式的PPT,我估计会翻阅好多本书来整理相关的知识,对我来说其实是在温习相关的知识。
我也需要把自己工作中碰到的问题分享到论坛或者是blog上去,例如:性能优化的心得,发现的oracle的bug,发现的Java框架的bug……当别人和我深入讨论一些问题的时候,我才发现:自己研究的其实还不透彻,人外有人,天外有天。当我教别人一些东西的时候,自己也学到很多东西。教的过程中会逐渐发现自己的不足,慢慢的自己就成长起来了!
让数据来说话
其实数量只是一种表现的形式,有时候只能简单的说明你这个人很努力,并不能说明这个人真的很强。我们追求的是数据的结果:带来了什么样的质量!
以前写blog,就是简单的积累一下自己的说话,没有什么有价值的内容,所以关注的仅仅是自己的朋友而已,虽然也写了很多,但是没有什么变化。当我整理自己以前的分类的时候,我很惊诧的发现自己的关注点怎么如此之多,面积太大,投入再大,也不会产生多大的压力,也不会产生什么成果。现在我只写 Java,python,mootools,web2.0和我的连载了,其实我感觉还是有点多,有点杂。如果现在让我拿出点写blog的数据:pagerank,alexa排名,日均ip,pv等,这将是一个很惨的结果。写不出什么有价值的东西,还不如不写。从写blog上我开始醒悟了。
编码这么长时间,我在论坛上提问少,回复少,发帖少成为我的基本特征。如果让我拿一点数据说明我做了什么的时候,也将是一个悲惨的结果。很少东西能证明我在编码上有突破,与众不同。
我们的生活中应该多做事,少作秀,做一个有质量,有品质的人。编码当然要学习啄木鸟社区的作风,成长起来了是不用自己说的,数据会帮你搞定一切。