成为一个优异的程序员与年岁、教育或许你赚钱的多少没有关系。关键在于你的表现,更深化的说,是你怎样考虑。比起他们所选言语的常识、对数据结构和算法的深化了解、或许几年的作业履历——更多的是他们沟通的方法,处理自己的方法,和依据他们精深的技巧可以知道他们接触编程的方法很有含义。
当然,成为一个好的程序员需求的比任何人可以罗列的都还要多,(dusiLiang)我不会依据这些实践的存在(或许缺失)而独自评判任何程序员。但当我看到时我的确能清楚的知道,当我看到一个具有这些性格的程序员时,我会想,“这个人真的知道他们在做什么。”
他们做研讨
或许称作“三思而后行”,或许称作“百度一下”。
不管你怎样称呼它,你或许遇到的大多数编程问题几乎在必定形式上都现已被处理了。传道书早就记录在案,阳光底下无新事。在GitHub上的库文件列表中,在因特网上的博客中,或许刚好与某个人履历沟通中,好的程序员知道要在处理一个问题之前先做研讨。
我早年见过巨大的程序员急于给出处理计划,但是我早年一起作业过的最糟糕的程序员,向来不咨询别人,然后导致做了许多的重复性作业或许刚好运用了过错方法来处理问题。所以很不幸的,他们终究为他们的过错付出代价。
读过错信息(并以之行事)
这包含对库房寻找的符号解析。是的,令人厌恶并且不幸——但假定你不乐意这么做,怎样知道哪里出错了?我知道的最高效的程序员不惧怕深化挖掘问题。最低效的程序员看到过错甚至都不愿读过错信息。(这听起来挺可笑的,但我遇到的频率会让你吃惊。)
更进一步说,巨大的程序员看到问题,会急切的去处理它。关于他们来说,读过错信息只是是第一步;他们巴望深化问题并找出过错的根源。他们对推卸责任没有喜欢,他们对找到处理计划有喜欢。问题的确在他们这儿停步。
他们会去看源代码
文档,查验和人:这些都或许会说谎。未必是故意说谎,但是假定你想妥当的知道代码是怎样作业的,你就必须亲身查询源代码。
即便这不是你十分了解的言语也不要惧怕–比如,假定你主要是一个Ruby程序员并且你怀疑Ruby的C言语包里有过错,那就去解压它看看再说。不错,你或许会一无所得。但是谁知道呢,你也或许会找到问题所在,比起什么都不做,你至少挑选了一条更有机遇的路。
假定你作业在一个非开源的环境中,就不太好办了,这很不幸,不过道理是不变的。糟糕的程序员对查看源码一般没有太多喜欢,作用便是,跟那些乐意去研讨一下源码的人比较,他们一般会被这些问题困扰的更久。
他们说做就做
好的程序员总是趋向于采纳行为。他们如同有种控制不住的强迫性:一旦他们确认了一个问题或许看到了一个新的特性需求,就会当即着手处理,有时甚至过早或许过于一往无前。他们遇到问题的直觉反应便是正面处理它。
有时这会带来费事–但是他们的热心正是他们可以做的很好的关键因素。当某些人还在推迟躲避或许愿望问题能自己消失的时分,好的程序员现已开端着手了。
更简略的来说(或许,过火直白):假定你看到一个人振奋的发现并处理问题,很有或许你得到了一名好程序员。
他们有备无患
这或许是一个坏的程序员的特征:他们总是羁绊于一个又一个的人为失误,向来都是没有理解上一个就转向下一个。他们总是在抱怨他们程序中的过错部分,却消耗数小时对完美作业的代码来debug。他们让心情占据主动,信任直觉而不是仔细清楚的剖析。
假定你忽然遇到一个问题——或许每一个问题看起来都像是世界末日一般,你极有或许是在犯过错而不是在处理潜在的问题(ourwphone)。巨大的程序员会花费一些时刻来了解是什么出了错,哪怕是真的是一场灾害,除了这些,他们还会把常呈现的问题当成分配任务来处理掉。因为他们能更准确的处理大部分问题,然后不会进步你的团队的严峻程度。
他们善于沟通
说到底,编程也是一种沟通的方法。可以简洁明了地表达出你的观念之于写代码就如其之于写诗相同重要——长久以来,我发现那些可以写出精粹的电子邮件、典雅的陈说或许只是是高效的备忘录的人一般也会是更优异的程序员。
这个发现对写程序和对英语相同运用。当然,把充满着括号和只用一个字母命名的函数写在一行里边也是可以的,但是假定没有人可以了解你写的代码,又有什么含义呢?不管运用什么前语,优异的程序员会把时刻花在怎样将他们的观念更好地表达出来上面。
他们热心四射
我想这是最可以表现一个好的程序猿的当地(并且,不只在计算机作业,这点适用于任何作业)。
假定你实在关心你做的东西——不只仅把它作为一个作业区唐塞,而是一个喜欢、一件对你有着极大魅力的作业,那么在这个作业里,相较于其别人而言,你就具有了一项巨大的优势。好的程序猿会一向保持者写代码的状况,他们每天花在这个作业里的时刻都不低于8个小时:包含作业和空余时刻。在编写项目和授业解惑两者之间,他们不会倾向任何一方。他们不会只是为了搞清楚某个东西的作业原理而整天痴迷于新技术或新的编程言语。