说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

独家爆料:Facebook移动客户端开发揭秘

HTML文档下载 WORD文档下载 PDF文档下载
Facebook移动客户端开发团队在不断壮大。现在它有足够的人力,用native来实现以前HTML的功能。同时native在性能方面也有更多优化的空间。为了用户体验Facebook发布纯native版本的客户端应用也就不足为奇了。

目前来说,由于相关政策法律的原因中国国内用户无法正常登陆Facebook,但对于国内的软件开发者来说,Facebook内部的开发环境和氛围还是非常值得我们膜拜的。这是一个非常独特而庞大的软件开发团队,汇集了国际上最为顶尖的软件人才。今天,就为大家聊聊在Facebook内部的软件开发细节。

Facebook内部工程师分享

在Facebook内部经常会有一些人搞讲座,分享一些开发技巧,或者是想推动某些概念和思想。比如有人呼吁让大家都写单元测试,那他就会做很多讲座,跟大家讲怎么做单元测试,为什么要做单元测试。

还会尽量做一些类似Play Programming的活动,就是教大家怎么编程。因为有时候,有些代码真的很难写单元测试。布道的人甚至会来开发一些框架和工具来教你。还有一些例行的分享,比如说一个产品发布以后,就会有一个类似于产品发布的Review分享会,讲产品开发过程或发布过程中遇到的各种问题以及解决方法。最重要的是,在Facebook每一位工程师都可以看代码库里所有的代码,这可是Facebook的整个代码库!并且在代码库也都有WorkHistroy,可以看到谁写了某行代码,或者写的哪个方法。如果你搞不懂,在IRC频道里面,就直接去Ping这段作者,可以通过这种方式可以快速的了解和解决一些问题。

Code Review人人都是监察关

在代码审查方面,有一个流程叫Code Review。在每一次代码改编,都必须经过Review被批准,才能进入代码库。但在整个Facebook中,并没有一个专门的Review小组,但人人都可以Review。在Facebook中没有结对编程,但Code Review你可以看成是另一种形式的结对编程,它是异步的,大家泛结对,不仅仅是两个锁定起来的人。

一般来说我们组内大家互相做Review。但是如果你有一个改动涉及到其他组,那么可能你要看一下与谁有关,发给他参与Review。具体做Review时,每个Review你都是在一个浏览器里面Review。你可以就具体到每一行代码给出你的反馈意见。当然这个Review像一般的网站一样,你可以访问,可以看到的很多讨论,能看到每一个版本的改变历史,所以Review是一次很好的学习机会。

在Facebook中,任何对代码的修改都是以diff的形式完成的。diff的形式与git有一些差别。git是基于现在代码进行的修改,支持新实现功能或者bug修改。比如这个文件里增加了一行,这行的内容是什么,这行删了一行,就是相当于一种文件的修改。而diff简单来说,就相当于你做的一个任务,做了一个代码的修改,加了文件,或删了文件,或者对代码的修改。

当然在Facebook Group里面大家也会讨论问题、问问题、各种交流等。然后有人也会在里面进行布道。比如为什么要坚持某些设计原则,或者分析方案A,出发点是什么,好处是什么,可能的缺陷是什么。如果是方案B,好处是什么,缺陷是什么,都会有这样的讨论。

关于软件工程师的考核方法

据闻,在Facebook移动客户端的代码库中,是消息推送部门的Tech Leader的贡献量最大。但对于软件工程师来说,每个月对于代码库的贡献量并不能完全反应出个人的价值。这只是一个数字,随便看看。因为也许他只是改了一行代码,但有可能把整个系统架构都改了。字数只是一个数值,可以看看,只是看看而已。

对于软件工程师的考核主要是,发布了什么样的功能,有多少用户,用户对它喜欢程度如何?这是可以衡量的,大家都可以看到的。还有其他一些方面,比如大家互相之间写的Review,这些能捕捉到一些额外的工作量。比如说有人在整个工作中对同事的帮助和提升成长很大,但是他有可能没有体现在那个里面,没有体现在他发布多少代码里面。所以Facebook的考核是综合性的。平常软件工程师也都会写周报,一周做了什么,也让大家知道,让主管知道。

这个周报会发给主管,但所有人都可以订阅。在Facebook里的文化氛围是非常开放的。如果某人做了一些很有意义的事情,他还可以自己写总结,讲述做了什么工作,主管会根据这些“成就”有加分。因为有时候他做的这些工作不一定被很多人知道,可能是涉及到其他部门的工作,帮助兄弟部门做了很多改进,相关的人能知道,但是本部门的人不知道。可以通过这种方式,把自己做过的一些比较重要的事情体现出来。

强大的C#随机字符串生成器 C#上传文件到WEB服务器 WebClient的超时设置 MySQL备份脚本大全 c#对rar或zip文件进行压缩解压缩 c#采用递归非递归两种方式遍历目录下所有文件 使用DataContractJsonSerializer进行JSON序列化的JSONHelper类 宏病毒ToDOLE及专杀工具 如何构建和运行基于cocos2d的HelloWorld程序 C# .net 2.0 以Gmail发送Smtp邮件 ASP.NET优化性能方法之一:禁用调试模式 开源SMTP和POP3邮件服务器 三星:在专利上不会和苹果妥协 不止谷歌,微软也有自己的眼镜计划?! Windows 8商店应用总数突破20000大关 硝烟弥漫:三星起诉苹果最新iPad、iPod侵权 效仿Google Facebook欲整合Instagram用户数据 与苹果全面竞争?传微软明年推Xbox机顶盒 微软Ralph Haupter:WP8即将在中国上市 开发者黄金时代来临 Paul Graham:Y Combinator创始人成长轨迹 我们需要强密码吗? 为了改变?英特尔CEO宣布将于明年5月辞职 传苹果下一代Mac OS中将整合Siri及地图服务 TripAdvisor:使用AWS比服务器托管成本节省50% [MDCC精华]亚马逊AWS布道师Kingsley Wood:灵活IT架构之道 亚马逊诉讼彰显谷歌在公有云领域威慑力十足 AWS全球创业大赛 奖金100000美元 YY:破冰而出,成功上市 Xtreme Labs工程师:Android开发常陷入的五大深坑 Elon Musk:没了乔布斯的苹果干不过谷歌 旁门左道:第一次开发移动游戏就赚到28623美元 帮帮忙,解决一个不是asp的问题,给分!! 如何实现这样的功能 笑死不陪命!! http://top2u.net/~ec-soft qq设计 奇怪的VF,怎么修改Label1的caption? 赠送小程序者有分 如何配置外置Moderm??? 用户游览时在页面上启动了一个Timer,如何在用户关闭游览器时停止此Timer? 关于JBuilder中MSSQL2000在EJB设计时DataSource的连接问题?求救!!! linux 0.01是在UNIX上开发的吗? 裸机上怎么成功引导它的呢? 大家看看我程序错在何处,谢谢了 winroute代理怎么设置让指定的用户只能在指定的时间上网。。。 怎样写一份采用J2EE的框架的软件测试报告? C#还能使用BHO吗?如果能100分求C#使用BHO(browser helper object)的例子。 请问如何制作Win98启动盘(我现在没有Win98的机子)? 关于换行的问题 javascript判断操作系统 一个奇怪的time问题,偶是菜鸟了~~~~~~~~~~~ d7版本所带的qr是什么版本的? 请教:创建数据库表时,怎样突破默认字段长度? 免费注册 Jboss 或 应用服务器 除了网上有,买d版的不知道有没有啊,下载太慢啊!! datagrid 中的一例为4位小数的数据,如何在datagrid设置使其值显示为带二位小数?? 让你的企业、产品、网站一夜成名 企业中一般如何写数据字典阿?急,在线等待 文件上传 如何将txt文件导入mdb文件之中,在线等,解决问题立即给分。 在菜单中打开MDI窗口,但是每一次点击,就出现一个新窗口,如何只出现一个? 大侠,救命啊,这个编译错误,折磨我好几天了,如何解决啊?????? 求C语言程序:从键盘上输入若干个证书,去掉重复的,将剩余数的前n个输出显示 新手发问(有关C#和MySQL数据库)! 试用期的前几天会被安排做什么?(对于一个没有一点工作经验的大学生) 如何合并两个字符串?急!!! 请问哪有jive 的中文版原代码下载啊?? jdon的压缩包不好使!!谢谢 关于静态方法! tomcat 406 错误 如何遍历任务栏上已经打开的程序呢? 动态添加commandbutton后如何写其clicked()的事情 今天晚上可能要時間長了,那個算法的流程你看看,服務器的負載太大了,不斷的連接,數據碎片太多了 把dataSet里的多个表插入数据库时,怎么把这多个表作为一个事务? tomcat报出406号错误 CDONTS.NewMail发送邮件? 继承的问题 我的问题 C++ Primer和C++ Programming Language 哪本好一些呢? 哪位朋友可以给一个PHP4导航栏的代码(1 2 3 4 5 6 这样的) redhat9.0是否支持ich5 在VS2002中可以用的设置星期格式的代码,在VS2003下不能用,为什么? 请教一个关于时间的SQL语句! 关于多级菜单问题 我的电脑里的chm文档打不开了,求救~~~~~~~~~~~! 购买QQ,共1000分(1) 春风已解意, move the box london 23关怎么过? I Want It That Way (Max Martin/Andreas Carlsson)YeahYou aremy fireThe onedesireBelievewhen I sayI want it that wayBut weare two worlds apartCan't reach toyour heartWhen you sayI want it that wayTell me why(Ain't nothin' but a heartache)Tell me why(Ai move the box london 6 怎么过关 you ain't nothin like,the girl i used to know 中ain't nothin 摩凡陀怎么样 DESERT-B是什么? snail&sofa啥意思? 求暴走漫画熊猫英文表情包 就是什么 You are too weak JJ FLY那些的 ①⑥零零⑥⑤零③⑨⑦ see you tomorrow bright and up bright and early什么意思?没有如日中天的意思? 韩婚姻报告显示晚婚成潮流 姐姐新娘现日本前首相博客曝出核能阴谋论 被批可外媒称土为导弹采购留后手 以防与中国民调称奥朗德成为法国史上最不受欢迎总美宾州大学将向该校性侵案受害人赔59看到蛇会害怕?研究称恐惧有助灵长类避普京称索契冬奥会欢迎同性恋者参与 不科学家称半数早产因细菌感染 正研究简老奶奶订错机票搭错机 格拉纳达差一字澳大选后首个民意调查显示阿博特支持率“飓风级”大风暴袭击致英国南部22万共青团中央否认参与指导中国校花大赛12月10日合肥首开至桂林、南宁、哈合肥将“组团”研发公共安全技术河北连发雾霾“黄牌” 保定石家庄邢台第五届香山论坛在北京开幕【呼声回应】网曝“西双版纳旅游被民间世界互联网大会凝聚全球力量解放军驻澳门部队完成轮换“十个人评价,应该有八个人是公道的嘛中国冰上项目“偏科”? 吉林从民间选海关总署副署长邹志武带队在深圳进行专
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘