【知乎专栏】企业开源杂谈

这篇文章的缘起,是一个朋友的约稿。但是,这篇约稿,实在是太难写了。打了3个礼拜的腹稿,还是一肚子杂乱的思绪、感想以及不吐不快的槽!可是文章不能这样来写呀,必须得有点条理啊。我试着按照某种“介绍–总结–反思–分析–杂谈”的逻辑来写吧。

  • 介绍

我曾经供职的公司,我在其中负责“开发者关系管理(DRM)”的工作,而运营一个公益性质的开源社区,是这个“DRM”工作的其中一部分。简而言之,公司的目标很简单,办一个开源社区,在技术圈子里树立良好的形象,以便改善公司与外部开发者之间的关系。

  • 总结

基于这样的目标,我们的开源社区不会有太多的KPI压力,纯公益性质的网站,给公司带来的利益都是间接的(或者说难以衡量的)。在公司发展顺利的时候,老板不妨睁一只眼闭一只眼,随便我们去折腾。一旦公司的战略发生调整,业务出现转向,这种“锦上添花”的工作,对于老板而言就是可有可无的。

归根结底,公司与外部开发者保持良好的关系,究竟能够给公司带来多大的利益,是没法说明白的。直白一点讲,我们虽然在做的是开源技术社区,而实质却是在做公关类的工作。而针对外部开发者的公关,往往无足轻重。

所以,如果企业开源不能给企业带来切实的利益,那么这种事情就肯定会昙花一现。

  • 反思

出于对于开源事业的持续的热情,我也一直在反思,如何才能确保这个事情能够长久的做下去,也许有以下几点需要考虑:

  1. 企业开源,必须自顶向下,最高领导必须切实赞同。仅仅是“随便他们去玩玩吧”是不够的。而最高领导的切实赞同,又取决于一个企业是否真正意识到(并且相信)开源能够给企业带来好处。较之专利与基础研究,开源对于企业的价值,会以更加(复杂、交错、间接)的方式体现出来。由于涉及到不可控的外部交流,开源甚至是有利有弊的。这使得企业评估开源为企业带来的利益,更加困难。所以,在获得实际的回报之前,对于开源,是需要某种信仰的。
  2. 企业开源,必须持之以恒,个人玩开源,随时可以加入,随时可以退出。Free Software,不仅仅是软件自由,人也是自由的。但是,企业开源,绝对不能玩玩而已。高兴的时候办一个网站,没兴致了,就随手一关。这种事情,对于企业的形象和声誉,是有相当大损害的。
  3. 企业开源,必须在内部找到持久的动力。开源不仅仅是开放源代码,更重要的是由此引发的企业技术文化的演进,如何在企业内部传播并推进一种开放、活泼、自由、创新的文化,是必须在制度层面解决的大问题。
  • 分析

开源当然会为企业带来价值,这篇文章不去多谈那些虚幻的、文化层面的、企业形象层面的价值,谈点实际的内容。

  1. 操作系统开源,以Google的Android为例。由于Google的开源政策,Android在移动领域的占有率一直在持续上升,则将为Google移动领域的领导地位,奠定坚实的基础,由此带来的价值,简直是难以估量的。
  2. 平台类开源,以Firefox和Chrome为例,作为上网的入口,浏览器的市场占有率对于企业的利益,有着战略级别的影响,如果不以开源的方式来做,IE的地位几乎是不可撼动的。
  3. 语言开源,Google开源了Golang、爱立信开源了Erlang、Sun开源了Java,其中以Java占据了最为广阔的开发者市场,可以毫不客气的说,如果没有Java,Sun早就不存在了。而Sun公司围绕Java进行的一些开源项目的开发和推广,也是Sun公司能够持续扩大Java影响力的关键。
  4. 参与或赞助开源项目的开发,由于企业原本就会用到某个开源项目,比如Linux、比如OpenStack、比如Hadoop,比如MySQL。企业的内部员工,会参与到这些开源项目中去,共享全球开源协作的开发成果,同时也对这种重量级的项目施加符合自己利益的影响。
  5. 被迫开源,由于授权协议(License)的限制,企业在使用、修改、分发了某个开源项目时,必须遵守相应的开源协议,以避免不必要的利益损失和形象损失。

当然,企业参与开源的形式还有很多,以上5种,可以说是比较能够向CEO们讲得明白的价值。任何企业,如果不能找到参与开源带给自己的价值,他们的开源总归是无法长久的。

  • 杂谈

从我个人而言,我肯定相信开源能够给参与其中的每个人、每个企业都带来回报。但是要说服具体企业相信这些,依然是困难的。

从由易到难的步骤而论,我想建议大多数企业,考虑以下的路径:

  1. 依法开源:那些必须开源的,别再藏起来了
  2. 赞助开源与开源社区:找到对自己公司有价值的开源项目以及开源社区,哪怕仅仅出于公益,也赞助一些。
  3. 鼓励员工参与开源:从这个阶段开始,会收到“变化气质”的效果
  4. 自身产品、项目开源:这一步需要慎重选择
  5. 主导某些开源项目或开放标准,这个就是至高境界了。。。

【知乎专栏】产品经理最大的挑战是什么?

之前我写了两篇关于产品经理的文章,一直有朋友在下面留言,谈到产品经理背黑锅的问题。

是的,我知道很多时候,产品经理其实是在背黑锅,他们遇到了几乎不可抗拒的挑战:懂产品的老板!

但是,我缺乏一个好的例子(靶子),所以我直到今天,才幸运的找到了一个:你是第五只猴子吗?

这篇文章的作者是:金山网络的CEO,傅盛。而他提到的产品,是目前已经非常成功的“猎豹浏览器”。文章各位不妨自行去看,我接着往下说:

另外一篇有趣的文章,也是关于五只猴子的:“湿猴理论”:被科学的寓言

所以,果壳网的谣言粉碎机,早在两年以前,就已经粉碎了这个关于猴子的谣言。文章各位不妨自行去看,我再接着往下说:

我决定当场给大家编一个寓言:一个公司里有5个产品经理和一个老板,每次那个最不听老板话的产品经理,就会被痛骂,然后直至被赶出公司!不断的有新的产品经理加入这个公司,经过一轮又一轮的筛选,剩下的5个产品经理,都是那种最能够听话的产品经理……

大家觉得,这个寓言如何?

老板其实也不难当,平时忙没空多关注那么多细节,挑中一个细节狠狠的骂一顿。我听说,有一种帝王心术,叫做小题大做,或者叫做敲山震虎,或者叫做见微知著,或者叫做明察秋毫。总之,挑一件小事,狠狠的说,狠狠的批,狠狠的深挖思想根源,狠狠的斗私批修。于是,下面的人,就个个战战兢兢地意识到老大无法糊弄,甚至根本不听我辩解……

总结陈词:对于产品经理而言,最大的挑战是“在这样的老板手下,做出有价值,有意义,被用户认可的产品来。

题图:某个看起来像Boss的人物…

【知乎专栏】测试,这个专业还有价值吗?

一直想写一写我对于测试的看法,较为远的一个原因,是因为左耳朵耗子(陈皓)的一篇文章:《我们需要专职的QA吗?》,以及段念的一篇回应《对《我们需要专职QA吗?》的回应

一个比较有趣的现实是:因为陈皓的个人经历,他遇到了一些非常糟糕的QA,结果发现这些活还不如开发自己来干,进而推出“专职的QA是不需要的”。甚至,他将这个结论,推广到了整个行业。

而与陈皓正相反,在我的职业生涯中,遇到了一些非常优秀的测试/QA,这使得我坚信:优秀的测试人员/QA,是开发团队必不可少的一部分。

首先谈谈我对QA进阶(层次)的看法:

  1. 最弱的(否则无法入行):能够发现看起来不对的地方。
  2. 重现bug:能够确定,某某问题在某种特定的条件下,可以重现。
  3. 分析与诊断:能够向程序员提供建议,这个问题,可能是由于什么原因造成的。
  4. 举一反三:能够基于对系统的了解,发现某个bug,进而推论可能存在或需要检查的其他方面。
  5. 预防与预警:帮助整个团队,提升质量意识,降低bug产生的可能性。
  6. 为整个团队,注入追求质量的气质

这里所谈的层次,都是围绕质量而言的,各种测试的手段,工具,方法,架构,都是他们必须在日常研究的内容,而这些研究,是为了帮助他们自身、以及整个团队,在保证质量时,做得更快、更好。

在我们的团队开发实践中,我发现依照个人的性格、偏好以及相应的分工:

  • 有些人喜欢深入研究“效率提升、性能提升”方面的课题;
  • 有些人喜欢深入研究“架构优化,代码重构”方面的课题;
  • 有些人喜欢深入研究“各种极限情况下的系统漏洞”;
  • 有些人喜欢深入研究“用户体验相关的各种优化”。

在不同的领域,都需要深入的积累、探索与创新,并不是仅仅空喊一句:“人人都应该负责XXX”,就可以解决的。

本质上而言,我之所以反对陈皓的观点,是因为未来的趋势,并非越来越综合全面,恰恰是越来越分工协作;以前的程序员,从设计、架构、前端、后端、测试、发布、运维,都可以一人完成。但是,从程序员这个角色,已经分化出:产品经理、UI、UE、前端工程师、后端工程师、DBA、运维、测试等诸多角色。

不能因为跟某个工种合作不顺利,就收回来自己干,如果是这样,岂不是都要收回来?

所以,我的观点是:我们需要更加优秀、更加专业、更加有价值的测试,而非取消这个专业!

题图:不管什么颜色的猫,只要抓到老鼠,就是好猫。但是没有好猫,难道就让狗去抓老鼠?

【知乎专栏】聊聊我理想中的产品经理

不出意料的,昨天的那篇专栏文章,果然还是收到了一些批评。比如直接骂垃圾文章的,说我太过片面的,当然,有一句话我承认:昨天的那篇文章,的确没有什么营养,全是负能量,没有正能量啊!

所以,我决定修改自己的写作计划,来一篇有点正面的文章,聊聊我理想中的产品经理。或者说,作为一个开发人员,我希望能够与怎样的产品经理合作。

1. 见多识广,但是并不随波逐流

是的,我希望他能够了解非常多的其他产品,其他企业,甚至不相干的各种行业的其他产品,不但熟悉人家的功能,更加理解别人的产品背后的逻辑和意图。

但是,千万不要走过来对我说:我就要一个那个XXX的样子,只是颜色改一改。再换一个Logo。

2. 好奇心,理解力

一个优秀的产品经理,应该对各种事物都保持旺盛的好奇心。这个是怎么做到的?是怎么运转的?如何才能做成这个样子?

如果他对技术有各种各样的好奇心,技术人员通常都会很乐意给他做一些深入浅出的介绍。只要他的理解力足够,他能够越来越明白技术的很多运作原理。

他不需要自己去写代码,去调试程序,但是:越是理解技术以及技术背后的原理,将有助于他设计更加合理的产品。

更由于新技术的层出不穷,一些原本不可能的点子,现在也变得可能。如果不及时了解技术的进展,产品的思路要么过于天马行空,要么过于死板守旧。

3. 知其然,更知其所以然

产品经理,当然会有很多新鲜的想法,但是这些想法有没有价值,不能上来就对我说:“我也不清楚这个功能有啥作用,你先做出来,咱们看看效果。”

一个优秀的产品经理,不会像瞎猫抓死耗子,碰到了是福气,碰不到是运气。一个产品,上线以后,成也不知道是怎么成的,败也不知道是怎么败的。甚至连怎么算成,怎么算败,都搞不清楚。

4. 以其昭昭,使人昭昭

如果产品经理的脑子不好使,表达能力又弱,那就真的:“说起来全是泪”了。一个优秀的产品经理,必定是思路非常清晰的家伙。一个产品来龙去脉,功能架构,服务对象,潜在的逻辑全都很清楚。一旦问他问题,他也能够干净利落的描述出来。

如果有产品经理对我说:你照做就行了,不需要管为什么。我就会大声的骂回去:你自己知道为什么要做这个吗?你说得清楚吗?

实话实说:开发人员,也很有兴趣了解他为何要做这个功能。基于真实的理解,他会做得更好。

5. 节奏感,方向感,使命感

不要像没头苍蝇,不要东一榔头西一棒。做事情,有步骤,有计划,有目标,有原则……

不好意思,我在YY。如果真有这样的产品经理,我愿意降级降薪,加班加点的帮他干。因为,与这种靠谱的产品经理合作一起做产品,我的未来会很靠谱!

题图介绍:一头很酷的狼!

【知乎专栏】产品经理,为什么大家都在骂?

在我不算太长,但却相当丰富的职业生涯中,我与很多产品经理,有过合作。在早年的时候,他们甚至都还没有自己的名称,往往被称之为:“做策划”的、“写文档”的、“画原型图”的。

到后来,有几件大事导致产品经理这个岗位越来越热,一个是乔布斯作为产品经理的神级偶像,被推上神坛!另一个是类似《人人都是产品经理》、《结网》这样的书,将一条“光明大道”铺在了每个年轻人的面前。

比较凑巧的是,最近我的朋友路盛华在知乎上提了一个问题:懂技术和设计是一个优秀产品经理的必要条件吗?我的回答如下:

他们甚至应该懂得更多!

如果一个产品经理,不懂技术、不懂设计,却信心满满的开始“写他的产品文档”,我简直无法想象他能够策划出什么产品来。

足够懂技术,才能够清楚:他的产品将会如何被实现。
足够懂设计,才能够清楚:他的产品将会如何被呈现。

这些都不懂,他的产品就是一团模糊的东西,这样的产品经理,通常脑子里也是一团浆糊。

结果,令人惊讶的收到了一些反对意见。比如这条:

哦对了,这么说,那个《结网》的作者王坚,也不懂技术,那本书一定是忽悠人的。还有,我和很多产品总监级别的人求教过,我问他们,产品究竟需不需要懂技术,他们都只给了一致的答案,不必须要懂技术,一样可以做好产品,额,莫非他们的成功另有妙招?

《人人都是产品经理》我看过,《结网》我还没有看过,出于好奇,我还特地去找来看了一下。原文如下:

我不懂研发,确切地说,不会写c语言代码、不会写PHP……。虽然我不能使用这些技术,但我知道这些技术大概都能干什么、其明显的局限是什么。这对于一名产品经理而言,可以算是及格了,所以我可以成功应聘进入腾讯,并且领导过产品团队。

可见,懂研发技术不是成为产品经理的必要条件,不要因为不懂研发技术而放弃对这个职业的考虑。

看到了吧,这行的门槛还真不高!即使是这样不高的堪称及格线的门槛(知道这些技术大概都能干什么、其明显的局限是什么。)还有人会曲解为(不必须要懂)。

而且,更加惊人的是:很多产品总监级别的人都告诉他,不必须要懂技术。

这就是为什么:大家都在骂产品经理了!真的有很多、很多的产品经理认为:要当好产品经理,有好的点子就可以了!懂战略就可以!学会Copy to China就行了!细节就能够决定成败了!用户体验才是最重要的!

好吧,进入正文,谈谈我对产品经理段位的看法。

  1. 不入流的:我有一个Idea(注:此处是英文单词),你们能给我实现出来吗?
  2. 末流的:那个产品不错,我们抄一个吧(有一个产品经理叫许朝军,就说过:咱们那是虔诚的借鉴)
  3. 三流的:你看我这个滑动效果,是不是很棒!(一个看了太多Apple文案的果粉,会认为Apple最牛的地方,在于各种细节。)
  4. 二流的:我要这个、这个和那个,这些功能点很重要,我希望能够下周一这些功能可以上线(通常这些话他会在周五告诉我,而且需求描述还有自相矛盾的地方)
  5. 一流的:(抱歉,我没见过,编不出来)

好吧,说点正儿八经的话:成为一个优秀的产品经理,是非常困难的,需要非常广泛的知识面、非常强烈的好奇心以及非常强大的执行能力。但是,现在成为一个产品经理的门槛,实在太低了,简直比成为一个程序员的门槛还要低。

低门槛导致的鱼龙混杂,甚至劣币驱逐良币,才是产品经理被很多人乱骂的根本原因。

对于有志成为产品经理的朋友,我就送你一句话:如果想要不被骂,你要学习非常非常多的东西,还要非常非常努力,才有可能!

题图介绍:哈士奇团体照