这回从老庄的一个回复说起:
===================================================
“对于nodejs的评价与取舍的标准,我很同意。但是我不太认同你对后端没啥的判断。当然,我的前端水平很次,只能搞搞后端。不过,我躲开前端的原因,有重要的一点是:前端的水,莫名其妙的深。。。(懂的人自然就懂)”
===================================================
上一篇博客里,关于server端编程,有些话的确说得不到位,容易让人曲解我最想表达的本意。我的回复:
===================================================
恩,一着急话就没把持住,我收回server端没啥的话——而且我其实想表达的并不是server端没啥,server端当然有很多的知识点,只是和前端关注点不同而已,知识的深度和广度一样都不少。我想表达的,其实还是“创意”。server端对创意的需求上真的远不如前端,前后端皆通的人一定明白我说的创意指的是什么
===================================================
顺着这个话题,我想将我对前后端编程时的不同体验,尽力清晰地描述出来:
我自己是又写前端又写服务端的,特别是来盛大以后,前端只是我1/3的工作,同样占1/3的还有后端的工作。我工作时同时在前端和后端,一会儿切到前端,一会儿切到后端。不说后端的分布式问题,也不说前端的兼容问题,那个其实都和“编程”本身的体验关系不大。
我有一个非常明显的体会是:后端编程我只需要在编程之初,设计好OO,画出UML图之后,基本上在编程过程中会一路非常顺,也不太需要怎么动脑子;但在前端,设计好OO,画出UML之后,我仍然需要马力全开,每实现一个效果,脑子里都会同时跑出多种解决方案 ,然后比较各种方案的扩展性,可维护性,不断地权衡。前端需要权衡的东西太多,每走一步全是权衡,解决方案太多了,我必须选择,不停地选择。
伴随这些选择的,伴随种种解决方案的,需要的就是“创意”。服务端语言当然也是胶水,要粘起数据库,要粘起各种垂直功能库,但编码过程中其实思路还是很清晰的,只在几个必要的时候粘一下;但前端语言的胶水性更强,时时刻刻在粘着css、DOM和BOM, 每一步都在粘,脱离了DOM、css基本上一无是处寸步难行,每一步脑子里都在权衡几个不同的东西,工作时时刻也无法抛开DOM、css这些low level的东西,单纯工作在OO的抽象层面。而server端大多数时候却都是工作在OO的抽象层面的,工作时要考虑的东西单纯得多。
我在项目里,花在前端的时间和后端的时间基本上是7/3开的,而前后端的代码量更是超过7/3开,远不成正比。我明白每个领域关注点不同,单纯说谁比谁好,谁比谁有价值是没有意义,而且很孩子气的,脱了哪一环事都办不好。但的确前后端工作的劳心程度存在巨大差异,这是事实。
不知各位是否有同感?能接受我的表达吗?