zoukankan      html  css  js  c++  java
  • 组织能力比算法更加重要 (译)

    这篇文章的原英文标题是Organizational Skills Beat Algorithmic Wizardry 。

    链接为:http://prog21.dadgum.com/177.html

    看到文章的一些观点和自己的一些体会相似,于是就顺手翻译成中文,不求信雅达,若能与诸同好有所得益即好。

    ----------------

    我曾经看过不少关于一些高端公司的技术专访的博客文章,看过之后庆幸自己没有正在找一份程序员的工作。想想看啊,当场实现古怪的堆和树的变体,解高难度限制的谜题,一百亿年才能完成的数值问题,要聪明地分析和用数学来描述。我的第一反应是噢,他们是怎么请到人来干活的 ?

    我的第二个反应就是绝大部分的编程工作并不需要这些算法才能。

    当我们开始写程序的时候,首要技能是保证一堆的功能不会因为它们的复杂而崩溃。我曾从业于大型的电信系统,终端游戏,博客软件,一堆的个人工具,需要复杂的数据结构或者非常重要的算法的情况是非常少的。相反,将某些值重排,处理特别情况,仔细处理系统内部的交互等情况反而是很多的。很大程度上,编程这活是一个组织活动,比如重构、简化、以及消除此起彼伏的无关操作。这就是为什么有那么多的业余程序员。你不大可能看到有人在业余时间修习了神经外科--这个需要专业和专注的必要的训练,但是很多人可以拿起来就开始编程,来完成自己的工作。我在一台8-bit家用电脑上开始学习编程的时候,我甚至连什么是算法都不知道。我不懂怎么排序,好彩的是当时我写的小游戏用不着排序。我写的代码都是些定时器、计数器以及状态管理。这时,我是一个组织者,而不是一个天才。

    几年前我写一个工具来将几张图片组成矩形的纹理。规模不大,大约1500行的Erlang和C代码。其中有一个20来行的片段是真正进行矩形打包的,但是并不难写,估计在面试的时候都能当场写出来。代码的剩余的工作就是加载文件,生成输出文件,处理图片上的属性(比如位置等),以及处理程序不同部分之间的数据流。需要加新功能或者增加错误处理、改进可用性的时候就微调一下代码。

    这就是大部分软件开发的典型。

    译者注:当然,该需要一些数据结构或者算法的时候不能含糊。不过大部分的情况下真的不需要复杂的数据结构或者算法,很多都已经封装好了的。但是,在业界包括学校重视数据结构和算法,忽视组织能力的培养和锻炼是一个事实,而将各种数据结构以及算法组织起来偏偏是最实在的。当我们看到赏心悦目的代码和纠结复杂的代码的时候就会深有这个体会。工业界搞了那么多年的组件化编程不就是要简化编程从而降低成本么,那岂不是更应该重视组件的组合,也就是对于组件的组织能力? 不过,根据我的观察,现在不少人对于基本的数据结构和算法真的不知所然,而只能进行简单的组装。这或许是两个极端。

  • 相关阅读:
    redis几种模式的部署(Windows下实现)
    servlet容器:jetty,Tomcat,JBoss
    redis三种模式对比
    Linux expect详解
    expect学习笔记及实例详解
    shell expect的简单实用
    【Spring Boot】内嵌容器
    java 怎么让打印信息换行?
    Java中的静态方法是什么?
    java的接口为什么不能实例化
  • 原文地址:https://www.cnblogs.com/raison/p/4605002.html
Copyright © 2011-2022 走看看