文/Mr. Jamie
上次聊过工程师的生产力不应该用程序代码来衡量,因为他们的极致生产力,是在少写几行程序,而不是在多写几行程序。今天刚好又看到两篇文章,可以用不同的面向延伸、解释这建事情。
首先,是一位跑去日本教英文的前任软件工程师,发现了写程序和学语言间的共通性,他说:
这些工程师往往可以轻松的通过面试,但当他们真正开始工作,却让人大失所望。我读了很多关于这个问题的研究,但当我越看它,就越发现这些「残障工程师」,就好像我的英语学生一样。他们有 5,000 字的词汇,书里面的每一个文法都背得滚瓜烂熟,但是就是说不出一句话。
我的理论是,程序其实就跟写作没什么两样。多数的程序概念上一点都不难(跟你想的不一样),我们搞不好的原因往往只是写作能力太差。大部分的工程师根本就不是「流畅」的语言使用者,也没有努力想要让自己变得流畅。他们不去多读读他人的程序,看不懂也不会使用「成语」,更不会「用程序语言来思考」。这些人写出来的程序很糟,因为他们根本就是计算机语言的三岁小孩,却试着要写一本小说。
所以如果你是软件工程师,多读读别人的程序代码,是很重要的,就跟学习写作一样。
相反的,如果你的程序想要让人家读懂,那 documentation 是非常重要的。GitHub 工程师 Zach Holman 发表了一篇非常棒的文章,详细解释了为什么你要写文档,怎么写。
Documentation 是个人的 —— 相信我,你以后一定会回来改这些程序,如果要让未来的自己更快进入状况,把事情搞定,今天请你务必把东西写清楚。
Documentation 是清楚的 —— 如果你不把你推出去的程序代码讲清楚,那根本是在帮自己找麻烦,以后一定会出现一堆 bugs、困惑的同事,最后搞得自己更累而已。
Documentation 是可以测试的 —— 因为你必须要把程序的逻辑解释清楚,这让你重新思考自己的写出来的东西是不是符合原始精神,有没有更好的方式。为了不在写文件时陷入无法解释的难关,这也迫使你简化每一个功能,把一个复杂的东西切成好几个功能。
Documentation 是可以比较版本的 —— 好的文件可以让版本间的比较更容易,也让团队合作更有效率。
Documentation 是营销 —— 透过好的文件,可以让下载你软件的人更容易开始使用,这也大大提升了转换率。
Documentation 让你表现更棒 —— 这点 Zach 还在验证,不过他认为建立好的文件让你很酷,这应该对自信会有帮助。
以上,希望这些观念可以帮助你们更了解工程师、效率和生产力之间的关系,加油!
(Image via zooboing, CC license)最棒的程序代码,不是程序代码
分享到:
相关推荐
51单片机摇摇棒+平面旋转屏幕程序设计代码,这个是上大学前暑假开始搞的,当做锻炼吧。可以说是第二代旋转屏幕。 至于摇摇棒,是因为成本低,改造成旋转屏幕也很快。买上锂电池,霍尔传感器,了解电路后对电路改造。...
在编程领域,代码行数(LOC,Lines of Code)虽然不是衡量代码质量的最佳指标,但仍然是一个常见的度量标准,尤其在项目初期或估算工作量时。代码行数可以反映出项目的规模,帮助开发者大致估计完成任务所需的时间和...
这个程序每天晚上会将chinahr的职位自动导入到你指定的数据库(当然在数据的位置你需要自己改写代码)突破了很多反采集的功能,代码不是很复杂,但是里面涉及的东西较为广,是学习数据采集的一个非常棒的实例,同时...
而TouchWebBrowser可能是实际的源代码文件夹,包含程序的主要逻辑和资源。 总的来说,这个“触摸屏WEB浏览器”项目展示了C#在开发跨平台触控应用时的强大能力。通过合理利用WebBrowser控件,结合事件驱动编程和界面...
当我在 RequireJS 中编写这样的东西时,我觉得事情不是并且我的代码不是叙述性的: requirejs ( [ 'jquery' , 'canvas' , 'app/sub' ] , function ( $ , canvas , sub ) { //jQuery, canvas and the app/
一维弹塑性本构程序入门,包括公式推导,和伪代码给出,涉及到牛顿拉弗逊迭代,几种硬化模型,我觉得对写uamt来说帮助非常大,虽然说这个不是umat教程,但是绝对值得一看,非常棒的入门手册,新手入门很容易,
- 但是,在调整前应该充分考虑安全性问题,最好是在确认请求不是恶意的情况下再进行更改。 - **详细错误信息**: - **模块**:RequestFilteringModule - **通知**:BeginRequest - **处理程序**:StaticFile -...
- **应用**:LED摇摇棒正是利用了这一特性,当手持摇摇棒快速移动时,由于视觉暂留效应,人眼会“看见”一个连续的画面,而不是断断续续的闪烁。 ##### 显示原理 - **16个LED灯**:每个LED灯代表图像的一列,通过...
标签“JavaScript开发-游戏开发”表明这款游戏可能是用JavaScript语言编写的,JavaScript是一种广泛用于网页和应用程序开发的脚本语言,特别适合创建交互式内容。游戏的开发可能涉及HTML5 Canvas、WebGL或者Three.js...
Java的面向对象特性也使得代码结构清晰,易于维护和扩展。 在BlueChat的开发过程中,开发者需要掌握以下几个核心知识点: 1. **蓝牙API的使用**:Java提供的javax.bluetooth.*包包含了处理蓝牙连接所需的各种类和...
微信小程序与SSM+Vue的后台系统集成,可以方便用户在微信环境下查询食用菌菌棒的信息。 综上所述,这个项目涵盖了从服务器端开发到前端展示,再到移动终端应用的全栈技术栈,涉及到的技术广泛且深入,对于学习和...
但是,在构建应用程序代码的过程中,访问可爱的小模块不是很干净,例如: var mymodule = require('./somepath/mymodule') 。 更重要的是,设置repo,npm软件包等会产生开销。 何时,您确实需要完成一个项目。 如果...
matlab代码复制到文字保留颜色很棒的 Linux 软件 :penguin: 该 repo 是适用于任何用户/开发人员的AWESOME Linux 应用程序和工具的集合。 :penguin: 随意贡献/星/叉/拉请求。 欢迎任何建议和建议。 致谢:下面写的都...
Chartlet是个完全免费的.NET的图表控件(WebFrom and Winform), 我们的宗旨是让你用最少的代码创造出最美丽的图表,让你告别图表控件繁多的属性设置和方法调用。Chartlet这个控件你几乎不需要花时间来学习就会用,...
matlab代码做游戏很棒Linux软件 :penguin: 此存储库是适用于任何用户/开发人员的AWESOME Linux应用程序和工具的集合。 :penguin: 随意贡献/加星/分叉/拉取请求。 任何建议和意见是值得欢迎的。 更新:此仓库有一个更...
“在线IDE”具有上述功能,但是在Web浏览器中运行,而不是作为本机应用程序安装。 可以在没有Internet连接的情况下以离线模式访问“在线IDE”,并且仍然满足上述条件。 内容 跳到 传奇 图标 意义 开源或可用的源代码...
如果孙悟空类包含指向“金箍棒”的指针,那么在克隆孙悟空时,我们需要确保克隆后的孙悟空拥有自己的“金箍棒”副本,而不是共享原对象的。 以下是一个简单的C++实现: ```cpp #include #include class Weapon;...
Salesforce专家PhilWeinmeister遵循Salesforce的“点击而不是代码”的口号,带领Salesforce的新来者和老员工解决不同的业务问题,并通过平台的声明性框架确定有效的解决方案的方法。通过采用这本书作为您的指南,您...