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

独家爆料: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里的文化氛围是非常开放的。如果某人做了一些很有意义的事情,他还可以自己写总结,讲述做了什么工作,主管会根据这些“成就”有加分。因为有时候他做的这些工作不一定被很多人知道,可能是涉及到其他部门的工作,帮助兄弟部门做了很多改进,相关的人能知道,但是本部门的人不知道。可以通过这种方式,把自己做过的一些比较重要的事情体现出来。

回顾银行数据的可用性和一致性历史 Qubole:托管在AWS平台上的Hive服务 自由操作系统 Debian 正式发布7.0版本 4月份浏览器份额:IE 8仍居第一,IE 10翻番 亚马逊正式在华推Android应用商店 收入3:7分账 不要男孩,只允许女生参加的四所编程学校 下一波App机会在哪里? JS1K 2013优胜作品公布 3D蜜蜂仅获亚军 专访:前新浪网架构师徐佳转行卖水果背后的故事 FBI密码挑战,你能解开吗? 从0到1只需一天:Twitter后PC时代物联网“敏捷”开发之路的探索 机械生物已经面世 只少个“大脑”而已 百度正式宣布3.7亿美元收购PPS视频业务 比尔·盖茨:iPad让人失望 用户需要Surface Dropbox将于今年夏天举办有史以来的第一场开发者大会 Clustrix Sierra分布式数据库系统:云计算时代的MySQL 英特尔出杀手锏 发布低功耗、高性能Silvermont微架构 10大最实用的Raspberry Pi扩展设备推荐 主流浏览器性能测试,IE10百分百完胜! TortoiseSVN的基本操作 再见,Fireworks! 投资者告诉诺基亚CEO:他们快没耐心了 直接拿来用!最火的Android开源项目(二) 营收奇迹:三消游戏Candy Crush Saga成功启示录 马化腾对话李连杰:移动互联网的能量有多大? UC与趋势科技携手,移动浏览器加固安全 乐视发布超级电视X60 售价6999元 巨头们抢滩或已结束?EMC掀起首场SDN登录战 CloudStack创始人梁胜:让中国软件走向世界 ArduinoDroid:让你在Android设备上开发Arduino 码农们的机器人:LEGO MindStorms EV3 如何像Windows Form一样,弹出 .aspx的Web文件。 请教一个问题。急 请问如何才能链接到中文文件?谢谢。 初学者的一个很低级的问题! 未老先衰吗? 用什么方法可以把DBGrid查询的内容打印处理,查询是用sql语句的,有什么好控件? 怎样重烖 滚动条的滚动消息? 请问高手:IIS5.0+PHP4.0安装问题 怎么样取得数据窗口中所有的TEXT和计算字段的列表? 如何实现(单击一个下拉菜单,同时刷新另外一个下拉菜单中的值??) 我的Red Hat 7.3启动盘丢了。怎么办? 哪里有讲Object Pascal的书下载? vb里怎么调用vc写的dll,还有为什么vc的dll不好用regsvr32直接注册,老说dll enter point not found ★★★同志们好,我想在北京找工作,什么人才网站比较好? 怎样实现在一个窗体中控制另外一个窗体及其控件? 创建一个线程来接收串口数据,为什么正常收一段时间后(10多分钟)就不再收任何东西了? 关于设计一个防震系统!欢迎讨论! 请问各位高手!Win32 SDK里面有没有用来设置麦克风音量的函数? 用.Net技术实现:与扫描仪直接连接,将扫描图像保存为文件,其他子内容保存到数据库中? 请大虾介绍一款好用的web报表打印控件,最好有说明文档,谢谢 CString类型怎样转换成unsigned char * 关于使用System.Net.Sockets时的一些不明白的问题 关于.net编辑器操作的问题? 将main函数移动后出现的编译错误 请各位大佬帮忙,sql server是否有..start with..这样语句? 读"征集2001参加工作的程序员的工作感受和打算"有感! 我知道问提出在那里了,再问: 求职 怎么修改RTE控件的字体大小? 删除文件的问题 出大问题了?????!!!!! 有没有人用CORBA,JBUILER编写JSP? 请问有没有vc.net方面的好书呀 哪位大侠在使用JMAIL3。7来发送邮件时,出现,邮件成功发送但收件人收到的邮件没有内容???? 关于nt4.0下 hp -cdrw 不见了 在redhat linux中怎样配置dns和apache。本人是初次接触,希望您能详细点,多谢!! 在FTP服务器上删除文件用什么函数啊 一个奇怪的网络连接现象!请高手帮忙! @怎样比较数据库中的时间??急急急!!! 我知道我搞不定的,有高手肯定可以的!!!!!! 关于frame的问题 如何在Turbo C中加入汇编代码 vb中如何遍历文件夹 一个关于COM注册的小问题 急!如何安装 SMTP Service? 怎么设置treeview中每个分支中的背景色? first time vb中如何遍历文件夹 怎样调用别人的东西? 询问关于JAVA类库的问题 如何在.NET开发环境中为控件写事件与方法的代码? 孟加拉的天气是怎么样的? 盐的水解,弱电解质的电离,沉淀溶解反应均为化学反应.这句话对吗? 一个标有"220V,120W"的电灯,接在照明的电路中,求:电灯的灯丝电阻是多大?正常工作2一个标有"220V,40W"的电灯,接在照明的电路中,求:若加在电灯上的实际电压220伏此时灯泡的实际功率是多少瓦?课 孟加拉国的官方语言是什么? 多余的细胞是不是可以自我破坏? 高梁涨白了脸 稻子笑弯了腿 怎样修改病句 类是木马得病毒! 高中地理必修1里各种气候类型的特点 关于人跑步做功的问题?计算的时候是身体起伏高度变化*G 还是F*S?人跑步的时候重心应该有变化啊,应该也有克服重力做功吧.F*S,- - 谁能告诉我是什么力做功咧? 蜘蛛分几类,哪些有毒 电离反应是不是都是化学反应 人跑步时什么力对人做功? 有毒动植物有哪些类型 桃和草莓共有980克,橘子和草莓共有870克,桔子和桃共有350克,桃桔子草莓各有多少克? 通过相同的路程,骑车和跑步哪个费力些?哪个做功大?为什么? MnO2在酸性条件下与双氧水反应离子方程式 水和碳可以变成石油吗 2-乙基戊烷命名错在哪,C5H12 C4H10有几种物质 还原糖有哪些 一个西瓜换二个梨,一个梨换三个橘子,一个橘子换两个草莓,一个西瓜换几个草莓? 水为什么不可以变成石油呢 关于还原糖为什么蔗糖不属于还原糖? 西瓜、橙子、甘蔗、草莓分别是多少级的作物? 关于弱电解质的电离问题1)将等质量的锌粉分别投入10毫升0.1摩每升的HCL和10毫升0.1摩每升的CH3C00H溶液中.若锌不足量,反应快的是HCL;若锌过量产生H2量相等.为什么?2)将等量锌粉分别投入c(H 还原糖是什么 电瓶车充电器充满电指示灯不能跳转了,什么原因啊?怎么办?用手动下电瓶那头的插头或拔掉再插就是绿灯亮,如果先插电瓶那头,再插电源那头仍是红灯亮,刚换的四块新电池,还是那样,修理人 弱电解质的电离度是指当弱电解质在溶液里达到电离平衡时,溶液中已电离的电解质分子数占原来总分子数的百分数.常温下,某一元弱酸HA的电离度为a,溶液的Ph=1 lga,则该HA溶液的物质的量浓度 用15吨甘蔗制成1.9吨糖,要制1吨糖需要甘蔗多少吨? 实验室制备氢氧化铁胶体时,怎样检验制备是否成功 弱电解质的电离度跟什么有关.有什么规律..当其他条件改变是.弱电解质的电离度怎么改变 碘和氯化氨的混合物加热发生什么化学变化? 在化学实验室里制备氢氧化铁胶体首先用洁净烧杯取少量蒸馏水,用酒精灯加热至沸腾,然后向烧杯中逐滴加1mol*L^-1氯化铁溶液,并继续煮沸至液体成透明的红褐色即得氢氧化铁胶体.某同学在活 某灯泡接在220V的电路中是,消耗的电功率是40W,通过灯丝的电流是多大?等死的电阻是多少?条件和上面的相同,工作10min,消耗电能多少J? 氯化氨溴化氨碘化氨的稳定性比较?NH4X化合物的稳定性比较?是不是用大大小小规则判断?氨根离子是酸还是硬酸?半径算不算大? 实验室制备氢氧化铁胶体的化学方程式 碱性:Mg(OH)2>Al(OH)3.为什么?相同浓度的强碱和弱碱是指OH占的质量分数还是整个碱性物质所占的质量分数?照你们说的,那如果我只告诉你有两种酸性物质:盐酸和醋酸,能不能直接从他们的化学 用加热法鉴别氯化氨、碘化氨、碳酸钙、碳酸钠 为什么射击时人会向后晃动用物理知识解释 亚硝酸根离子与铝反应,强碱性时生成什么 为什么碘化钾可以使碘从氯化碘和溴化碘中完全游离出来? 为什么一瓶标明剧毒的毒药却对人无害,为什么? 怎么比较mg(oh)2 al(OH)3 碱性强弱?做到一题,往两沉淀加NAOH,AL(OH)3溶,MG(OH)2没溶,就可以了.为什么?可不可以测PH啊. 为什么碘化钾可以使碘从氯化碘和溴化碘中完全游离出来 0.3mol的稀硝酸能溶解多少铁?能溶解5. 亚硝酸根(NO2-)在碱性条件(OH-)下与铝粉(Al)发生反应的方程式 解释高压锅煮饭熟得快的道理————用物理知识! 用硝酸(65%~68%)怎么调配3mol/L?我要调配出100ML就好了.要多少硝酸和多少水(用质量或体积) 我要具体公式和算法.算出来看 以后自己调配比较方便 硝酸铵是强电解质吗 那电离呢?他是盐 也就是说是强电解质吧 在水中的电离是完全的吗?写方程式的时候写直等于? 蔗糖是否是还原糖麦芽糖水解生成两分子的葡糖糖,所以它是还原糖,可是蔗糖水解生成的是一分子的果糖和一分子的葡萄糖,而葡萄糖和果糖又都是还原性的糖,为什么蔗糖不是还原糖呢? 向100ml 3mol/L的硝酸中加入5.6g铁,会完全消耗吗? 什么是台湾岛最大的港口 碳酸氢铵和氯化钠反应的原理是什么? 怎样制取氢氧化铁胶体? 强电解质KHSO4的电离解释那个KHSO4真烦---它是强电解质对吧,但它在水中电离出K+ H+ SO4 2- 而在熔融状态下 电离出的是K+ 和 HSO4 2- 这是怎么一回事啊?还有,这个NaHCO3 在水中怎么又只能完全电离出 孟加拉国官方语言是什么? 关于弱电解质的电离为什么弱电解质加水稀释后离子浓度减小我能明白加水后会促进电离,但是为什么离子浓度减小 台湾省第一大机场是什么 孟加拉国属于哪个洲?EM? 弱电解质的电离醋酸溶液中存在电离平衡CH3COOH=(可逆号)H+(氢离子)+CH3COO-(醋酸根),若只改变下列条件之一,溶液中水的电离平衡不移动的是( )A.升高温度B.加水C.加少量醋酸钠晶体D. 台湾省最大的海港是明确
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘