看到“优秀程序员的两大要素:懒 + 笨”一文, 是比较有趣的,刚好在上月我的“KISS原则”文中也引用了Larry Wall(Perl的创造者)的经典语录:
就是:“好的程序员要有3个宝贵品德:懒惰、没耐心和骄傲”。那篇文章主要谈KISS原则,没有深入展开,只是简单说:
这篇“优秀程序员的两大要素:懒 + 笨”基本阐述类似观点。 其实我觉得一个好的程序员光“懒惰、没耐心和骄傲”还不够, 他(她)还必须同时“勤奋、耐心和谦虚”。 因此准备凑成两篇来写:
本篇主要写“懒惰、没耐心和骄傲”的素质。 懒惰 这个素质在“优秀程序员的两大要素:懒 + 笨”一文已经比较详细指出了:
一个勤奋的,但是水平拙劣的程序员可能给项目带来的损失更大! 所谓勤奋的差程序员 就是不搞清楚如何编程序就野蛮开工的, 他们不厌其烦地堆砌垃圾代码, 使用最熟练的按键组合是CTRL+C/CTRL+V(和网站编辑们相似), 他们可能会产生惊人的代码量,如果这些代码能幸运地运行起来, 只能叹服他们的debug的水平和耐心。 这些人与其叫作程序员,不如叫作代码民工。 不幸的是,目前市面上相当数量自称程序员的人可能就属于这一类。 在UUZone我们采用笔试的方法来作为招聘的第一关, 一些最最基础的试题往往难倒了大部分人, 超过95%的笔试者直接被淘汰。 优秀程序员绝对不会愿意去浪费时间做重复劳动, 他们宁可寻求捷径,宁可花更多时间去磨刀, 也要在砍柴的时候最省力,最偷懒。 正如“优秀程序员的两大要素:懒 + 笨”一文说的:
没耐心 和懒的作风类似, 好的程序员没有耐心,尤其是重复自己的工作。他们往往痛恨copy paste, 认为copy paste是带来代码维护性差,容易出错的重要因素。 好程序员甚至发明了DRY原则来为自己的美耐心开脱。 所谓DRY就是Don‘t Repeat Yourself原则。 为了能满足自己的没耐心的需求, 优秀程序员们设计出各种可以让自己省心或者偷懒的工具, 比如代码生成器、各种程序框架,各种重用库等,这样“一次编写,多次复用”可以真正得到推行。 好的程序员不喜欢重新发明轮子、更不喜欢重新制造轮子, 遇到一项任务即时如何实现已经是一目了然,他们也宁可耗费一些时间去求证有没有可以重用的东西,也不愿意拉起来就自己做,即使这样可以骗到工资或者项目经费 -- 因为他们绝对没有耐心浪费自己的时间去重复别人已经完成的工作。 为了不重复发明轮子, 好的程序员会试图让每一次的工作都尽可能成为下一次工作偷懒的工具和没有耐心的替代品, 哪怕这一次为了达成这些目的需要耗费一些耐心和额外的工作量。 好的程序员没有耐心老去调试程序,由于编程不调试是不可能的, 所以这些家伙就弄出各种方法来让bug不容易产生,他们称为write solid code. 其实无论code多么solid, bug还是有,调试还是不可避免。但优秀的程序员们通过各种方法从设计的时候,编码开始的时候,就试图让bug和调试的量减少,因为他们实在没有耐心那么干。 相反,差的程序员喜欢什么都动手自己来搞, 他们宁可耐心地copy paste代码, 非常耐心地调试, 耗费大量的时间,填写加班单, 每日每夜地干活。 我见过一些人专门喜欢对着书抄袭其中的代码,还很有成就感,我只能抱歉地说,他们因为太有耐心, 所以成为了差的程序员。 骄傲 你是世界上最优秀的程序员吗? 我是, 你是不是呢?如果你的回答不是,而你干着程序员的工作, 那么你要小心, 你缺乏了一个能成为优秀的程序员的重要素质! 优秀的程序员的骄傲并不是表现在傲慢上,更不是表现在对别人的轻视和对项目的心不在焉, 而是表现在他们的骨子里和心里。他们对自己的能力充满自信,他们不相信所谓权威, 他们敢于怀疑一切, 他们敢说出让别人以为他是疯子的话来。 优秀的程序员从来不在讨论中告诉你“不可能”或者“做不到”,他们最常说的是“我去尝试一下”。 优秀的程序员从来不会自行惭晖地说,那是高手才能作到的,我做不到。他们相信别人能作到的,我一定也行,甚至可以做的更好。 优秀的程序员有时甚至会过度高估自己的能力,尤其是时间和工作量上, 他们很少会故意把工期估计得充分 -- 把工期估计充分应该是项目经理们做的事情。 所以优秀的程序员经常心甘情愿地加班加点-- 因为他们太骄傲了,必需证明自己的能力。 --- 如果你具备了“懒惰、没耐心和骄傲”这3个优点,恭喜你! 你有了成为优秀程序员的素质! 但是不要着急, 你还必须同时具备“勤奋、耐心和谦虚”的素质, 你才能真正修成正果! 而这些素质,有待我下blog分解! |
|