黑客精神 与 清心寡欲

来源:互联网 发布:软件代理加盟平台 编辑:程序博客网 时间:2024/04/30 07:43

[此处不再更新]原文地址:http://wargrey.yo2.cn/2009/06/09/31218/

 

外传一:
和任何一个大学新生一样,我也对大学的任何事物感到新鲜。尤其是新同学,我们都是计算机专业的,不会再像高中那样孤军奋战了。看看,这是多么美妙的事!不用多解释也知道接下来发生之事的原因了。最初一个月左右的时间里,我是代理班长,借着这个名义,某天的晚自习我自做主张的给大家做了个演讲,内容是JoelSpolsky的《给计算机系学生的建议》(从《程序员》上看到的)。现在看来,这个举动是何等的愚蠢,事实上也是,我的很多看似招摇作秀的行为让班里的人很不爽,而这个则刚好做了“最后的稻草”,可想而知,我的人际关系在当时是相当尴尬的(后来,随着大家对我了解的加深,这个局面才逐步好转)。其实,我只是想吸引些志同道合的人,或者我只是单纯的想给大家一些帮助,正如《程序员》曾给过我帮助一样。后来,正式确立班委的时候,我落选了,不怕笑的说我还以为我的人气很高呢,哈哈。实际上,班导是认可我在班级事务上的处理能力的。之后很长的一段时间,我都很失落,只因为想不通究竟是为什么。其实那时是接二连三的不顺,学生会招人,我一心想进学习部,“面试”都通过了,最后却没有结果,偏偏我们班那时就有个预备党员,人家的“无条件”“必须”则直接占了那个唯一的名额。那时还很不成熟,一气之下拒绝加入任何学生组织,也不再想要帮助别人(其实我不能彻底做到这点)。事实上,第一个学期我就有入党的机会了,这些刚好成了我拒绝入党的直接原因,在我交了第一份思想报告之后再没人要我交第二份了。其实入不入党跟是否成熟没有太大的关系,只是那时太过感情用事,理由写得不好,其实既使现在再给我一次机会,我也会拒绝的,因为,不需要借着入党才能履行党员的义务(虽然范围小了不少),而且我讨厌“无条件执行”这样的强制性规范。

外传二:
我就几乎从来不主动参加任何(球类)运动,但是你可以试着跟我比比身体素质,绝对让你大吃一惊。第一次参加运动会是小学一年级,光荣的得了个倒数第一,之后时隔9年,我重回运动场,包揽了400m以上项目的第一至第六的随机名次,只因为中考的体育加试锻练打开了我的潜能。这个惯性一直带入了大学,在大一的时候,接受了我从出生以来的第一次正规训练。我们软件系是很牛的,自三年前从数学系分离出来,最少总共才32人的情况下一路杀到第一名(刚好就是我大一参加的那次)。说这段,一方面是因为身体确实是革命的本钱,平时需要注意锻练,但更为重要的想说我的团队精神。大多数时候,能在校园里看到我,锻练、散步、吃饭往往都是一个人,学习或自我修炼上,更是孤身一人,也许别人都以为我喜欢单枪匹马,或者干脆就是不会交往。其实我内心非常向往能有一个我能输出并且愿意接受我输出的集体,在那里大家各有所长,通力合作来迎接挑战。我们系的运动员团队正是我遇到的第一个这样的集体,虽然不在我的主要方向上。当然高中也参加过运动会,但是感觉上其实只是挂个班级的名义而已,锻练更是自己的事没人管,但是大学的运动会有学生会、其他运动员和教练在支持,背后更有系领导再关注着,感觉很不一般。

外传三:
不知道是不是真得我就天生跟大多数人不一样,其他的不说,既使是玩游戏,我和周围的人也没有多少共同语言。其实小时候我就是个卡带游戏专家,然而其实我真正喜欢的游戏只有一类,即角色扮演类游戏。我总是不知不觉的将我的人格带入游戏中,因此很有“游戏精神”,而在这种情况下,RPG可以比较容易的带给我类似上述期望的集体感觉。周围玩游戏的人很多,他们也会玩些RPG,但是我发现他们往往把注意力放在打怪练级上,而对剧情部分匆匆略过。我不能理解他们,他们也觉得我奇怪,甚至在看我玩的时候还想帮我说按哪个键能跳过剧情动画。另外一类玩得多的是像“魔兽争霸”这样的即时战略类游戏,同样的,我更倾向于将自己作为某个英雄/单位来与其他单位合作,而不是将自己放在一个全局指挥者的角度来玩,虽然我也希望做个好“将军”以便能够兵来将挡谁来土淹。废话了这么多,其实提到这两类典型的游戏原因也很简单,由于玩家和游戏存在着很大程度的互动,比之小说或动画,自己或旁观者更容易分析玩家自己的行为模型,毕竟现实社会往往有些单调,或者要达到同样的效力需要更多成本。

外传四:
源于自学养成的习惯以及对应试教育的不满,我从来不会为任何考试(无论是考试课程的考试还是各类等级认证的考试)专门准备。我参加的很多考试(其实也没几个),如比SCJP,直到考试结束,我才知道真正的考试范围;再比如,CET4,直到考试当次,我才知道原来听力只听一遍(因此第二部分基本什么没听到),但是我总是让很多人失望,而他们总是以为我会挂的。其实单纯从试卷的角度来看,如果不是为了证书去考试的话,并不是那么有水准。反过来看,既使得到了软件设计师的证书,又如何?考试之前几个星期,拼命的做下历年的考试题或一堆模拟题,没准你就可以通过,因为你知道考卷“它不会这么问的”。所以呢,在考过网络工程师之后,我便不再参加任何自愿参加的考试,包括CET6。嗯,你猜对了,我可能过不了,但是没关系啊,不影响我解决问题(对了,罗嗦一句,我大一就开始断断续续的看英文原版的技术书了)。至于证书,亦或因此而得到的奖金/奖学金,我根本不会去考虑,正如我当年选科不考虑难度一样。一般来说,往往能够至少提前半年的时间知道自己要参加什么考试,这段时间足以直接学习这个领域了,临时报佛脚实在没什么意思。不要误会,我不是说这样的考试没有任何价值,不错,为了证书而考试的确没有任何价值,但是在你为考试准备的过程中,可以大大的打开自己的眼界,尤其是软考这类考试,上午题需要的是足够的广度,因此各类考试大纲辅导书都会比较有条理的列出出比较完善的知识框架,照着这个框架走吧,不需要再迷茫“计算机科学到底学什么了”!

外传五:
可能会有人对我的一件事情很感兴趣,就是“你会不会黑客技术”。这个问题我也确实想好好的回答一下,当然,我们都知道问句里面的“黑客”是指什么。这还得从高二说起,不知在哪看到了《红与黑的边缘》和《暗火》这两篇关于“真正的黑客”的短篇小说,与我内心一种道不清说不明的东西产生了共鸣,于是我开始摸索“什么是黑客”以及“如何成为黑客”。那个时候我已经开始接触linux了,只是因为我听说“linux的命令可以自由的修改”,看来还是有内因的,而那个共鸣的东西,其实就是“黑客精神”,即:自由、平等、共享、突破。实事上,“黑客精神”一直贯穿在我的成长中,只是在发现之前自己不知道罢了。在追求“黑客精神”的过程中,我一直自知技术上还远远没到火候,并且拒绝/鄙视使用任何傻瓜黑客工具(自然也不会有诸如“盗QQ号”、“耍JS脚本小聪明”这样的低级恶趣味行为),取而代之的是好好修炼编程之道,因为编程是一切计算机科学的基础。这里隐含了一点,其实我很不喜欢传统的软件工程,因为那是为生产环境准备的,相反我很喜欢开源模式,而开源文化在某种意义上就是黑客文化。曾经思考过是当科学家还是当工程师,或是取个折衷的选择,其实根本不用考虑太多,黑客便是最适合我的选择。恩,不过在成为真正的黑客之前,我不会以黑客自称,相反只取其“黑客精神”来激励自己。

外传六:
金钱、美景、美女、美食这四大诱惑对我基本都不起作用,呃,我没有生理上的缺陷,也知道这个社会正在盲目的追求物质上的舒适。讨论“生存意义”这样无法实证的问题本身就没有意义,因此我选择我所走的路也就不需要多余的理由,或者就归结为个性因素吧,其实我也有不可抑制的欲望,这便是我强烈的求知欲,以至于我愿意投身科学和开源,而不是仅仅在其他相对轻松的环境里随便找个饭碗了事,然而从我个人的角度来讲,无论做什么都有能说服大众的理由,但是确有一点是无法回避的,我得先有钱!可惜很遗憾,我在这方面简直就是白痴,还偏偏当其为信仰在固执的坚持着,“永远不要拿兴趣当职业”,不知道这是讽刺职场环境的浮躁,还是在预示兴趣保持者的悲剧。本来我已经可以去实习了,而且薪水相当不错,然而我接连放弃了两次机会,只因为工作方向与我的人生方发展向不重合,而现在又到了为职业烦恼的时候了,好在有所感悟,其实好好的为职业付出,则既能保持一个愉快的身心,又能为兴趣找到经济后盾,如此双赢何乐不为?恩,还是需要一些调节来平衡这个选择的,好在我喜欢的动漫和角色扮演类游戏给我提了个很好的建议,“清心寡欲”,这个心境刚好和“黑客精神”不谋而合,而且人总是无法脱离人类自己创造的社会环境,从整个种族的角度来看,既使我的目标未能完全达到,我还是可以影响我后面的人,这其中也包括我的子女,而这也是我写作此“成长轨迹”系列文章的最大动力和根本动机。

支线剧情一:
跟其他任何一所大学一样,我们大一新生都是不允许带电脑的。不过可以向学校申请,恩,总得来说,我是会遵守校规的,正所谓随心所欲不逾矩,规矩只对需要规矩的人起作用,当然我遵守规矩不带表我认同规矩,只是不想在我忙活的时候被规矩烦。于是我向系提交了申请,总算这件事还是挺顺利的,没过多长时间就通过了申请。在等待期间,我接触的比较多的是学生会的人,我们系的学生会是很不错(或者说当时的成员是干实事的),他们组织了一次新老生交流会,我作为新生讲述我高中的学习经历,实际上我没有讲那些东西,因为我自己觉得实证效力不够,于是又搬了《程序员》上的一篇文章来传道。而对我来说最大的好处莫过于是认识了一些比较牛的学长。其实论计算机的学习年龄,我比他们大得多了。

支线剧情二:
我的大学里,来自教学计划的压力很小,或者几乎就没有,无论是广度、编程还是学习能力。大一,基本上认真上课的,当然这不等同于认真听课,只是说还是认真的学习(自学)教学要求的课程的。其实我在大学之前根本就没有接触C语言(直接就C++了),所以C的课程自然要好好补一下了。C的课程设计是我做得最认真的课内项目,一方面是熟悉大学学习环境,一方面(其实是歪打正着)是为“逃课”做准备。我的逃课总是最正当最合法的,秘诀就在于此。几乎是出于本能的,每接触一个新的老师,第一节下课我必做的一件事是跟他交流,比如双方的方向。然后他的课程设计好好的做,等到跟老师成了朋友后就可以光明正大的逃课了(当然,这跟“走后门”没有关系)。我的逃课方式也很多,比如刚开始在课堂上自顾自的看书,然后是带电脑去教室(大二时忽然觉得对老师不礼貌对学生太招摇就停止了,不过这还真救了我一次,那天我室友电脑被盗了),再后来就是全部课程免修。不得不说,虽然大学课程不怎么样,我的大部分老师都是比较好的,无论是专业水平还是开放的思想。曾经有很长一段时间,我都因“逃课”感到良心不安,直到有一次不意间google到了一遍文章,“大学新逃课族”,原来由于不满于低质量教学现状而逃课另辟蹊径的学生大有人在,甚至还喊出了口号“不逃课的学生不是好学生”。原来如此,我所做的“在课堂上逃课”还是比较落后的了(而且我还是很有资格评价大学教育的),于是乎大三开始所有课程免修,实在是受不了那些弱智的课程设计,尽管我每次都很期望能来点有挑战性的东西。我鼓励任何有主见的学生为了自己的未来逃课,但是我也补充一句“乱逃课的学生也不是好学生”,尽量还是争取到“免修(这是最正当的逃课)”。其实,即使不是为了学知识,在课堂上仍然还是会有很多其他让你眼睛一亮的东西的。

支线剧情三:
在我创建团队的那个学期,我被老师推荐进入了我们学校唯一的一个应用研究型实验室,不过我也就在里面呆了一个月,因为牵挂我的团队而使得任务一拖再拖,自己不好意思再回去了(其实我一直在做得,只是中间隔了一个寒假,早就“任务过期”了),之前在与带队老师沟通时,他就明确的说了:如果你有自己的方向,我不建议你继续留在我们这里。在得到这个推荐的时候,我特别问了一下可不可以带其他人一起去,得到肯定后立即召开了紧急会议,详细的说明了这个机会。现在想想,我真有点出生牛犊不怕虎,私自带人这种事本来就太过儿戏了,何况还幻想能把整个团队都容纳进去。好在只有两个人愿意去试试,后来他们都比我退出的早,一个是因为对实验室的课题没兴趣,一个则是因为自尊心太强(在那里只有我们是纯软件系的,我们的知识其实完全不够用)。虽然我最后也退出来了,但是却还是有不少收获的,至少正是这次事件直接导致我彻底删除正版Windows的,不得不说,虽然我是从高二就接触linux了,但是双系统确实有点“自欺欺人”,如果没有下狠心格掉Windows,估计我也不会有如此多的进步。大学的最后一个学期,本来应该是去实习的,却戏剧性的又重返了实验室。在很长一段时间里,我依然像上次那样让老师失望,不是能力问题,而是始终给人“不肯好好干活”的感觉。我也确实糊涂了,自我暗示?我好像总是喜欢不负责的说“我就是比较不走寻常路,还没找到适合的环境吧”。这次找到原因了,是与老师缺乏交流,我已经习惯性的认为交给我的就是全部任务,而老师则认为这些任务应当循序渐进的来,于是我自行安排的时间往往比较松,反倒让我很郁闷,大部分时间没事做,不得已只能找些自己的事来做做了。当然还有两个隐含的因素,其一,我毕竟是要毕业的人,做得往往都是一些辅助性(至少我这么认为)的事;其二,我的任务之前没有人做过,因此我想为学弟学妹留份详细的文档,在理解时不至于像我看搜索到的资料时那样云里雾里。其实这个实验室的导师很值得全国大多数实验室学习,其实不是别人背离我,而是我背离了其他人。

支线剧情四:
虽然对竞赛考级这类事情不感兴趣,但是有人来找我也不会拒绝就是了。大二下吧,突然接到学校科协的科技立项通知,就答应了。我立项的内容其实早在高中迷上FlashRIA开发的时候就打算做了,但是这个工程太大,一个人很难在有限的时间里完成全部实现。本来是打算在成立团队之后以团队名义来做的,但是很遗憾,我甚至连说服我的队友哪怕只是关注一下我们团队的方向都不成功,这个计划也就暗中取消了。不过实际上,此项目的文档我从高三开始就在写了,很有趣的是,在没有足够实现的情况下推翻从来过好几次。进入大学之后,一些计划之外的事(其实我没想过要跟老师做项目,更何况是连周期都不稳定的项目,被拖着确实不爽)把这个项目的周期拉得太长,直到认识到基础才是我这样的人该重点关注的,那些华丽的前卫的技术实现以后想搞绝对不是问题,因此我的重点转移到Unix操作系统上,这个项目也就暂停了。而就在这时,接到立项通知几个月后的时间里(这期间没有任何消息),突然有人告诉我要写论文,更郁闷的是截稿日期只有一个星期了。我晕,还是那种初生牛犊不怕虎的劲头,什么资料和参考文献都没看(其实我也不知道需要找或者去哪找这些东西),花了两夜完成了我的第一篇论文《基于插件的Web应用平台》,这篇论文没有具体的技术实现,不过很能体现我的思维方式:生活中的很多细节都是灵感的来源。我不知道那帮评委如何评判论文,只知道我可以写些对别人有启发的东西。事实上我也不知道这篇论文的性质,有老师说通过省级认证了,也有老师说其实没什么,不过有一点是真得,此文被收进学校的论文集了。不过还是有点让我不舒服的事,初稿交出去被告知字数太多,老天,还亏得我没写技术实现。然后是连续几个月的审批等待,直到实习期我刚离开学校,晚上短信通知说可以为“复赛”(马大哈,不知道这是个什么性质的东西)准备了。真会捉弄人,我都忘了有这事了,算了,直接放弃吧。写论文还真是浪费时间(拖形式主义拖拖拉拉的福),当然真心投身科研写给自己或同行看的另当别论。其实,如果我的作品连自己都觉得垃圾,或者我不打算再深入下去的方向,我都干脆对外宣称我对此不了解。

大学,总算被我等到了,但是我对大学的认识跟很多人不同,这里是真正的战斗场,至少不应该是像某些高中老师说的“高中辛苦一点,到了大学就可以随心所欲的玩了”。但是大学确实又自由了许多,五花八门的选择和被选择,使得合理的自我推广成了大学生的必备技能。因此开学没过多久,我就与各个任课老师成了朋友。
当时的计算机学院分成了两个部分,在我们那个校区,也就只有一个软件系(大二时重新合并成计算机学院),带学生做项目的主要有两位老师,分别是JavaME和JavaEE方向,而我高中时重点关注的是基于Flash和Java的RIA应用,经我C语言老师介绍,负责JavaEE的那个老师找到我,并且直接扔给我一个项目,手机图书馆的服务器端,让我修改优化代码。简单来说,这个项目是由n个04级学长做的,主要开发者正是我们学校引以为傲的在实习期就月薪6k的牛人。其实那个项目没有什么神秘的,只是在当时其架构理念比较前卫罢了,而我得到的服务器端的代码其实很烂(估计不是那牛人写的),不过这正是我第一次接触实际项目,也算是对高中学习的一个小测试。应该来说,高中写在纸上的程序没有白费,至少我的代码是很符合规范的,而自己摸索的学习方式则使我对tomcat、sql server2000这些东西很熟悉了,因此前后不到一个星期(刚好那个时候军训,也是刚拿到属于自己的笔记本不久)就把整理后的代码交给了那个老师。为此我赢得的是一个小工作室,还有每周或每两周一次的与老师和学长的互动交流机会。那段时间,基本没有接什么外面的项目,只是我们系的书记要写硕士论文,主题为“本科教学评估系统”,呵呵,显然他自己是没有时间具体实现了,于是就由这位老师接下来,准备让我来完成其中的一个模块。那个小工作室里,我一个人在为这个项目做准备,学习一些轻量级的JavaEE技术,顺便也学习一些软件工程方面的东西,只是让我郁闷的是,既使到了暑假(为了这个项目提前一个月返校的),项目也还一直没动静。算了不等了,就当没这回事吧,因为我忽然起了一个很伟大的念头......
说到组建团队,其实我在高中快毕业的时候就有打算了,那个时候我还曾就这个问题(以及我对软件设计的理解)专门写信咨询计算机老师(对,就是那个只顾强化班的算法培训老师),我还是比较识相的做了心理准备的,他没有任何回复,唉,关键问题还得自己摸索。暑假在临时分配的连喝口水都成问题的宿舍里没有目的的等待也不是办法,于是我联系了4个我比较熟悉的还算有点编程潜能的同学,跟他们说明了我组建团队的想法,他们也都愿意跟我合作。那时我强调,我们这是一个毕业前从零开始成长,毕业后以创业为目标的团队,并且最好不要有考研的打算(那时我是不准备考研的)。同时我也强调了,大家虽然课内知识学的还可以,但是其实那没什么太大的价值,因此建议大家在暑假的时候好好的学学软考辅导资料(他们中有3人是报了名的),目的是找出自己感兴趣的计算机科学分支,下学期来了好分工。我自己则上网广泛的搜集资料,在我们的方向上考察了众多的可选项(也包括几个候选方向的选择),并且整理了一份很详细的《团队规划草案》。总算等到大二开学了,我一直都是很相信大家的,但是结果却很让我失望,他们根本就没人去做准备工作。第一次嘛,还是可以谅解的,毕竟不是人人都天生在具有热情的同时还具有积极的行动力的。不管怎么说,团队规划已经写了,这个团队也就进入了试验阶段,不过没有急着分工(对了,其中一个成员是我老乡,他推荐了一个人进来)。机会总是有的,在我将这个想法跟老师交流后,他提供了一个项目给我们(双方是以团队─客户的角色来进行交流沟通的,用面向对象软件工程来进行项目管理),就是我们大一报名时看到老师在操作的“新生入学登记管理系统”,那个系统是另一个老师用VB写的CS程序,现在的任务是改为BS架构的,但是要求是使用C#和Oracle(还要兼顾与MySQL、Excel、txt的数据互导),时间3个月。这个要求现在看来没什么,但是我们那时才刚学JavaSE,数据库也刚学SQLServer,学习成本似乎大了点。老师的考虑和我差不多,反正无论选哪种技术,大家都是初学者,那就有充分的理由按“客户”的要求来做。从长远的角度考虑,按照我对大家的了解,在双方都达成共识的情况下,做了临时分工(当然项目也是分层的),这么一来,每个人所需要学习的知识都大大减少了。现在看那个项目,其实大家所需要做的只是调用下层的接口:两个人负责界面、两个人负责业务逻辑(其实也就是对Entity的操作),还有一个人和我一起负责数据访问层(他在我的架构下负责对MySQL访问的具体实现)。
大概是教育长期以来的束缚,使得大家就是没法放开教学计划来安心学习C#,尽管我和老师一再的强调,(在教学计划的范围内)Java和C#没有区别。实际上,种种迹象表明,其实大多数人根本就没把这项目当回事。除了我会经常跟各成员单独交流外,我们还每两周集中交流一次,但是其他成员之间的交流很少,甚至还有个别互相看不顺眼的情况(这是在进入团队前就存在的,经我调节有所好转)。时间很快就过去一半了,但是我们还在学习新知识的初级阶段,不得已,老师同意我们用Java来实现,谢天谢地,进度有所加快,然而新的问题就出现了,我这经过设计模式和Hibernate洗礼的人做得设计很难被大家理解(项目本身是纯jsp的),即使花了半天时间做集体培训,然后又针对每个部分写了完整的程序给大家参考,结果还是很无奈。可能不完全是能力问题,一来周期已经很长了,原本就不多的热情也基本耗光了,一来这个项目即使完成了,我们也不会有任何报酬(这种情况应当理解,尽管我不喜欢看到大家这么功利)。最终,项目还是过了deadline,按照约定,以“未完成”的形式结束了此项目。不过呢,虽然是未完成,大家还是挺有收获的,作为项目一部分的正式文档全是我写的,不过根据分工以及一些成员的要求,大家也都或多或少的写了属于自己的那部分文档;临时的分工方案对于以后的团队分工提供了很多有价值的参考;很多成员在看了我的代码后表示自己收获很大,并且说自己“能够完成完全是有本可依”;还有很多,诸如如何快速解决自己遇到的问题、如何团队协作等等。而我自己,仿照Hibernate的工作原理,归纳了一个微型的数据访问层,同时还兼容Excel(为它写了个微型SQL解析器);另一方面,与“客户”沟通、团队管理、软件工程项目管理都是第一次,对编程的理解较之高中又加深了许多。顺便也提一下,在接近项目尾声的时候,那个“本科教学评估系统”开工了,不过只有一个星期的时间了,考虑到我自己的项目就没有参与,据说后来是由几个老师完成的。
经过这次项目的试练,我们的团队正式成立了(我有点不舒服的是我老乡又推荐进来了一个人,其实他也是老乡),看得出来大家的热情很高涨,也都愿意跟着我。那时也临近学期结束了,满怀着希望大家聚了餐,谈了团队的目标、行业情况(我又重申了上次布置的任务),可惜又是一个假期浪费了,再一次的,我信任了大家。为了最大限度的根据大家的兴趣分工,我不断的强调:时刻检视自己,评判现在正在做的事和自己期望做得事是不是在一个方向上;同时,布置了一个新的任务,就是各自独立完成一个“登陆模块”,技术不限,登陆之后可以自由扩展,时间三个星期(这个时间绝对给多了,但是考虑到教学任务,考虑到大家的基础,还是预留了给大家充分准备的时间),文档可选。这次的个人小项目,确实有不少人是认真完成的,但是也有个别人不屑于做这些,交上来的人里有人是简单的修改了一下以前做过的东西(不是教学任务的那种),还有人则在生搬硬套设计模式。总之无论是技术基础还是思想觉悟,我们都还有很不够。早在大一学C语言的时候,我就跟他们中的有些人说了,学知识要注重对本质的掌握,先保证能够将知识点融入到自己的理解里,然后,如果觉得课后作业太无聊,你可以尝试新的思路,别一碰到类似的东西就把以前的东西搬出来当作“已完成”。就是在这样的情况下,我们的团队每个星期都会进行交流,然而最初却只有我在讲(主要是偏重“思想觉悟”,学习心得,外在建议大家抽出时间关注关注我们团队的方向),大家听得云里雾里的,然后散会。后来有人提议,每个人轮流演讲一个特定的主题(通常由各自的分工决定),并且改为每两个星期交流一次。这是个不错的建议,我们立即就采纳了,但是考虑到大家分工的侧重点不同,如果一味的讲具体的技术细节,往往让不了解的人感到困惑,于是每个人选题之后,我都单独跟他交流并给出演讲的侧重点。在交流了几次之后,非技术话题,比如团队沟通、软件工程管理等等的,都比较有效果;但是技术性话题就不太乐观了,似乎总是不能把握演讲的侧重点。我自己则重点讲了Linux的基础知识和Web2.0普及(这跟我们团队的方向有关),此外还有关于算法的演讲,发现大家普遍数学基础不够,其实我那时想在课后单独抽时间安排数学和专业英语的学习课程的,但是考虑了各种客观因素没有实施。
我们的定位是一个从零起步的基础研究型团队,因此借着人数多的特点,分工涉及的范围也比较广,不过都是根据大家自己的选择来划分的,并且涉及到的任意一个方向都有至少两个成员在共同学习,这样一来保证每个人都能找到可交流的对象,也有助于多样化的分组讨论和集体讨论(学习之外,我们也根据个人兴趣经常一起活动)。至少我是这么设想的,但是交流始终是我们最致命的障碍,也许是我作为管理者有点杞人忧天,也许是自己对大家的关注度不够,总之团队出现了让我很不舒服的现象。其中一人(他是唯一有女朋友的)从来不跟其他人交流,剩下的人则根据自己原来的交际圈子分成了两个彼此隔离的小团体,其中我老乡和他自己推荐进来的两个人是一组。我认为这不是一个好现象,于是,我经常跟大家个别交流,说说我们的团队,听听大家的看法,并且不忘了叮嘱多多与其他成员交流(特别的,我还请几个成员没事多跟那个不与别人交流的人谈谈,因为他们经常一起打球),我以为会起到一些效果的,更多的人还是只关注自己的学习(的的确确就是他自己的)。这中间我和我那老乡也曾找过几个项目想来练练手,但是由于大家意见不一致而没有真正开工(我知道,有人是嫌没有报酬),有些项目则是以小组的形式进行的,但是没有一个是完整完成的,通常都是随着时间的增加或者意见的不合就有人退出。
不得不说,我的这个老乡是真心把我的团队当成了他自己的,然而虽然他很有领导者风范,但是毕竟没有管理学方面的知识,或者说对团队成员做了过于理想化的假设。他是个直话直说的人,那时还不懂得顾及对方的感受,导致说话的语气和方式让一部分人受不了,这是小组项目没法继续的一个原因。在我调解矛盾的过程中,还发现了很多其他的因素。现在我知道了,其实大多数人愿意加入这个团队,纯粹只是来跟我学习的,而对其他成员则没有什么特别的感觉,这就解释了为什么会有小团体的存在;考虑到我们是“从零起步的基础研究型团队”这一基本队情,无论是个体还是整体上来看,我们的基础都不够,因此就有了两种情况,一种是想借做项目来学习,但是要求接有钱的项目,另外一种是认为自己基础不够,需要继续学习理论,理由是“做项目之前,我总得知道我(学的东西)能做什么吧”。第一种现象我不认为是个好现象,一直没有采纳(其实总是有老师找我做外面接来的项目,但是我跟他们说了有机会却又没人加入,当然我也不是冲着钱去的),第二种现象比较难解决,程序员是高傲的猫,一点没错,即时是他们认可的我所给的参考意见也不会轻易接受,更忽略了其实他们都不算差,而单纯的技术只是一张纸而已,工程型或实验研究型的知识怎能纯理论的学?我了解这种对知识的渴望,我也曾这么走过好几年,但是正是因为如此,对于这种方式的利弊很有感触,基本上等到实践的时候,理论还得再学一次,还不如一开始就“边做边学”;第三个原因则更加的含蓄和不容易实证,即时大家知道自己的方向,自己也有能力学好(傲气就是这么来的),但是还是无法脱离教育和考试的束缚,这也可以理解,毕竟考试不及格关系到很多今后的发展,但是以“怠慢自己的路”为代价就太不能让我理解了。上述的几个理由则导致了这样一种现象,毫无疑问,我的能力他们都是认可的,布置的任务基本也都愿意去做,但是我整理的资料却不被重视(这从“团队资源”被放在什么目录下面就可以看出来了),曾经我问过他们,我给的文档模板和软件工程老师给的模板有什么不一样,郁闷的是没有人说得出来,其实我们都是在用标准的模板,只不过我自己重新按排版要求整理过(下载的和老师的文档格式我看着不舒服)而已。
为团队交流这事我没少操心,每两周的交流只能保证交流会进行的那两个小时,剩下还有13.5天呀。我可以不时的和其他成员单独交流,但是有人明确的说了,如果我时不时就往他们宿舍跑会有种被监视的感觉(实事上我从初中住宿开始以来,就一直不喜欢串门的)。不得已,我假装交出管理员的职能让其他人代替,目的就是让大家感受一下,自己是属于一个团队的,也是应该为团队负责的。与此同时,我将责任都归咎到自己身上,这些批判中不乏很多是实话,但是我更想起到的作用是借剖析自己来唤醒麻木的人,结果交流现状依然没有任何改善,当然也不理解我为什么这么做,更让人窝火的是,团队会有矛盾真得就是我一个人的错了。看得出来,我一直都是把身边的人往好的方向想,可谁注意到这点了?果然我太感情用事,不适合做管理者。
矛盾的暴发也不是出于偶然,然而我怎么也想不到矛盾的原因竟会如此简单:团队目标不明确!其实我在和大家个别交流时没少提这点,而且,在包括《团队规划草案》在内的文档也有几份,内容是非常详细的,只怕根本没有人看。事实上,(接下来的叙述我保证客观,不过可能会让部分人不舒服),团队成了初期,我那老乡就问我如果他自己也组织一个团队行不行?所以他连续推荐人进来,再到后面的小团体我很不舒服。当然,他自己是很信任我的,也确实为我们的团队提了不少有建设性的意见,但是他推荐过来的人,我总是感觉有点疙疙瘩瘩(后来他们对团队的心态,我老乡也很失望)。老实说,我对他们不了解,他们也没有特别的想让我了解(也许是性格太内向所致),反倒是他们三个人关起门来讨论我们以后会是做这个呢,还是做那个。好在我那老乡跟我单独提到过这件事,发现跟我的期望目标不一致,我立即纠正了方向,我老乡很感激,幸亏我详细说明,要不然他们根本就考虑不到这个层面。
前面也提到不少关于大家不关心团队而只顾个人学习的原因,而且我们的团队存在着与其他众多学生团队可能不一样的基本队情,我感觉该采取些其他策略了。当然如果理解不了我这策略,则又会产生更大的误会,事实验证了这点。我的策略是,暂停团队事务,因为再过不了多久就进入教学计划的实习阶段了,我是想,大家经历过实习期的话肯定会对团队有更深的理解,而且对于他们个人在团队中扮演的角色的理解也会跟着加深,毕业之后,我们可以再聚到一起继续我们的目标。我前面是说“暂停团队事务”,然而无一例外的,几乎所有人都理解为“解散团队”了,即时我解释了我这么做的原因,也没有什么效果。不过,凭良心说,我这么做确实还有另外一个用意,踢掉明显不适合团队的人。只是考虑到大家感情深了,直接说有点不合适(我还是太感情用事了)。
自从“解散”团队之后,我感觉轻松多了,有旁观者跟我说:其实你们这个团队早就该解散了(他为我所做感到不值得)。然后他给出了一些理由,都是我(因为我有对人“本善”的假设)所没有考虑到或不想正视的因素。这也是我首次反省放弃高考的代价,高考有发挥失常的牛人很正常,但是分散到每个具体的学校里,其普遍实力也就确定了,好学校和差学校的有价值区别,对于知道自己要走什么样路的学生来说,主要就在于周围的伙伴吧,劣根性不是轻易能改变的。
生活还是要继续,如果现实中难以找到合作伙伴,那就将目光投到网络上。事实上,为了让大家产生“计算机感觉”,我经常鼓励大家逛论坛写博客等等,只是收效甚微而已。曾经有很长一段时间我在CSDNJava版块(以及版主的QQ群)混,时间长了发现论坛的公利性太严重,而且话题大多不合我口味,不过也确实接触了一些牛人。后来就自己创建了一个QQ群,也就是现在的“思维艺术”,连锁反应的陆续进来了很多牛人。思维上的交流,最好的基本保证当然是参与交流的人知识背景不一样,而这也是吸引其他牛人的重要因素。于是我就在CSDN的各大版块发广告贴(也有群友自己转载到其他地方去了),结果来了一大帮学习的人,现在发现,那些看了说明以“我不适合这个群”为由退出去的人是多么可敬。QQ群这种即时交流环境跟论坛邮件列表不同,人数非常有限,不适合潜水(占了潜在交流者的位置,那种“一个话题抛出后没人理”的感觉也更加的强烈)。另一方面,经历了太多“理想主义的热情”和“现实世界”的矛盾,我的心也发生了潜移默化的改变。我周围从来就不缺少“向我学习”的人,不错,你有这权利,但是我没这义务。我追求黑客精神,我渴望交流和讨论,因此,给我个理由,评什么你信任我,我就要回答你那上网一搜到处都是答案的问题?我时常在我活跃的地方提到“提问的智慧”,为什么你连一遍都不愿意完整的看完!?另一方面,我也很不理解,你明明就接受了来自一个集体的很多帮助,那为什么在这个集体的其他成员有困难时,你总是习惯性当成没看见?!本来我不反对我的群里讨论小白问题,我只是希望大家能够建立起一个完成的交流体系,但是无论什么话题,似乎我不参与,就不会有其他人参与,最后有问题就直接来问我了,因为只有我在听。为了避免尴尬,我不断的强调“提问的智慧”,我不是鄙视你,相反我是在帮你,正如我现在体会到的,这个混乱的世界,真得是求人不如求己。写作此“成长轨迹”文章的过程中,有支持我的人问“关健是,你写这么长根本没多少人愿意看完怎么办”,我很简单的答到“那就说明他不是我想影响的人”。是的,人各有志,社会也需要各种各样的人,我尊重任何人的选择,我也已经习惯了单枪匹马,如果我已经尽力要交到你这个朋友但却失败了的话。
在我组织这个“思维艺术”的过程中,经群友介绍,知道了刘未鹏这个牛人,然后加入了TopLanguage,这个列表确实不简单,比我的“思维艺术”好多了,我也确实学到了很多东西。最初的一段时间里,我经常不知天高地厚地给大家添乱,而且一有人说话就忍不住想回应。好在现在已经慢慢摆正自己的位置了,即使现在技术上没法参与到大家的讨论中,不过慢慢来,在自己该走的路上,大家都在努力呢。加油!