专栏首页量子位好程序员不写代码

好程序员不写代码

乾明 发自 凹非寺 量子位 出品 | 公众号 QbitAI

无剑胜有剑,是金庸武侠世界的最高境界。

现实的西方程序员世界里,也有与之如出一辙的精神:The Best Code is No Code At All。最好的代码就是根本没代码。

简单说来,无码胜有码

François Chollet

山景城坷垃斯剑派祖师François Chollet最近就连连发Twitter,传扬这种精神,赞同者云集。

他说:

程序员写多少代码不重要,重要的是解决问题的效率。

不用你写、不用你维护的才是好代码——直接用的现成解决方案嘛。

简单几句话,仿佛说到了众多同行的心坎里。他们高喊“太对了”,还用“@”呼朋唤友前来观摩。

Chollet有充分的资格发推布道:他是入门框架Keras的作者、Google研究员、《Python深度学习》一书作者,顶会论文没少发,打Kaggle竞赛也很厉害,最高排到过全球第17名。

圣诞之后新年之前的垃圾时间里,他这条不总结不展望不拜年的Twitter,已经被转发了700多次,收获了2100多赞。

多写代码就是好?

引来这么赞同的核心观点说来也简单:

代码是几十行还是几千行不重要,解决问题才是正经事。

就拿Chollet举的例子来说吧:如果老板让你搞个系统,监控有没有人在厨房做饭,该怎么办?

解决方案一摆,高下立判。

如果买个摄像头,花10000美元收集数据,然后亲自把控训练流程,奋战几周用低级库定制一个CNN-LSTM架构……那是糟糕的程序员,程序员里的战5渣。

好程序员会怎么办呢?

买几个5美元的温度传感器,几个小时收集完数据,然后用sklearn训练一个简单的逻辑回归模型。

一下午就能搞定,而且系统更可靠、更好维护,甚至,还没什么隐私之忧。

有人做饭,厨房自然会热起来嘛!如果只知道拿摄像头检测人形物体,简直是不知变通,费时费力还费钱。

不过这还不算惨,如果程序员搭了CNN-LSTM之后对效果不太满意,再花几周时间,用GAN来扩增数据细心打磨……

“认真”到这个程度,已经超出了战五渣的境界,可以叫那个啥队友了。

方向走错了,花再多力气都是白费。

而这些“认真”程序员花掉的力气,大概也会让Chollet一脸无奈:

就算你非搭CNN不可,为什么要用低端库定制呢?我的Keras里都打包好了,拿来试试不行就换别的啊……

评论区就有网友一针见血地总结:没必要重复发明轮子。

不要重复造轮子

这句话在各行各业都深入人心,程序员界也不例外。

作为Keras这个高级框架的作者和布道者,Chollet对重复造轮子这种行为,更是持之以恒地批判。

前不久,他还在吐槽某些“痛恨框架”的程序员,说他们自己从头构建的东西只不过是重新实现了框架的部分功能,而且设计拙劣、无法复用。

为什么这么推崇用框架呢?是为了站在巨人的肩膀上。那些大型框架是众多人想法和努力的结晶,想自己实现其中一部分功能?那相当于想靠0.01%的努力&脑力出人头地。

好程序员,要善用前人打下的基础。

不过,关于“重复造轮子”这个问题,争论很是激烈。Twitter上、Reddit论坛里,关于“什么时候用框架、什么时候手写”的讨论总是热火朝天。

想自己手动搭模型的程序员各有各的理由。比如说,为了优化程序的性能

这种说法太短视了,如果追求性能、低延迟,就要重写很多代码,这也没什么问题。

更多重造轮子的人,是为了学习

不少人都认为,在刚开始学习编程的时候,重造轮子不失为一个好办法,能够让初学者能更好的理解技术或方法背后的逻辑。

比如,如果你想了解PyTorch的原理,以及怎么让它运行得更快,最好的方法,就是自己实现一个简单版本的autograd。

虽然不能够得到一个比PyTorch更好的框架,但通过这个过程,你对PyTorch的理解会变得更加深刻,在之后用到PyTorch的时候,也会更加顺手。

同为Google研究员的David Ha就曾经和Chollet激烈争论过,David说:

从零开始(用纯Python、numpy、甚至JS)实现全连接网络、卷积神经网络、RNN、反向传播、SGD,然后用小训练集来训练这些模型是一种学习神经网络如何工作的好方法。在跳到框架上之前,应该花时间从这里收获宝贵的直觉力。

除此之外,还有一个充满无奈的原因:现成的轮子还真不一定能用。

没开源、不适合这个特定任务,都让开发者们面对轮子的时候很无奈。最近的“圣诞彩蛋”事件,更是让程序员们对轮子充满警惕:

谁知道作者会在轮子里藏些什么东西!

但切记,不论你为什么要自己动手从头实现一个算法,千万不要造出来一个方轮子。

One More Thing

知乎上曾经流传着这样一个问题:程序员真的很少写代码吗?

有网友嘲讽&自黑,说写代码多、天天敲键盘的程序员是“苦力”、“段位不够”。

也有不少人吐槽:还不是因为大部分时间都是在找bug!

话说回来,无论调框架还是从头搭、写文档还是找bug,都是为了实现功能。

你支持有码还是无码呢?

本文分享自微信公众号 - 量子位(QbitAI),作者:关注前沿科技

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-12-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 谷歌程序员辞职创业,赚钱还没原来多,码农工资有泡沫吗?

    程序员是真正的高薪行业。近年来随着AI行业的兴起,工资更是高到吓人,有公司甚至愿意为AI工程师开出百万年薪。关于这个现象,不仅我国人民喜闻乐见,美国人民也争论不...

    量子位
  • 用什么语言的程序员最抢手?招聘网站数据告诉你,Python都没进前五

    昨天,美国程序员招聘网站Hired发布的《2019软件工程师状态》报告中指出,基于市场供需来说,Go语言使用者目前最受招聘市场欢迎。

    量子位
  • DeepMind成立了一个新的秘密小组,还是研究AI与道德

    问耕 编译整理 量子位 出品 | 公众号 QbitAI 不只是王力宏在念叨AI与道德的关系。DeepMind也一直对这事儿念念不忘。现在DeepMind内部成立...

    量子位
  • 大家在寻找的高级程序员到底是什么样子的?

    我们的中国文化,对“面子”看的特别重,所以你会发现身边到处都是高级XXX,听着倍儿有面子,程序员也不例外。

    纯洁的微笑
  • 程序员和拉条子

    做拉条子是个苦力活,能把拉条子做好的程序员,写程序也不会差到哪里。 定谱 在做之前,你要么手边有本菜谱,要么心中有谱。你「看得见」,「闻得着」还未成形的美食:色...

    tyrchen
  • 漫画:程序员找工作—外包公司

    做为程序员主题漫画,喵 BB 叽已经持续更新半年啦!在这个特殊的日子里,我们特意为大家献上程序员专属同名微信表情包。点击左下角的阅读原文即可下载体验哦~,表情包...

    非著名程序员
  • 其实还是喜欢做那个专心敲码的程序员

    这是我去年九月份换工作的时候写的一篇文章,以为之前分享过呢,现在才发现,我只发了博客,没发公众号,现在我的岗位虽然有发生了变化,但是之前的分享,我感觉还是很有意...

    非著名程序员
  • 在中国,程序员的职业生涯有多长?

    前几天,我在一个编程的公众号上看到了一篇文章,其中提到的一点是,在中国的职场环境下,如果程序员到了30岁还没有突破的话,那就意味着这个程序员的职业生涯开始走下坡...

    LiveEdu
  • 如果有一天代码再也不用手敲文本,而可以通过图形模块化生成,那么现有的大部分程序员还要何去何从?

    作为一个程序员从技术角度来分析这个问题,在计算机更开始普及的时候很多人喊着完蛋了,很多东西都能计算机计算去搞,大家都得玩完,结果是不但很多人没有失业而且创造了新...

    程序员互动联盟
  • 程序员都用什么样的笔记本?

    程序员一般喜欢用thinkpad或者Mac,因为价位等方面的因素,还是用thinkpad多点,从事不同研发方向需要的计算机的配置也不太相同,现在开发软件要求的机...

    程序员互动联盟

扫码关注云+社区

领取腾讯云代金券