悠然乱弹:竹子与开源:扎根是为了长得更高

端午节到了,人们都在讨论屈原不屈不挠的精神,以及龙舟、粽叶等世界文化遗产。粽叶清淡,给人无限的遐想。或者,你很容易想起和粽叶形状比较类似的竹叶,以及屹立挺拔的骨感竹子。竹在清风中瑟瑟的声音,在夜月下疏朗的影子,都让文人墨客深深感动。而竹于风霜凌厉中苍翠依然的品格,更让诗人引为同道。苏东坡曾在《于潜僧绿筠轩》里宣称,“宁可食无肉,不可居无竹。无肉令人瘦,无竹令人俗。人瘦尚可肥,士俗不可医。”当年郑板桥曾作《竹石》,细细品味,也给人许多思考。

作为开源参与者,其实我们可以联想到很多和竹子相关的典故,以及和竹子相关的精神。端午节前,困顿的晌午,我决定穿越时空,会一会屈原。

一、对话屈原

为此,我溯江而上,穿越雄伟险峻的长江西陵峡,抬头眺望长江北岸,有一座气势雄伟的建筑,半遮半掩在桔林与翠柏之中,这便是世人瞩目的屈原祠。

拾级而上,来到屈原祠里,一番膜拜之后,我准备与屈原做一次详谈。“屈大夫,我不想继续做Tiny框架了,你能给我一个让我坚持的理由吗?”我问。

屈原回答:“你看看我的祠堂四周,看到那些山蕨和竹子了吗?去年我播种了山蕨和竹子的种子后,给它们光照和水分。山蕨很快就从地面长出来,茂密的绿叶覆盖了地面。然而,竹子却什么也没长出来。一年过去了,山蕨长得更加茂密。竹子的种子仍然没有长出任何东西。2年过去了,竹子的种子还是没有发芽。 然而,到了第5年,地面上冒起了一个细小的萌芽。与山蕨对比,它小到微不足道。但是,仅在6个月之后,竹子就长到数丈高了。竹子花了5年时间来长根,正是根给了它生存所需的一切。”

屈原捋了捋胡须,缓缓说道:“孩子,你这段时间所做的挣扎,实际上就是你长根的时候。不要拿自己与别人对比。现在,你的时机到了。你会上升得很高。”我离开了屈原故里的香溪河口,带回来了这个故事。

一路上,我在反复琢磨,并百度了解毛竹的特性。原来,毛竹萌芽之后,最初4年居然只能长3厘米,但是到了第5年却以每天30厘米的速度生长,只用6周就可以长到15米。在这潜心钻研的4年里,竹子都是在扎根,它将自己的根在土壤里面延伸了数百平米。没有这种沉心钻研,哪有今日绿竹成荫!

二、竹子精神与开源

回到开源世界的现实生活,细细品味屈老夫子的话,让人感慨良多。做产品、做框架亦是如此,不要担心你此时此刻的付出得不到回报,因为这些付出都是为了扎根。人生历练何尝不是如此,多少人,没熬过那3厘米!

竹子的群生精神与开源

  说到群生精神,李克强总理用很通俗的话解释了一次:“一个人干不过一个团队,一个团队干不过一个系统,一个系统干不过一个趋势。 团队+系统+趋势=成功。一个人可以走得很快,一群人会走得更远! 你能整合别人,说明你有能力; 你被别人整合,说明你有价值。 在这个年代,你既整合不了别人,也没人整合你,那说明你离成功还有很远!”这种启示,在竹子身上也可以看到。平时,人们看到的往往是一片竹林,而不是孤零零的一棵竹子。对一棵竹子而言,它面对的只有死亡。这说明团队成员之间,只有大家抱团才能生存和发展下去,否则,这个团队只有死亡。

说到开源团队的群生精神,我还想引用一个群鸟南方的故事。每当秋季来临,天空中成群结队南飞的大雁就是值得我们借鉴的企业经营的楷模、一支完美的团队。雁群是由许多有着共同目标的大雁组成,在组织中,它们有明确的分工合作,当队伍中途飞累了停下休息时,它们中有负责觅食﹑照顾年幼或老龄的青壮派大雁,有负责雁群安全放哨的大雁,有负责安静休息﹑调整体力的领头雁。在雁群进食的时候,巡视放哨的大雁一旦发现有敌人靠近,便会长鸣一声给出警示信号,群雁便整齐地冲向蓝天、列队远去。而那只放哨的大雁,在别人都进食的时候自己不吃不喝,是一种为团队牺牲的精神。

据科学研究表明大雁组队飞要比单独飞提高22%的速度,在飞行中的雁两翼可形成一个相对的真空状态,飞翔的头雁是没有谁给它真空的,漫长的迁徙过程中总有人带头搏击,这同样是一种牺牲精神。而在飞行过程中,雁群大声嘶叫以相互激励,通过共同扇动翅膀来形成气流,为后面的队友提供了“向上之风”,而且V字队形可以增加雁群70%的飞行范围。如果在雁群中,有任何一只大雁受伤或生病而不能继续飞行,雁群中会有两只自发的大雁留下来守护照看受伤或生病的大雁,直至其恢复或死亡,然后它们再加入到新的雁阵,继续南飞直至目的地。

同样,对于成功的开源团队而言,个人强大的技术是一方面,但团队力量远大于一群人的简单相加。项目组由项目管理、需求分析、软件设计、编码、测试、实施等各方面的专业人士组成,每位成员在自己专业领域内发挥主导作用,并可以为项目的成功提出非自己领域内的建议。最终的项目成果是各位专业人士共同努力的结果,所有人对最终成功承担同等的责任。这样,当系统部署后,系统出现了一个严重缺陷,请问谁应该负责?项目经理?测试?开发?……都不是,而是项目组全体都要负责!

竹子的自主生长精神

当年板桥就说过,“咬定青山不放松,立根原在破岩中。千磨万击还坚劲,任尔东西南北风。”也是说的竹子不屈不挠、自主钻研、任性成长的精神。

在常见的开源项目组中,难免有部分成员是新手,经验和水平不足,某些工作可能一时不能胜任。迫于项目进度压力,某些任务就会直接安排给他做,不让他提出自己的想法和见解。不少成员也喜欢以“接受任务”的方式来工作,而不是主动迎接挑战。于是有时候,你可能遇到一些成员会跟你说“今天工作已经完成!”“我按照任务要求来做的,我没有错!”之类的话。

就像竹子“千磨万击还坚劲”的精神一样,每个项目成员都有当家做主的机会,应相信自己在本领域内是专家,在我的专业范围内,我可以说了算!只要满足项目的大框架,只要出发点是为了项目成功,那么这段代码应该怎样写、这个功能点应该如何测试等之类的决定,完全可以让成员来做主!项目成员可能一时没有魄力独立做决定,可能担心犯错误,没关系,要多多鼓励他!Tiny团队就是这样,我们每个团队成员的自主精神贯穿在日常的工作始终。TinyFramework的立意是企业级的开发平台,因此在方法论、设计理念、开发体系、设计原则、生态圈、模块化、热部署、水平扩展、元数据等非功能性要求方面做了大量的自主探索和独立实践,当然在这些领域也都有了完美或者不错的解。

"扎根”与开源

不知道你注意没有,在成长的过程中,竹子始终是一节一节生长。竹子生长一段,就接一个箍,再生长一段,再接一个箍。这说明,竹子是会总结和反思的。所以,对团队成员来讲,也要学会总结和反思,才能不断地成长和发展。说到这里,我想谈一个扎根理论。作为质化研究中的一种建构理论,扎根理论是由斯特劳斯(anselm strauss)和格拉斯(barney glaser)两位社会学者在1967年出版的《扎根理论的发现》一书中提出的。扎根的理论,就是用归纳的方法,对现象加以分析整理所得的结果。在开源团队,尤其需要学习竹子的扎根精神。

在开源产品的成长过程中,我们同样要发挥这种扎根精神,不断总结提高。一般来说,一个开源产品,从开始,到发展,到最后能有收入,能营收平衡,这个一个漫长及艰难的过程。按照一般人的观点,牛人总是喜欢和牛人在一起工作,这句话是有道理的,然而要组建一个全是精英的团队,对于大多数开源产品来说只能是一个梦想。一般的团队,招到团队来的人,精英只是个别,也就是所谓的骨干了,而大部分还是熟练工、生手甚至是新手。团队由各种层次的人组成,这也就是所谓的团队梯队配置了。

为何团队会需要梯队配置?原因其实很简单,你的团队所负责的工作,不可能全部由精英骨干力量去完成。个人能力再突出,不适合团队的人或许给你团队带来的是负面影响。唐僧四师徒西天取经,如果每个人都是孙悟空,不是自己内斗死,就是分崩离析!从研发编码的角度举例,需要更多具有扎根精神、各具特长的成员来参与,才能取得成功。比如在Tiny框架开源团队中,有句口头禅,嘴巴讲的不算。所以不管是需求还是BUG,都要统统录到Issues当中,于是提出问题、批注问题、解决问题、跟踪问题、关闭问题,都在Issues当中进行管理。当然,所有的过程也就成为呈堂证供,抵赖不得。

竹子精心耕耘,能够延伸数百平米,就是靠的这种不断接“箍”的“扎根”精神。加入到开源团队,做开源产品,就要耐得住平淡,经得起风雨,把开源之根留住!软件研发活动是人类复杂的高级智力活动,是需要team work的活动。如果明白这个道理,研发团队中的每一个人将是值得尊重的、有血有肉的、充满激情和战斗力的专家!也只有这样,才能开发出具有高质量品质的开源产品。Tiny架构的设计师最初就致力于做一个各方面比较均衡的开发平台,于是就从各种小的专题性验证开始“扎根”,比如:流程化编程、模块化设计、数据库分区分表等等一一进行验证,当验证的范围越来越大,涵盖的领域越来越多的时候,才真正开始决定做一个开源框架。这实际上也是一个“竹叶成荫”的开拓过程。

竹子的虚心精神

竹在荒山野岭中默默生长,无论是峰峰岭岭,还是沟沟整整,它都能以坚韧不拔的毅力在逆境中顽强生存。尽管长年累月守着无边的寂寞与凄凉,一年四季经受着风霜雪雨的抽打与折磨,但她始终“咬定青山”、专心致志、无怨无悔。这种虚怀若谷的精神,让人敬佩。

大家注意到没有,所有的竹子都是中空的,都是能容得下其他人的,都是能像其他团队成员虚心学习的。以Tiny框架为例,在Tiny框架早期,整个团队还是默默无闻的,因为Tiny团队不想在框架还是一个半成品的时候就拿出来,直到Tiny已经开发完毕并且在自己的项目中进行了充分验证的时候才真正的在社区或相关网站进行露面。开发者们互帮互助,虚心求教,一个问题提交到社区(http://bbs.tinygroup.org)的“有问必答”栏目,往往就会有许多同伴互相帮助,问题也能在最短的时间内得到解决。由于Tiny框架是立足于在需要稳定、安全要求非常高的应用环境中使用的,因此其稳定性就是框架构建者首要思考目标,核心部分只使用经过充验证及广泛应用的第三方包。

细细品竹,便会觉得竹子是学习的楷模。竹子挺拔俊逸,做人应该具有这种翩翩君子的开源风度;竹子中空外直,做人应该修炼这种虚心自持的开源品格;竹子弯而不折,做人应该学习这种柔中有刚的开源智慧。开源是一个艰辛的选择,需要长久的坚守,需要一份不急不燥的态度。团队合作、团队协作也是如此,达成配合与默契更需要不断的沟通、磨合与深厚的信任。只有这样,我们才能见证优秀的产品是如何一步步走向成熟,才能在开源的氛围中快速成长!

时间: 2024-08-25 02:41:28

悠然乱弹:竹子与开源:扎根是为了长得更高的相关文章

悠然乱弹:开源生态圈的生命力

在美国的硅谷,在中国的中关村,许多的技术先驱者怀揣梦想,用激情不懈地追求着他们宏远的目标和巨大的个人财富.开源,正在成为这个时代目前最火热的名词之一.开源精神,作为一种合作协同的驱动力,正在发展为一种更具竞争力的产品开发模式. 我们可以从几个典型故事说起. 一.特斯拉建"桩" 2014年5月份,苹果与三星的专利侵权案做出判决,三星向苹果赔偿约1.2亿美元,巨头公司们再次向世人展示"专利"两字的份量可以重若泰山.然而,时隔一个月后,特斯拉电动车宣布开放其所有专利,仿佛

悠然乱弹:论“轮子党”的邪恶面

什么叫轮子党呢?这里给出一个泛泛的定义,轮子党,就是看到开源作者做的作品之后,干净利索的在后面附着两字:轮子.当然现在也有一些新的变体,比如:发一条"然并卵".但是不管现在怎么变,将来怎么变,其基本涵义就是说:你做的东西没有什么意义,或者说你做了也是重复人家的东西. 但是最要命的是,这些轮子党在给出这些结论之前,没有任何分析.没有任何研究,他特么一个结论丢在那里,让开源作者在那里心中产生千万个草泥马在奔腾. 所以今天我就写这篇乱弹,来正告那些轮子党,为啥不是"轮子"

悠然乱弹:云里雾里说Tiny

今天从杭州到重庆,登机时间晚了20分钟,又晚了20分钟,又晚了20分钟,尼玛,这和我们软件实现的进度有得一比,总是他妈的延迟.延迟再延迟. 终于登机了,可能是MH17的事情影响了我的心情,上了飞机先仔细观察了一下,嗯嗯,看到一个空姐,比较漂亮,心情好了一点:又看到一个空姐,更漂亮,心情更好了:又看到一个空姐,依然漂亮,心情舒畅多了. 往窗外看看,发现我窗外就正好是发动机,上面刷了一行字:"The power of flight",于是我就想:The power of Tiny是啥呢?.

开源jms服务ActiveMQ的负载均衡+高可用部署方案探索

一个文件(或目录)拥有若干个属性,包括(r/w/x)等基本属性,以及是否为目录(d)与文件(-)或连接文件(l)等属性.此外,Linux还可以设置其他系统安全属性,使用chattr来设置,以lsattr来查看,最重要的是可以设置其不可修改的特性,即便是文件的拥有者都不能进行修改.这个属性相当重要,尤其是在安全机制方面(security). 文件默认权限:umask 当建立一个新的文件或目录时,它的默认属性是与umask有关的.通常,umask就是指定当前用户在建立文件或目录时的属性默认值.那么,

OSChina 周五乱弹 —— 生命诚可贵,改 BUG 价更高?

周五!!!每天醒了都想做一件轰轰烈烈的大事,可是我还木有男神电话,这让我如何是好?心中纵使有万千宏图大愿无法实现,这一天看来又是非常平凡的一天了- @李察德-泰森  :我有女神的电话号码,每天都能知道她睡醒没有.打电话给她,没人接就是还没醒:打电话给她,挂掉了,就是醒了.你们不要太羡慕我! 2014 没剩下几天了,这一年,无论平凡或者有何轰轰烈烈的经历,都应该开始总结一下了,温故而知新- @jeffsui  : 父亲住院20天了,经历了一次又一次大喜大悲.回到家,一个人静静想了很多.2014年,

《开源框架那些事儿27》悠然乱弹:一段SQL引发的性能危机及其背后隐藏的设计缺

有个同学,说是系统中出现性能问题了,说是让我帮助诊断一下.本来是不想花这时间的,结果耐不住对方的死缠乱打,只要答应帮看看.  故事发生的背景是,在文件上传的时候,有时间会有人上传了文件,但是最后没有使用上传的文件,这样就会产生一些垃圾文件. 原来软件作者就想写一个后台定时任务程序,来清除这些垃圾文件? 由于作者坚定的不让我发她的SQL语句(这个我也理解,这么丑陋的SQL),所以这里就不发源代码了,发伪代码. 123456789101112131415 void deleteMissLinkFil

悠然乱弹:软件开发杂谈

杂谈之一:技术只是成功的一点点基础条件,真正还是得靠做人 话说,有位lianzi同学,水平不错,思想超前,签约阿里现在在百度实习,以前因为喷我的贴又没有啥理由,因此告诉他离我远一点,但是最近他又回到我群里了,一直伸个大拇指,我说啥他都是大拇指,觉得怪怪的,总不是那么个感觉,终于憋了一段时间,又恢复了正常的沟通方式,聊天实录: [传说]杭州-悠然<[email protected]> 18:31:13 lianzi本色终于出来了. [传说]杭州-悠然<[email protected]&g

悠然乱弹:挑战编程极限的问题终于有解了

问题的来历 在群里面一个小萝莉非要说拜我为师,呵呵,对于程序媛我一向--嗯嗯觉得程序不如人好看,再加上该名萝莉大学还没毕业,术语都多半没有听过,于是就想着拒绝,当时嘴一贱,就说了一句:你用一个For循环做个99表出来. 当然,这个对于小萝莉们来说,已经足够形成挑战了,但是对于群里的一众大佬们来说,自然是不在话下,3下5除二就搞定了.我又异想天开一下,如果不用判断语句,是不是也完成呢?粗想想是可以的,于是动手摆了几行代码,确实可以.于是就不断加码,不断增加新的完成条件,于是就形成了下面的问题,挑战

悠然乱弹:一段SQL引发的性能危机及其背后隐藏的设计缺陷

有个同学,说是系统中出现性能问题了,说是让我帮助诊断一下.本来是不想花这时间的,结果耐不住对方的死缠乱打,只要答应帮看看. 故事发生的背景是,在文件上传的时候,有时间会有人上传了文件,但是最后没有使用上传的文件,这样就会产生一些垃圾文件. 原来软件作者就想写一个后台定时任务程序,来清除这些垃圾文件? 由于作者坚定的不让我发她的SQL语句(这个我也理解,这么丑陋的SQL),所以这里就不发源代码了,发伪代码. void deleteMissLinkFile{ List fileList=getFil