阅读更多

17顶
1踩

非技术

原创新闻 优秀程序员的6个共同特质

2013-12-16 09:45 by 见习编辑 tuhaihe 评论(13) 有16408人浏览
如果你在一家IT公司,与周边的程序员接触时间越长,对他们的可爱之处了解地就越多:或呆或萌,或正派或猥琐。如果你恰好是一个程序员,你会发现身边优秀的同事也总是有一些共同点。原文作者ROYVANRIJN总结了他身边优秀程序员同事拥有的6个共同特质:

  • 具有好奇心
  • 热爱分享
  • 具有社区意识
  • 以身为程序员而自豪
  • 有点懒
  • 代码可视化
1. 具有好奇心

他们总是保持一颗好奇心,凡是遇到问题,首先就是:Google!没有Google就没有发言权。然后,会在StackOverflow上查找相关问题、浏览邮件列表、阅读在线文档等等。



这听起来理所当然,但是部分人却是先问自己身边的同事。原作者认为,这个习惯不太好:Google检索到的信息远比你周围同事了解的多,没必要放着这么好的资源不用,在你紧张工作的同事身上费功夫。

当然,大多数时候第一次在Google搜索问题,可能没有自己想要的结果,不过不要放弃!继续搜索,尝试使用不同的关键词,或者直接阅读源码。如果上面都没有结果,那就在邮件列表、新闻组等社区提问。

2. 热爱分享

一旦找到解决自己问题的方法,然后就到此为止,然后就没有然后了?No!一名优秀程序员不能这样做。在地球上正有一群程序员遭遇和你一样的问题,他们也正在尝试解决。



理理自己的思路,写成博客记录下来:遇到了哪些坑儿,如何避免这些坑儿。在你曾经搜索过该问题的地方,如果问题还没有解决,就帮助回答,贴出自己的方案,接受后来者的膜拜。当然,你可能会“自问自答”,这样就准备接受后来者的鄙视吧。

3. 具有社区意识

如果在使用某个开源软件的时候遇到了Bug,你会怎么办?一般会有2个反应:

  • 抱怨,寻找另一个替代软件
  • 下载源码,自己动手打补丁
上面2个方式都不太明智。开源社区之所以成为社区,就是因为是大家自愿地来修复问题,很明显第一个方式不太合适。那第二个方式为何不妥?我们不鼓励直接下载源码来打补丁,应该首先联系该软件的维护者。一个著名的例子就是,Linus Torvalds曾拒绝合并一段可以大幅提升Linux内核速度的代码,只是因为该段代码的作者独自工作了6个月之久。记住,首先与社区一块讨论你的改进,然后大家一起来做!



有句俏皮话是这么说的:开源项目没死掉,是因为还没人来修复你的Bug;因为没人修复你的Bug,所以这个开源项目死掉了。

4. 以身为程序员而自豪

优秀的程序员都以作为程序员而感到自豪。一旦你完成了某项功能,你会迫不及待地将成果展示给客户、麻利利地实现客户的想法。



如果发现自己的代码里面可能存在问题时,怎么办?可能会“自大”,因为是自己写的,就觉得代码审核没有必要;或者有问题也非要自己完成,而不是协作解决。优秀的程序员,应该学会与团队分享,时刻保持激情,但不仅仅是为了自己,而是为了团队、产品和项目。

5. 嗯…有点懒

几乎全部职业的优秀员工都很勤奋、工作努力,不过程序员例外,那些优秀出色的程序员都有点懒。这可能是唯一把懒惰当做优秀品质来对待的职业(测试人员可以除外)。

也许可以说明这一优秀特质的最知名的例子就是“计算机第一夫人”Grace Hopper在1952年发明了编译器。她解释说,做出编译器就是因为自己很懒,并且希望程序员都能够成为一个数学家。

如果一个程序员被要求定期完成某事,他/她会坚持想出一个办法来避免这样做。“一次编写,到处运行。”如果客户总是谈论令人厌烦的重复性的工作,优秀的程序员总会尝试着将这个工作自动化。

比尔盖茨也讲到“我总是会选择一个懒人去完成一份困难的工作。因为,他会找到捷径”。

程序员们,拥抱“懒惰”吧,将重复性的工作自动化,不要重复自己!提示:懒人们应该快速学会快捷键哟~这也是优秀程序员应该做的!!

6. 代码可视化

对于整个代码库,需要在脑子里面构建一个模型。这就是我们所说的“代码可视化”。



要做到“代码可视化”,首先我们需要了解整个代码库。需要对部分代码进行修改或增删时,需要知道在什么地方进行查找。问题出现在什么地方,应用程序中的对象/例程是怎么进行的,每个模块之间的关系是怎样的,这些都需要清楚。

其次,需要了解正在工作的代码环境。大部分情况下,我们会在多个文件中来回切换,优秀程序员会明白自己当前所处的环境,不会觉得晕头转向。只要一看代码框架和结构,就可以快速找到自己需要的源文件。当然,这需要对整个代码做到了然于胸。

不过,程序猿和程序媛在代码可视化方面的能力是由有差别的,据目前研究,貌似IDE中的导航功能更对程序猿有利。

原文:6 common traits of good programmers
  • 大小: 14.7 KB
  • 大小: 16.1 KB
  • 大小: 16.1 KB
  • 大小: 77.6 KB
  • 大小: 22.8 KB
  • 大小: 14.5 KB
17
1
评论 共 13 条 请登录后发表评论
13 楼 white_crucifix 2013-12-19 12:47
好久没去问别人问题了……
12 楼 qinboss 2013-12-18 13:43
•具有好奇心
•热爱分享
•具有社区意识
•以身为程序员而自豪
•有点懒
•代码可视化
11 楼 sunking_135 2013-12-18 08:48
我看到了一群攻城狮。。。
10 楼 TopLongMan 2013-12-17 21:44
说的很有代表性,但我很勤劳,呵呵。
9 楼 yixiandave 2013-12-17 14:58
lingduxyz 写道
yixiandave 写道
第一点,可能不同公司的情况不同,我们更倾向于优先询问同事。因为搜索引擎很难100%理解你正确的搜索目标(其实根本原因是没有给到合适的关键词),这个问题在中国程序员身上体现很明显,因为中文关键词显然不适合用来Google编程问题,而程序员自己将问题翻译为英文时就会丢失信息甚至出现歧义。而同事的理解能力明显会比搜索引擎强很多,如果这个问题碰巧同事遇到过,他就会很快给出解决方案。

我一般都粘贴“错误提示”去搜索,而不会用“为什么连不上数据库”类似的词搜索

错误提示在出现Exception并且很明确的时候很好用。实际上还有一些其他的情况,例如一个框架某个特性的用法之类,特别是前端js使用一些不熟悉的框架的时候,代码不正确更多情况是没有起作用,而不是一行报错扔出来
8 楼 s929498110 2013-12-17 12:07
lingduxyz 写道
yixiandave 写道
第一点,可能不同公司的情况不同,我们更倾向于优先询问同事。因为搜索引擎很难100%理解你正确的搜索目标(其实根本原因是没有给到合适的关键词),这个问题在中国程序员身上体现很明显,因为中文关键词显然不适合用来Google编程问题,而程序员自己将问题翻译为英文时就会丢失信息甚至出现歧义。而同事的理解能力明显会比搜索引擎强很多,如果这个问题碰巧同事遇到过,他就会很快给出解决方案。

我一般都粘贴“错误提示”去搜索,而不会用“为什么连不上数据库”类似的词搜索


赞同。

IT工作者用“为什么...”、“...是什么”、“怎么...”这类搜索语句实在太低级了。
7 楼 lingduxyz 2013-12-17 08:59
yixiandave 写道
第一点,可能不同公司的情况不同,我们更倾向于优先询问同事。因为搜索引擎很难100%理解你正确的搜索目标(其实根本原因是没有给到合适的关键词),这个问题在中国程序员身上体现很明显,因为中文关键词显然不适合用来Google编程问题,而程序员自己将问题翻译为英文时就会丢失信息甚至出现歧义。而同事的理解能力明显会比搜索引擎强很多,如果这个问题碰巧同事遇到过,他就会很快给出解决方案。

我一般都粘贴“错误提示”去搜索,而不会用“为什么连不上数据库”类似的词搜索
6 楼 dohkoos 2013-12-16 22:29
对照列表来看本人的社区意识比较缺乏,有待加强啊。
5 楼 rao104932467 2013-12-16 22:13
yixiandave 写道
第一点,可能不同公司的情况不同,我们更倾向于优先询问同事。因为搜索引擎很难100%理解你正确的搜索目标(其实根本原因是没有给到合适的关键词),这个问题在中国程序员身上体现很明显,因为中文关键词显然不适合用来Google编程问题,而程序员自己将问题翻译为英文时就会丢失信息甚至出现歧义。而同事的理解能力明显会比搜索引擎强很多,如果这个问题碰巧同事遇到过,他就会很快给出解决方案。

仁者见仁智者见智!!!
4 楼 Cwind 2013-12-16 17:50
最后一条说得很好
3 楼 tuhaihe 2013-12-16 16:17
cuippan 写道
前提是不能过多的打断自己的同事和自己先思考至少半个小时去解决

先自己思考,这个是必须的。不能什么都不想,就去问问题了,这不是明智的提问。
2 楼 cuippan 2013-12-16 11:32
前提是不能过多的打断自己的同事和自己先思考至少半个小时去解决!
yixiandave 写道
第一点,可能不同公司的情况不同,我们更倾向于优先询问同事。因为搜索引擎很难100%理解你正确的搜索目标(其实根本原因是没有给到合适的关键词),这个问题在中国程序员身上体现很明显,因为中文关键词显然不适合用来Google编程问题,而程序员自己将问题翻译为英文时就会丢失信息甚至出现歧义。而同事的理解能力明显会比搜索引擎强很多,如果这个问题碰巧同事遇到过,他就会很快给出解决方案。

1 楼 yixiandave 2013-12-16 10:26
第一点,可能不同公司的情况不同,我们更倾向于优先询问同事。因为搜索引擎很难100%理解你正确的搜索目标(其实根本原因是没有给到合适的关键词),这个问题在中国程序员身上体现很明显,因为中文关键词显然不适合用来Google编程问题,而程序员自己将问题翻译为英文时就会丢失信息甚至出现歧义。而同事的理解能力明显会比搜索引擎强很多,如果这个问题碰巧同事遇到过,他就会很快给出解决方案。

发表评论

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

相关推荐

  • 优秀的程序员都有那些特质?

    俗话说,不想当将军的士兵不是好士兵,同样地,不想当优秀软件工程师的程序员不是好程序员。在这篇文章中,我将根据 Lula 的 “” 视频的主要观点,结合自己的理解,谈谈优秀的软件工程师应该具备的 7 个好习惯。...

  • 03 _ 优秀程序员的六个关键特质

    什么样的程序员才是优秀的程序员呢?如果去问一个程序员,得到的答案有可能是,“写的一手好代码,...我自己工作中见过特别多优秀的程序员,从他们身上发现了不少共性的特质,我总结为以下六项,下面一一给你介绍。掌握

  • 那些优秀程序员身上的共同特质

    你是否发现,在我们身边的那些优秀程序员身上总是能找到一些共同的特质,这些特质并非与生俱来,但却逐渐在他们身上留下深深的烙印,这也使得他们变得与众不同,更成为我们心目中的佼佼者。 至少深入理解一门编程...

  • 那些优秀程序员身上的共同的特质

    你是否发现,在我们身边的那些优秀程序员身上总是能找到一些共同的特质,这些特质并非与生俱来,但却逐渐在他们身上留下深深的烙印,这也使得他们变得与众不同,更成为我们心目中的佼佼者。 至少深入理解一门编程...

  • 03 | 优秀程序员的六个关键特质

    最后,总结一下,优秀的程序员是什么样的?优秀的程序员可以熟练地使用必要的工具...现在,把我们今天讲的优秀程序员六大特质当作一套自测题,和自己对照一下,自己在哪些方面做得比较好?在哪些方面还需要继续精进呢?

  • 优秀程序员的特质_139个使程序员更好的特质

    优秀程序员的特质 您应该记住的事情。 面对现实,每个开发人员都想改善并变得更好。 大多数开发人员提出的最大问题是我将如何做。 以下是编程时应记住的事项。 代码展示 随着对代码布局的任何讨论的增加,...

  • COBOL语言简介

    COBOL语言 COBOL的全称是Common Business Oriented Language,意即:通用商业语言。 在企业管理中,数值计算并不复杂,但数据处理信息量却很大。为专门解决经企管理问题,于1959年,由美国的一些计算机用户组织设计了专用于商务处理的计算机语言COBOL,并于1961年美国数据系统语言协会公布。经不断修改、丰富完善和标准化,已发展为多种版本。 COBOL语言使用了3

  • SAX和DOM

    SAX是用于处理 XML 的基于事件的 API,SAX 是对“文档对象模型”或者 DOM 的补充 DOM 是用于由 W3C 发布的 XML 语法分析器的基于对象的 API SAX: 是基于事件的 API。 在一个比 DOM 低的级别上操作。 为您提供比 DOM 更多的控制。 几乎总是比 DOM 更有效率。 但不幸的是,需要比 DOM 更多的工作。 作为基于对象的接口,DOM 通过在内存中显示地构

  • 什么是 Cocoon

      Cocoon 是一种 Java 服务器框架,它允许使用 XSLT(XML 样式表语言转换 (XML Stylesheet Language-Transformation))转换动态发布 XML 内容。通过依靠 XML 描述内容以及使用 XSLT 将内容转换成多种格式,Cocoon 提供了用于构建内容、逻辑和表示在很大程度上彼此分离的应用程序的平台。 Cocoon 使用管道的概念来描述将内容发

  • JSF

    目前Java Community Process(JCP)正在进行最终草稿审核的Java Specification Requests(JSR) 127 - Java Server Faces(JSF)(http://www.jcp.org/en/jsr/detail?id=127)就是一个基于JAVA技术的Web应用框架标准,同时也是对于J2EE标准的一个重大补充。JSF使得您能够轻松而方便地设

  • 今天看到sharepoint

    今天在网络上闲逛时偶然发现这个东西,特别浏览了一下 先摘抄一部分: SharePoint Portal Server 2003是一种连接到整个业务流程中所有个人、团队和知识的可伸缩门户服务器。 通过单点登录和企业应用程序集成功能,SharePoint Portal Server 2003将来自不同系统的信息集成到一个安全的解决方案中。它提供了灵活的部署和管理工具,使得通过数据整合、组织和搜索的端到

  • 好消息:SqlServer2005

    兩項最Cool的特性! 1、CLR集成。可以與VS2005開發環境完美的集成,現在,我們可以用我們自己喜歡的語言(C#/VB?NET)來寫StoredProcedure和Function了! 2、XCopy部署數據庫!是的,當要移動數據庫時,我們只需要將數據庫像文件那樣拷貝到另一臺電腦上,然後,修改數據庫連接字符串中的“AttachDBFilename”參數的值為數據庫文件所在的路徑,其他一切就不

  • 单项海洋环境影响评价等级表.docx

    单项海洋环境影响评价等级表.docx

  • 基于AT89C51 单片机为核心器件,程序设计采用C 语言,Keil 软件编译程序,配以相关外围接口电路,实现了方波、锯齿波、正弦波、三角波、梯形波五种特定波形的产生【论文+源码】

    【作品名称】:基于AT89C51 单片机为核心器件,程序设计采用C 语言,Keil 软件编译程序,配以相关外围接口电路,实现了方波、锯齿波、正弦波、三角波、梯形波五种特定波形的产生【论文+源码】 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】:本设计中的波形发生器系统要求基于51单片机,因此选用以AT89C51单片机作为整个系统的控制核心,应用其强大的接口功能,构成整个波形发生器的硬件系统。使用C 语言对单片机编程可产生相应的正弦波,方波,三角波,锯齿波梯形波波形信号。在程序运行时,当接收到按键信息后,需要输出某种波形时,调用相应的中断服务子程序和波形发生程序,经电路的数/模转换器和运算放大器处理后,从信号发生器的输出端口输出即可得到要求的波形。 当需要改变频率时只需要改变单片机的波形发生程序中的递增或者递减变量即可。 【资源声明】:本资源作为“参考资料”而不是“定制需求”,代码只能作为参考,不能完全复制照搬。需要有一定的基础看懂代码,自行调试代码并解决报错,能自行添加功能修改代码。

  • 数学建模培训资料 数学建模实战题目真题答案解析解题过程&论文报告 完全多元图的最大匹配问题研究 共9页.pdf

    数学建模培训资料 数学建模实战题目真题答案解析解题过程&论文报告 完全多元图的最大匹配问题研究 共9页.pdf

  • 毕设源码-基于Python Web的社区爱心养老管理系统设计与实现_hvhwz--论文-期末大作业+说明文档.rar

    本项目是基于Python Web的社区爱心养老管理系统,旨在为社区养老提供一个全面、高效的管理平台。系统集成了用户管理、老人信息管理、健康管理、活动管理、服务管理等多项功能,通过简洁明了的界面,让管理人员能够轻松地进行各项操作,从而更好地服务于社区老人。 在架构上,系统采用B/S模式,前端使用HTML、CSS、JavaScript等技术,搭配Vue.js框架,实现了用户友好的交互界面;后端则基于Python的Django框架,提供了稳定且高效的服务端逻辑处理能力。数据库选用MySQL,确保了数据的存储安全和高效访问。 开发此项目的目的,不仅是为了满足计算机相关专业学生的毕设需求,提供一个实战练习的平台,更是希望通过实际项目的开发,培养学生的专业技能和实践能力,同时,也希望能为社区养老服务贡献一份力量,通过科技手段,让老年人的生活更加美好、便捷。

  • 教学版单体spring-petlinic,课程《Kubernetes微服务实践》.zip

    教学版单体spring-petlinic,课程《Kubernetes微服务实践》

  • 密码学领域的Vigenère多表密码算法解析与实现

    内容概要:本文介绍了16世纪法国外交家Blaise de Vigenère提出的一种多表密码算法,详细解释了Vigenère密码的加密解密机制及其历史应用背景。特别提到了当明文M的长度超过密钥K的情况下,密钥会被重复使用的技巧。 适合人群:对古典密码学感兴趣的初学者,以及希望深入理解密码编码基本原理的学习者。 使用场景及目标:了解Vigenère密码的工作原理,掌握简单的加解密技术,增强信息安全意识。能够自行实施加解密操作,理解经典密码学的基本概念和技术。 其他说明:本文不仅提供了理论讲解,还给出了具体的例子帮助理解和实操练习。

Global site tag (gtag.js) - Google Analytics