阅读更多

17顶
0踩

研发管理

转载新闻 高效程序员所具备的特征

2014-06-04 13:12 by 副主编 WnouM 评论(11) 有11413人浏览



这里我使用了聪明,懒惰和程序员这几个词。我说的这几个词的意思是:

  • 程序员:有积极活力的,专注于用代码解决真实世界里的问题,不是指那些梦想家,那些永远只想不做的人
  • 聪明:能够周全的思考问题(不是那些耍小聪明的人)
  • 懒惰:就像是程序中的lazy-loading,是指延后写代码的时间(而不是无所事事的人)。
正确的软件开发应该是懒惰式开发,也被称作忍耐式开发;这种开发方式的表现是,在真正动手写代码前,程序员要花大量的时间通盘考虑所有可能的解决方案和途径。这可以看作是延缓写代码,在没有完全理解问题前绝不动手写代码。先把问题理解清楚,确保将要写的代码能真正的解决问题,这将会避免之后写出大量无用的代码。

这里说的先把问题弄清楚,表现有:

1. 真正的理解需求,让产品部门(业务分析部门)弄清楚他们真正需求的是什么。

  • 这些部门通常不给足够的时间来整理需求
  • 他们经常不是请教问题领域专家,而是顺从领导的意见
  • 他们通常无法提供前后一致或完整的需求意见。
2. 清楚跟团队中的其它程序员或其他团队中的程序员需要那些交互,如何交互,这包括:

  • 使用白板交流
  • 画流程图(UML或Visio)
你需要花大量的时间调研,来确保需求符合实情,来做工作让你和同事的交流有共同的语言语义。然而,程序员都喜欢立刻冲上去编程,喜欢在电脑前不停的敲代码。

在真正的软件开发中,只有5%的开发时间是有效率的(你可以参考《程序员开发效率悖论》)。如果你发现一个程序员用100%的时间都在盯着屏幕,那么,你看到的这个程序员是最糟糕的程序员。

如果一个程序员总是在电脑前编码,这绝对是一个不好的信号。

高效的程序员总是不断检查他对需求的理解,确保他们的代码和需求是同步的。高效的程序员是频繁的和产品经理/业务人员沟通交流,你可以经常看到他们使用白板与同事和架构师交流讨论。程序员的阅历和经验都是用来提高开发效率,最优秀的程序员:

  • 他们思考代码的时间增加而写代码时间减少
  • 对问题的透彻理解使调试代码的速度更快
  • 深思熟虑后的代码速度更快
  • 代码长度更短
程序员从心理上讲都是喜爱自己的代码的。

烂程序员不喜欢去修改已经写成的烂代码。相比起优化自己的代码,他们更愿意简单的增加更多的代码,以此来弥补之前的缺陷。更糟糕的是,他们喜欢把责任归咎于他人。最终,一堆不好用的代码上再加上另外一堆不好用的代码,整个系统变得到处是bug,极不稳定。

优秀的程序员经常也会写出烂代码,但他们能看到那些代码需要优化,哪些需要重写。优秀的程序员和不优秀的程序员的区别就在于对有问题的代码的态度,优秀的程序员的做法是:

  • 如果代码整体上好的,那就重构代码。
  • 如果代码整体上有问题,那就重写代码
当代码中有需要优化或需要重写的地方时,时间拖的越久,你就越难回头解决这些问题。因为对这些代码依赖的程序会越来越多,越来越深,当你优化这些代码时,相关的依赖也需要进行相关修改。当积累的问题越来越多时,轻松的优化/重新这些代码已经变得不可能。而使用继续增加代码的方式来弥补之前代码问题,会让系统变得越来越不稳定。

如果脑子里没想清楚,那就懒一些,把写代码的时间往后推。

英文原文:Productive Developers are Smart and Lazy / 译文:外刊IT评论
来自: 外刊IT评论
17
0
评论 共 11 条 请登录后发表评论
11 楼 alvin198761 2014-06-12 15:59
wandou 写道
调查了多少优秀程序员得出这个结论的。

花了多大功夫抄来的国外调查,
10 楼 chenzhengjun 2014-06-12 10:56
说得在理,任何事在没有考虑清楚前,最好先别动手,马上动手的,考虑不周全的概率是非常大的,最后直接导致做无用功
9 楼 tracy1989wan 2014-06-09 14:01
赞同这样的观点!
8 楼 lvwenwen 2014-06-08 19:41
说的很有道理
7 楼 SpringJava 2014-06-06 15:43
赞同这个说话!~
6 楼 zoozooll 2014-06-05 10:50
wandou 写道
调查了多少优秀程序员得出这个结论的。

Only one.It is himself
5 楼 yzsunlight 2014-06-05 09:01
这个确实说的很有道理
4 楼 freezingsky 2014-06-04 21:04
猛然发现,原来我就是!
3 楼 jiang_huatao 2014-06-04 20:49
符合一些
2 楼 buxin_2008 2014-06-04 19:23
完全符合优秀de程序员特征啊。呵呵呵呵
1 楼 wandou 2014-06-04 16:29
调查了多少优秀程序员得出这个结论的。

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 高效程序员应该具备的特征

    要想成为高效的程序员,你需要具备一定的综合素质才能够让你用你所掌握的技能、经验和知识编写出有效的代码。有一些开发人员在技术方面具备一定的技巧,但他们永远无法成为高效的程序员,就是因为他们缺乏所需的其它...

  • 高效程序员的7个技能

    最近阅读到一篇不错的文章,包括评论部分都有不小的参考...团队领导总结了七条高效程序员应该拥有的技能,对我们团队很有启发,顺便也说说我们的看法。下面便是高效程序员的七个技能。 第一:学会如何阅读其他人的代码

  • 高效程序员的 7 个共同特征

    英文原文:Seven traits of effective programmers ...导读:要想成为一个伟大...要想成为高效的程序员,你需要具备一定的综合素质才能够让你用你所掌握的技能、经验和知识编写出有效的代码。有一些开发人员在技

  • 高效程序员的7个共同特征

    [导读] 要想成为高效的程序员,你需要具备一定的综合素质才能够让你用你所掌握的技能、经验和知识编写出有效的代码。有一些开发人员在技术方面具备一定的技巧,但他们永远无法成为高效的程序员,就是因为他们缺乏所...

  • 程序员需要具备的职业素养

    程序员需要具备的职业素养 合格程序员七大基本素质与五大必备能力

  • 优秀程序员具备的七大特征,你具备几条?

    **程序员这个行业,是一个区隔度特别高的行业。**不少人短短几年就可以成长为高级工程师、资深架构师、首席架构师,而另外一部分人很可能工作10年还是初中级工程师。 **程序员行业还有一个特点,优秀程序员的产出是...

  • python入门-30.寻找列表中只出现一次的数字-寻找单身狗.py

    python入门-30.寻找列表中只出现一次的数字——寻找单身狗.py

  • 布尔教育linux优化笔记

    linux优化笔记,配套视频:https://www.bilibili.com/list/474327672?sid=4496133&spm_id_from=333.999.0.0&desc=1

  • 知识付费系统-直播+讲师入驻+课程售卖+商城系统-v2.1.9版本搭建以及资源分享下载

    知识付费系统-直播+讲师入驻+课程售卖+商城系统-v2.1.9版本搭建以及资源分享下载,CRMEB知识付费分销与直播营销系统是由西安众邦科技自主开发的一款在线教育平台,该系统不仅拥有独立的知识产权,还采用了先进的ThinkPhp5.0框架和Vue前端技术栈,集成了在线直播教学及课程分销等多种功能,旨在为用户提供全方位的学习体验,默认解压密码youyacaocom

  • 美妆神域-JAVA-基于springBoot美妆神域设计与实现

    美妆神域-JAVA-基于springBoot美妆神域设计与实现

  • 原生js制作Google粘土logo动画涂鸦代码.zip

    原生js制作Google粘土logo动画涂鸦代码.zip

  • golin 扫描工具使用, 检查系统漏洞、web程序漏洞

    golin 扫描工具使用, 检查系统漏洞、web程序漏洞

  • 原生态纯js图片网格鼠标悬停放大显示特效代码下载.zip

    原生态纯js图片网格鼠标悬停放大显示特效代码下载.zip

  • 用AWLUM进行灰色编码2^2n-QAM调制的精确率Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手

  • 去水印web端独立版web

    去水印web端独立版web

  • 原生js制作左侧浮动可折叠在线客服代码.zip

    原生js制作左侧浮动可折叠在线客服代码.zip

  • Chrome 谷歌浏览器下载

    Chrome 谷歌浏览器下载

  • 亲测全新完整版H5商城系统源码 附教程

    全新完整版H5商城系统源码 自己花钱买的,亲测可用,需要自行下载 H5商城系统设置是实现商城基本功能的核心部分,涵盖了从网站配置、短信和支付配置,到商品、工单、订单、分站和提现管理等多个模块的设置。以下是详细的设置指南,帮助您快速上手并高效管理商城系统。 测试环境:Nginx+PHP7.0+MySQL5.6 1. 网站配置 设置商城名称、LOGO、标题、联系方式和SEO关键词等,确保商城专业和易于搜索。 2. 短信配置 配置短信接口和模板,用于发送订单通知、验证码等,提升用户体验。 3. 支付接口配置 配置微信、支付宝等支付接口,填写API密钥和回调地址,确保支付流畅。 4. 商品分类管理 对商品进行分类和排序,设置分类名称和图标,便于用户查找商品。 5. 商品管理 添加和管理商品信息、规格、图片等,确保商品信息准确丰富。 6. 工单管理 查看和回复用户工单,记录售后问题,提升用户服务质量。 7. 订单管理 查看订单详情,更新订单状态,支持批量导出,方便订单跟踪。 8. 分站管理 创建不同区域分站,设置权限,统一管理各区域市场。 9. 提现管理

  • 短信3.141592672893982398674234

    apk安装包

  • 原生js选项卡插件自定义图片滑动选项卡切换.zip

    原生js选项卡插件自定义图片滑动选项卡切换.zip

Global site tag (gtag.js) - Google Analytics