Airbnb女神工程师朱赟:写代码的四个境界

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
查看查看374 回复回复3 收藏收藏 分享淘帖 转播转播 分享分享 微信
查看: 374|回复: 3
收起左侧

Airbnb女神工程师朱赟:写代码的四个境界

[复制链接]
小开开 发表于 2016-8-16 04:06:42 | 显示全部楼层 |阅读模式
快来登录
获取最新的苹果动态资讯
收藏热门的iOS等技术干货
拷贝下载Swift Demo源代码
本帖最后由 小开开 于 2016-8-16 04:08 编辑

从你拿到第一份码工的工作开始,你就可以说你会写代码了,因为毕竟面试是需要写代码的。

然而会写面试的代码于工作是没有太大益处的。仅仅是你必备的一项找工作技能。

真正能写出在 production 也很 solid、很靠谱的代码,可能很多人都经历过类似的不同阶段:

Airbnb女神工程师朱赟:写代码的四个境界

Airbnb女神工程师朱赟:写代码的四个境界 - 敏捷大拇指 - Airbnb女神工程师朱赟:写代码的四个境界

题图:by 杨江明,Airbnb 的一位比我牛得多的工程师




1、第一阶段:抄代码

大部分公司对于比较新手的程序员,不太会上手就让你从无到有的开创一个新的代码库。而是在某一个代码库里增加或者修改一个功能。或者至少又类似的代码库可以参照。从产品的角度说,就是增加或者修改一个已有产品的特性。很多时候,公司的代码库已经有了很多类似的代码模块可以参考,而这种代码写起来其实没有太大技术难度,按照前人的写法写就行了。

叫抄代码有点偏颇,但是什么意思,我想很多人都能体会。我在 Square 的前半年,感觉大部分代码是这么写出来的。其实收获会很大:第一,你见识了这样的系统的架构是什么样子的。第二,很多地方别人为什么要那么写,反复琢磨,琢磨透了,就会学会处理实际编程中的很多技巧。比如怎么处理并发,怎么处理异常,怎么减少代码耦合度,等等。第三,很多语言的巧妙之处,系统设计的精巧,这些都是单纯读文章或者读代码很难体会的,自己从需求出发去理解这样的方案,其实学习语言的效率也是事半功倍。




2、第二阶段:学代码

当我们对业务逻辑,代码库都比较熟悉之后,这个时候多看看进阶的书和各种学习资料,我觉得是最有效的。因为你有了一定的基础,所以阅读起来更容易理解。更重要的,是书本或者资料里提到的一些优化方案或是设计技巧,会特别容易引起共鸣。

记得有一次,我要写一段处理 REST API request retry 情况下怎么保证 request 的执行在 timeout 或是 lost 等情况下都能保证 service 的功能函数被且只被调用一次。因为涉及到异步和并发,所以有很多奇怪的情况需要考虑。那几天满脑子里都是在想各种不同的出错场景该怎么处理,如何正确使用 idempotency key 来保证实现的严谨和正确性。就在这个时候,很幸运地看到一段类似情况的处理的代码,当时再读这样的实现,就对其简洁和全面无比欣赏,感觉就像发现了一件设计精巧、打造完美的艺术品似的。

工作中从别人、从资料积累的这样的学习慢慢会变多,这个时候,经常可以在对别人的代码审核中给出比较有价值的建议,或者能够对已有代码库做出进一步的优化和完善。




3、第三阶段:心中有代码

虽然说很多时候,大家觉得程序员这个职业,年轻人更有优势。我倒真的不是完全认同。一个程序员如果坚持不断的上手写代码,不断思考,不断学习,这样积累下来的经验应该只会让自己不断增值的。

前几天和二爷说笑,二爷说,和一些牛人聊技术,聊团队,聊模式,往往之后会觉得技术之外的东西更有帮助。其实就是这个道理,技术不是靠一次能讲清楚的,牛人一次分享会给你一些启发,但是这些启发有多少能转化到产品中,其实还是有很多别的更重要的因素的。

所以很多公司都需要挖一些这样的高级甚至高高级的程序员,因为他们是心里面有代码,知道一个service 应该怎么写,会有哪些坑。哪怕是写出的只是几十行代码,其实可能都是多少年经验积累下来的最宝贵的经验。




4、第四阶段:心中无代码

这句话好像有点虚。最近看了曹政哥的一篇文章《从值乎谈执行力》,有一段觉得写得特别好。

以前我请大牛云风给我们讲过课,讲系统架构设计,他口头语也是,这个什么什么其实很简单,从头到尾你看不到他卖弄什么技术,讲什么特别高深玄奥的东西,但是人家搞出来的系统确实好用,后来提问环节我们有员工问过一些新的技术名词相关的什么什么,云风也很直白,很务实的说我们目前这个需求,用不上什么什么的。我就觉得这是重剑无锋的一个典范;现在云风他们团队分享的skynet开源引擎已经有非常多游戏团队在用,代码量也不复杂,功能也不算丰富,但是很实用的一个轻架构,能极大减少某些类型游戏的服务端开发成本。

这恰恰引起了我的一点感触。最近我们 Airbnb 支付组在重构我们支付系统的 API,大家都知道 Airbnb 支持 191 个国家 75 种货币 几十种不同的支付方式,在设计中需要保持 API 的简洁,又要留出足够的灵巧性可以方便的扩展和支持任何一种已有的或是新的支付方式。在设计和实现的过程中,所有的编程模式要熟悉,却不可能硬搬任何一种模式。只有真正吃透了需求和所有的编程技巧,才有可能做出干净而实用的方案。(题图作者杨江明也是这个系统的主要架构师。)




最后小八卦一下。硅谷码工随着等级的上升,收入不是呈线性增长,很多时候是翻倍地长的。我觉得其实是合理的。所以在初入职场面临的很多选择,其实还是应该以提高自身水平作为最重要的因素。年薪上差的那几万十几万,如果好好发展,到了后面,真的就不算什么了。第一份工作为了 package 做选择,真的不值得。



如果你觉得你的代码之路和我说的不一样,欢迎回复留言吐槽。然而我只能放出 50 条。




相关内容

AirBnb女神工程师视角:以创业者的姿态做一名工程师

Airbnb工程师朱赟Angela杂谈API的基本原则、框架、设计

Airbnb工程师朱赟:漫谈产品的国际化和本地化,互联网的本质是 “人生人”?!

Airbnb女神工程师朱赟:写代码的四个境界

Airbnb女神工程师朱赟:什么才是Code Review的正确姿势?

都看到这里了,就把这篇资料推荐给您的好朋友吧,让他们也感受一下。

回帖是一种美德,也是对楼主发帖的尊重和支持。

*声明:敏捷大拇指是全球最大的Swift开发者社区、苹果粉丝家园、智能移动门户,所载内容仅限于传递更多最新信息,并不意味赞同其观点或证实其描述;内容仅供参考,并非绝对正确的建议。本站不对上述信息的真实性、合法性、完整性做出保证;转载请注明来源并加上本站链接,敏捷大拇指将保留所有法律权益。如有疑问或建议,邮件至marketing@swifthumb.com

*联系:微信公众平台:“swifthumb” / 腾讯微博:@swifthumb / 新浪微博:@swifthumb / 官方QQ一群:343549891(满) / 官方QQ二群:245285613 ,需要报上用户名才会被同意进群,请先注册敏捷大拇指

嗯,不错!期待更多好内容,支持一把:
支持敏捷大拇指,用支付宝支付10.24元 支持敏捷大拇指,用微信支付10.24元

评分

参与人数 1金钱 +10 贡献 +10 专家分 +10 收起 理由
Anewczs + 10 + 10 + 10 32个赞!专家给力!

查看全部评分

本帖被以下淘专辑推荐:

JoyceChu 发表于 2016-8-16 18:00:57 | 显示全部楼层
我还没达到第3阶段
采姑娘的小蘑菇 发表于 2016-9-20 15:10:31 | 显示全部楼层
硅谷码工随着等级的上升,收入不是呈线性增长,很多时候是翻倍地长的。我觉得其实是合理的。


公司内部是不可能的,除非跳槽
不是我教你诈 发表于 2016-10-15 21:40:08 | 显示全部楼层
说到“大牛云风”,请看《扒底裤了:怎样识别社区里的水货程序员“大神”!
http://www.swifthumb.com/thread-3684-1-1.html

4、最隐蔽的水货

云风当属最隐蔽的水货。都是实打实的产品,代码,难题,分析。内容都是网络,高性能,并发,分布。但不幸的是,老子才是这方面的行家。就拿他最新那个所谓的乐观悲观锁来说吧,里面每个结论每个分析我都指出其不靠谱之处。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

做任务,领红包。
我要发帖

分享扩散

都看到这里了,就把这资料推荐给您的好朋友吧,让他们也感受一下。
您的每一位朋友访问此永久链接后,您都将获得相应的金钱积分奖励
热门推荐

合作伙伴

Swift小苹果

  • 北京治世天下科技有限公司
  • ©2014-2016 敏捷大拇指
  • 京ICP备14029482号
  • Powered by Discuz! X3.1 Licensed
  • swifthumb Wechat Code
  •   
快速回复 返回顶部 返回列表