立志做国内自动化/AI测试领域最好的原创公众号。欢迎微信关注公号"测试不将就"(ID: awesometest),更多原创文章在路上。我们的口号是:“插上自动化/AI的翅膀,软件测试也能高大上”。
作者:Dr.萧(独孤球是),工学博士/资深码农/技术写作者,欢迎添加作者微信(slxiaozju)交流。
Keras是现今最流行的开源深度学习框架之一,无论是在工业界和在学术界都有深厚的影响力。发明Keras的是一位来自Google的大牛,畅销书《Python深度学习》的作者,Francois Chollet。这位哥们牛到什么程度?简单地举有3个数据:Google Scholar单篇论文引用次数3.8k+,Github单个项目STAR数量41k+,Medeium单篇博文获赞数15.8k+。
作为享誉世界的人工智能大牛,Francois 还有另外一个身份,那就是软件工程师 (Software Engineer),俗称码农。再高大上的算法,也需要通过编程(Coding)来落地,并以软件产品的形式去服务用户。因此,编程能力和软件工程思想,对任何的算法研究者/算法工程师/软件开发者来说,既是基本功,也是需要持续打磨的重要本领。
那么,作为码农的Francois,是怎么看待编程和软件工程的?最近,他的一篇在Medium上获得15.8k+个赞的博文,就是回答这个问题的。虽然文章的题目是《写给自己的编程笔记》(Notes to myself on Software Engineering),但其实也是写给所有程序员的。经过我翻译,归纳和整理,最后提炼出来的干货建议共20条(Francois的完整版建议请关注本公众号,发送“干货”一词给后台,即可获取),列举如下。
1,可读性(Readability)是编程的基础性要求。因为代码不仅仅是用来执行的,代码更是团队成员之间的一种沟通方式。
2,编程需要品味(Taste)。什么是品味?品味是一种对简洁性(Simplicity)的无限渴望和极致追求。
3,学会拒绝需求。每项新需求的开发成本都会超出最初的估计,尤其是维护成本,文档成本和用户的认知成本等。经常问问自己:我们真的应该这样做吗?答案通常是否定的。
4,当确实需要支持新的需求时,正确的做法往往是基于现有功能进行扩展,而不是完全另起炉灶。
5,针对持续集成(CI)的投资是值得的,这样可以确保所有人处于一个自信(信心比黄金还重要)的编程环境中。
6,没有提前计划好一切没有关系,先尝试一下然后看看结果如何。像回退(Revert)有问题的代码一样,尽早回退通过实践发现是错误的决定。
7,一个问题看起来困难,不意味着它的解决方案必须复杂。在编写任何代码之前,请确保自己所采取的解决方案不能变得更简单。从第一性原理出发去处理所有事情。
8,API拥有用户,因此也需要注重用户体验。保持对用户的关心,无论用户是初学者还是经验丰富的开发人员。
9,始终寻求减少用户在使用API过程中的认知负担:自动化可以自动化的内容,最大限度减少用户所需的操作和选择,不要暴露不重要的选项,设计简单和一致的工作流程。
10,API的命名和参数的命名应该是聚焦在API解决了什么问题(What),而不在API如何解决问题(How)。
11,聚焦端到端的工作流,而不是一组离散的原子功能。程序员不要问“应该提供哪些功能”,而应该问“用户场景是什么?对于每个用户场景,用户最佳的操作顺序是什么?怎么样用最简单的API支撑这个工作流?”。
12,错误消息(Error Message),以及任何在交互过程中向用户提供的反馈(Feedback),都是API的一部分,并直接影响用户体验。因此,请精心设计API的错误消息和反馈机制。
13,文档是API用户体验的核心。投资高质量的文档,会收到比投资新功能更高的回报。
14,什么是好的文档?好的文档是以读者为中心的。它不应该讨论软件的工作原理,而应该说明如何使用这个软件;它应该展示端到端的工作流,并配以代码示例;它应该展示API的常见用法和关键功能的代码示例。
15,职业发展不在于能够管理多少人,而在于能够影响多少人。
16,软件开发是一种团队工作(teamwork),它不仅关乎技术能力,更关乎人际关系。在你前进的道路上,请记得与人保持联系 (Keep in touch with people)。
17,技术永远不会中立,所有的技术决定都是伦理决定。设计软件产品时,不能只考虑技术因素,还应该考虑软件的伦理或道德影响。
18,创造世界需要的软件,而不仅仅是你自己希望拥有的软件。技术人员需要利用一切机会去拓展生活体验,让自己更好地了解世界的真实需求。
19,在不同的环境中,决策速度和决策质量之间的权衡会有较大差异。有时候,依据良好的直觉可以在信息不充分的情况下做出正确的决定;有时候,则需要推迟行动以等待更多信息,因为此时错误决策的代价比延迟决定的代价更高。
20,经验是提高生产力(Productivity)的重要因素,而更高的生产力将为您提供更多的经验。这是一个良性循环。
Francois的完整版建议请关注本公众号,发送“干货”一词给后台,即可获取。对于Francois的观点,你怎么看?欢迎评论,分享和转发。
立志做国内自动化/AI测试领域最好的原创公众号。欢迎微信关注公号"测试不将就"(ID: awesometest),更多原创文章在路上。我们的口号是:“插上自动化/AI的翅膀,软件测试也能高大上”。
作者:Dr.萧(独孤球是),工学博士/资深码农/技术写作者,欢迎添加作者微信(slxiaozju)交流。
更多阅读请添加公众号:
优秀程序员的八个好习惯
狼来了?全球首款基于AI的智能软件测试工具问世了,它叫mabl
面对持续集成中时隐时现的软件问题,我们该何去何从?
我是如何在美国间谍卫星照片中找到半个世纪前的家乡影像的?