关于Coding的学习与思考-后来...后来....

来源:互联网 发布:媒介数据分析经理 编辑:程序博客网 时间:2024/05/02 00:33

         以前很讨厌编程,觉得编程很费脑。在我眼里,程序员的形象就是满腹牢骚、满头白发;所以当初毅然选择了测试这个领域: “指”“点”页面轻松把钱赚。后来业界掀起了测试自动化的浪潮,不讨论自动化的实际效益和大家做自动化测试的初衷和潜在目标,就我个人而言,我也参与其中但是并不热衷,就像我对敏捷的感觉一样,很多事情本没有那么复杂,最后被搞成噱头,成就一批人,养活一批人,当然也灭掉一批人。

        我就在这个测试自动化浪潮中生存,从最初的不想搞到后来的不得不搞,再到后来的搞偏了。在这期间,不得不开始不停编程:领导说python不错,那就搞吧,后来说java也不错,那也搞吧。还记得最初写代码的时候,就是“抄”和“堆”:抄,先看看有没有可以抄袭的,直接复制上去,开始抄别人,后来抄的多了,也就慢慢开始抄自己,偶尔也很担心,万一不能上网了或者以前的项目搞丢了这可怎么办;堆,新需求来了就多加几行代码轻松搞定;需求改了,改几行代码;需求不要了,删几行代码,最后代码被我做成了数据库的查删改查了。终于一天,Code review的时候,看着自己的代码也不知道自己的意图是什么,点来点去也不知所云。

        后来想了下,不想做的事情不得不做的时候那就积极做吧,既然没有选择那就好好做吧,不然时间花了,也做了,最后收益还是0,所以就开始买书学习编程,一本、二本、三本……从16个设计原则到23个设计模式;从68个effective java到95个java puzzle, 再到151个suggestion;一个月、二个月、三个月…… 学习初期总是有一大堆迷惘,迷惘某个地方是不是空个空格更好看;迷惘某个包的组织是否合理,整天都为这些鸡毛蒜皮的小Puzzle困惑,还好,有同事Denny的悉心指导,每个问题都会认真的给我分析的“头头是道”。还记得当时他说的话,大体意思是:很多人能写代码,但是不知道为什么这么写。这也是最早对我影响很大的话,至少我当时就想,我以后如果写代码,希望能做到我知道我在干嘛,每句代码都是自己理解和比较过的。

       后来边看书边写代码,开始盲目设计、乱搞一通。看到书上新奇的搞法或者没有用过的知识,都试图套到自己的代码当中去,没有必要用decorator的时候用decorator, 不该用泛型的时候用泛型,诸如此类,越来越热衷,搞点高深的稀有的代码来,可能既是想展示自己,也是想迷惑别人,就像Denny说的最后把自己都绕进去了。不过话说回来这种人生活中还是很多的。至少我曾经历和感受过。

        再到后来,基本知识“学会”了,开始追求“性能”,于是继续研读了虚拟机规范和深入虚拟机,也不知道是真看懂还是假看懂,但是这成了我的一个目标:某天我写出的不仅是代码,而是我能看到我的每一行代码在机器中具体的执行情况;对于学习的把握总是如此,研究的过度就成了钻牛角尖,研究的浅薄则不深入;我就在这两种状态之间游离,不过这当中也确实学了不少知识,知识总是如此,学习能力是一切根本、方法是催化剂、基础是核心,其他都是外壳而已。

         再到后来,开始研究重构、代码整洁、实现模式,这点对我一直影响很大,Kent Beck的实现模式的封面就写了“沟通”,恍然大悟:代码不是自己一个人在某个小CUBE瞎捣鼓的,而是用来沟通的。这个时候再想想为什么程序员会寂寞?其实不会寂寞,因为每写一行代码都在考虑别人是否能读;别人会怎么看自己的代码,和自己的内心不断沟通。然后听宝军同学说某某大师为了给变量名起个好名字,总是随身带本字典。我想寓意正于此吧。通过不断的学习,也越来越深入体会这点,比如用枚举模式代替数字/字符串枚举模式,可以让别人不迷惘;用静态方法替代多个类似构造器的含义区分;诸如此类,看到后来,深深的觉得好的代码已经不仅是让你用的舒服(体会对称美、和谐美、无记忆负担),而且会帮你避免错误,这点在effective java的讨论中很多,例如避免遗忘初始化,避免忘记在枚举应用中加某个switch的case等等。

        再到后来,基础知识学完之后,开始不断学习别人的代码来反思自己的代码(比较是个很好的学习方法)。这个时候才发现自己学到很多东西仅仅是记住了一个说法,并没有真正去体会,就像某次和Denny对字符串连接效率的讨论一样:我说书上说某某效率高,某某效率低,他问我有没有自己写过例子测试过,那个说法已经是过去几年前的说法,在当前的虚拟机中是如何优化等等。我就在想,确实,为什么我就那么相信某个说法并夸夸其谈且深信不疑尼。为什么我不去动手去体会体会,后来想了下无非就是“懒”。缺乏质疑且“懒”总是拒人于知识大门之外。

       再到后来,越学越发现自己的不足,于是开始郁闷起来,这些乱七八糟的知识什么时候才是尽头,越学越迷惘越学越觉得自己浅薄,学到后来也开始沉默了,因为当别人夸夸其谈的时候,总是想起了过去的自己。展示自我与知识学习已经在潜意识产生冲突。后来把牢骚发到微薄上,被site manager看到,给我回复说,思科的工作理念之一就是技术是决绝问题的,不能陷入技术中心。我很认同,但是总是觉得缺少什么,不辞辛苦仅仅是为了解决问题嘛?

       再到今天,再次和Denny咨询点技术的时候,他写了一句话:“这表现专业度与对技术的激”,这不正是我期盼已久的答案嘛,是啊,专业和对技术的激情!虽然国人大多为生活而code,但是也可以表现专业和对技术的激情不是嘛?就像stackoverflow上那样,不管问题大小,哪怕拙劣的表达词不达意,也总是有不同国家不同年龄的人给你悉心回答,这点足以你深深感动并觉得真的有必要把技术当作激情的事业来做;人感人确实是一种好的教育方式。

       貌似很久没有写过日志了,今天深有感触,总结下过去对编程的学习及感受。自勉以后不论还会学多久编程,用多久技术,干一天就表现自己对技术的专业和激情。如果学,踏实认真体会,与工作成绩无关。

原创粉丝点击