• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >编程技巧 > 不仅仅是写代码,而是完成作品

不仅仅是写代码,而是完成作品

作者:瞬息之间 字体:[增加 减小] 来源:互联网 时间:2017-07-23

瞬息之间通过本文主要向大家介绍了程序员,代码等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

近来有人问起,现在似乎真得变成了码农,日出而作,日落而息。整天不停的写代码,开发业务需求,周而复始,日子长了,感到厌倦。有时回想,应该在过去的某个时期我也曾陷入过这样的循环中,后来又是如何脱离的呢?

代码与缘由

这要回归到从写代码这件事上开始。写代码是因为有需求,需求来自业务的发展需要,需求经过产品经理再传递到程序员。

刚开始,作为一个新手程序员,不停的为各种需求写代码。开发完一个,接着又是下一个,生生不息,循环不止。一开始也许会感觉有些累,但并没有产生太多的厌倦。这是一个从不熟悉到熟悉再到熟练的过程,这里有太多的新东西可以去探索和尝试,让你在疲惫中依然获得了好奇心的满足,因此不会感觉厌倦。

但从不熟悉到熟练需要多久呢?现在成为专家的要求已经有了共识:一万小时的刻意练习。但达成熟练要不了那么久,也许两三年足以。有句俗语叫:条条大道通罗马。罗马,一个城市,包罗万象,对于程序员就像一个个需要完成的业务需求。几年过去,每一条通往罗马的大道都被你走过了,再去往罗马时,自然找不到新鲜感了,困倦油然而生。

继续在罗马的循环往复,已无法让你继续成长为专家。罗马也许在中世纪曾是一个伟大的城市,但时代在发展,未来会有更丰富的城市超越他。跳出循环的路无非就是走出熟悉的罗马,不再去走那条条通往罗马的大道,而是选择一条离开罗马的路,走向未知与未来。

在一万小时的刻意练习中,罗马已是过去的熟悉熟练区,离开罗马便是要进入下一个陌生的学习区。

产品与作品

写代码,开发需求无非都是为了完成产品。产品作为一个整体,包含了一份份零碎的需求和代码。

有时我们会把一个产品作为整体当作一件作品,但并非所有的产品都能称为作品。维基百科上对作品的定义是:

作品,亦称创作、创意、著作,是具有创作性,并且可以通过某种形式复制的成品。

从这个约定俗成的定义看,作品最重要的特质是:创作与创意。所以,只有包含了创意(作)性质的产品才能叫作品。那么像 iPhone 这样的商品就既是好产品也是好作品了。

那么对于程序而言呢?代码是作品么?可以是的,小到一段函数,一个类,大到一个服务,一个系统,在你编写程序时都可以把它们当作一件作品来完成。就像一本书是作品,书里的每一篇文章也是作品。

吴军曾在文章里写过:完成一件事,做到 50 分靠常识和直觉,做到 90 分要靠科学和技艺,而要做到 90 分以上则要靠艺术。我是认同这个观点的,完成作品的目标是 90 分以上,这是作品的特性决定的,因为创作就是艺术的核心所在。

如果写代码仅仅是完成需求,即便是完美无瑕的完成了需求,也只是 90 分的标准。经过了科学地学习和训练的程序员们,自然是超越了 50 分,但却还达不到 90 分。你想做到 90 分,也许需要一个比 90 分更高的标准。iPhone 作为一个 90 分以上的作品,就是 90 分的工程技术加上几分的艺术,相比差几分的同类,在市场上的价值和价格却是相距甚远。

为什么要把条条通往罗马的大道都要走完,甚至反复走。具体到编程写代码,无非就是不停的重构,打磨作品。成长的路上,写过的代码最终也许会烟消云散,但完成的作品会成为你点亮的勋章。

显性与隐性

梁宁以前写过一篇文章《在腾讯的第一堂产品课》,其中提到了产品的显性与隐性特征。显性的东西容易看到和体验到的,所以文中说到:

过分强调显性特性的,菜鸟之中的最初级。过去,我最怕的就是听谁说,我们要改版了,新版哪天…显性特性很重要,但是显性特性救不了你。把核心资源与时间,放在一次次优化显性特性上,基本上是互联网初级从业者的狂热症。

这是指产品的显性和隐性,初级的产品经理更容易关注到显性特征的体验变化和改进,但更高级的产品经理会关注和产品相关的服务、流程与成本等隐形特性。但产品经理关注的这些特性,无论是显性的还是隐性的,到了程序员这里的技术方案将全部是显性特性。

有个说法,要做好技术需要懂业务和产品,大体没什么问题。但需要提的细节是,是懂的方向。技术不需要了解业务产品的每一个显性特征,一个足够大的业务产品,有无数的显性特征细节,这些全部的细节可能分散在一群各自分工的产品经理们中。技术需要懂得是产品提供的核心服务和流程,并清晰地将其映射到技术的支撑能力与成本上。

另外,技术不仅仅需要支撑满足产品的全部显性和隐性服务特性,这些都是技术的显性服务特性。但技术还有自己的隐性服务特性,这一点恰恰也正是高级和资深技术或程序员需要重点关注的。所谓技术的隐性特性,通俗点就是程序员常说的非功能性需求,它的产生与来源都是源自程序和程序员本身。

用一段新算法实现的函数取代了旧函数,那么多余的旧函数就变成了负债而非资产,是需要去清理的。重构代码变得更简洁和优雅,可读性增强,节省了未来的维护成本。一个能同时服务一万人的程序实例,你知道你没法加十个实例就能简单变成能同时服务十万人的系统。这些都是技术冰山下的隐性特征,显性的错误会有测试、产品甚至最终用户来帮你纠正,但隐性的错误却很难有人能帮你发现并纠正。

一旦隐性的错误爆发,就像泰坦尼克号撞上了冰山,一切外显的繁华最终都将沉入海底。初中级的程序员都在关心能否完成这些显性的功能,而更高级的程序员则需要更多关注这些隐性的技术特征带来的风险和代价。

…

用正确的方式做正确的事,而那些隐藏在冰山下的正确的事,表现型的人是不愿做的,而进取型的人才会去做,得到的奖赏是自己的进步与成长。

大部分的技术“火灾”,都是隐性风险的爆发。一场大火过后,救火的英雄会站在聚光灯下,而你的系统隐藏于一片繁祥安宁的黑暗中。不深藏一点功与名,谁又愿意去推动这样一些默默无闻但正确的事情呢。

让正确的事情相继发生,你的成功或默于悄无声息,但你的失败却震于惊天动地。


写点文字,画点画儿,记录成长瞬间。
微信公众号「瞬息之间」,既然遇见,不如一起成长。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 不仅仅是写代码,而是完成作品
  • 每个程序员都应该学习使用Python或Ruby
  • 每个程序员需掌握的20个代码命名小贴士
  • 关于程序员生活的一份调查,看看你属于哪一个群体吧
  • 一个30多年编程经验的程序员总结
  • 5个Linux平台程序员最爱的开发工具汇总
  • 让程序员都费解的10大编程语言特性
  • 8种类型极品程序员,不知你属于哪一种?
  • 关注程序员健康:程序最需要注意的几件事
  • 程序员的八种境界,你在哪一境?

相关文章

  • 2017-05-12千万要避免的五种程序注释方式小结
  • 2017-05-12算法系列15天速成 第三天 七大经典排序【下】
  • 2017-05-1212种最常用的网页编程语言简介(值得收藏)
  • 2017-05-12页面制作统一的头尾的方法(asp+js)
  • 2017-05-12算法系列15天速成 第一天 七大经典排序【上】
  • 2017-05-12alt键 chr码值对应列表查看方法
  • 2017-05-12Git里多种撤销操作的最佳方法
  • 2017-05-12浏览器关闭使session失效的问题多种解决方式
  • 2017-05-12php/asp/asp.net中判断百度移动和PC蜘蛛的实现代码
  • 2017-05-12手机中点击网页链接实现拨号或保存电话功能实现代码

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 高性能WEB开发(5) 减少请求,响应的数据量
    • Runnable.com 在线测试代码片分享网站
    • 对Web开发人员有用的8个网站小结
    • Elasticsearch如何更新mapping
    • 删除SVN三种方法delSvn(windows+linux)
    • 算法系列15天速成 第七天 线性表【上】
    • SVN提交代码时出现Attempted to lock an already-locked dir
    • 程序员编程从初级到中级的10个秘诀
    • 算法系列15天速成 第四天 五大经典查找【上】
    • 从学习到接单赚钱 十大网络技术人员推荐收藏的网站

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有