开源与创业需要注意的关键点有哪些

开源 系统
本文是根据我在高可用架构群聚会上的演讲整理而成。从小一直是个讷于言的人,每次公开演讲都感觉会有紧张,不能完整的表达自己的想法,很羡慕演讲时能侃侃而谈的人。所以,还是把自己的想法整理成文章表达出来。

  个人在开源方面算是新手,2016年初发布了一个开源项目,叫go-commons-pool,是一个golang的通用对象池,到现在快200个星。创业方面也算是新手,2015年初开始作为技术合伙人创业做团队通讯协作工具。一年里做开发的同时兼职做点产品的工作,也做点运营的工作。感觉创业和开源二者的共通之处挺多,所以和大家分享一些感悟。前面各位讲的干货比较多,我这个项目技术上比较简单,所以我听从Tim的建议,多搀些鸡汤吧!:)

  无论是创业还是开源,首先面临的***个问题是做什么?要做什么的想法从哪儿来呢?无外乎以下两个途径:

  1.观察

观察周围的人,观察自己的生活和工作,观察大家的习惯,看哪儿还有改进的地方,看哪里有痛点。比如我这个pool的想法就是有人在群里提问,我搜索了下,发现golang确实没有通用好用的对象池。再比如有人发现打车这么难,站路边半天等不到,于是有了Uber。有人想在多个设备同步文件,于是有了 Dropbox。有人发现工作中老在做重复工作,于是有了各种框架。

  2.借鉴

看看其他先进的地区,先进的领域,是否有可借鉴的,将先进地区或者领域的成果移植到落后地区或者新的领域。一直比较热门的Copy To China创业就是这种模式,通过先进地区的发展轨迹来预测落后地区的未来趋势。那天高可用群里indigo的分享,通过日本的经济社会的发展来预测中国的趋势也是这个道理。我做这个pool,其实也是分析了Java社区的情况,觉得golang在以后服务器端大有作为,肯定需要一个健壮的对象池,用来做连接池等用途。

  想好了做什么,下一步就是怎么做。这一步,貌似创业和开源差距比较大,但二者共通之处还是有的,其实做的关键点是评估以及安排“事”的资源投入。资源包括金钱和时间。如果前面想的事情太大,和实际的资源不匹配,结果可能就是创业黄了,或者开源项目创建了个仓库,写了个readme,然后就没有然后了。这里面考验的是对事情的复杂度的评估能力和对资源的把控能力。

  项目做出来之后呢?再下一步就是怎么让你的用户群知道了,也就是现在流行的说法叫“安利”。PingCAP的黄东旭刚才也提到了他们的营销方式和渠道。这步的核心是你要知道你的用户群的注意力一般在哪儿,如何以最小的成本触达你的用户。开源项目可能是通过各种开源社区或者技术人社区,自己的社交网络,技术会议等各种方式。

  初步的用户触达完成,用户知道了你的项目,有部分人可能点了星,这部分人是潜在用户。另外一部分人fork了,估计是准备要使用或者做二次开发了。那如何维系当前的用户,并且吸引更多的用户呢?这就是这个阶段要考虑的。包括但不限于以下方面:

  1.完善文档,教用户如何使用。不要嫌弃用户“***”。

  2.响应用户的反馈,处理issue。创业产品的话就是要有客服体系了。

  逐渐用户多了,然后形成社区,有了自己的品牌。这一步,像我做的这样的小工具达不到,但比如PingCAP的TiDB;像谢孟军的beego这种框架,都已经形成自己的社区和品牌了。

  总结下这个过程中的关键点

  1.点子没抽象好。其实所有工具和产品都是在做一种抽象,对用户需求的抽象。比如那个经典的例子,问用户需要什么,用户肯定说是要更快的马,而不是一辆汽车。汽车就是对用户出行需求的抽象。但如何做这种抽象呢?我总结了下有三个境界。

  (1)DRY原则(Don’t repeat yourself),不要重复自己,最常见的是用在代码规范里,建议大家不要随意复制粘贴,而是要做一定抽象。但实际上,所有的语言的高级功能,面对对象,模块化,代码生成工具,各种框架,都是在解决这个问题。也就是说,如果你发现你在做许多重复劳动,说明这里就有可能抽象出个工具出来。

  (2)不要重新发明轮子。这个原则貌似有争议,但我觉得争议是没搞清楚“发明”和“造”的区别。不要重复发明轮子,但你可以造新的轮子,或者改进已有的轮子。这个原则说的是不要重复别人已经完成的工作,不要闭门造车,要在前人的基础上做改进。一直觉得发明轮子的人是很伟大的,也很难的,历史地位可以和发明取火术有的一拼。有了轮子后,人类所使用的工具和动物所使用的工具才有了本质的区别。

  (3)前面我们做到了不要重复自己,也做到了不要重复别人,第三个境界就是“不要让别人重复你”。将你的工具,框架,抽象分享出去,作为开源产品或者SaaS服务,让别人不再重复你已经完成的工作。

  2.开发速度慢了,竞品出现,或者功能比竞品弱。

  3.推广没做好,大家不知道,结果被后来者超越了。

  4.做出来的东西没有实际需求,比如pool,有人觉得go里用channel模拟就很简单,没必要用个复杂的pool。比如许多Copy To China的项目,发现在中国的环境,水土不服。

  5.开源后不维护,没了热情,用户反馈无响应,***都流失了。好多僵尸开源项目都是这样了。

  所以,我觉得想创业的工程师,可以先从开源做起,将开源做为创业的一次演习。体验一次从构想,开发,推广的整个流程,这样可以对创业过程中的关键点有些体验,可以评估自己的长处和短板。毕竟自己是工程师,开发的时间可以自己掌控,面向的用户也是工程师,所要解决的问题是自己熟悉的领域,需要传播的社区也是自己熟悉的社区,这种天时地利人和的情况下做项目还是遇到困难,可以想象下,如果换到一个自己不熟悉的领域,不熟悉的用户,不熟悉的社区,困难会有多大?

  另外说一句关于技术人创业的观点。我觉得王安石一句诗非常好“春江水暖鸭先知”,我们一线的写代码的工程师是在水里的鸭子,江水变化我们肯定首先会感觉到,这方面是有优势的。如果你高升了,不写代码了,跑岸上去了,那可能就感觉不到江水变化了。

责任编辑:火凤凰 来源: 午夜咖啡博客
相关推荐

2010-04-21 10:04:33

Oracle移植

2016-02-24 09:47:04

WiFi信号

2019-06-23 16:02:12

Kubernetes集群节点高并发

2021-07-30 09:00:40

鸿蒙HarmonyOS应用

2021-12-30 06:59:28

方法重写面试

2023-07-27 18:39:20

低代码开发编码

2014-01-26 14:24:25

开源项目

2009-07-16 09:25:27

Java常量定义

2018-08-28 06:21:19

网线布线线缆

2024-01-02 12:59:00

智能家居

2022-09-30 09:04:29

开源开发

2019-09-17 10:51:12

架构K8节点

2015-10-26 10:24:11

数据中心DCIM

2009-08-07 13:16:59

C#读取Excel数据c# 读取excel

2016-01-31 10:59:19

设计app

2024-05-16 15:15:14

2019-05-15 10:38:17

微服务架构监控

2011-05-26 17:37:11

Ajax

2022-08-31 18:51:00

DevOps软件开发

2018-05-30 12:00:55

私有云云计算数据
点赞
收藏

51CTO技术栈公众号