Stoned's Blog

A startup hacker.

生日,快乐

今天是你的生日,没有你的提醒,我也记不起。因为提前跟你确定了生日礼物,就好像你的生日已经提前过完了一样。但我知道不是这样的,也不该这样,然而你人又不在北京,相隔老远可能最好的方式是给你写点东西。

要搁以前,我可能给你写点诗,诗虽短小,但情感充沛。但是现在手法生疏,表达不畅,诗怕是写不了了。所以只能给你写点普普通通的文字。

文字虽不好听,也不好看。但文字平实,平实有平实的力量,一如我们的生活。

明年就是我们大学毕业十年的时间了,我们约了明年回学校看看。刚毕业时肯定不会想到,十年就这么过来了。十年时间,不敢说弹指一瞬,但时间就像慢慢悠悠的牛车,愣是把我们从成都驮到了北京,回头一看,那些走过的路,不多不少,恰十年。

一两年前刚三十的时候,心中常常有些忐忑,仿佛进了考场,提笔答卷,也不知道自己考得怎么样。但最近,尤其是今年以来常常忘了自己的年龄,只记得已而立,到底是三十出头还是三十末尾,好像已不再重要。今年以来,不知是做老柚的缘故,还是年龄渐长,对一些以前不在意的事情,以前不理解的事情有了新的感想,于是今年开始带着图图启程百城计划,那些一座座陌生的城市,那些一个个只在书里或者新闻里出现的地名,我都想带着图图走过、看过。那些看起来和我们毫无瓜葛的地方,我都想和他们建立联系,因为这都是中国。和你关系最紧密又最陌生的东西,一如我们的生活。

做老柚,以前和人说老柚解决的是中年人孤独的痛点,以前是半懂,现在我想我已懂一大半。不知从什么时候起,因工作太忙,我就不在家吃晚饭了,回去也晚,几乎都是回去就快睡觉。后来公司晚饭吃的早,回去就快饿了,于是开始点些外卖回家吃。有些时候,你们睡了,我一个人吃点东西,喝点东西,夜深人静。后来在公司,我和同事说,我终于理解了,回到老家,为什么我妈总要叫我陪她喝酒了。这孤独,不紧不慢,跟着时间,终将与你相遇。

今年的绝大部分时间,你都是在家忙碌,陪着夭夭成长,伴着图图长大。我知道,这可能是你过得最辛苦的一年,你的无处安放的焦虑不停的在啃食你的耐心。我非常理解你的焦虑,非常希望你可以战胜它,但我知道我不是一个好的伴侣,我不够耐心,也不够贴心,一如缺乏对图图的耐心一样。所以,我很钦佩和感激你在图图身上所体现的耐心,虽然这过程总是伴随着痛苦与绝望,但你和图图都在进步。反倒是我,没什么长进。

我不知道你是否和我一样,也曾感受到孤独,孤独也好,焦虑也罢,如生活里其他的东西一样,伴随着生活,又是生活本身。

生活就像打翻的调味盒,混沌、无序,却又酸甜苦辣。可我爱这该死的生活,一如爱你。

生日,快乐。

增长黑客之防御术

在犬校里见了不少被攻击的例子,有些我经历过,有些我也对其他人用过。其实很多时候,稍微了解一些,在设计与开发时,略加注意,提前预防,就能避免遭受类似的攻击。(以下内容针对App的攻防)

给大家讲具体的方法之前,需要先对大家普及一下一些基本的概念。

唯一标识 (unique identifier)。我们会用一些唯一标识来区分不同的用户,常用的唯一标识有

  • UserId,自己产品的用户id
  • OpenId, 第三方产品的唯一用户id,比如微信的openid。
  • IMEI,每个手机都会有不同的IMEI,所以IMEI可以用来标识设备是否相同。(苹果因为禁止获取IMEI,但仍有办法获得类似的标识)。ps:忽略山寨机,12年左右山寨机比较多,好多imei是相同的,但现在极少有imei相同的手机了。
  • 手机号,通过验证的手机号。
  • IP,ip不算是唯一标识,因为一个局域网的用户可以使用相同ip进行登录或者操作,但ip仍可作为一个有效的手段来区分是个体用户还是组团用户。
  • token,因为http是无状态的,这意味着每个请求都是独立的,所以你不能因为用户的上一个请求通过登录了,下一个请求就不检验这个用户是否合法。因此会用token来代表用户的合法性。
  • 签名,我们知道文件下载的时候会检验下载下来的文件签名是否与官方公布的文件签名是否一致,这样就可以避免文件被篡改或者下载不完整。同样的,我们也可以用签名来验证一个客户端api请求的合法性。

攻击(attack)。攻击一般分两种,非法攻击与合理攻击。两者的区别在于是否篡改app设计的功能行为。所以举个例子,合理攻击包括

  • 组织1000个人,每人操作10个手机,定点(比如晚上9点)使用app的上传视频功能,结果服务器搞崩了几个小时。
  • 通过抓包的方式,发现正常请求一个用户的信息的时候,会泄露这个人的密码等隐私信息(虽然没展现在界面上),所以你通过这个办法获取到了某个重要人物的密码,登录他的账号后,给他传了一些不可描述的视频…
  • 人为上传敏感视频或内容…

一般可以进行合理攻击的原因都在于产品/接口设计缺陷,在设计实施时有意识想想这块问题,基本都能避免。所以后面我们主要针对非法攻击这块。

刚才给非法攻击下了一个定义,非法攻击是指篡改了app原本的功能行为的攻击行为,所以,既然与原本的app行为不一致,那很明显,这种攻击是指有人通过代码/工具模拟或篡改app行为,所以这种攻击一般具有以下特征:

  • 高频
  • 大量请求
  • 集中,所有请求通过某一UserId或者某一IP或者某一IMEI发起。

既然我们知道了非法攻击的定义与特征,有什么办法可以避免呢?换言之,有什么办法可以避免别人模拟或篡改app行为呢?其实答案也很简单,那就是

  • 不让其他人发现app行为背后的请求与逻辑
  • 对每个用户请求采用签名验证,拒绝伪造请求。
  • 如果还没办法做到前两项,那么还能根据非法攻击的特征进行预防。

不让其他人发现app行为背后的请求与逻辑,指的是对外界可见的各个层面进行保密/加密,比较常见的办法有

  1. android混淆
  2. android加固/加壳
  3. 重要参数与方法用native的方式写成so,比如key与加密的方法
  4. HTTPS + pinning
  5. 接口级别加密

前三条比较常见,大部分公司都是这么做的,第四条做到的公司不是太多。第四条的核心目的是为了防抓包,也就是说当别人无法通过反编译或者抓包获取你的api方法与参数时,大部分的攻击方法就会失效。但许多公司只上了HTTPS,却没有开pinning。

划重点

请让你的工程师开启HTTPS + pinning

请让你的工程师开启HTTPS + pinning

请让你的工程师开启HTTPS + pinning

这一条简单有效的办法可以在创业中前期(百万之前吧)避开各种蛇虫鼠蚁。

第五条就是比较变态了,有利有弊,弊端是工程师沟通成本、debug成本会增加,优势是接口加密级别提升不少,但个人不太建议这么做,原因是当你做好前4条之后,破解难度已经很高了,大部分人无法突破前四道防线。而能突破前四条防线的人,估计也能突破第五条防线…

当你的app加密级别比较高,相当于你给自己设了一道暗门,只有你自己知道入口在哪里,其他人根本找不到你的入口。虽然这个办法很好,可是你心理还是嘀咕,万一,真的要是万一别人知道了你的暗门,轻轻一推就能进来了,这是不是太不安全了。那好,那就给你的暗门再装一道人脸识别的开关吧,这下除了你之外就没人能进来了。

对于app而言,这人脸识别就是对每个请求采用签名验证。

签名验证的基本原理是只有你自己知道加密秘钥与加密方法,所以你可以对每一个请求进行签名计算,服务器根据传上来的签名进行校验,如果签名有效,就转去相应的逻辑处理,如果签名无效,就直接拒绝请求。

对于签名机制的设计,最好考虑到以下几点:

  1. 对签名加上时间戳,这样可以保证每个请求的签名都不一样
  2. 对签名的内容加上用户相关的信息,比如token
  3. 对签名进行检查,同一合法的签名只允许通过一次,这样可以防御别人发起DDOS攻击。
  4. 请为签名秘钥添加版本管理,避免秘钥泄露带来的秘钥更换的问题。
  5. 注意在客户端保护签名秘钥与签名方法,请参见『增长黑客之防御术2』

划重点:

请开启HTTPS + pinning,以及采取签名验证

请开启HTTPS + pinning,以及采取签名验证

请开启HTTPS + pinning,以及采取签名验证

2016年终总结

2016,thank god,终于有了立身之地。

想起2016,总会想到2016年初的时候,那时带着家人在三亚度假,偶遇其他团队在沙滩,心里无比向往,那个时候感慨道,『什么时候,我也可以带着我的团队来这里TB』。2016已经过去,即使还没有带我的团队前往三亚,但,我有了我的团队,我有了2017可以拼搏的事业,这让我无比感激2016。

2016是我印象深刻的一年,我从年初的迷茫、徘徊,到年末的自信、甚至有些自大,再到现在的挫败感,仿佛2016坐了一个落差极大的过山车,等车停下,心有余悸戚戚焉,心里感慨『Thank god,车没翻,2017还有的玩』

2016初,我决定结束自15年9月开始的无业状态,寻找我人生新的变量。经卫杰介绍,来到了映客,因为这是唯一一个给我独立空间发展的团队。在2016年的年末,我和焕德,文业说起,心里最想说的一句话就是『我终于挺过来了,现在回头想想,还会有点后怕』从员工到创业者,从技术到产品,从技术Lead到业务负责人,这一年经历了太多角色变换,好在这一切都顺利过来了,我终于上了创业的岸,感谢2016,感谢映客。

2016也经历了许多起伏,去映客后,先做的三秋,结果不到四月,三秋卒。8月开始做老柚,经历一些坎坷,也算过来了,所以感谢2016给2017打了一个好的基础,2017可以直接扬帆起航,而不用伐树造船。所以,纵使2016曾有高光时刻,但2017已复归原位。2017,从零出发。

从零出发的2017会有一些期待

  1. 做一个break even的业务
  2. 做一家独立的公司
  3. 在distribution上没有盲区
  4. solid team

感谢2016,给我创造了起跑的条件,还给我带来了小女儿幺幺。所以,爱你,2016。

写给我未来的女儿

亲爱的女儿,今天妈妈告诉我你是个女孩,爸爸有一点点小小的失落。

当你来到这个世界之前,很多人对你有些期待,他们希望你是个男孩儿,对我来说,如果你是个男孩儿,可以让那么多人开心,我觉得这也是一件好事。但单单对我来说,

如果你是个男孩, 我们可以一起玩你喜欢的玩具,你可以跟我一起踢球,你可以跟我一起跑步、爬山。等你对游戏感兴趣了,我们一起玩游戏,等到我再也打不过你的时候,我们再换个你不擅长的游戏。等你对计算机世界感兴趣的时候,我可以当你的领路人,让你领略二进制世界的伟大。So,It’s Good。

如果你是个女孩,如果你也可以陪我玩玩具,可以跟我踢球、跑步、爬山。如果你还能跟我一起玩游戏,跟我一起在二进制世界里找到共同的话题,我想,这也挺好,It’s Cool.

可是,如果你是个女孩,只喜欢公主,不喜欢运动。只喜欢动画片,不喜欢玩游戏。只喜欢小鲜肉,不喜欢逻辑世界,我想,I’ll be Sad.

这是爸爸的小心思,我希望我可以陪你成长,你可以陪我玩。我希望和你亲密无间,你和我无话不说。我希望你在我身边长大,自强自立,强大到无需我的陪伴,你也可以穿越迷宫,找到你的罗马之路。我只是有点担心,等你长大,发现爸爸不是你崇拜的公主,你会对我无比嫌弃。所以这是为什么我希望你是个男孩,因为只有这样,爸爸才有信心成为你的偶像,在你的成长之路,收获崇拜的目光,那会让我无比开心。

如果你是个男孩,把你丢在人世间,让你吃饱,让你长大,剩下的路让你自己走,我想这事就容易许多。

如果你是个女孩,把你接到人间,心中就充满了惶恐。在你小的时候,我们会努力影响你,希望你没有公主病,等你成长,我们希望可以保护你,希望不受欺负。等你长大,我希望你自尊自信、自强自立。相比男孩,我们肩上多了更多责任。

这就是爸爸的小失落,我怕不能理解你的内心,我怕不能教会你自强。

人总有完美之情,当我得知你是个女孩,爸爸便失去了凑成一个『好』字、享受儿女双全的机会,这让我多少会有些遗憾。可是这遗憾与你的健康成长相比,不值一提。可是这遗憾与你的自尊自信、自强自立相比,不值一提。可是这遗憾,与你相比,不值一提。

Deeplink

Deeplink是什么?

用最通俗的话讲,就是当你打开微信中分享的知乎页面时,点击打开应用按钮,就可以跳转到知乎app相同的内容,如果你没安装知乎,点击打开按钮就会跳转到下载页面,下载完成注册之后,你也可以跳转到之前在网页上看过的页面。下图很好的解释了Deeplink的工作。

Deeplink

而作为Deeplink的升级版,Deferred Deeplink更受大家欢迎。两者区别如下:

Deferred Deeplink

Deeplink如何实现?

对于mobile app来说,Deeplink的客户端实现包含两种方式

  • 支持iOS9以上的 Universal Links
  • 传统的URI Scheme

如何实现Universal Links

Universal Links的工作原理是先向Apple服务器申明要使用什么域名作为Universal Links的域名,在用户安装app之后,系统如果发现https://你的域名请求,系统将检查App Links,如果发现注册的app,就会直接打开应用。如果未发现app,就会调用默认的方式打开链接(比如浏览器)。

而实现Universal Links,按照苹果的指导一步步去做即可。

如何实现传统的URI Scheme

URI Scheme 是统一资源标识符(Uniform Resource Identifier )的命名结构,就是定义一个资源的。当你的app定义了一个URI Scheme后,就相当于往系统的注册表里加了一行,告诉系统,如果遇到 xxx://yyy(xxx就是你自己定义的URI Scheme),就跳到你的app去做相关的事情。

而iOS和android的URI Scheme实现主要是,

  1. 在项目里声明scheme
  2. 在具体的位置根据URI的内容做相应的跳转

有坑吗?

上面两种实现看起来是不是很简单?如果你以为做完上面两件事情就可以下班走人的话,那只怪你自己too young too simple了。deeplink还需要做到以下事情(踩以下的坑)才能正常工作:

  1. web(h5)页面实现是否已安装app的检测,从而决定是跳转到app,还是跳转到h5页面
  2. 我实现了deeplink,微信(第三方应用)里为什么不跳app?
  3. 为什么有些浏览器检测app是否已安装的代码无效?
  4. 用户通过微信分享本来想看某篇文章的,点击打开app,跳到了app的下载页面,app下载完成之后却没有进入之前看的文章页面。

需要做的具体实现如下:

  1. 在h5界面兼容各种浏览器的 app检测 js代码
  2. h5页面针对微信内的下载打开引导(以及在微信里打开app的黑魔法?)
  3. 采集安装前的指纹,实现Deferred Deeplink

看起来好麻烦,有现成的方案吗?

我们用了DeepShare实现的Deferred Deeplink(此处应有广告费,我的微信号huangxiangdan,欢迎给我广告费),基本上在客户端接入api,实现跳转就好了,就不用去做上述那些繁琐的事情了。

参考资料

你知道App推广神技“Deferred Deeplink”吗?

Hi There

Hi there, 2016.

只想打个招呼,对我自己。

15年早已过去,16年早已开始。但仿佛时间走的太快,我走的太慢,我总是那个落在时间后头拼命追赶的小孩。但今天,我仿佛看到了2016的列车,虽然它还在前面,但触手可及。

今天是我很长一段时间以来有意识的早起,早起是为了找回那个刻苦、专注的自己,来面对前路坎坎。人总有弱点,但恐怕最大的弱点便是贪图安逸,安逸已让我抓狂。我知道我无法消灭它,唯有磨练更强的自己抵抗它。所以今天,也是磨练的开始。

不管怎么样,我会记住你。Hi there, 2016.

For_the_idealist

在一次主题为年终总结的1 on 1上,一位同事告诉我说,我是我们所有人中最现实的一个。我听到这话,随即反驳,我怎么会是一个现实的人呢?他说,在这个社会上,或许我们都还不够现实,但在我们这个群体,我就是那个最现实的人。而且,这个“现实”是褒义的。我想了想,是的。

我们都很聪明,踏实,同时又很无助。就像一群理想主义者,在现实面前头破血流。可是,本不该如此,不是吗?我们都擅长一些事情,做得都还不错,我们内心柔软,善良,我们都该得到属于我们应得的那份回报,不是吗?可是这个世界说,你做得还不够,你需要比其他人更厉害,你得接受现实,并且驾驭它。有人擅长做这个,有人不是,我一度想,我们应该每个人都变成这样,把理想藏在心底,驾驭现实,可是,这是一个多么残酷的事情啊,现实会让人变得现实。我们都很聪明,却都不够聪明,在理想与现实的平衡中,我们拿现实教育自己,懊恼自己的理想化,我们永远会发现我们不够现实。可是,这是唯一的答案吗?我不愿意相信。许多我们看中的品质,也多在理想二字上。理想应该得到回报,这样才能不被现实吞噬,才能帮你掌握好理想与现实的平衡。理想主义者值得这样的回报。

But how?每一刻,我站在理想与现实之间的钢丝上,我多希望有人带我前行,有人说,你太偏向理想了,你应该现实一些。他还会告诉你,现实过度了,那样只会让你丢掉理想。我不惧怕变得现实,只是害怕被现实吞噬。可是,这样的事情没有发生过。我坚持我的理想,摇摇摆摆,跌跌撞撞,在某一刻,我终于触到了现实的底部,我回过身,摆正自己,大步向前。理想主义者应该得到他们应得的回报。不,甚至是奖励。理想会让人变得更有创造性,内心柔软,这些品质值得最大程度的奖励。

站在此刻,作为这个人群中最现实的人,我突然明白了自己的责任。有人相信你,有人希望得到你的帮助,你还有什么理由不这么做呢?这是我的责任,也是我的希望,带着一群理想主义者前行,不让他们受到伤害,帮他们得到他们应得的回报。

(所有的词汇,都不够具象,但它们都有它们自己的含义,我能感受的到,如果你需要,我可以翻译,但希望你没有这样的想法)

2014年终总结

14年已过去1/8,我也在各种场合给不同的人讲过我的总结,看起来现在这个时间来写总结有些过时。但,管他的,叫总结也好,叫回忆也好,总之就是我想写。

这一两周,天放找我做过1 on 1。主题是14年总结。因为在那之前我花了2个多小时回顾了我的14年经历,所以在跟天放讲时,几乎就是之前总结的复述。2014年能记得的是三件事情: 高考倒计时,社团联盟,导入。这些事情让我印象深刻,它们帮我印证了我自己,帮我树立了我的自信。

高考倒计时是一个一到两周的事情,也是一个最理想化的产品,高考很残酷,也很辛苦,我想做的就是给别人带来一点点关心,一点点触动。高考倒计时很冰冷,只想让它不那么冰冷。这件事情说实话,价值和意义远超我自己的付出。当你看到每天有1000多个人早起签到的时候,你就明白,这努力并不白费。 http://guole.me/leaderboard

社团联盟一个有些战略意义的产品,我给它的评价是找到切入点,做出来,站得住脚,这事就及格了。很遗憾,它也只是及格。这件事情,我尽了最大的努力。我是负责人,没有最大化这件事情的影响力,我需要承担责任,但,我真尽力了(I’m doing my best)。

导入,是一个由我起头的项目,我说,由我开始,就由我来结束。3个月,我夸下海口。3个月之后,我放心离开。这件事情还没达到perfect的状态,但75分是有的。很高兴,许多人对这个结果满意。扣掉的25分,多是在时间上。

一年的时间,相信自己的感觉,横冲直撞,为所有因为我的鲁莽,强势受到伤害的人道歉。在这个特殊的阶段,我选择相信我自己,而不是其他人,抱歉,这是我的选择。我特别清楚这件事情带来的负面效果,但,如果你了解我,你或许会理解,这是我14年最好的选择。

以上是工作,下面是感悟,这是分界线。

14年我找到了自信,那个我最缺最缺的东西,那个用来支撑我的ambitions与责任感的东西。当你即将三十而立,当你的远大抱负与你渐行渐远之时,或许你就能明白我的感受,没有自信的支撑,所有承诺都如同谎言,最可怕的是,你对着你最亲近的人亲口说出了这些谎言。当时间远去,耐心渐失,你唯有妥协与改变自己,才能继续前行。这也是我在年初给我媳妇的承诺,“再给我一年时间,如果再无起色,我们就离开”。很幸运的是,我找回了自信,我不用去妥协。

所谓自信,并不仅仅是一种心理感受,如果只是这样,那么就很难把它与自大进行区分。自信是一种证明,是一种底气。就好比说,“我一顿可以吃5个包子,难道我吃不了6个包子?”。所以自信来源于你吃了5个包子这个事实。14年,我所做的事,我所做的判断,我所坚持的意见,我所看好的方向,都给了我基于事实的自信。这自信来之不易,也来得恰得其时。

我的自信一半来源于工作,而另一半则来源于生活。14年9月份开始,丈母娘回家,我们开始三口之家模式。我们经历了一些困难,也经历了一些共同的成长。女儿变得更加容易沟通,我们也变得更加耐心。在这过程中,我找到了属于自己的定位。多少个周末,我站在厨房,手里剥着大蒜,心理在想着,“生活还挺好的”。就是这生活的独立,让我找到了些关于责任感的自信。而随着一个巧合的机会,我突然意识到,哪怕不再工作,我也可以做到经济独立,从那一刻开始,我仿佛变成了一个自由飞翔的人。生活独立和经济独立给了我另一半的自信,这自信也延生到了我的工作里面。

从某一刻起,我开始称呼自己为一个合格的hacker,一个合格的全栈工程师。那一刻,正是自信开始的时刻。

乔布斯说,“你不能站在过去就把你的人生串成线,你唯有回头看,发现自己做的一些事情,恰巧就在某条线上”。可是,我说,当你站在当下,你不知道未来,当你困惑,当你迷茫,你唯一能做的事情就是,相信自己,坚持自己,给自己一条够长的跑道,然后,等着。在未来的某一刻,你会发现,在你迷茫时候你所做的事情,你的付出,终将会被连成一条线,最终汇成未来的你自己。

关于此刻

擦完地,夜已深,她们都已睡着。坐下来,静下来,想一想这几天的声音,有人吹牛皮,有人被打脸。作为某个维度相关的我们,也已应邀发声,谦逊、真诚。这一切犹如时常上演的互联网戏剧,闹一阵,净一阵。这一切也不关我的事情,公司层面自然有人发声、有人捧场,最多作为被有意无意提起的团队的一份子,转转帖子,助助声威。

但这一切,却又跟我极度相关。有些话,如梗在咽,不吐不快。

作为一个从计划FM时代跟随团队一起成长的老人家,我已不用再证明自己是个合格的hacker、合格的全栈工程师、以及拥有产品sence的工程师。三年多以来,我看得到自己的成长,我也见证了天放的变化,以及天放带给大家的变化。

天放是个很nice的人,他跟你交流总是能站在你的角度,谦逊、坦诚。这一点,在面对面试者的时候尤其明显。在12年中期的一段时间里,我们只有两个工程师,我和天放。所以在不短的时间里,我们高频率地面试工程师。对于缺乏面试官经验的我来说,最开始总是试图证明自己的能力比面试者更强,所以在提问的方式上总会显得有些咄咄逼人,而天放则恰恰相反,不管什么水平的工程师,天放总会照顾别人的自尊心,在出题的难度上,循序渐渐。别人解答碰到困难的时候,总能循循善诱,帮别人“找出”答案,不至于让别人难堪。在那段时间里,我从天放身上学到的,让我受益匪浅。以至于后来我用一样坦诚的方式跟面试者沟通,甚至给他们职场上的建议的时候,总能收获面试者的感激。

天放在不同的场合多次提起,我们有一个很棒的团队。这个棒,我相信更多的不是指能力,而是指团队基因。我们私底下多次黑过天放这个美国人。“美国人真的会自己雕南瓜灯吗?”,“那你得去问美国人(天放)啊”。天放天然带着美国开放的气息,也带着浓浓的硅谷气息。我们从未提过扁平化的组织架构,因为这不值一提,至少在天放的基因里,理应如此。当天放每天和你一起工作、一起解决问题的时候,他也在时时刻刻影响着你,所以很多时候,我们说基因,我们说团队氛围,其实也就是在讲创始人的世界观与价值观。天放的坦诚影响着我,也影响着团队的其他成员。我深信并为之感到骄傲,我们有那么棒的一个团队,每个人都如此坦诚,没有心眼,没有芥蒂。这对于一个团队而言,实数难得。

我们是在12年初转型做的课程格子,我依稀记得我们做计划FM时的窘迫,我们连我们的用户是谁都不知道,所以,当我们在抉择“是该继续做计划FM,还是转做课程格子?”的时候,我们几乎是没有任何迟疑的,至少我们知道我们的用户是谁,我们知道我们的用户在哪里。大学生市场,天然的聚集属性,Facebook的发源地,在国内却有着一个不争气的老大,人人。有人对大学生市场垂涎三尺、趋之如骛,有人以人人为例,大倒冷水。孰是孰非,局中人局外人各持己见。或许诚如天放所言,回到初心,我们至少做了不少大学生喜欢的第一步。很欣慰,不少人可以用上,一些人喜欢上课程格子。这比三年之前,强了不知多少倍。有人说,那下一步呢?呵呵,你说呢?:)

这几天,尽管我不愿意,但仍然从各个渠道被动接收到关于xx表(这已是我对他们保持的最大的克制)的消息,我本不屑去看关于他们的东西,不管是褒还是贬。但无奈声音还是太大。我打开工具查了查xx表最近半个月的用户数据(别问我怎么做到的,我是个hacker:)),再对比了一下我们的用户增长数据,然后我就放心做我手头的事情去了。对他们不屑,一是确实看不起他们无道德无节操的做事方式,二来,当你通过各种方式(再次强调,我是个hacker)清楚他们的技术水平,真实数据之后,这种不屑就变得理直气壮了。

“成功是70%的运气+30%的能力”,这是天放在某次论坛时候讲的话,我深以为然,这种体会,在我们从计划FM转型课程格子之后,更加深刻。一样的几个人,一样的方式,完全不一样的结果。有了这种体验之后,对于创业的敬畏之心,印在脑底。也诚如天放所言,我们在前进的路上犯了一些错,也错失了一些机会,我们走得不是特别快,也走得不是特别顺,跌跌撞撞不能给我们更好的结果,却帮我们找到更好的感觉。

创业路上,继续犯错不可避免,但更好的感觉可以帮我们找出更踏实的路。

那些东西

有些事情,说出来矫情
比如诗歌、梦想、泪水

实实在在影响了人这一辈子