黑客?设计师?

来源:互联网 发布:路由器选择算法 优点 编辑:程序博客网 时间:2024/04/30 07:11

     

     二十年前,最好的程序员是一个能够将整个应用程序拟合到64KB的.COM文件,那些能够将小的可怜的80386玩转到极致的人就是当时的编程大师。

 

       那是因为在二十年前电脑非常昂贵而编程极其廉价。那是真正的“黑客精神”的时代。那个时代已经终结。由于市场的完完全全的本末倒置,在今天黑客精神再无生存之地。

 

       今天,电脑越发廉价,设计师日益珍贵。当代码可读性的远比其性能重要的时候,“开发者精神”的末日已然来临。

 

价格  VS  薪水

看这张图片,这是近二十年来(1994-2014)两种趋势的比较。第一种趋势的下跌向我们展示了近二十年来电脑内存和硬盘变的何等的廉价。

        第二种趋势展示了在同一时期软件开发者的薪水剧增。更准确些来讲,增长到了三倍。对此我并没有找到官方的报道,但我确信,设计师的工资持续增长已人尽皆知——尽管在二十年前6万左右就近乎是最好的工作,但如今资深设计师20万美元的年薪已不再是梦想。对于这一话题我发现一篇文章非常有趣。

 

       基本上,这意味着利用同样的堆技术、同样的内置HTTP服务的Linux内核,相对于目前而言,在1994年为了创建一个PHP网站我们必须在硬件上花费1000倍的经历,同时缩减3倍的程序设计师。

 

       区别是在1994年,如果我们的应用出现因硬件局限而产生的问题,我们需要额外支付35000 $/G的价格,在今天我们只需要10$。

 

       在1994年,雇佣更多的程序设计师要求他们优化甚至重写代码远比购买新的硬件更有效。在今天,处境完全相反。扩容服务器(尤其当服务器属于虚拟云中的一员时)在今天远比向软件优化付薪资便宜。

 

       在1994年,最好的工程师所拥有的是“黑客精神”,然而在如今,“开发者精神”更容易受到人们的青睐。

 

黑客精神

 

       具有黑客精神的人会将下面的代码称为斐波那契JAVA代码优雅版(你呢?)

       publicint f(int n) { returnn>2? f(n-1)+f(n-2):1; }

 

 

我认为这些品质有助于塑造一个优秀的黑客:

       能够充分利用一门编程语言的所有特性

       在辨别他人是黑客还是菜鸟或者码农方面独具慧眼

       厌倦于死板的规则和标准

       不写单元测试——那是给初学者准备的

       享受辩论——这是提现其天赋的绝佳机会

       文档与口头交流相比更喜欢后者,后者更有趣

       无法忍受个人代码(因质量原因)被别人更改

       喜欢将自己沉浸于一个工程中的时光

 

       一个黑客是一个天赋凛冽的个体。他想通过他所编写的软件来展现天赋。绝大多数情况下,他享受编程的过程并且仅仅是单纯地为了兴趣。我想说的是,他和代码已如夫妻般融为一体,离开代码后仍然保持快乐就如离婚后仍然乐不可支一样是绝对不可能的。黑客对大卖拥有绝对的所有权——他将自己归属于代码的主人。

 

      当我问我的一个黑客朋友——“人们会怎样理解这段代码的功能呢?”我几乎对听到同一个伴随着自豪之情和真诚微笑的答案——“那得问我!”

 

设计师精神

 

具有开发者精神的人会重构上述代码以增强其可读性。他会将这一段Java代码命名为——“优雅之码”(你呢?):

public int fibo(final int pos) {

  final int num;

  if (pos > 2) {

    num = fibo(pos - 1) + fibo(pos - 2);

  } else {

    num = 1;

  }

  return num;

}

我认为这些品质有助于塑造一个优秀的设计师:

       倾向于使用传统代码编写规则

       假定每个人都是新人并且尽可能书写的浅显易懂

       享受制定规则并遵守它的过程

       喜欢文档而不是交流,能通过文档自行领悟再好不过

       绝大多数的时间用于编写单元测试

       讨厌突发情况和加班

       乐意于看到他的代码被优化以及重构

       同时致力于多个工程项目

 

        一个设计师是一个优秀的团队成员。他对团队进程,标准,规则,培训以及准则的贡献和他对源代码的贡献一样多。即使离开团队,即使他离开了团队,他的代码理念仍将会发挥余热,这是他一直坚信的理念。

 

        对于一个设计师来说,他的代码以一种独立的方式生存——被修改,优化,重构,最终退役。这是他最满意的方式。一旦代码成长起来,他就需要独立生存。

 

展望

 

       当下,如果你还把自己看作一个黑客,那我只能说时光飞逝,你已不合时宜。

       在不久的将来,我们将会把我们的应用运行在没用内存限制和CPU存储空间限制的弹性计算平台上,而不用在考虑硬件限制。资源限制和性能提升只需在我们的月账单上添些零头就足以满足。资源利用率问题已成为过去式。

 

       同时,优秀的软件工程师薪水将会变得越来越高,仅仅检测下软件并给出诊断建议就会花费$500以上,就像好的律师和牙医那样。

 

       这就是为什么研发一个新的软件产品,投资者将更多的精力和金钱投入于可维护性的原因。投资者会将会明白,可读性最强、可维护性最强、自动化程度最好的那个才是最适宜于盈利的那个,速度,已不再是领头羊。

         原文出处: http://www.yegor256.com/2014/10/26/hacker-vs-programmer-mentality.html

0 0
原创粉丝点击