第一第二, 第三部分 )

“Coders at Work”,   对15 位顶级程序员的采访, 总共600页。 看似冗长的问答中有不少精辟的言论。 我摘录了一些关于挑选,面试程序员,优秀程序员的特点,和程序设计的句子。下面是 最后 3 个程序员的心得,和我的几句解释:

 

Coder




What they say about good programmer, interview, and design




My interpretation





 




Fran Allen




first woman winner of Turing Award




Software process:




did software-development process save the IBM/360 project?




it's was absolutely necessary,  but it was painful for the software people to [adjust to] design reviews, design specs, all of this stuff.


 

good programmer:

basic threshold: find out what they're excited about.

if they can't get enthusiastic about something,  they're not going to get charged up in a group.


软件流程:




因为IBM/360 项目的软件部分遇到了很大的困难,那时候还没有什么成文的 "软件工程", Fred Brooks 把管硬件的经理们调来,让他们来管软件部门, 因为硬件是一个相对成熟的产业 - 芯片设计,测试,等等。 这些“不懂软件”的同志们参考硬件产业, 建立了软件工程的基本流程。



从一个成熟的产业中学习,是很有效的办法。 现在我们还可以从软件工程的一些术语中看到硬件的影子 - 例如 smoke test 冒烟测试。

 

好的程序员:

热情 (前面 Ken 同学也谈到了这一点)

Bernie Cosell

czar of PDP-1

pioneer of APPANET,  the core of the later internet



advice to programmer:

write a lot of programs.

there is very few inherently hard programs. if the code looks very hard, that's almost always an indication that it was poorly thought thruough.   if you have complicated code, put it in an encapulated place.

programs are meant to be read. 

avoid premature optimization

find talented programmers:

whether they have the kind of inquiring, curious, precise kind of mind.  quickness of learning, interested in lots of different things, and kind of broadly based.

[carefully chosen] puzzle can gives you a glimmer as to how they organized something to approach it.





给程序员的建议:

写很多程序。

世界上难的问题/程序很少, 如果一个人的代码看起来很难,这通常意味着程序员没有想清楚。 如果你必须用很复杂的代码,把它包装起来。

程序是用来给人读的。

避免过早优化。

优秀程序员:


应聘者有没有刨根问底,好奇心, 准确的思维?  能快速地学习么? 是否对很多东西都有兴趣? 是否有很广泛的基础?

[仔细挑选的] 智力题能让你看到应聘者是如何组织材料,解决问题的。 


Donald Knuth

TAOCP, TeX and METAFONT, literate programming


... Awards | 1998 Recipient Donald Knuth

 

Knuth 在学术界的影响


How I learn programming – basically taking one program that i made up myself and sitting at a machine over a period of some weeks, and kept getting it to work a little better and a little better.

Q: Should every programmer be able to read TAOCP?

A: I sometimes wonder if I can read them.

but even an algorithm like a balanced tree ot AVL tree, i don't use it in m own programs unless i know that it's going t obe a really big tree.

what do you use?

i use an ordinary binary search tree with a little trick for randomizing it that i just put it. 




...