抱歉这么晚才发这个帖子,从杭州回来之后一直在忙公司的事情。
Slides 在这里,https://speakerdeck.com/farthinker/zhi-ren-de-qian-duan-kai-fa-zhi-dao,另外多说两句:
那天在讲这个话题的时候,在下面引起了一些争议。其实我在讲之前就预感到,会有同学因为“Full Stack App 和 Single Page App 谁更好”这个问题撕起来。但是引出这个问题,我的本意是想终结类似的讨论。就像我那天说的,脱离了产品来做这种比较是没有意义的。我们更应该讨论的是,对于某个产品或者某个具体的应用场景,这些技术的优势在哪里、劣势在哪里,然后从中得到启发,取别人的长处,完善自己产品。
新事物的出现并不总是会取代旧事物,更多时候是对旧事物的补充。我觉得 SPA 就是这样,它为 Google Docs 这种复杂交互的产品提供了完美的解决方案,但是它并不能替代传统的 Full Stack App 成为 Web 开发的唯一标准,现在不能,以后也不能。我们当然可以用 SPA 来做以数据展示为主的产品,比如:ruby china 这种论坛、或者知人、甚至 Github,但是杀鸡用牛刀也挺累的不是么。
还在用 Full Stack App 做产品的同学,不必为没有选择所谓的“主流”技术而苦恼,随着浏览器技术的发展,Full Stack App 还有很多未被挖掘的潜力;已经开始用 SPA 做产品的同学,更加不必犹豫。说到底这些东西都是我们手中的工具,用电钻也好、用螺丝刀也好,最后论成败的也不是谁家的工具更漂亮不是么。
这次的分享,还有一个我非常想传达出来的思想,那就是工程师应该更多的关注产品。对产品缺乏理解的工程师,容易犯的一个典型错误就是抓不住产品的重点。对于大多数公司来说,工程资源都是紧缺的,我们不可能把每一个产品功能都做到完美,这是不现实的,也是错误的做法。由于工程师抓不住重点造成的资源浪费,对产品造成的伤害比我们想象中的要大得多。什么功能需要做到 90 分,什么功能只需要做到 60 分,怎么用最低的成本达到产品既定的目标,又不会给未来挖坑,这些问题才是最考验一个工程师功力的问题。而要解决这些问题,我们只是做一个技术理论研究者、或者代码艺术家,显然是不够的。
期待能在 ruby china 上看到更多的跟产品相关的技术讨论。