`
墨子宇
  • 浏览: 14107 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

最棒的程序代码,不是程序代码

 
阅读更多
文/Mr. Jamie
  上次聊过工程师的生产力不应该用程序代码来衡量,因为他们的极致生产力,是在少写几行程序,而不是在多写几行程序。今天刚好又看到两篇文章,可以用不同的面向延伸、解释这建事情。
  首先,是一位跑去日本教英文的前任软件工程师,发现了写程序和学语言间的共通性,他说:
这些工程师往往可以轻松的通过面试,但当他们真正开始工作,却让人大失所望。我读了很多关于这个问题的研究,但当我越看它,就越发现这些「残障工程师」,就好像我的英语学生一样。他们有 5,000 字的词汇,书里面的每一个文法都背得滚瓜烂熟,但是就是说不出一句话。
我的理论是,程序其实就跟写作没什么两样。多数的程序概念上一点都不难(跟你想的不一样),我们搞不好的原因往往只是写作能力太差。大部分的工程师根本就不是「流畅」的语言使用者,也没有努力想要让自己变得流畅。他们不去多读读他人的程序,看不懂也不会使用「成语」,更不会「用程序语言来思考」。这些人写出来的程序很糟,因为他们根本就是计算机语言的三岁小孩,却试着要写一本小说。
  所以如果你是软件工程师,多读读别人的程序代码,是很重要的,就跟学习写作一样。
  相反的,如果你的程序想要让人家读懂,那 documentation 是非常重要的。GitHub 工程师 Zach Holman 发表了一篇非常棒的文章,详细解释了为什么你要写文档,怎么写。
Documentation 是个人的 —— 相信我,你以后一定会回来改这些程序,如果要让未来的自己更快进入状况,把事情搞定,今天请你务必把东西写清楚。
Documentation 是清楚的 —— 如果你不把你推出去的程序代码讲清楚,那根本是在帮自己找麻烦,以后一定会出现一堆 bugs、困惑的同事,最后搞得自己更累而已。
Documentation 是可以测试的 —— 因为你必须要把程序的逻辑解释清楚,这让你重新思考自己的写出来的东西是不是符合原始精神,有没有更好的方式。为了不在写文件时陷入无法解释的难关,这也迫使你简化每一个功能,把一个复杂的东西切成好几个功能。
Documentation 是可以比较版本的 —— 好的文件可以让版本间的比较更容易,也让团队合作更有效率。
Documentation 是营销 —— 透过好的文件,可以让下载你软件的人更容易开始使用,这也大大提升了转换率。
Documentation 让你表现更棒 —— 这点 Zach 还在验证,不过他认为建立好的文件让你很酷,这应该对自信会有帮助。
  以上,希望这些观念可以帮助你们更了解工程师、效率和生产力之间的关系,加油!
  (Image via zooboing, CC license)最棒的程序代码,不是程序代码
分享到:
评论

相关推荐

    51单片机摇摇棒+平面旋转屏幕程序设计代码.zip

    51单片机摇摇棒+平面旋转屏幕程序设计代码,这个是上大学前暑假开始搞的,当做锻炼吧。可以说是第二代旋转屏幕。 至于摇摇棒,是因为成本低,改造成旋转屏幕也很快。买上锂电池,霍尔传感器,了解电路后对电路改造。...

    chinahr职位导入程序

    这个程序每天晚上会将chinahr的职位自动导入到你指定的数据库(当然在数据的位置你需要自己改写代码)突破了很多反采集的功能,代码不是很复杂,但是里面涉及的东西较为广,是学习数据采集的一个非常棒的实例,同时...

    mods:模块化 JavaScript 库,只有 470 字节的压缩代码

    当我在 RequireJS 中编写这样的东西时,我觉得事情不是并且我的代码不是叙述性的: requirejs ( [ 'jquery' , 'canvas' , 'app/sub' ] , function ( $ , canvas , sub ) { //jQuery, canvas and the app/

    一维弹塑性本构编程入门

    一维弹塑性本构程序入门,包括公式推导,和伪代码给出,涉及到牛顿拉弗逊迭代,几种硬化模型,我觉得对写uamt来说帮助非常大,虽然说这个不是umat教程,但是绝对值得一看,非常棒的入门手册,新手入门很容易,

    acquire.js:需要应用程序模块。 构建模块鼓励工具,作为模块成为完整npm软件包之前的步骤

    但是,在构建应用程序代码的过程中,访问可爱的小模块不是很干净,例如: var mymodule = require('./somepath/mymodule') 。 更重要的是,设置repo,npm软件包等会产生开销。 何时,您确实需要完成一个项目。 如果...

    matlab代码复制到word保留颜色-Linux-Software:适用于Linux发行版的出色应用程序、软件、工具和其他材料的列表

    matlab代码复制到文字保留颜色很棒的 Linux 软件 :penguin: 该 repo 是适用于任何用户/开发人员的AWESOME Linux 应用程序和工具的集合。 :penguin: 随意贡献/星/叉/拉请求。 欢迎任何建议和建议。 致谢:下面写的都...

    Chartlet 免费好用的.net图表控件【有Web和Win程序,可用C#.NET、VB.NET程序】

    Chartlet是个完全免费的.NET的图表控件(WebFrom and Winform), 我们的宗旨是让你用最少的代码创造出最美丽的图表,让你告别图表控件繁多的属性设置和方法调用。Chartlet这个控件你几乎不需要花时间来学习就会用,...

    matlab代码做游戏-Awesome-Linux-Software:很棒Linux软件

    matlab代码做游戏很棒Linux软件 :penguin: 此存储库是适用于任何用户/开发人员的AWESOME Linux应用程序和工具的集合。 :penguin: 随意贡献/加星/分叉/拉取请求。 任何建议和意见是值得欢迎的。 更新:此仓库有一个更...

    matlab集成c代码-awesome-online-ide:很棒的在线想法

    “在线IDE”具有上述功能,但是在Web浏览器中运行,而不是作为本机应用程序安装。 可以在没有Internet连接的情况下以离线模式访问“在线IDE”,并且仍然满足上述条件。 内容 跳到 传奇 图标 意义 开源或可用的源代码...

    Practical Salesforce Development Without Code, 2nd Edition.pdf

    Salesforce专家PhilWeinmeister遵循Salesforce的“点击而不是代码”的口号,带领Salesforce的新来者和老员工解决不同的业务问题,并通过平台的声明性框架确定有效的解决方案的方法。通过采用这本书作为您的指南,您...

    daccord:交互式API测试,可视化和模拟。 整合合作的有效合同

    D'accord-交互式API合同D'... D'accord是使您的API很棒的一套工具: 从您的实际应用程序代码发送的API测试和对您的请求和响应的交互式验证。 根据RAML规范生成API文档。 为您的API客户端和API服务器提供模拟服务。

    Android Studio实现知乎日报App,优秀安卓程序设计,计算机专业必学!

    整体项目基于 MVP + RxJava + ...知乎日报的详细界面,不是采用 webView 加载 url 路径实现的,而是根据 api 返回的 html 标签代码,拼接 CSS 和 JS 实现的,这样是为了实现在无网状态下,同样可以保持阅读体验。

    awesome-nocode-lowcode:精选的无代码和低代码资源列表,用于构建无代码的软件

    Nocode使程序员和非程序员都可以通过图形用户界面而不是传统的代码编程来创建应用程序软件。 Lowcode是一个非常紧密相关的主题,可以实现强大的自定义。 不知道,如果真棒? 。 内容 企业与领导者 -构建和运行具有...

    DELPHI全屏截图、区域截屏程序.rar

    DELPHI全屏截图、区域截屏程序,同时还包括绘图工具、按比例缩放、图像剪裁、图像旋转、自定义形状抓图(圆形、椭圆形、正方形等),还有多种画笔工具,整个截屏软件在界面上的设计也是很棒,下边是TAB式窗口,功能...

    tinder:适用于 Windows Phone 的 Tinder 应用程序

    适用于 Windows Phone 的 Tinder 应用程序截图概述Tinder 是一款很酷的 iPhone/Android 应用程序,我认为在 Windows Phone 上安装它会很棒。 该项目是将应用程序引入 Windows Phone 的大约两个晚上工作的结果。 该...

    HttpMediatR:结合了两个很棒的东西的库

    从您的处理程序实现IRequestHandler ,而不是从HttpHandler继承 在处理程序中实现HandleAsync抽象方法 利用继承的助手来返回适当的响应 惊叹于您的出色代码! :star: 有关上述,请参见。 该库解决什么问题? 如果...

    awesome-musicdsp:我最喜欢的音乐DSP和音频编程资源的精选列表

    这原本是要成为正式的“真棒名单”,但显然您不是要以第一人称写,所以现在是“更真棒”名单。 奥利·拉金(Oli Larkin) 构架 -iPlug(最初由Cockos创建)是一个很棒的插件框架。 自2011年以来,我一直在维护它...

    ASP.NET揭秘 光盘

    每一章也都不是泛泛而谈理论,而是围绕实际样例代码来组织,让读者马上可以上手,并且加深理解。书中还包含了两个完整的、立即就可以用得上的ASP.NET应用程序,一个就业站点和一个网上商店,用于演示实际应用中ASP...

    prototype:用于创建模型的Mac应用程序

    有许多很棒的应用程序可用于构建Web和iOS应用程序的模型。 当我开始构建Prototype时,没有本机应用程序产生矢量输出。 这可能是正确的,也可能不是正确的。 原型是一种尝试构建快速且本机的模型工具的尝试。 对我来...

Global site tag (gtag.js) - Google Analytics