程序员(Programmer)

箴言

  • Hacker is someone who loves to program and enjoys being clever about it.

  • 程序员是最好的职业选择, 每两年,微处理器的速度要加倍,内存容量是原来的四倍,但是我们的大脑还是原来的大小,很显然,将需要更多的程序员来补充这些. - Anders Hejlsberg

  • 优秀程序员不在他们的代码中放入错误。一个错误进入基本代码中一个月后,要进行修复的代价多达十倍,如果错误出现在已完成的产品中,代价将是100倍。- Brad Silerbery (微软技术副总裁,曾领导开发Windows95)

  • 软件开发是小组成员协调努力的结果。- Ike Nassi(Apple公司技术副总裁)

  • 优秀程序员都是渴望学习的人. - Enrique Salem(Norton Utility 首席设计师)

  • 程序员的三大优良品质:懒惰,没有耐性和骄傲自大。- Larry Wall(Perl语言发明人) 懒惰和没有耐性会促使优秀的程序员无法忍受重复做同样的事情;骄傲自大定义为“从过度自豪或激情中产生的不现实的狂傲情绪”。

  • 先做人,再做技术人员,最后做程序员。

  • Professionals do not write bad code — ever. If you want to be a professional, if you want to be a craftsman, then you must not rush. You must keep your code clean. So clean it barely needs comments.

  • Good coders code, great reuse.

  • A most important, but also most elusive, aspect of any tool is its influence on the habits of those who train themselves in its use. If the tool is a programming language this influence is, whether we like it or not, an influence on our thinking habits. — Edsger Dijkstra, computer scientist

    关于工具,一个最重要的,也是最不易察觉的方面是,工具对使用此工具的人的习惯的潜移默化的影响。如果这个工具是一门程序语言,不管我们是否喜欢它,它都会影响我们的思维惯式。 –Edsger Dijkstra, 著名的计算机科学家

  • A program should follow the Law of Least Astonishment. What is this law? It is simply that the program should always respond to the user in the way that astonishes him least. 一个程序应该遵循``最小惊讶原则'',什么是``最小惊讶原则''?就是说一个程序 应该最小程度地引起用户的惊讶。

  • A program, no matter how complex, should act as a single unit. The program should be directed by the logic within rather than by outward appearances. 无论一个程序无论有多么复杂都应该是一个单一的整体。程序是被它的内部逻辑 所指引而不是它的外观表现。

  • If the program fails in these requirements, it will be in a state of disorder and confusion. The only way to correct this is to rewrite the program. 如果一个程序不能满足所要的需求,它就会处于混乱无序的状态中。唯一的出路 就是重写这个程序。

如果成为优秀的程序员

http://www.aqee.net/2010/05/20/what-makes-a-great-software-engineer/

  • 只做正确的事。不要妥协,工程质量是你作为一个优秀程序员的唯一终极证明。 确保你所有的代码都是在正确的方法下100%正确的写出的。要按一个优秀的程序员的标准来要求自己。
  • 甘愿受苦。伟大的程序员的第一反应是我要自己解决这个问题。
  • 学无止境。想成为一名伟大的程序员,你首先要承认你不是无所不知,你必须每天都要努力的寻找、学习新的知识。在你现在的公司里或组织里寻找能让你学习、让你钦佩的人。在复杂的问题上征求他们的意见,看看他们是怎么思考的。向他们介绍你的解决思路,请他们给予批评指点。如果在你的周围你不能找出一个能作为你的导师的人,这要么是你还没有认真的寻找,要么是你留在了一个不该留的公司里。如果你在现在的工作上不能学习进步,那是到了你该换个工作的时候了。
  • 分享知识。让你有价值的不是你的知识,而是如何运用你的知识给公司创造价值。 难道还会有比分享知识给他人更能给公司创造价值的方法吗?
  • 伸出援助之手。伟大的程序员重视他们的团队,愿意为团队做任何的事情。
  • 十年磨一剑。伟大的程序员不是天生的,是后天炼成的。

Joel

  • 就同所有行业中最好的人才一样,那些优秀的程序员是不会出现在招聘市场上的。
  • 优秀的程序员一般是热门技术的早期接收者,他们对新事物充满好奇心,而且永远对进一步改进有兴趣。
  • 在程序员换工作时考虑的所有因素中,报酬的位置低得让人吃惊。如果你开始听到有人在抱怨薪水,一般表明人们并不真正喜欢他们的工作。如果你想雇佣的新人提出高的离奇的薪水要求,并且不愿意降低,那么你可能遇到的是这样一种情况,那些人心里想:“好吧,如果不得不接受这份糟糕透顶的工作,那么我至少应该有一份优厚的报酬。” 我们说程序员不在乎钱,并不意味着你可以向他们支付低工资,因为程序员对公正公平是在乎的。
  • 程序员的三种管理方法:军事化管理法,经济利益驱动法和认同法。其中,唯一有效的是获得程序员对公司的认同。金钱的奖励是一种外部激励,其作用远远落后于内部激励。让员工对公司产生认同非常困难,可行的方法包括:高尚的公司目标和公司文化,如Google的Don't be evil,有特色的产品和理念,如Apple的产品。
  • 从长远来看,那些不关心效率、不关心程序是否臃肿、一个劲往软件中加入高级功能的程序员最终将拥有更好的产品。(对性能和代码可读性进行取舍是,要保留后者。)
  • 只有身处某个行业,才会清楚所谓的“干净”的全部意思。
  • 只要把相关内容放在一起,就能改善代码的质量。
  • 用许多平庸的程序员取代少数优秀的程序员,这种做法的真正问题在于,不管平庸的程序员工作多长时间,他们做出的东西都无法像优秀程序员做得那样好。这不是“生产率高10倍”的问题,而是“普通”程序员永远都唱不出开发优秀软件所需要的那种高音。

Paul Graham

  • 好程序员和伟大的程序员之间的唯一的差别, 就是体察别人的能力。有些程序员很聪明, 但论到"换位思考", 则是完全的自我主义者。这样的人不可能设计出伟大的软件, 他们从来不懂得理解别人的观点。
  • 程序写出来是给人看的, 碰巧机器也能运行。给程序加注释, 并不是增加易读性的好办法。我把Abelson和Sussman的话再发挥一下:程序语言是用来表达算法的, 碰巧也能在机器上运行。好的编程语言, 表达软件的能力比英语更好。只有在代码含义复杂难解的地方, 才有必要加注释, 就好像高速公路上急转弯的地方才会有警告标志。

None: Programmer (last edited 2011-01-18 06:27:06 by ZhigangWang)