程序员的工匠精神
什么是工匠精神
工匠精神,一方面,指的是工匠们对自己的产品精雕细琢、精益求精的精神:“工匠们对细节有很高的要求,他们追求完美和极致,努力把品质从99%提高到99.99%。”另一方面,指的是整个社会对能工巧匠由衷的敬意,给予较高的社会地位。而现代西方以制造业立国,一定意义上,制造业文化就是工匠文化,尤其是高端制造业,往往需要从业者乃至整个社会具备一种所谓的“工匠精神”。而工匠精神放在程序开发上面来看,是对自己程序的精雕细琢,对自己的程序负责,以及对程序的敬畏心态等各方面。
细节决定质量
其实,写好程序并没有太高深的学问,很多时候,一个问题没法解决,或程序出bug的,往往是细节没有做好。古人有云“一屋不扫,何以扫天下”,一个人的能力提升,往往也是从细节积累,量变而达到质变,首先有量的积累,然后就会有质的改变,而这个过程,几乎每个程序员都会经历过这样的过程。
而很多人在做开发,往往是和别人比,谁谁谁又学习了什么新东西,然后自己一定要想办法超越,然后又开始扎入另外一头去研究,然后各种基础的理论,什么架构啊,设计模式啊,基本上都懂一些,而其实并没有进行深入的研究,似乎懂得很多东西,然后自己也就会有种飘飘然的感觉。当然,不断的去研究新东西,这种态度,我觉得对于程序员来说,是一种很好的态度,但是不能舍弃从细节处的研究。
具体的如何从细节处研究,该怎么样在细节上面进行雕琢,我在此可以大概举一些例子或是一些情况进行描述一下。比如,在实现菜单点击按钮的时候,一般来说,点击后就弹出子菜单,然后点击菜单可以进行一些操作,但如果带着工匠精神去做,应该要考虑用户在长按的时候会不会有其他操作,用户按下去之后,颜色是否需要改变,长度高度是否需要改变,然后点击后加载菜单的底层应该如何实现达到相应更快更高效,是否需要验证权限是否可以点击这个菜单?等等,这就是从细节方面进行深入的思考,我觉得这就是程序员细节上该有的工匠精神。
对程序要有敬畏心态
对有的人来说,是玩程序;对有的人来说,是被程序玩;一般来说,就是分为这两种情况,但绝大部分人希望自己是在玩程序。我觉得想要玩程序,应该需要抱有一种敬畏的心态。这作何解释呢?看似与玩程序有冲突,实则不然。其实,如果你敬畏他,那么你就能更好的发现问题,发现自己的不足之处,而也才能做到更小心。而我记得也有一句谚语描述了大致是这样的一件事情:越是会游泳的,往往不是死于大江湖海,而是死于沟渠。而其实对于任何人来说,都看似不可能会发生错误的地方发生错误,而在看似会发生错误的地方反而不会发生错误,这是为什么呢?因为,越容易犯错误的地方,人就会越谨慎,越敬畏,而在看似不会犯错的地方,就往往会疏忽、自大,自然就出问题了。
而在写程序上的敬畏,我这里也大致说明一些例子来描述这些事情。比如写一个你经常写的功能,都应该做一下测试,看是否达到预期的效果,因为有可能你写的时候会大意,造成语法不对(一般人可能会说,用的IDE,不太可能出现这种情况没发现错误),或者由于环境配置问题甚至是SDK版本不一样而造成问题等等;而工作中,出错了,首先不要急于回答不是自己的错误,先思考然后在回复是不是自己的错误,解决方案是什么样的,然后进行总结,最好是整理成笔记,记录详细的错误表现和解决方案;这些都是对程序的敬畏,因为敬畏,所以认真。
善于总结,经常选择性的温习旧内容
我在上面的敬畏心态里最后提到一个关于错误的态度问题,这里,我对总结方面进行一下分析和大致分析一下如何去做。
开发,其实总结分为很多方面。一方面是在学习新东西过程中,与当前学到的东西或是结合自己的经验、经历对当前所学进行对比,总结;另一方面就是对错误进行总结,再者,就是对自己想到的解决方案进行解决;其他方面的总结。
而总结,我觉得非常重要的一点,就是形成文字,并做详细的描述,可以写在博客或发到技术论坛,或者是纸质笔记本记录,等等。如果是能分享出来,一方面能帮助别人,一方面可以得到更好的建议,再者就是可以做更详细的反思,这些都是不错的。如果不做总结,基本上下次通常会再犯,然后不断的进行迭代犯错过程,也许多犯几次会自动跳出这种犯错迭代。
而总结之后,不去看,不去回顾,也是没有卵用的。总结了,可以针对印象快淡了的,进行选择性的查看,反思,也许能温故而知新,或者会想出其他一些点子。而我往往也是通过这种总结,然后就会诞生一些如何让开发更高效的想法,然后就会思考能不能写一个自动化工具来让开发更高效,或是能不能形成更好的规范化文档,等等。
总结
本文我大致分为了几个方面对程序员的工匠精神进行了一些分析,以及如何去做等方面举了些稍微具体的例子,希望分享出来能给其他人一些帮助,并且自己以后能进行回顾和分析,思想能提高到更高的层次。