作为从新生大学漂流过来的,自然是知道xdite老师的全栈营。但是我没有加入这个大本营,因为我已经写了5年的代码了,而且我也不需要xdite老师教的ruby。
但是全栈营介绍我是看了,xdite老师的元学习我也上了,老师要求初学者不要追求完美,不要深入细节,要先从一个成型的实例出发,不断练习不断练习不断练习,先找到信心,入门之后再不断深入,各种高频小套路教给站在编程圣殿门口的观望者。
写了这么多年的代码,怎么开始的早就已经不记得了,不过xdite老师说得对,从入门到放弃,是多少莘莘学子共同的归宿,如果当时不是选了这个专业而且一路上没有过多的东张西望,何去何从尚不得知。
笑来老师说:“你做一件事的方式,其实就是你做所有事情的方式”。那我写代码的方式,也是我读书,写字,跑步,游泳,交友,恋爱的方式?
以前上学的时候,特别崇拜两个圈内大牛。一个是我的师兄,一个是我的同门。
师兄写代码,有时候如提笔写字,一挥而就,甚至敲键盘的速度大于我们思考的速度,崇拜之情油然而生。他能够把面向对象发挥的淋漓尽致,能用抽象和继承把接口做的高效,能用Linq把多维数组排序做的优雅,能用各种design patterns把项目分配的井井有条,能找到最合适的索引,知道从哪里找到需要的开源代码,总是能用看似最基本的功能,写出令人惊喜的代码。看师兄的代码,有时候会都觉得好神奇,有一次一个正则表达式我费了好久功夫才测出来,他用最简单的编码转化加上位运算就解决了,有时候他会写一些小功能程序,好玩也实用,师兄生活中也是一个有趣的人,是个段子手,喜欢动漫,会吉他,经常旅行,偶然还能写首很不错的小诗,经常能给我们带来小小的惊喜,会在某一天早晨突然抱来一只猫,给实验室过生日的送一份特别的礼物,在新年即将来临时在实验室挂上一个新的日历,每次玩三国杀,他都是那个让你猜错身份的人。毕业那年,他悄悄做了一个video,很感动。
同门倒是相反,写代码速度比我还慢不少,但是最终总能比我先完成。慢慢地我发现,我一般是早上写代码,下午改bug,晚上改bug,他一般是早上查资料画流程图看需求,下午或者晚上才写代码,好像不怎么改bug,即使改bug,也很快就改完了。他跟我们说,项目中的bug,70%以上的都是需求或者逻辑上理解有误或者考虑不全造成的,先把这部分理清楚,就会减掉大部分的bug,剩下的bug,基本上都是技术上造成的,这些从网上都可以查得到,多写日志,对关键的地方要捕获异常,就能够定位到出错的地方,改起来挺快的。每次讨论一个解决方案,他都能自带三个可选答案。那时候他基本上负者了我们出门的规划任务,每次出门游玩,他都会把各个问题考虑到,会把行程,交通,住宿,天气,客流量都考虑到,而且还能想到一些突发事件准备一些防御措施。我们经常会说,多亏你带了手电筒,多亏了你带了胶带,多亏了你找到这条路,问他为什么想这么全,他说没什么啊,一出发这些东西自然就出现在我的脑子里面了,我就都带上了呗。
工作之后,身边的人水平参差不齐,写出的代码也五花八门。李工是个老员工,我去年刚来公司的时候,项目中一碰到新的功能模块就去找开源代码,我说用log4net吧,李工说自己写了个类,不要用开源啊,我说用npoi吧,李工说.net有office组件,不要用开源啊,我说ws的参数不要拼字符串,李工说上一个版本就是这样的不用改了,我说用cookie做缓存吧,李工说之前cookie有问题就不要用了,我说这个sql查询要改成参数化查询啊,李工说以前就是这样的没有问题的,晚上我们去KTV,李工说我不会唱歌就不去了,我们说小李子出新电影了周末去看吧,李工说我不追星我不去了,我们说你这个显示器太小了换个大点的吧,李工说这个我用了好多年了感觉还行不用换了,我们说今天晚上不加班了,开黑吧,李工说游戏什么的没有兴趣。
而我自己,经常是写出一段功能后,不知不觉的就要开始优化,重构,封装,然后再补充一段功能后,就对原来已经重构的代码再次优化,重构,封装,如此往复。我知道提早优化是万恶之源,但是习惯已经养成,不知不觉就做了,如果一个功能写了上百成千行后,或者在一个htm文件里写了大量的js之后,即使没有写完,也忍不住从这上千行的代码中提取方法,忍不住把这个js拿到一个单独的文件中。虽然有时候并没有必要甚至还影响效率,但就是忍不住。以前写毛笔字也是,写勤礼碑,一定要把前面的写好了之后再写后面的,所以,导致前部分的“唐故秘书省著作郎......”写了上百遍了,才写到 “ 其后职位温氏为盛”,自己知道应该先通临几遍,有个整体印象,再从各个字着重入手,但是前面没写好,不知不觉地就是写不下去。
细细想一想,笑来老师这句话还是有一点道理的。
码如其人。