金牌译作 纪律造就开发高手

1494个读者 翻译: 谁说眼泪是醉  08/19/2007 原文 引用 双语对照及眉批 字体大小

   Scott Koon 最近写到,纪律作为一个开发者特质的重要性:

    每个月都会有一种新的编程语言或方法问世,随后其信徒会收集来自世界各个角落的赞美之辞:所有这些都会许诺能带来生产率和质量上的提高。但是有一种品质是所有成功的开发者所必备的。这种品质能造就或毁坏每一个项目。

    纪律

    一个不遵守纪律的散漫的开发者将不能保证按时出货也不可能撰写出易于维护的代码。而一个遵守纪律的开发者将不仅能使项目成功,而且还会提高同伴的生产率水平。软件架构师和开发者如果将他们的成功归结于他们所采用的任何方法,这样只会给他们帮倒忙。真正的原因在于你有多遵守纪律。

   这是一个有趣的巧合,因为我最近正好给一组开发人员做了有关源代码控制的讲演。我发现在讲演过程中我一直在重复同一个单词:纪律、纪律、纪律!我之所以重复它是因为单有一个强大的源代码控制系统还不能迫使每一个人都能以结构化的、理性的方式使用该系统。不。我们还需要纪律。至少是在我的经历中,很少有工作室拥有适当的纪律。更多的情况中,源代码的控制就像下面这幅 Windows 桌面:

Windows 桌面

  以至于最终形成的源代码控制,不是漂亮、结构化的、拥有逻辑性的分支和标签的项目集合,而是一种毛茸茸的、包含被疯狂地命名而毫无逻辑结构的文件夹的球状物。这正如普通用户的桌面。

  你用哪种语言这并不打紧,你可以用任何语言来书写 FORTRAN。

  因此我倾向于同意 Scott 的观点。没有纪律,诸如工具和语言这样的东西就免谈。但是光重复“纪律”是无用的。也许刚入门的开发者需要的是一位编程良师。这位良师不惧怕从个人的角度推崇必须的纪律,有些人会很硬邦邦,而有些人可能拥有良好的激发技巧来唤起对纪律的追求,这正如 Gunnery Sergeant Hartman所说的:

】有些密歇根尔米在全金属外壳


    如果你们各位女士能离开我的岛屿,能挺过新兵训练,你们将成为武器。你们将是祈求战争的死神。但是直到那时你们都还是让人作呕的。你们是地球上最低贱的生命。你们甚至不是人、能做爱的生物。你们除了是两栖动物,什么都不是。因为我很严厉所以你们不会喜欢我。但是你们越恨我,你们学到的就越多。我严厉但是我很公平。这里没有种族歧视。这里你们个个都是无用的。我的命令就是要赶走所有那些不能将衣服打包来服役于我的部队的非侵入者。你们这些渺小无用之人能明白吗?

  你还可以在 McConnel 的《代码大全》中找到用一般语言讲述的相同建议:

    很难向一个刚毕业的计算机专业学生解释为什么你需要惯例和工程纪律。当我在读本科的时候,我写的最大的程序是500行可执行代码。作为一名专业人员,我写过许多小于五百行的实用程序,但是主要的项目其平均代码规模在5000行到25,000行之 间。我甚至参与过有500,000行代码量的项目。这些类型的项目不仅需要相同的技能在更大规模上的运用,而且需要一套完全不同的技能组合。
         
    回顾在 NASA 软件工程实验室的15年工作经历,McGarry 和 Pajerski 认为强调人类纪律性的方法和工具是非常有效的。很多具有伟大创造力的人都很守纪律。正如谚语,”形式即解放“。伟大的建筑师要受制于物理材料、时间和成本。伟大的艺术家也一样。任何仔细看过达芬奇的画作的人都应该欣赏他很有纪律性的对细节的重视。当米开朗琪罗设计 Sistine  Chapel 的屋顶时,他把屋顶分解成有关三角形、圆形和矩形等几何形状的对称集合。他依据三个 Platonic 台阶来设计三个对应的区域。如果没有这种自觉的结构和纪律,那300幅人像画就只能会是混沌而不可能成为在一件伟大的艺术作品中的和谐元素。
 
  纪律拥有很多种形式,它已渗透到了软件开发的各个方面。从小处着眼。比方说你的数据库模式中包含三个作为主键的表列,分别命名为 “list_id"、"ListId"和"list_value"。显而易见,这里我们的开发团队需要一位 Gunnery Sergeant Hartman 来绅士般地提醒团队:在这种问题在你们将来所有的代码中制度化之前就去修改它,将是个好主意。

  你没有必要拥有一个严格、死板的、军事化的行为规范。虽然软件工程是一个新兴的领域,但是一些公认的惯例已经形成,用来构成现代软件开发。为了能从这些惯例中受益,我们唯一所需的就是古老的纪律。如果不从你做起,还会有谁?

继续阅读

标签:

内容有问题?请与我们联络。

译作评分

  • Currently 3.50/5
  • 1
  • 2
  • 3
  • 4
  • 5
 3.5  |  2 个评分

1条评论    5眉批

  • 1.

    雷声大雨点大 大学士 | Blog

    是的,大规模的软件开发更多的是管理,而不是技术了。纪律的重要性就体现在这里。或者翻译成编程的规范?

    另外有几则眉批在文中。。。

    08/21/2007

添加评论

欢迎访问译言网。在这里,您可以。。。

阅读
发现
翻译