2012:变革

没有哪一年,像 2012 这样出乎我的预料。这一年,我从被认为拥有完美纯粹初恋的好男人,成了一个没人要的老男人;这一年,我刚刚驾驭了中层的工作,又紧接着面对进入高管层的挑战;这一年,承受了很多、学会了很多、中庸了很多。

– – –

事情来得那般突然,以致于我要面临从零开始生活的挑战。这真的是一个挑战,最搞笑的例子是,买个床垫回来发现竟然小那么多,我以为天下的床都一样大呢!再举个例子,我那时在商场对着 “x件套” 久久思索:怎么这些被子都这么薄呢?呵呵。。。慢慢地,下班逛一趟超市,提一堆东西回来成了一个习惯。那两个多月逛的超市,比之前 20 多年还要多吧。我终于意识到了大部分人早就意识到的结论:楼底下有个大超市,生活是多么的方便啊!

寂寞,可以让一个男人腐朽,也可以磨炼他的情怀。现在这里的一切,就只有一个你了,活得有没有品质,再没有借口了!好在,咱自我进化的能力尚足以慰藉。生活逐渐朝着自己想要的方向前进,有什么不可以呢。

2012,一向对尺寸不敏感的我,开始时常去测量,因为买东西必须有所参考;一向对金钱不敏感的我,偶尔也会对一眼售货单,并感慨通货膨胀的厉害。2012,我研究起了如何更有效率地清洁玻璃、如何更好地吸尘;我研究起了空气净化系统、地热供暖系统。2012,我甚至花了些时间研究休闲娱乐,如果既有时间又有钱,可以去哪玩呢?我开始去寻找花鸟鱼虫市场,养起了小动物(起初,它们只是装饰的工具,我认为在这样一个屋子里需要一点动态。买回来才意识到,这是一条条鲜活的生命,它们也有自己的习性、也会饿、会生病、会⋯⋯必须对它们的生命负责)⋯⋯2012,我在生活,学到了很多;却也偶尔无奈于一个人吃饭、看不到温馨的笑容。

– – –

2012,团队有了极速的扩张。我们同时涉及云计算、移动互联网和物联网;同时涉及 Web、App、C/S 和三维仿真;同时涉及平台研发、通用产品、专业产品和各异的项目业务。对于不愿丧失细节掌控力的人,这意味着太多。意味着必须对团队建设、业务需求、专业理论、产品设计、技术架构都有足够的投入;意味着必须对战略规划与落地有热切的期盼、对商务压力有坚强的意志、对团队成长与波动有沉稳的心理;意味着在期盼、压力和问题面前保持激情,并向团队传递信心与决心;意味着必须时刻准备进入全新的领域,并保持勤奋。

职业是一个舞台。在这个舞台上,演绎了自己的青涩,也演绎着一段极速成长的青春。

– – –

回首,我看到了悲哀,在最重要的事情上如此失败(好在,仍然让大部分人记住了自己爽朗的笑声、让领导可以向自己不必顾忌地泄压、让团队相信我们能成)。

如果说有什么值得欣慰,一些困境和压力可以 HOLD 住、一些事情做起来似乎有些天赋、一些毛病可以快速地自我进化掉,这些也许算吧。至少,这样说可以让自己感到高兴 :)。

也有很多不太满意的地方。这一年,仍然做了很多无聊的事情,浪费了很多时间;一些好的做法,仍然没有形成稳固的习惯、仍然在波动;有些时候,仍然可以明显扑捉到自己很天真、很幼稚(虽然希望能够装不懂,保留某些幼稚);对父母、亲朋的关照仍然还很不够。。。

这一年,我这个所谓的 geek,好像对科技失去了敏感。真正的 geek,应该是像 Elon Musk 这样的家伙,IT 之外,对数学、物理、生化⋯理论和应用都有着前卫的理解和尝试。在这方面几无收获,甚至要看记者写的新闻才知道发生了什么事。反倒是,生活上有了些长进。这是一种可怕的中庸么?⋯⋯只能勉强找一句话安慰自己,“花一些时间深入理解生活,有助于激发更有价值的创新”(倒真的在做家务的时候,想到了一些很好的工作上的创意~)。

– – –

单身男人的好处,是他有很多寂寞的时间。
直面寂寞,成就了情怀;
静观内心,凝聚了真我;
来去无虑,释放了豪情。

展望,希望 2013 是升华的一年。

除此之外,以下几条要做到!

  • 驾照。时间不是借口!
  • 多读书。2012 读了一些书,工作有关的、无关的,但还远远不够,要继续!

    2012 感觉还是太“文”了一点,2013 要恢复一下“野性”~!

  • 健身。2012 开了个好头,2013 要常态化!
  • 滑雪。这个这个,这才是符合我口味的运动~!虽然现在还很菜鸟 :(   要多练!
  • 潜水执照。要拿到 OW 执照,AOW 就更好了~。向海洋深处进发,哇哈哈,向往~! 12

– – –

莫为浮尘遮望眼,风物长宜放眼量!
有太多激动人心的事了,Can’t keep waiting!

一名程序员的中期答卷 — 序

今天,我过了一个有工作也不干的周六。悠闲的时光,除了轻松惬意,也给人思绪。我忽然觉得,应该停下来,写点什么。

回首来南京工作的经历,我手中的素材开始慢慢变厚,然后又由厚变薄。现在,又要开始变厚了⋯。所以,是时候对前面的东西做点记录吧,当着年轻的记忆 ;) 。否则凭我的毛病,过了这个阶段就会觉得不值一提,然后慢慢忘记了。。

 

如果用一个词形容这两三年的工作,我觉得是“丰厚”。从一个人,到几个人、到几十个人;从锋芒毕露,到内敛、到担当、到承受。而北漂的那几年,感受的是神奇、纯粹的快乐。大概,“浪漫”完了,该负责任了 ^_^ 。

 

作为所谓的序篇(哈哈~),还是回忆回忆自己是怎么成为程序员的吧。这个,说起来就比较悲催了。牛人们的经历都是这样的:

我有个 Geek 老爸,在我很小的时候、世界上第一代 PC 诞生的时候,他在车库里自己捣鼓出了一台。然后,他用汇编写了好几个游戏给我玩。从此,我爱上了他那台电脑,以及编程。。。

我第一次接触计算机已经到了高中一年级(还没有网络),对着屏幕不知道该干什么,然后看着个别已经打字打得噼里啪啦的同学表现出一副无辜的样子。等到我可以经常使用计算机,已是快 2000 年的时候了(还是在网吧)。当时,其他同学都在忙着聊 QQ、玩游戏,我却在好奇怎么可以让网页上的文字一闪一闪的。然后,我用记事本看 HTML 的样子吓到了网吧老板,他警告我不准黑他们网吧,我倒是想啊~。

 

刚上大学那会,已经可以假模假样搞网站了。比如当时常见的,资源搜集与下载站等等。不知从某个时机开始,才尝试步入“正途”,思考说所谓的“计算机科学与技术”是学啥的(因为我不是计算机专业的)。后来找啊找,找到了三个靠谱的来源,分别是清华大学、兰州大学和 MIT,它们对于这个专业该做什么、怎么做,开放的资料给了我很大的帮助。记忆最深刻的,是当时我老旷课,拿着本《数据结构》的书躲在学校无人的楼顶上,想啊想,到底什么是 TMD 的“抽象”。。。现在回想起来,因为自己的性格,我对这个学科从完全的无知到稍微有一些理解,都是自己躲在角落里通过网络和书搞懂的。如果那时候能有个人点拨,应该会快很多吧。

 

再然后,我爱上了一个叫着“人工智能”的东西,因为前面的缘故,对传说中的 MIT 充满着向往。毫无道理地,我一直认为自己是个天才,我要去伟大的 MIT、做出伟大的科研成果、造出伟大的智能机器、然后取得伟大的商业成功⋯⋯。其实从中学的时候开始,我就有伟大的天才、伟大的科研成果、伟大的商业成功的梦想。然而这一刻,梦想突然变得这么清晰,那就是 MIT、人工智能!仿佛触手可及。

 

最后,经过挣扎,我发现我去不了 MIT。人生第一次感到绝望。即使高考考得不好,我仍然相信自己是个天才,这还没完。然而这一次,我要彻底放弃所谓的人工智能、MIT 的执念了,我得去找工作了;我得承认,自己只是茫茫人海中的普通一员了。那一夜,我为自己,在绝望中痛哭。仅有的一次。

 

从此,我成了一名快乐的程序员 :)。

如果可以穿越,我想对年少的自己说:

勿有比较之心

这个环境,早早地向你灌输“人中龙凤”、“人上之人”的观念,仿佛人生的唯一目的就是要攀援一个等级,而成功的唯一途径便是将他人踏在脚下。权势与财富是唯一的衡量。

 

有一天,你会问自己,为什么来到这世上,所求为何?人生百年,似有一段光景,然比日月星辰、沧海桑田,实如蝼蚁,白驹过隙。人生所向,不过死得其所,求得内心安宁。

 

然纵渺小,你定也不甘心来这世界白走一趟,你定然想见识见识这种种之美。

想见识星宙斗转的自然之力,在苍穹的一角,仅这一颗小小星球上的千奇壮美已令你痴然。你不会“人定胜天”,而会充溢朝圣的心情,想用脚丈量大地、用心聆听安宁。

想见识千万年来人类文明的足迹,这个孤独的、智慧的、高傲的,狂躁的、愚蠢的、野蛮的种族,它走过了怎样的一条道路。因为,那是你来的地方,也将是你去的方向。历史透过尘埃在你面前呈现,而你也将化作尘埃组成历史。

 

终于,你在自然与历史的洪流中洗去了纤尘,变得温和谦恭。你爱悯地看着这个世界,在美与绝望之间,不再想只当一个旁观者。跟随你的心,去做点什么,你就没有白过。也许,你所选之道,已不同于环境的熏陶,你知道,那已不再重要。在广袤的时空间,人类有多样的价值,却没有唯一的“成功”。多样与不确定正是生命美与尊严之所。

 

你将不会后悔,因为你不仅曾经来过,而且清醒地活着;你体验了美,而且努力创造了美。

 

 

优秀是一种习惯,珍惜时光、重在实作

你在时间的无涯的罅隙中寻找到了一个渺小的人类存在的价值,你在生命独特的尊严的鼓舞下树立了前行的方向。你定然想做到更好,那么,请将自己从过往的缅怀、未来的畅想和当下的忧虑中释放开来,重要的,是迈出你的步伐。把想法变为行动,把行动做到优雅,让优雅成为习惯。

 

 

任何煎熬,待你挺过去之后,都将成为一种荣耀

不断的挑战,使你的生命变得丰满。不要倒下,因为待你挺过去之后,任何煎熬都将成为一种荣耀。这锤炼的是你的胸怀,使你装得下更大的未来。

RSS feed 迁址

曾几何时,FeedBurner 有一统天下之势,咱也没能免落俗套,热热闹闹地烧了一把火。。

 

承蒙有些朋友订阅了我这小破文章,给大家知会一声,您要不嫌我啰嗦,烦请订阅 http://wangcongming.info/feed/ ,老的 FeedBurner 地址可能会在不日废除。

 

谢谢! ^_^

 

我是怎么管理密码的

应推友要求,介绍下我现在是怎么管理密码的 :) 。

这个方法不是我首创,我也是受别人启发,但可以简单论述下为什么这个方法好~。

 

这个问题的背景,是这个国家的互联网行业,开发者素养差、管理者道德低的普遍现状(当然,国外也有很多不负责任/不懂如何负责任的网站)。我们对于所有网络服务,普遍处于不信任的状态(特别是国内还多了官僚监管这一层),但是有的时候又不得不用。那么,作为用户,我们如何保护自己的信息安全(这里只谈密码)?

 

理想状况:

  1. 每个网站都使用不同的密码;
  2. 而且都很复杂。

2 保证了如果某个网站技术不太行,保护措施做得不够好,你的密码也不会轻易被破解;而 1 保证了即使在极端情况下,也只会被泄露这一个网站的密码,不影响你在其它网站上的账户。

 

然而,要用人脑来记忆不同网站的不同的复杂的密码,显然是不可行的。所以我们要借助一些辅助措施。有一类软件提供这样的功能,需要的时候,它可以帮你生成一个随机的很复杂的密码,同时把它存起来。你可以注明这是什么网站的密码,然后用一个主密码把这些随机密码都加密起来。所以,软件负责记住不同网站不同的复杂密码,而我们人脑只需要记住一个主密码。

 

这是个好主意,但是还不够好。问题在于那些不同网站的密码都是随机生成的,这也就注定了我们的焦虑(我们失去了把控,只能完全依赖于一个黑盒)。我们总会担心记录弄丢了、损坏了、出门在外忘带了(同步?没网络呢、别人的机器呢?),或者某种平台这个软件不支持等等。总之,我们被 lock-in 了!

 

我现在的方法是,不使用随机密码,而是用主密码+网站名,然后算 sha1。即:

$ sha1sum

password+csdn

^D

对,出来一串“乱码”,就用这串乱码做密码。这样做的好处,只要密码后面的网站名不同,生成的“乱码”就完全不同,即使有几个网站同时不靠谱、同时把你的密码(即刚刚生成的“乱码”)泄露了,你的主密码是绝对安全的(当然,要搞复杂一点)。另一方面,你知道这些“乱码”是怎么生成的,所以你不再依赖于某一个单一的软件,因为 sha1 算法是整个计算机系统的重要基础设施之一,哪里都有它的踪影、久经考验。

 

哦,你会说,这是程序员的玩意儿,非程序员怎么办?非也,算 sha1 的小软件,可是比密码管理软件分布广泛多了。Windows/Linux/Mac OS、手机、平板⋯哪个平台上没有?不但有,而且很简单、很好用,绿色环保!就算没有,照着公开的算法写一个也不是什么难事。

所以,我们与其小心翼翼地备一个密码管理系统,不如大大方方地随便哪放一个算 sha1 的小软件。而且你可以下一个在手机上,真是走到哪用到哪啊。不是有很多人说,非硬件级的方案不用么?手机,这是最好的硬件方案了。:)

还有很重要的,如果因为种种原因,你要用一个公用/别人的电脑,就会对配置 1Password + Dropbox 感觉不爽,毕竟有你重要/隐私的数据在里面,同步下来总不太好。算 sha1 的小软件就无所谓了,随便下一个、随便算一下,然后叉掉就行了(要找一个熟悉的,确保不会保存历史记录)。

 

当然,算法只是一方面,为了方便起见,我们不希望每次都算一遍。所以,可以配合浏览器原生的记住密码、自动填写、自动同步的功能一起使用,我觉得堪称完美了(特别是 Firefox 还可以设置主密码保护已记住的密码)。

我已经使用这个方法一小段时间了,个人感觉良好。唯一的不爽是,有些 SB 网站居然对密码长度有限制,要求不超过 16/20/25/… 位。遇到这种情况,只能一边骂 SB 的同时,一边截短。。。

 

关于 1Password:

1Password 做得太优雅了(只用过 Mac 版),以致于我很乐意帮它做个广告(虽然我没再用它了⋯)。1Password 几个很好的功能:

  • 自动生成随机复杂密码:跟上面主要的思路相冲突,这功能等于没用;
  • 自动记忆、自动填写:浏览器原生支持,相比之下没有优势,等于没用;
  • 密码整理/管理非常方便:这是它比浏览器原生的功能强很多的地方。但是密码之所以需要整理,是因为每一个都很独特、都很重要,我们需要搞得它井井有条。但是当我们用了上面 sha1 的算法之后,会突然觉得没必要整理了。我们让浏览器记住,只是为了它能帮我们自动填写,方便一点而已。实际上,那些密码存在数据库里到底是什么鬼样子,我们一点都不担心,反正需要的时候再算一遍好咯。所以,不是 1Password 做得不够好,而是这功能对我已不再重要。

呵呵,好像说得它一点用处没有的样子,其实我们也可以用 1Password 记上面 sha1 产生的密码,它的好处比如:

  • 虽然密码整理已不再重要,但是它毕竟满好用的,说不定我们什么时候想整理整理呢?
  • 1Password 是跨浏览器的。如果用浏览器原生的记忆密码的功能,并且 Firefox、Chrome 同时用的话,同一个网站的 sha1 可能需要算两遍呵呵。而 1Password 是跨浏览器的,算一次就可以。
  • 除了网站的密码,1Password 还可以用来记信用卡都资料。

另外,如果不太喜欢上面说的所谓的算 sha1 那么 geek 的做法,也是用 1Password 的一个很好的理由,它是非常用户友好的。与 1Password 类似的,可以用开源且恰好免费(好吧,我是想给你一个印象:开源不一定免费)的 KeePass。

(完)

用户:如何判断某网站程序员是不是傻逼(关于密码)

Update:这篇日志用的戏谑的语气,严谨地说来,当然不一定是程序员的责任,比如历史遗留、领导的要求、业务需要、进度限制等等⋯。即使是程序员自己的问题,如果只是经验不足,而非主观故意,也应该是可以理解的,毕竟谁没有年轻的时候呢。日志中用了“傻逼”这个词,有些人看得比较严肃,颇有些不满,在此致歉了 ^_^ 。

——

虽然最近很忙,但我发现负荷高了大脑会罢工,正经事想不进去⋯。于是乎,写篇休闲科普文章吧。:)

 

那啥,CSDN 600 万用户密码刚泄完,天涯网又泄露了 4000 万用户的密码出来。看起来像是有组织、有预谋的,越来越热闹了~。前面一篇日志,我从开发/设计者的角度,记录了几条实践要求,怎样保护用户密码才靠谱

 

那么,对于普通用户来说,如何判断一个网站的技术靠不靠谱?有没有什么现象,是不需要懂任何技术,只要你发现了,就可以对这个网站露出鄙夷的神情,骂它傻逼的?试着总结几条(只谈跟密码有关的):

  • 如果一个网站,能够通过邮箱、手机、安全问题等,找回密码,那它就是傻逼。这里注意“找回密码”和“重置密码”的区别,“找回密码”是把你原来的密码原样告诉你;“重置密码”不告诉你原来的密码,但是经过可靠的验证后允许输入一个新密码。前者是傻逼,后者不是。
  • 如果一个网站,要求密码不能超过多少个字符,或者不能包含特殊字符,那它就是傻逼。密码字符个数,有下限要求的,是好人;有上限要求的,是傻逼。
  • 如果一个网站,密码不区分大小写,是傻逼。
  • 如果一个网站,改密码的时候不先验证老密码,是傻逼。
  • 如果一个网站,登陆时不使用 HTTPS,是傻逼。这个不一定,有可能程序员不傻逼,老板是傻逼。。。
  • 如果一个网站,改密码后不要求重新登陆,很可能是傻逼。这个非绝对,只对允许一个账号同时多处登陆的网站有效(即使这样也非绝对傻逼)。总之,对允许一个账号同时多处登陆的网站来说,改密码后要求重新登陆的,是一般人;不要求重新登陆的,有可能是 SB,也有可能是 NB(但是 SB 的比例很高,NB 的比例很低,所以可以默认是傻逼⋯)。

 

好吧,一时半会就想到这么几条。欢迎补充 :) 。

 

怎样保护用户密码才靠谱

CSDN 密码泄露,把我的也给泄掉了⋯⋯好几年没用了,躺着也中枪啊。幸好只是一个低级别的密码。忙着改密码的同时,也在考虑要不要启用 sha1(master password + domain name) 的密码方案。。。

 

好吧,还是说点有趣的,怎样保护用户密码才靠谱?

1、数据库存储

原始:

save2db(username, password)

进化:

save2db(username, md5(password))

再进化:

random salt = GUID

save2db(username, salt, md5(password.salt))

靠谱方案:

const globalSalt = [a-z]+[A-Z]+[0-9]+[%$#@!~*…]+

random privateSalt = GUID

save2db(username, privateSalt, sha1(globalSalt.password.privateSalt))

可接受的简化方案:

save2db(username, sha1(domain.password.username)

 

为什么要搞个 globalSalt?

globalSalt 写在代码中,也就是说,万一你的数据库泄露了(代码还没泄露),仍然有一道安全防线在保护你的用户。只有一个 salt 的情况下,虽然使得字典攻击变得更难,但如果用户密码不够长、不够复杂,暴力攻击仍是很轻松的事(因为既然你的数据库已经泄露了,用户的 salt 自然也就露掉了)。而有了 globalSalt,只要代码仍然安全(攻击者不知道你 globalSalt 的值为多少的情况下),它就能保证跟用户的密码组合起来变得非常长、非常复杂,超出了暴力破解的实际可能。

 

可不可以只用一个 globalSalt?

不可以。否则,好事者就可能在知道你 globalSalt 的情况为你这个网站专门生成一个字典,一次性搞定所有用户。privateSalt 的存在,使各个用户的 salt 都不一样,因此需要为每个用户生成一个专用的字典,不具备实际可行性。简单地说,globalSalt 防暴力攻击、privateSalt 防字典攻击。

 

简化方案中,可不可以不要 domain,只用 username?

不可以。一、有的用户,即使是用户名 + 密码仍然不够长,抗不了暴力;二、我们不仅是要(尽可能)保证 salt 的全站唯一,而是要全球唯一。有些用户名如 admin, root, webmaster 等非常通用,起不到 salt 应有的作用。

 

2、修改密码

    • 改密码,必先验证老密码,而不是登录着就让改。否则,就给 Session Hijacking 变成进一步的灾难修了条大道。
    • 如果老密码输错了,启用验证码保护。否则,就是 Session Hijacking 后暴力破解的后门。
    • 清 session,使所有登录的(如果支持一个帐号同时多处登录)cookie 失效。改了密码,就应该要求该用户所有会话重新验证。因为用户密码已经改了,表示原密码不再是有效的,甚至可能已经泄露了。

     

    3、其它

      • 传输密码时用 HTTPS;
      • 最好全程 HTTPS,杜绝 Session Hijacking(WIFI 什么的,最容易中招了);
      • 避免 Session Fixation(永远重新生成,不通过 URL 传输 SID);
      • 除特别需要,httpd 进程对代码目录只应该有读权限,而不应有写权限。你懂的,后门啊什么的最讨厌了~;
      • 定期 $ git status(.git 目录为 root 专属),如果不是 working directory clean,那就该报警了喂!
      • Injection、XSS 什么的,呃⋯超纲了,打住~。

       

      虽然都是很简单的事,但如果一条条验证,估计国内绝大部分网站都能找出问题,包括那些人们觉得很牛逼的(CSDN,程序员的社区啊,“全球最大”啊…存储密码用的是最原始的方法)。关于保护用户信息安全,你还有什么想法?

      The so called “social software development”

      昨儿晚上,我居然因为这个想法失眠了!

      ⋯⋯此刻,当一天的繁碌谢幕,静坐窗前,我想,我必须得把它写出来。

       

      话从头说起,昨天我发了一条推

      想问下有没有这样的网站:比如我想要一个手机应用,市场上没有、又不能自己开发,我就上去登记一下,写明自己的需求与设想,并投一点钱。其他人看到后,也可以补充完善,并追加小笔金额。待感兴趣的人与累积的金额够多,就会有开发者接招,把它做出来。版权仍归开发者,但初始用户有终身使用权。有么?

      之所以在推上问,是因为我觉得这个想法很普通,这样的服务应该已经存在,只是我不知道而已。可令我意外的是,答案居然是——没有。

       

      好吧,在开始之前,我想先总结一下我所了解的相关服务

       

      Kickstarter

      如果你有特别的创意,但是缺乏一些启动资金,可以把你的想法及现有的条件登记在此。社区用户如果认同你和你的创意,就会给你捐助。如果筹到了足够的启动资金,你就可以拿着这笔资金正式开始你的计划。当然,你需要承诺,项目成功之后给予当初的捐助者一些报答

      还有一些特点,比如:

      • 你的项目必须具备技术、艺术等方面的创意,而不是纯粹的慈善项目。红十字会类似的组织被明文禁止在此募捐;个人如果是 “我没有饭吃了” 或者 “我要买房子,需要贷一笔款”等,也是被禁止的。
      • 确保用户是因为热爱你设想的创造性的事物本身,而非作为经济上的投资,才给你捐助的。因此,承诺回报捐助人股权的行为是被禁止的。鼓励的回报形式包括优先获得产品的测试版等与项目相关的特别的纪念品。
      • 既然你不能在此煽情乞讨、也不能以所谓的高回报盲目用户,冷静的用户社区很适合作需求调研的窗口,测试你的计划是否契合大众的口味。因为如果到了截止日期,筹集的款项达不到你启动资金的要求,它们将被全部退回。捐助人的钱是安全的,而你也不会有拿了钱不干活的道德困境。

      也许很多人看完后的第一反应是谁会投钱、遇到骗子怎么办⋯⋯。别说,还真有很多人在投。Kickstarter 已经达到了百万用户的规模,并成功为各类创意活动募集了近1亿美元的启动资金。除了服务本身要提供一定的保障机制,整个社会大的信用体系、高质量的创意人群和宽容友善的创新环境,都让我们不免有些羡慕。

      C2C 作品:

      点名时间:比较忠于 Kickstarter 的思路(虽然强调得不够),可惜的是上面项目的质量不高,一眼望去感觉都是明信片 =_=! 。另外,所谓创意活动,应该是项目还没有启动,需要一笔启动资金;捐助人需要评估并承担项目失败的风险,而在项目成功后取得一些特别的回报。在点名时间,感觉有的项目把它当淘宝用了,明明东西已经做出来了(或者不存在任何困难),只不过多一个销售渠道。

      积木网:比较贪大,想要多囊括一些应用,最终搞得有形而无神。或者说,它是另外一套思路,不评论。

      总的来说,Kickstarter 是一个好东西,但是跟我想要的不是一回事。在 Kickstarter,你有创意,在此募集资金,并亲自实现自己的想法;我想要的服务,用户有一个需求,但无法自己实现,因此他在此悬赏,很多用户一起悬赏,最终有人接受挑战。其出发点,一个是要实现自己的创意、一个是要满足自己的需求。

      开个玩笑呵呵,Kickstarter 像是明星在台上表演,下面一群观众在欢呼;我想要的,是一群民众遇到了困难议论纷纷,牛仔望着他们渴盼的神情,提枪策马而去,迎接挑战。

       

      威客类网站

      先说句废话呵呵,一般说国外服务的时候,都可以指名道姓;而说国内的服务,都需要说“xx类”,威客类、SNS 类、微博类⋯⋯。我们总是在一窝蜂,什么时候可以不这么功利、可以有自个独特的品味呢?敢不敢弄点赚钱以外的追求、弄点发财以外的梦想?⋯⋯

      话归正题,所谓“威客”这个看似舶来品实际上是国人发明的词汇,意思是你有什么特长(如设计、开发、文案),然后在网上提供服务,获取报酬。用猪八戒网的口号来说,你在淘宝上买商品、在威客上买服务。比如你们公司要做一个官方网站,就可以上去发布一个需求,可以模拟现实世界中的商业招标的流程。

      你可能会说,这不是很好么?Yeah, that makes sense, but it’s not awesome! 用自己的技能赚钱,自然是木有什么可说的,但是这太商业了,太商业了,太商业了!各种功利钻营,一点都不 Cool!(顺道说一下,猪八戒网专门搞了个发需求、返现金的功能,这是现实世界中拿回扣的数字版么?真够中国特色的呵呵。还大张旗鼓作为一个独特功能来宣传,中国人到底还要不要脸?还有没有底线?)

      那么,如何才算 Cool?首先,整个社区应该是友善的,用户欣赏开发者、开发者从用户获得灵感与支持;其次,开发者必须保留对作品的所有权,雕琢以求完美,而不是被商业买断,为了混饭敷衍了事。当然,还有其它措施,容后详述。我想要的,是一股不排斥金钱、可实际运作,但不会铜臭泛滥、没有尔虞我诈,友善、良性前进的力量。

      补充:CSDN 的项目交易频道、国外的 freelancer 都跟上面说的类似。TaskRabbit 稍微有趣一点,与其它主要要求在电脑前工作的网站不同,TaskRabbit 上发布的主要是需要跑腿的体力活。

       

      Quirky

      如果你有一个产品构想,但是无法自己实现,可以考虑把它写到 Quirky 上。它背后有一个专业的团队,会评估你所构想的产品的市场可行性;如果他们觉得可行,就会把产品生产出来,拿到零售市场上去卖;而你作为产品的“发明者”,可以得到一定的利润。

      这个东东有点意思,但它不是我想要的。一方面,它专注于现实的生活用品的设计制造,而非软件开发;另一方面,我想要的是一个社会协作的状态,而非以一家公司为核心甚至全部。

      C2C 作品:

      还没发现呵呵,这玩意儿重点是它的设计制造能力和零售渠道,编程技术反而没那么重要。Copy 有难度啊⋯。

       

      好吧,废话够多了,该回到我们正题了:

      How to be awesome?

      我的设想:

      • 开发者必须保留对作品的完全所有权,而非商业买断。只有这样,才可能斟酌以求完美,而非敷衍混饭吃。
      • 作品必须开源。只有开源,作品才能经过同行评审,迫使每一个开发者自觉提高对自己的要求;只有开源,作品才能成为我们公开的名片,才能激发我们的个人荣誉感,而不只是为生计奔波。只有开源,个人的努力才能汇聚成社会的财富,而非沉寂于遗忘的角落。
      • 用户悬赏的金钱必须收下。是的,这是骄傲,收钱不伤感情。
      • 作品完成后,鼓励拿到各种 market 推广,以使(悬赏人之外的)更多用户受益;鼓励收费,付出需要认可。
      • 鼓励每个用户悬赏小笔金额,而不是相反。多用户共同悬赏,而非单用户买断。
      • 用户可以悬赏开发一个全新的产品,也可以悬赏完善现有的开源项目(于是,这就是与前面的开源要求相呼应了,不开源,作者撒手后用户就再也得不到支持)。

      “Social” 体现在哪些方面?

      • 需求搜集:多用户共同协作、启发、完善。
      • 悬赏资金:许多用户各投一点小钱,而非一人独自承担。
      • 项目推介:不只是开发者自己推广,用户也会努力一起推广。因为更多人参与悬赏,每个人需要投入的金额就会更低、吸引开发者接招的可能性就会更大。
      • 开发资源:因为开源,开发者可以站在前人的肩膀上,在庞大的开源宝库的基础之上进行重用与创作。
      • 开发过程:因为开源,整个开发过程是透明的,社区可以适时了解产品的开发状态,甚至参与开发。Release early, release often? We release at the first step, release at every step!
      • 后期维护:因为开源,即使作者消失了,他的作品永远流传我们的世界,并可被后人继续完善。

      对用户的价值?

      • 一个人只需悬赏很少的金额,就可以找到有品味的程序员帮你实现需求。基本无疑会超越外包公司的质量,可说是物美价廉。
      • 有共同爱好的用户和你一起脑力激荡,很可能比你一个人提所谓的需求,更全面、有创意。
      • 开发过程全透明,你得到的不再是一个黑盒子。
      • 作品完成后,作者很可能会无条件长期完善;即使原作者不再完善,你也很容易能找到其他人。
      • 最后,这整个过程都很 Cool(是的,这很重要!)。

      对开发者的价值?

      • 你可以在这上面得到很多创意和启发。很多时候,我们不是没有时间,而是不知道可以做点什么有实际价值的东西(特别是对学生、freelancer 来说)。
      • 你可以了解有多少人关注这个项目,这相当于帮你把前期的需求调研做好了;而且,有一笔启动资金送到你的手里。还有比这更棒的么?
      • 在这里活动的用户,很可能是很有经验的程序员、设计师、产品经理,他们可能只是没有时间亲自实现自己的所有需求。因此,你面对的不再是无知却又把自己当爷的客户,而是一群很有素养和经验的人,他们尊重你的努力,甚至会夸赞你代码的优雅;他们不只是提需求,甚至还提供创意、设计、技术和管理的经验。这将是你和用户共同创造的值得骄傲的作品,而非相互埋怨和忽悠后的垃圾。
      • 你拥有作品的完全所有权。
      • 因为开源,这不再是一做就扔的项目,而会高高挂在你的 Profile 中成为骄傲的记录。甚至在你退役后,江湖仍会流传你的传说。:-)
      • 这整个过程都很 Cool(是的,这很重要!)。

      对社会的价值?

      • 用户享用了很棒的产品;
      • 开发者获得了金钱、经验和荣誉;
      • 产品开发尽可能继承了前人的成果、产品完成后尽可能惠及了更多的用户,不重复造轮子节约了社会资源;
      • 结果开源,促成人类公共财富量的增长;
      • 鼓励完善已有开源项目,促成开源库整体质的提升。

      Wow! 这将是一个颠覆吗?定位?

      No,这不是什么颠覆,它更多是对其它模式的补充,而非替代。实际上,这可能只会是一个小众服务,公益性质的、在软件开发及相关群体内部受推崇,但普通用户不太熟悉的服务。实现这个服务,应该能养活自己,甚至还能赚点小钱,但肯定不会让你发财。

      但这个想法是如此之酷,以致于我很想要把它做出来。程序员写了那么多软件,难道就不能为自己写一个么?⋯⋯好吧,其实我打这么多字,是想有人实现我这个愿望,因为我最近确实是没有时间精力⋯⋯。

      目标用户?

      所有用户都可参与需求与悬赏,但应该还是以软件开发相关的群体为主,就像上面说过的:程序员、设计师、产品经理、Geek、软件爱好者等。

      至于如何推广到其他用户群体,这是后话,不能太乐观呵呵。

      目标开发者?

      学生、自由职业者、部分有余力的在职程序员。

      需要注明的是,虽然程序员能在这里赚到钱,甚至有可能赚大钱,但是最好不要把这当成主要的养家糊口的来源。而应该是一种乐趣与荣誉。要强调这种感觉。

      另外,这也是有经验的程序员培养新生程序员的训练场,所以我们会要求掌握 Github 这样的工具作为 Best Practice、培养基本的职业素养,而非像皮包公司那样纯粹赶工。程序员的集体行为主义 Ah?

      市场?推广?

      Social, social, social…。国内的、国外的,可以连接的都连接上吧,用户和开发者都有很强的动机将项目推广到他们的圈子里去。不被吸引的程序员不是好程序员,不被吸引的 Geek 不是好 Geek。^_^

      下一步怎么办,怎么推广到普通用户中去?下一步再说,能把第一步做好,已经很 Cool 了~!

      商业模式?

      用户投的悬赏金,在交给开发者之前就是很好的现金流啊。另外,你会想要贪污其中的 10% 么~。

      还有什么模式?广告啊、社区啊、招聘啊⋯⋯。

      总之,你应该能赚点酒钱(哦,忘了说,还有荣誉),但别抱着发财的心态来。

       

      最后:

      我承认我受原教旨黑客精神影响很深,有些理想主义。但我还没决定要做,主要是业余时间精力实在有限。写出来,是希望有认同这个想法,正好又有机会的童鞋把它做出来。。。

      另外,@nan8_8 童鞋贡献想法说,可以用同样的思路,悬赏人把这服务本身做出来。什么,A compiler that compiles itself ? 太 Cool 了!难道我现在应该正正经经写个需求,然后投入第一笔悬赏金,宣布启动么?冷静,冷静,先看看反馈再说⋯⋯ ^_^ 。

       

      Credit to: @lidake007 @libuchao @Leaskh @BreeStealth @soulhacker @klx1204 @zxq3206 @nowBOK @clc4214 @hanfeiyu @likuku @MissevanNews @sankmaru79 @nan8_8 @kenny_yuan @xmdingsky @ursatong and more…

       

      —-

      P.S.: 推荐大家看一个公开课。在这个个人越来越独立的时代和潮流下,传统的庞大的公司组织显得臃肿而乏味,我们需要思考,如何创造一种模式适应工作越来越个性化的需要。这个课程,让我不自觉地关注了以上那些服务。

      工作日志:从突击成长,到稳定发挥

      我最近常想到“稳定发挥”这个词。

       

      政治课上有一句话,叫“螺旋式上升、波浪式前进”。拿到职场来说,刚工作的同事应该是这个样子。我们面前有很多可能,在哪个方向上突击一下都能形成一个波峰。

       

      不过,有波峰,即有波谷。一名成熟的职业人,不能随便进入波谷状态,更要为岗位和其他人负责。职责愈大,愈不能随便波动,发挥的稳定性愈显得重要。

      随着经验的积累,通过突击式的努力使自己的能力见识在短时间内有大的提高,变得困难起来。更多的,是平缓的、渐进式的增长。这个时候,稳定性和可预见性成为了核心价值。事情到了这样的人手里,你可以放心地忘掉,因为他总能在合适的时机给出最优的答案。

       

      要保持前进的步伐、保障稳定的发挥,心态和习性要跟上。

      平和的情绪、积极的态度、清醒的状态,始终如一。把神志不清 / 烦躁不安…从字典里划去。内部情绪、外部干扰都不再成为影响稳定发挥的因素。

      工作有序,形成适合自己的高效的工作方式与习惯。有再多的工作,都能井井有条。头脑清晰、合理安排,为重要的事情挤出时间,而非乱成一团糟。

       

      在心态与习性的保障之下,稳定地输出工作成果。同时,有目标、有规划、有大局观,能描绘出蓝图,并清楚每一步工作所处的阶段。享受一步步逼近目标,和一切尽在掌控的感觉,激发自己更大的潜能。

      豆瓣数据存疑

      Update:
      感谢 Ratooykjingleptoqwhiplus 等网友的提醒,之前提的两个问题都有了答案。:-)

      1、豆瓣用户量突然飙升,是因为 QQ 空间的“豆瓣读书” app;

      2、Wayback Machine 抓取网站的存档之后,不会立即显示,貌似要一年以上历史。

      另外,我后来看了下,其实豆瓣的用户都有个数字编号,从用户的编号和注册时间就可以得出准确的数据(第一位用户的编号是 1000001,所以用户数等于用户编号减掉 100w,不考虑被封杀和自杀的情况)。

      下面是完整的数据图形:

      douban

      可以看到,09 年 8 月开始的那一跳……。最高时,一个月新增了 900 多万,相当于它前 4 年总和的 2.5 倍多。

      不过我们也看到,一年之后,已经开始恢复正常了。这大概是 QQ 空间输血能力的上限了吧。

      最后,我随机测试了一些,QQ 空间给豆瓣输送的用户基本都是无效的,没有任何活动。

      (Update 完)


      今天统计了一下豆瓣的注册用户数。因为豆瓣有在首页显示相关数据的习惯,所以这个统计显得比较简单(假设数据是准确的)。

      翻开 Wayback Machine,可以看到,豆瓣最早在首页显示用户量的记录是 06 年 11 月 2 日

      以下即是我根据这上面的数据绘的图:

      douban

      很可惜,Wayback Machine 对豆瓣的最后一次存档是 09 年 6 月 30 日,之后就没有了。不知道是豆瓣的 robots.txt 禁止了抓取(看了一下,似乎没有),还是 Wayback Machine 自身的原因。

      上图的数据看起来中规中矩,没什么奇特。不过,我们看它的总注册用户量,最后一条记录显示,当时豆瓣的用户数刚刚达到 350 万。那是 09 年 6 月末,那么,今天豆瓣标称的用户数是多少?—— 4713 万。

      加上这条,图立马变形。

      douban

      05 年到 09 年,四年多,350万;

      然后 2010 年,一年半,4713 万,13 倍。

      虽然我没太关注,但似乎豆瓣近一年来没搞过什么大的营销推广;反倒是因为审查严格,很多用户自杀了帐号。13 倍的数据有点惊讶,不知道是不是我哪搞错了。