我这些年和许多程序员工做过——他们有些人超级棒,有些明显比较日常。由于我近来和一些熟练的程序员工做的很愉快,我花了一些时间考虑我羡慕他们什么。程序员
是什么让一个好的程序员那么好,差的程序员那么差?或者,简短一些,是什么让一个好的程序员那么好呢?算法
根据个人经验,成为一个优秀的程序员与年龄、教育或者你挣钱的多少没有关系。关键在于你的表现,更深入的说,是你如何思考。我注意到我羡慕的程序员有一致的习惯,编程
比起他们所选语言的知识、对数据结构和算法的深刻理解、或者几年的工做经验——更多的是他们交流的方式,数据结构
管理本身的方式,和根据他们精湛的技巧能够知道他们接触编程的方法颇有意义。数据结构和算法
固然,成为一个好的程序员须要的比任何人能够列举的都还要多,我不会基于这些实践的存在(或者缺失)而单独评判任何程序员。编程语言
但当我看到时我确实能明确的知道,当我看到一个具备这些性格的程序员时,我会想,“这我的真的知道他们在作什么。”函数
作研究工具
或者称做“三思然后行”,或者称做“谷歌一下”。学习
不管你怎么称呼它,你可能遇到的大多数编程问题几乎在必定形式上都已经被解决了。传道书早就记录在案,阳光底下无新事。测试
在GitHub上的库文件列表中,在因特网上的博客中,或者刚好与某我的经验交流中,好的程序员知道要在解决一个问题以前先作研究。
我曾经见过厉害的程序员急于给出解决方案,可是我曾经一块儿工做过的最糟糕的程序员,历来不咨询他人,
从而致使作了大量的重复性工做或者刚好使用了错误方式来解决问题。因而很不幸的,他们最终为他们的错误付出代价。
读错误信息(并以之行事)
这包括对堆栈追踪的符号解析。是的,使人厌恶并且不幸——但若是你不肯意这么作,怎么知道哪里出错了?我知道的最高效的程序员不惧怕深刻挖掘问题。
最低效的程序员看到错误甚至都不肯读错误信息。(这听起来挺好笑的,但我遇到的频率会让你吃惊。)
更进一步说,伟大的程序员看到问题,会急迫的去解决它。对于他们来讲,读错误信息仅仅是第一步;他们渴望深刻问题并找出错误的根源。
他们对推卸责任没有兴趣,他们对找到解决方案有兴趣。问题确实在他们这里止步。
会去看源代码
文档,测试和人:这些均可能会说谎。未必是故意撒谎,可是若是你想确切的知道代码是怎么工做的,你就必须亲自察看源代码。
即便这不是你很是熟悉的语言也不要惧怕——好比,若是你主要是一个Ruby程序员而且你怀疑Ruby的C语言包里有错误,那就去解压它看看再说。
不错,你可能会一无所得。可是谁知道呢,你也可能会找到问题所在,比起什么都不作,你至少选择了一条更有机会的路。
若是你工做在一个非开源的环境中,就不太好办了,这很不幸,不过道理是不变的。糟糕的程序员对查看源码一般没有太多兴趣,结果就是,跟那些愿意去研究一下源码的人相比,他们一般会被这些问题困扰的更久。
说作就作
好的程序员老是趋向于采起行动。他们彷佛有种控制不住的强迫性——一旦他们确认了一个问题或者看到了一个新的特性需求,
就会当即着手解决,有时甚至过早或者过于一往无前。他们遇到问题的直觉反应就是正面解决它。
有时这会带来麻烦——可是他们的热情正是他们可以作的很好的关键因素。当某些人还在拖延回避或者幻想问题能本身消失的时候,好的程序员已经开始动手了。
更简单的来讲(也许,太过直白),若是你看到一我的兴奋的发现并处理问题,颇有可能你获得了一名好程序员。
防患未然
这多是一个坏的程序员的特征——他们老是纠缠于一个又一个的人为失误,历来都是没有明白上一个就转向下一个。
他们老是在抱怨他们程序中的错误部分,却耗费数小时对完美运行的代码来debug。他们让情绪占据主动,相信直觉而不是仔细明确的分析。
若是你忽然遇到一个问题——或者每个问题看起来都像是世界末日通常,你极有多是在犯错误而不是在解决潜在的问题。伟大的程序员会花费一些时间来了解是什么出了错,
哪怕是真的是一场灾难,除了这些,他们还会把常出现的问题当成分配任务来处理掉。因为他们能更精确的解决大部分问题,从而不会提升你的团队的紧张程度。
善于交流
说到底,编程也是一种交流的方式。可以简洁明了地表达出你的观点之于写代码就如其之于写诗同样重要——长久以来,
我发现那些可以写出精炼的电子邮件、优雅的报告或者仅仅是高效的备忘录的人一般也会是更优秀的程序员。
这个发现对写程序和对英语同样使用。固然,把充斥着括号和只用一个字母命名的函数写在一行里面也是能够的,可是若是没有人可以理解你写的代码,
又有什么意义呢?不管使用什么媒介,优秀的程序员会把时间花在如何将他们的观点更好地表达出来上面。
激情四射
我想这是最可以体现一个好的程序员的地方(而且,不只在计算机行业,这点适用于任何行业)。
若是你真正关心你作的东西——不仅是把它当作一个工做去应付,而是一个兴趣、一件对你有着莫大魅力的事情,那么在这个行业里,相较于其余人而言,你就拥有了一项巨大的优点。
好的程序员会一直保持着写代码的状态,他们天天花在这个行业里的时间都不低于8个小时——包括工做和空余时间。在编写项目和授业解惑二者之间,
他们不会偏向任何一方。他们不会只是为了搞清楚某个东西的工做原理而成天痴迷于新技术或新的编程语言。
当我观察一个周日正在作本身感兴趣的项目、在创造本身须要的工具、被新的、有趣的事物吸引的程序员的时候,我意识到我正在观察一个会令全部人都不禁自主心生敬意的人。
最后,厉害的程序员不会将他们的专业看作赚钱的工具,而是一种改变世界的手段。我想这就是早就一个伟大程序员的真正缘由吧。
编程,对于他们来讲也就意味着创造世界。也只有这样的人,才值得咱们由衷地敬佩和景仰。
另外若是你想更好的提高你的编程能力,学好C语言C++编程!弯道超车,快人一步!笔者这里或许能够帮到你~
欢迎转行和学习编程的伙伴,利用更多的资料学习成长比本身琢磨更快哦!
免费学习资料: