一些想法,一些牢骚。
胡言乱语,博君一笑。
关于技术
我以前是一个纯粹的唯技术论者,总是觉得技术是第一位的。可能这是学院派的通病吧。
但工作了一段时间,看到了一些事情,深刻觉得很多时候,技术真的没那么重要。
一个成功的产品,需要创意、运营、市场。。。各种各样的努力,其中技术的比重很小。
尤其是运营,我现在越发觉得好的运营可以弥补很多其他方面的不足。
有哪些公司、产品,是真正把技术创新转换为成功的?
也许google的PageRank算是吧。
facebook?twitter?我觉得这是靠创意成功的。他们的技术是在体量大了之后才慢慢发展的。
国内的公司更不用说了。
有些时候,我们设计一些很复杂的架构,用一些很新的技术。能单机解决的问题偏要分布式,能用mysql解决的偏要用mongodb/hbase。这是本末倒置。
我宁愿初期开发一个很土的实现,后期去重构。重构的代价可能还小于初期就搞一个复杂架构。
而且说实话,很多产品、项目,还熬不到需要重构的那个阶段就会死掉。
技术也很难有高下之分。以前道听途说,觉得php很low。但那又如何?很多产品要的就是猛糙快。
快速出原型、快速试错、快速死亡。就像细菌的分裂一样。。。虽然个体很脆弱,但总量很大,最后总能筛选出活下来的。活下来的就值得长期培养。
听说现在生物实验用的菌系都是培养了好几十年的。。。
也只有程序员才会关心O(logN)和O(N)的区别吧。
老板/用户/PM根本不会关心背后用了什么技术。只要能实现相关功能,并且没有用户抱怨,就是好的。能抓住老鼠就是好猫。
大多数用户都是很浅薄的。一个好看的页面,比一个优秀的算法重要的多。
当然我也没有说技术不重要,有人说程序员要有“匠人”精神,我也赞同。
但不要过度。
关于运维
运维为什么很苦逼。因为做的事情都在暗处,大多数人都看不到,没有存在感。不出事呢是应该的,出事就要背锅。
考核的时候,如果一直没出事,能得个平均水准的分数;一旦出事,就只能呵呵了。
说的直白点,就是靠天吃饭。
那怎么办?搞天气预报啊。
各种监控系统、运维工具、报警工具,就是干这个的。
但开发维护这些系统需要一个庞大的团队,不是一两个人能搞的定的。
而且很多时候要定制开发,而不是只用一些通用的工具。
这跟公司文化也有关。有很多人觉得运维很简单,随便找人搞搞就行,或者找个开发兼职搞下。
很多小公司都没有专职的运维吧。
没有对运维投入人力物力,却提出很高的运维标准,比如N个9的可用率保证,我能呵呵么。
在RDBMS的年代,一个NB的DBA可以搞定一切。
但对hadoop而言,即使是单纯的运维也必须要看代码改代码。
改变这种情况需要自上而下的推动,可惜我无能为力。