阿当的博客











{十二月 22, 2009}   IT大师语录系列(1)—— 说说“教条主义”

         看书真的是件很有收获的事,特别是看好书。在看一些有思想的作者的书的时候,你能得到的不仅仅是一些语法api之类的,你能理解到事情的前因后果。除此之外,还会有很多作者自身的一些观点,针对我们实际工作中经常会遇到的问题,大师们的观点是盏明灯,吸收这些观点,往往是比语法更大的收获。也许你见不到大牛,也许你一辈子没法跟他们面对面交谈,也许你的周围全是些不喜欢技术或者在你看来技术过于落后的人,没关系,读书吧,挑本好书,读书的过程本身就是同他们交谈。

        想从今天起,以后多收录一些大师们的语录。

       “ 要是看到你在模板中写这种代码,很多人会怒不可遏。别理他们——他们都是教条主义的受害者。在模板里写代码没有任何不对,只要别写太多(尤其是别把业务逻辑放进模板)。”

                                                 —— David Heinemeier Hansson 评论mvc模式中,v中带有少量逻辑判断

                                                                                摘自《应用rails进行敏捷Web开发》中文版 第343页

【感想】:看到这句话的时候,我相当有感触,不仅仅是对mvc模式,而是更进一步的“教条主义”。我发觉“教条主义”是件非常普遍的事,哪个领域都存在这种现象,很多很多的工程师死守着教条在做事,好的坏的用一刀切的形式去判断,往往这种人不在少数,还非常地固执。这似乎是个顽疾,起初在遇到这种工程师我还试图想去跟他们解释,但发现这种解释要花相当大的精力才有可能成功。

        教条主义其实是观点片面造成的结果,一方面可能是实战经验不够,另一方面可能是对“教条”的起因不明,或者干脆是人云亦云缺乏自己思考造成的结果。比如说在早期的重构中,很多人就坚持不用table,非要使用div来模拟table,这就是非常典型的教条主义。虽然table的问题现在已经广泛解决了,绝大多数工程师都有了可以合理使用table的意识了,但教条主义仍然没有就此结束。很典型的就是“页面是否一定要通过w3c验证”,我一直觉得w3c的验证不过是促进web标准化推进的手段,它本身不是目的。web标准的目的是1)让标签语义化; 2)结构、样式和行为分离。这是表象,更进一步,为什么要让标签语义化啊?因为标签语义化有助于seo,有助于特殊终端在无css支持的情况下仍然让网页有很好的可读性。为什么要让结构、样式和行为分离啊?因为分享结构样式和行为有助于提高代码的可维护性。制定web标准的验证,不过是对我们的重构代码进行一次评估,提供一个标准的模板供你去匹配,它是种一刀切式的判断。一定要完全通过w3c验证才算是好的页面吗?这个叫本末倒置。我们的目的是seo、去样式可读还有代码的高可维护性。只要实现这个目标,是否通过验证其实并不重要。死守“通过w3c验证”其实就非常的“教条主义”了。

      另外,还有mvc,css sprite,oo编程等等等等,很多方面都需要根据具体情况来决定怎么做,比如说我个人就觉得小型网站使用css sprite非常不值得,可维护性下降了许多,开发成本提高了很多,换来的好处却非常有限,你本身流量就不大,减少http请求数有什么价值?不是说流行的就一定是好东西,一定要知道这东西为什么流行,它能解决什么问题,然后权衡一下得失再做决定是否使用。

      “要是看到你在模板中写这种代码,很多人会怒不可遏”,这的确是教条主义者们的典型写照,教条主义者们通过靠“坚持死守某个教条”来证明自己“很专业”,这其实是非常苍白的自我保护,很没劲,自己开发会很辛苦,和你一起配合的其它工程师也会非常辛苦。

        “别理他们——他们都是教条主义的受害者”。是的,别理他们,他们是受害者,我们没必要跟他们大费周章地解释为什么我要这么做,为什么我没有完全遵照教条,只要认为你自己的处理非常合理,你完全可以不受他们的思想所左右,死守教条的他们才是受害者,他们会为死守教条而付出“额外的开发成本”,“可维护性下降”或者别的代价。这些代价是真的,教条救不了他们。当然,如果你非常不幸地和教条主义者共事,那么你不得不向它们解释你的视角,我知道这个过程是非常艰险的,但没办法,和人打交道的确比和代码打交道困难得多。



{十一月 04, 2009}   别了,旺店

         的确如沐所说,旺店对我来说,就像是自己的孩子一样。倾注了我大量的心血,灵活而强大的可视化编辑,比igoogle更强大的自定义页面功能——拖拽布局,调整布局方式,任意添加布局区域,无刷新的添加模块,强大的tab功能,换肤,自定义页面样式。旺店是我工作以来接受到的最大的挑战,一方面是因为难度,另一方面是因为bt的时间需求。

          为了页面管理这一个页面的功能,我写了超过五千行的js,而且是基于YUI框架的基础上,如果不使用YUI,代码行数将更恐怖。对于一个js文件来说,超过五千行,的确是不太常见的。在旺店项目中,我强化了前端的架构能力,oo编程能力和对YUI的熟悉程度,它见证了我的成长。

          其实,本来我还很希望能亲手给它加上高级自定义样式功能,支持第三方开发模板功能和更细致的精确到模块的样式设置功能,希望能够亲手打造完它的mashup功能,看到旺店这个电子商务工厂能够利用和第三方开发者分成的形式,吸引大量第三方为旺店开发第三方应用和模板。和sns不一样的地方是,sns第三方开发多为web game,sns本身并不具备电子商务那样“直接和钱打交道”的先天优势,如果旺店能够和第三方分成,一定能够迅速吸引大量第三方为旺店开发千奇百怪的应用,将旺店打造成web上的iphone,成为最成功的web3.0平台。旺店是淘宝的系统,比起shopex之流,它更具有成为行业霸者的潜力。其实我是很希望能够留下来看到这一天的,很希望能一直跟旺店走到光辉的顶点的。无奈现实往往总会逼得人放弃,我很难做到为兴趣为理想而不面对现实。像国外一样,有充足的物质条件,只会兴趣而工作的环境,国内是很难有了,物质和兴趣只能选其一。有些无奈。

          别了,旺店,希望看到一天,b2c的市场漫天都是powered by 淘宝旺店。



{十月 14, 2009}   转同事博客一则,随感
还在雅虎时的同事,张克军,个性非常好的一个人,低调、害羞、专注、技术牛人,人格魅力巨大,要命的是居然还帅气得要死——老天太不公平了。今天又再翻了下他之前的一篇博客,地址如下:hikejun.com/blog/ 非常有感触,推荐各位前端同行也都看一下。

前端工程师,别人眼里写javascript,切页面和写css的人。在国内的职业生命力不强,我敢说在大部分公司干这行超过三十的太少了,多数人会提前往后端转或往管理转。并且在大部分公司里干这行的收入都偏低,属于撅屁股干活的。

以上事实我想大家都认同。这样的环境对前端工程师的流动是致命的,公司对这个职位的定级就是几千块钱,你干不干,不干,别的公司也一样。干,要提薪 就得往管理上爬。操!往往几年下来想想你积累到什么了,学到什么了,公司不成了还得考虑找工作。是继续干这行,还是改行,这时候是最痛苦的。刚毕业的,可 以挥霍几年,最终还是会面对这样的问题。

说得非常对。我自己也做过服务器端开发,我很清楚前端和服务器端的侧重点在哪儿。前端因为不用考虑数据库,而且没有跨页面的通信,所以基本上不需要服务器端那么重的“框架”的概念和大局观,基本上前端的应用是一个一个非常零散的,门槛很低,加上web早期设计编程不分的“网页设计师”的职位,让前端更像是一个打杂的!事实上,随着web2.0的兴起,前端的重要性越来越突出,css布局只是一小部分,更重要的是前端“框架”概念的产生,以及DHTML将编程的“创意”发挥到极致!前端开发已经绝不仅仅是“打杂”了,仍然报着“网页设计师”的角度去看待前端,对于前端开发工程师们来说,是非常不公平的.事实上,一些复杂的前端应用,比如web game和mashup,整个技术方案其实都是前端提供出来的,服务器端更多的只是进行着数据持久性的工作,在数据库中保存和读取数据,至于数据如何展现,从前端到服务器端的数据流向是如何的,全都是前端工程师的任务。

大型网站,大型前端应用,团队合作是非常重要的,前端的可维护性已经不容忽视!前端也需要和服务器端一样,建立起分层的概念,底层,公平组件层,应用层,css和js都需要进行分层。前端框架对于可维护性,对于开发和维护的成本起着至关重要的作用!还把我们当“网页设计师”,谁能在这样的不理解中一直高高兴兴地干下去?“这样的环境对前端工程师的流动是致命的”!

我很反感那些自认为牛逼的人,因为技术是不断向前发展的,不关注技术趋势,两三年后,你掌握的那些玩意就彻底过时了,或者误入歧途还在自淫自乐,最后发现自己研究的那些玩意没有任何价值。

我也讨厌,动辄犀牛书前犀牛书后的,楞是死钻一些生僻的知识点,然后自以为牛逼,对于可维护性,对于快速开发这些真正有用的东西却不去进行深入研究,只知道卖弄小技巧,无异于会写五种“茴”字的孔乙己!”读…读书人的事“,读你的书去吧。

这么多年了,我本可以混个小经理干干,发号施令安排安排工作,可这样一点技术含量没有,我打心里不愿意这样,有什么劲。但在国内好像不是管理者,你的意见就得不到重视。

这点最他妈操蛋了!国内环境就他妈知道重管理不重技术,说是管理和技术两条线发展,可绝大多数国内公司其实并不真正重视技术,尊重技术,这样的环境怎么培养科学家?怎么培养专心攻技术的人才?不然怎么说国内不像国外那样,有十几二十年开发经验的工程师呢,你能怪国内的工程师不争气吗?这样的环境能他妈让工程师做十几二十年吗?

在D2会传播最流行的前端技术和交流开发经验,来自各个公司的工程师聚在一起不只是相互寒暄,也不是制造个人影响力,回去之后都有责任在自己公司内部推广正确的技术和正确的工作方法。

这点也非常同意,现在搞个技术论坛也基本上没多少分享,不是做广告就是制造个人影响力,我们需要的是真正喜欢技术的人做一些分享,轻轻松松的一个party,不是广告,更不是一些喜欢制造个人影响力的舞台。我非常讨厌那种高调得不得了的人,我一直认为中国人最丑陋的一点就是论资排辈和拉帮结派,这是最扼杀人才也是最限制科技进步的做法!在中国这个以前一直重文轻理的国家,文人相轻已经是传统陋习了!文还是个比较抽象的东西,你忽悠也就忽悠吧,你说他好他就能好,说他不好就能不好,我一直以为现在我们重科技了,像技术这种东西,完全就不是可以忽悠的了,行就是行,不行就是不行,在这一行是不可能拉帮结派论资排辈了,可是工作几年下来,发现并不是这样。在技术这个行业,这个几乎不可能靠忽悠吃饭的领域,中国人的传统美德又再次渗入进来,我真是小看了国人的力量。在这一行里,依然有着传统陋习,理人相轻,拉帮结派。试问这样的一个环境,如何能够让中国的技术实力得到快速提高!中国的工程师们是在怎么一个恶劣的环境中生长啊,对于真正喜爱技术,又希望成长科学家式的技术人才的工程师,更是怎么一样折磨的环境!

来雅虎的时候,我跟hr说,我愿意等,等到大环境变好的那天。现在我仍然只能说,我愿意等,因为,我也只能等了。




about

打造高品质的前端代码

pages
categories
archive
et cetera