下班前一路和震子走,一路还在吐槽,事情到真的非常小,但心里却真的替很多跟着我们这批“老骨头”做事的新人担心,所以想说一点自己的真心话:做个coder其实很简单。
实在人说实在话,衡量一个负责业务系统代码质量最容易量化的就是:
- 新增,删除,修改一个功能和业务要动多少部分的代码?多少代码是重复或者类似的修改?
- 排查问题的时候是否可以用排除法“卸载”模块,按需测试?
隔离,重用,主从逻辑区分。(前两者不多说,最后一个很容易被忽视,例如做一个合法的公民从来不会告诉你应该做什么,而会告诉你不要做什么,而违反上面第一条的很多时候不是代码不复用,而是主从反置,最后使得主流程的修改不断的在分支流程上去做判断)
额,至此为止,我可以很负责的说,你所学的大部分模式就是用来干这个的,而你只要奔着这个目标去做事,不仅能够学会那些书上的模式,而且还能够按需裁剪,因为雨天撑伞是尝试,风向不同伞要倾斜是技巧。
接着你就开始因为做业务不断的接触各种内容:文件,IO,Load,压缩算法,tcp,http,缓存,db,数据流,一致性…,好像很杂,是的因为我们 在做业务,我们在积累我们宝贵的“经验”,往往这个时候是两种程序员分叉的开始,都是做业务,有些关注完成任务,有些关注细节,这些细节就是我所说的上面 那些那些杂物。
接着,那些关注细节的人得到了更多的空间和机会,接触到更多的问题,面对效率,可用性,一致性等问题在设计上开始摆脱最初学到的隔离,重用,而开始学会权 衡(业务的取舍,所谓的优雅和长久的取舍),开始学会用他经历过的“杂学”来改变程序设计无法改变的问题,最后经历过了一系列痛苦的反复,最后留下了更多 的所谓的“感觉”。
而当经历过这一切的时候,再去拓展更多的领域,领会不同语言和场景的差异和特征。这时候会发现这样的人学新东西非常快,原因两点:1.任何程序的载体就是 前面说的“杂学”(最后归一无非就是二进制流及一些协议,算法和硬件)。2.语言的融合和借鉴早已深入各种语言内部 (java,python,js,objective-c,c#等等),因为语言就是用来利用“资源”表达思维的方式。
好了,其实我想说,做个程序员很简单,而每一个带兄弟的人要为兄弟成长负责不是在晋升的时候拉票,不是在饭桌上灌酒,应该是告诉他们我们走过的路。
本文作者:@放翁