好程序员不写代码
乾明 发自 凹非寺
无剑胜有剑,是金庸武侠世界的最高境界。
现实的西方程序员世界里,也有与之如出一辙的精神: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,都是为了实现功能。
你支持有码还是无码呢?
— 完—
相关文章
-
热点|加拿大最大比特币交易所创始人病逝1.47亿美元资产或将陪葬
-
PHA挖矿项目有哪些价值
-
德国包装法之拿到授权许可后需要做什么?
-
奢侈品为什么喜欢上京东?
-
网上遇到风控部门审核注单异常怎么办?
-
【虎嗅晚报】滴滴顺风车公布产品方案征求意见,仍无上线时间;欧盟:将对高通处以2.42亿欧元的罚款
-
大佬言论 | 王慧文:如果一味追求用户体验,一定会倒闭
-
零点有数加盟“数字化生态联盟”,上海宝山在推进城市数字化转型上有大动作!
-
腾讯云后阿里云再出事故,企业上云如何避免云计算事故造成损失?
-
【虎嗅晚报】百度副总裁回应争议:问心无愧;摩拜单车更名“美团单车”
-
「腾讯吐个槽」产品测评大赛报名启动, iPhone XR等你来拿!
-
网络文明素养微课堂——文明上网做网络文明传播者
-
起底卖假货的网红二驴夫妇:小学文化爱戴金链子,直播间里扇耳光!
-
涅槃中的人人车最终能成为凤凰吗?
-
国家药监局公布上海新兴相关产品初步调查结果|过去24小时发生的新鲜事儿
-
Flutter 如何帮一条 “鱼” 游得更快
-
数据赋能营销 品牌破局之道 ZOL科技互联网生态研讨会盛世将启
-
【钛晨报】大众因“排放门”赔6.2亿欧元;捷豹路虎全球裁员一半,2万人下岗失业;传百度或将收购触手直播
-
年还没过完脉脉就完?官方回应下架原因:版本升级近期恢复
-
聊一聊:你现在会频繁使用5G吗?
-
浙江知库融媒体大数据平台启动开发
-
改革开放40年 曙光的蜕变与创新
-
PC安全警告:注意电脑里的老版本软件风险
-
瑞幸北京裁撤80家店,今年要关掉近五分之一
-
偶邦与斗鱼官宣合作,苹果发布会AI主播亮相
-
参与「AI最佳雇主」投票,免费拿iPadmini等5重大礼!
-
搜狐第三季度财报同比减亏66% 股价大涨近7%
-
周鸿祎:我们要放弃幻想,从没什么系统能固若金汤
-
【花开无烟•竹安不爆】和新泰应急青年一起,说声“我愿意”!