某天,突然将软件与公司管理放在一起思考,却发现了很多本质上的共同之处,请见下图:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

 
 
    我们从下往上看:
    程序员的工作有很其明显的特点,而且这些特点与函数的功能非常相似,比如任务明确、功能较单一、所涉及面很小但是对涉及到这块内容却相当熟练,尽量做到用较少的资源、高效率地去完成任务。
    组长和类的功能也很相似,比如都需要管理一定的函数/程序员,函数/程序员越多越难管理,并且需要相互之间有良好的接口。
    课长和程序呢,他们都负责一类的事物,在自己的管理范围内可以正常运行,但有时需要其他程序/课长配合来完成一个比较大的系统。
    最后是项目经理和系统,项目经理站在系统的高度来看项目的进展,他们的主要任务是合理分配资源,并保证整个系统正常有序的运行。
    上图中,越往上面,站点高度越高,更会以一种整体的角度去看问题,而越往下面呢,专攻能力越强,毕竟具体的任务最终还是要靠程序员来完成。
   
    上面我只是粗略地比较了软件与公司管理(或项目管理)之间的关系,其实其中还有很多内在的相似性,这里就不一一举例了,因为我想表达的是一种观念与思想,而不是仅仅为了说明他们有多相似。
    那为什么会有这些相似性呢,我发现他们都是为了解决同一个问题:即管理复杂的事物。
    软件发展到现在,已经越来越庞大也越来越复杂了,因此从语言的角度去看,在C之后出现了C++、Java,知道目前动态语言的流行;从系统的角度去看,从程序到操作系统到现在中间件的流行,开发平台的整合等,都说明了这一点。
    公司管理也是一样,需要管理众多人才,协调各种内外资源,并且需要考虑全球化等问题。
    由此,在这两个领域,人们都在不断追求解决这些复杂问题的方法,所以这些解决办法的内部有很多本质性的相似点。
 
    那知道了这些相似点有什么用呢?很明显,仅仅知道他们很像是不能解决任何问题的。
    那么如何发挥它的作用呢?当其中一方面遇到难题时,就有可能有用。
    比如当公司管理遇到难题时,去软件系统中找找是否有相似的问题,如果有的话,那很幸运,那软件系统中是否已经有了很好的方法来解决这类问题呢,如果有的话,那真是太幸运了,这时我们就可以考虑软件系统中的解决方法是否可以灵活运用到公司管理中来呢?
   
    我们再往大的方面看,世界发展到现在,各个领域都经历了无数的磨难与岁月的沉淀,于是在这些领域中都会有很多智慧和方法在那边,而且这些领域之间都有很多的相似性(可能源于他们需要解决类似的问题),因此当我们在某个领域遇到难题了,我们去其他领域去找找智慧,这样,资源就可以得到更高效的利用,并且创新会源源不断的涌来...