1700437840
当然,语言不必非得体现高超科技。史蒂夫·约翰逊仅用一晚时间就打造出第一个版本的at命令:
1700437841
1700437842
“Unix有一种在非上班时间运行计划任务的方法,这样,长时间的任务就不会影响人们的工作(记住,有十几个人共用Unix机器)。要想让任务稍晚再运行,需要编辑系统文件,并以相当晦涩的格式填写信息表。有一天,在与系统文件搏斗时,我听到自己喃喃自语‘我想让这个任务在凌晨2点运行’。突然,我意识到,可以将任务信息归纳为简单的句法:‘at 2AM run_this_command’。我花几个小时就搞出一版,并在第二天早上的‘当日消息’文件中进行了宣传。”
1700437843
1700437844
at命令在40多年后仍在使用,变化不大。如同其他一些语言,其句法是一种像是在大声说话的风格化英语。
1700437845
1700437846
Unix哲学是关于如何处理计算任务的编程风格。这是道格·麦基尔罗伊在《贝尔实验室技术杂志》(Bell Labs Technical Journal)Unix特刊的前言中总结出来的。
1700437847
1700437848
(i)让每个程序做好一件事。要做一件新的工作,就构建新程序,而不是通过增加新“特性”使旧程序复杂化。
1700437849
1700437850
(ii)预期每个程序的输出都能成为另一个未知程序的输入。不要用无关的信息来干扰输出。避免使用严格的分栏对齐或二进制输入格式。不要执着于交互式输入。
1700437851
1700437852
(iii)设计和构建软件,甚至是操作系统,要尽早试用,最好是在几周内就用起来。大刀阔斧砍掉笨拙的部件,重建它们。
1700437853
1700437854
(iv)宁可绕道构建用后即弃的工具来减轻编程负担,也别依赖经验欠奉的帮助。
1700437855
1700437856
这些编程格言并不总被遵守。举例:我在第3章中提到的cat命令。那个命令只做了一件事,把文件输入或标准输入复制到标准输出。今天,GNU版本的cat有(我可没瞎编)12个选项,用于诸如对行编号、显示非输出字符、删除重复空行等任务。所有这些都可以用现有的程序轻松处理。这些选项与复制字节的核心任务无关,而且将基本工具复杂化似乎会适得其反。
1700437857
1700437858
Unix哲学当然不能解决所有编程问题,但它确实为系统设计和实现提供了有益的指导。
1700437859
1700437860
1700437861
1700437862
1700437864
UNIX传奇:历史与回忆 9.2 组织
1700437865
1700437866
我相信,Unix成功的原因还有一大部分来自非技术因素,如贝尔实验室的管理和组织结构,1127中心的人际环境,以及一群人才聚在一起解决不同问题时的思想交流。这些因素比技术概念更难评估,所以必然只能从更为主观的角度来考察。与上一节一样,相关内容大多已在前文提到。
1700437867
1700437868
稳定的环境至关重要:资金、资源、任务、组织结构、管理、文化都应持续和可预测。如第1章所述,贝尔实验室的科研工作是大公司内部大型开发组织的大规模行动,具有悠久历史和明确使命:普遍服务。贝尔实验室的长期目标是不断改进电话服务,这意味着研究人员可以长期甚至年复一年地探索他们认为重要的想法,而不必每隔几个月就向人证明自己在努力。当然也有监督,任何人在一个项目上工作了几年而没有任何成果,都会被要求做出改进。偶尔会有人被调离研究岗位或干脆被赶出公司,但在我15年的管理生涯中,这种情形屈指可数。
1700437869
1700437870
经费有保障,研究人员不用考虑钱的问题。我在部门负责人任上时,也没担心过钱的问题。当然,确实会有人去操办这些事,但研究员们不必费心。当时没有研究计划书,没有季度进度报告,也不需要在工作前寻求管理层的允准。在我担任部门主管的某段时间里,的确开始需要编写部门活动的半年期报告,为此我让每位部门成员都写了一段。然而,收集资料只是为了提供信息,而不是为了评估业绩。偶尔也会有一些时候对出差进行更仔细的核准——可能每年只让参加一两次会议——但在大多数情况下,如果我们需要购买设备或旅行,都可以报销,不会被寻根问底。
1700437871
1700437872
富含难题的环境。正如迪克·汉明所说,不研究重要问题,就不可能做重要工作。几乎所有主题都可能重要,并与AT&T的通信任务相关。计算机科学是新领域,在理论和实践两方面都有很多想法可以求索。当然,理论和实践之间的相互作用特别富有成效。语言工具和正则表达式就是很好的例子。
1700437873
1700437874
在AT&T内部,计算机的使用呈爆炸式增长,Unix在其中举足轻重,对于程序员工作台之类工作支持系统尤为如此。主线电话业务也在发生变化,电子-机械式电话交换机让位于计算机控制的电子交换机。同样,这也是有趣的数据和项目来源,而且经常能够因科研而得到改进。坏处在于,大部分交换机研发工作都由印第安山(位于伊利诺伊州内帕维)的大型开发部门承担,所以经常需要去芝加哥出差。距离问题很难克服,今天仍然是个麻烦。再优秀的视频会议系统也无法取代就在隔壁的合作者和随手可得的专家。
1700437875
1700437876
贝尔实验室的科学家们也被要求融入学术研究界,因为学术界是科研问题和见解的另一来源,而且能借此紧跟施乐PARC[2]和IBM Watson[3] 等其他工业研究实验室的进展。我们参加同样的会议,在同样的期刊上发表文章,还经常与学术界的同事合作,双向学术休假。例如,1996年秋天我在哈佛大学任教,得到了贝尔实验室的全力支持。他们甚至继续给我发工资,让哈佛大学捡了个便宜。1999—2000学年在普林斯顿大学也是如此。
1700437877
1700437878
除了讲授内部课程,很多同事也在高校任教。普林斯顿大学、纽约大学、哥伦比亚大学和西点军校等附近的学校算是近水楼台,要去更远的地方做长期访问也没有多大难度:肯·汤普森在伯克利待了一年,罗布·派克在澳大利亚待了一年,道格·麦基尔罗伊在牛津待了一年。外部知名度对于招聘以及紧跟业界发展都很重要。“酒香也怕巷子深”,在今天看来依然如此。
1700437879
1700437880
聘请优才。慎于雇人。在1127中心通常每年只能新雇一两人,而且几乎都是年轻人,所以招聘决策非常谨慎,也许是过于谨慎了。当然,这也是高校熟悉的问题:人们往往不清楚该招专才还是通才。正如史蒂夫·约翰逊所说,我们应该雇用运动员还是一垒手[4]?我的首选是那些术有专攻的人,至于具体什么专业领域倒在其次。
1700437881
1700437882
无论如何,贝尔实验室努力尝试吸引优秀人才。科研部门招聘官每年拜访各大计算机科学系一两次,考察博士生。一旦发现可造之才,就邀请他们去实验室待几天。通常会有好几个小组负责面试,有的来自1127中心,有的来自其他部门。我在第1章中提到的针对妇女和少数族裔的GRPW和CRFP等项目也起了很大作用,因为它们培养了一流的长期雇员人选,这些候选人在读研时已经和我们相处了很久。
1700437883
1700437884
我们让自己的研究人员当招聘官,而不借助专业招聘官。积极的研究者能和师生们讨论技术话题,总能学到有用的东西,为公司树立正面形象。
1700437885
1700437886
与高校的关系往往是长期的。我在匹兹堡的卡内基梅隆大学(Carnegie Mellon University,CMU)担任招聘官至少15年。我每年去两次CMU,每次待上几天,与计算机科学系的教师谈论他们的研究,并与可能有兴趣到贝尔实验室工作的学生交谈。即使他们最终没有加入实验室,我也交到了好朋友。竞争非常激烈,因为好大学都在积极招人,顶尖的工业研究实验室也在积极招人,所以我的名单上有很多人被抢走了。这群人后来成就卓著,当时我希望能全数网罗,算得上是有眼光。
1700437887
1700437888
技术管理。管理者必须了解他们所管理的工作。贝尔实验室研究中心的各级管理层都有技术背景,他们对自己组织内部和其他组织的工作都有翔实的了解。部门主管应当知晓手下工作的细节,不是为了争论它有多了不起,而是为了能够解释给其他人听,帮助建立联系。起码,1127中心不存在“争地盘”问题。合而不争。管理层支持自己人,但互相之间经常合作,从不竞争。我不确定这是不是一种普遍经验,但确实值得追求。这该是管理者激励机制的一部分。
1700437889
[
上一页 ]
[ :1.70043784e+09 ]
[
下一页 ]