《打造Facebook》与实验室开发

昨天和璐辛巴童鞋在KFC自习的时候,说起自己的研究方向,已经从分布式方向变成了研究软件工程,而且还是很不靠谱的“实验室软件工程”。今天看了《打造Facebook》有些感悟,这里一并写写:

虽然总是说读研种种坑,但是既然已经上了研究生这条贼船,那么在退学或者毕业之前,除了想办法出去交流或者实习,就应该做好手头的事情。 我所理解的做好一件事情,就是使这件事情尽量满足人们的期望。就我目前而言,就是做好手头的项目。当前这个项目,对它抱有希望的可以简单的人群简单的可以分为:客户、合作伙伴、老板、开发人员。客户想要的是一个好用的产品;合作伙伴想要的是一个好卖的产品;老板想要的产品除了好卖,最好还能产生一些副产物(例如论文等);而开发人员则是想做一款真正有人用的产品,并能借此机会提高自己的技术水平。

这些看似不矛盾也并不高的期望里面,却包含了太多的不可能。首先,客户可能不只有一个单位,至少,客户不会只有一个人。那么每个人对这个产品都会有着不同的理解,希望这个产品包含着不同的功能。甚至有些时候,客户并不知道自己想要的是什么,但是他们清楚的知道,你做出来的东西,并不是他们想要的。而合作伙伴和老板为了能够将产品卖出去,可能会不管不顾当前的工作进度而去提出一个苛刻甚至是不可能的交付时间。对于高校项目而言,这个交付时间甚至往往不是自己提出来,而是基于每年的国家工作计划,早就拟定好的……

抛却项目开发的种种不靠谱的前提,我们来说说项目开发团队好了。目前以XX大学为例,项目开发团队,很多就是三五条枪的小团队(甚至是只有一个独行侠)。相信我,大一点的开发团队可能还不如这种小团队。因为生源和当前的培养方案决定了学生当中的有效开发人员的数量。那么大团队里面,除了几个核心开发人员,可能还要加上各种混子。这些混子非但不能给团队带来帮助,还会给项目带来各种负面影响。而无论是小团队还是大团队的核心人员的水平又是很有限的。他们或许在大公司实习过,或许看过一些软件工程的书籍。于是就带着半懂不懂的软件工程的知识和自己最心爱的编程语言和框架开始了征程。那么任何一个项目,对于开发团队来说,技术方案的确定往往依赖于“带头大哥”熟练的技术,或者拍脑袋决定采用某个当下很火的技术。或许项目最开始,大家还能走走软件工程的基本流程。但是随着deadline的日益临近,测试、注释、设计模式、写代码的基本准则就会逐渐被扔到一边(有些甚至从未出现过)。那么项目的质量可想而知。索性,大家的真实需求和理想期望从来都并不一致。所以,一个有一个的“优质项目”被完成出来。

看了前面的唠叨,大家或许对高校项目或者“高校软件工程”彻底丧失了信心。但是我觉得大可不必这样。因为首先,我所看到的很片面,不能准确的描述大环境。我所看到的,和我所听到的,不能抹杀了Top高校和很牛的课题组的存在。其次,我们知道,自古高手出民间。高校里面总有着这样或者那样的“大神”或者“奇葩”。这些人的个人实力之强,足以让他们可以独自做出一个可以用的原型甚至不那么完美的工具或者作品出来。而这些人形成的小团队,即使按着那生疏而青涩的软件工程流程做开发,也是极具战斗力的。这样的个人或者团队,无疑会为高校的软件开发带来一丝曙光。

那么对于我个人而言,怎么样弄,才能尽可能的把事情做好呢?就像《Facebook》和很多其他的书里面所说的那样,最重要的是团队。为了打造团队,我们可以邀请真正对你所参与或者负责的项目感兴趣的人尽可能的了解你的项目,进一步以直接或者间接的形式参与到项目当中。参与的形式,可以有:直接进入实验室的项目组;参与项目的讨论会,对项目给出意见等。当然还有一些特殊的形式,比如我要感谢我的mentor——Balto童鞋,总是在我需要的时候,无论是从整体架构,还是技术细节都会给出指导性的意见和建议。当然,还有如Nilson等大咖也会给我很多精神层面的指导,就不一一说了。保证团队质量除了要吸引人才加入,还需要做的就是快速的fire……这个么,大家都是童鞋,何必呢。但是我们随时欢迎对项目失去兴趣的童鞋赚到研究方向,或者实验室其他的项目组……索性,我们组里面的童鞋目前都在各司其职,努力的成长着。 除了对团队的人员控制之外,如何让团队共同成长也同样重要。毕竟我们都是学生,学生最主要的任务就是学习么。个人认为,团队成长最好的方法之一就是试错。而在学校,无疑是犯错代价最小的地方。那么我们就一个脆制玩具又一个脆制玩具的开发。至于这个玩具被用来做什么,我们可以选择性的忽略一下……然而,当我们发现我们有时间和能力把一个脆制玩具继续做下去的时候,就抓住机会做好它。

那么为了更好的让团队成长,我们还应该去尽可能的为团队争取资源和机会。这包括,说服老板长期专注于一个项目,至少是一类项目。这样可以让团队有足够的时间来试错,来成长。然后尽可能的去争取靠谱的培训机会,找真正在业内做过事情的人来分享经验甚至就某个方面去培训团队。 最后的最后,我们要注意“一个程序员的自我修养”……比如让自己写的代码尽量没有dup code,让代码通过Style Cop,让代码注释言之有物,写好单元测试。这些东西,大多是做一次容易,但是坚持很难。那么先从自己这里做起吧……套用初中作文模板的一句话:If everyone makes a contribution to the team, the project will be much better……

书里面提到了“新兵训练营”,这玩意真是让我眼红……其实也没啥好眼红的,我当时在modc做intern的时候,不就是相当于在新兵训练营待了半年么……只是那时候很多人还是把我当成一个小孩子……而不是一个同事那样的严要求……说来说去,还是自己懒散……算了,这个问题略过……其实我觉得我们这种工科院系,动手能力才是最重要的。大计科和国软比,我觉得就是差在了实训上面……近年来,MSTC(微软技术俱乐部)貌似在这方面做出了一些尝试,但是很遗憾,我从未能参与到其中。希望以后能有机会……(每当想起学弟学妹过来说:“学长,我好迷茫”的时候,我都觉得要是有一个新兵训练营该有多好)另外书里面的Hack-A-Month计划,我觉得太cool了……真心觉得好爽……但是想想现在,好残念……

另外,这本书还让我对Facebook产生了兴趣。再加上今天晚上去参加一个小宝宝的满月酒,和璐辛巴一起跟两个小宝宝(有一个是半岁,被带过来玩的)玩的很开心。更加深刻的意识到,只有毕业之后入职美帝的公司,然后结婚生娃才是王道啊……所以,除了提高技术,还要苦练英语。(发现好几天没有背单词了……)争取读研期间能有机会去国外的公司实习吧,或者争取去香港交流一段时间…… 总结的说一下,实验室到软件开发,困难很多,但是还有希望,需要努力。《打造Facebook》只要20+RMB,还是值得购买的。可以从书里面看到很多Facebook的逸闻趣事或者工作模式等……(我个人对于创业没有兴趣,所以没看最后一章……)  

转载于:https://www.cnblogs.com/hibix/archive/2013/01/11/2923200.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值