开源与创业
本文是根据我在高可用架构群聚会上的演讲整理而成。从小一直是个讷于言的人,每次公开演讲都感觉会有紧张,不能完整的表达自己的想法,很羡慕演讲时能侃侃而谈的人。所以还是把自己的想法整理成文章表达出来。 个人在开源方面算是新手,16年初发布了一个开源项目,叫 go-commons-pool ,是一个golang的通用对象池,到现在快200个星。创业方面也算是新手,15年初开始作为技术合伙人创业做团队通讯协作工具。一年里做开发的同时兼职做点产品的工作,也做点运营的工作。感觉创业和开源二者的共通之处挺多,所以和大家分享一些感悟。前面各位讲的干货比较多,我这个项目技术上比较简单,所以我听从Tim的建议,多搀些鸡汤吧。 :) 无论是创业还是开源,首先面临的第一个问题是做什么?要做什么的想法从哪儿来呢?无外乎以下两个途径: 想好了做什么,下一步就是怎么做。这一步,貌似创业和开源差距比较大,但二者共通之处还是有的,其实做的关键点是评估以及安排『事』的资源投入。资源包括金钱和时间。如果前面想的事情太大,和实际的资源不匹配,结果可能就是创业黄了,或者开源项目创建了个仓库,写了个readme然后就没有然后了。这里面考验的是对事情的复杂度的评估能力和对资源的把控能力。 项目做出来之后呢?再下一步就是怎么让你的用户群知道了,也就是现在流行的说法叫『安利』。PingCAP的黄东旭刚才也提到了他们的营销方式和渠道。这步的核心是你要知道你的用户群的注意力一般在哪儿,如何以最小的成本触达你的用户。开源项目可能是通过各种开源社区或者技术人社区,自己的社交网络,技术会议等各种方式。 初步的用户触达完成,用户知道了你的项目,有部分人可能点了星,这部分人是潜在用户。另外一部分人fork了,估计是准备要使用或者做二次开发了。那如何维系当前的用户,并且吸引更多的用户呢?这就是这个阶段要考虑的。包括但不限于以下方面: 逐渐用户多了,然后形成社区,有了自己的品牌。这一步,像我做的这样的小工具达不到,但比如PingCAP的TiDB,像谢孟军的beego这种框架,都已经形成自己的社区和品牌了。 总结下这个过程中的关键点: 点子没抽象好。其实所有工具和产品都是在做一种抽象,对用户需求的抽象。比如那个经典的例子,问用户需要什么,用户肯定说是要更快的马,而不是一辆汽车。汽车就是对用户出行需求的抽象。但如何做这种抽象呢?我总结了下有三个境界。 所以,我觉得想创业的工程师,可以先从开源做起,将开源做为创业的一次演习。体验一次从构想,开发,推广的整个流程,这样可以对创业过程中的关键点有些体验,可以评估自己的长处和短板。毕竟自己是工程师,开发的时间可以自己掌控,面向的用户也是工程师,所要解决的问题是自己熟悉的领域,需要传播的社区也是自己熟悉的社区,这种天时地利人和的情况下做项目还是遇到困难,可以想象下,如果换到一个自己不熟悉的领域,不熟悉的用户,不熟悉的社区,困难会有多大? 另外说一句关于技术人创业的观点。我觉得王安石一句诗非常好『春江水暖鸭先知』,我们一线的写代码的工程师是在水里的鸭子,江水变化我们肯定首先会感觉到,这方面是有优势的。如果你高升了,不写代码了,跑岸上去了,那可能就感觉不到江水变化了。