读《大道至简》第六章,映入眼帘的是:语言是一种工具。在人们的认识中,语言是一种工具。的确,语言是工具,它是思维的工具,是交际的工具,是文化传承的工具,语言的工具性价值已得到人们的广泛认可与普遍使用。但从语言的使用过程、使用范围、使频率以及语言的特质等诸方面进行考察,可以发现,它具有不同于一般工具的许多特点。
从语言的使用过程看。一般的工具是与主体分离的,工具只有在作用的过程中,才与主体在一起,当完成某一特定过程后,主体便与工具分开。如飞机,只有在飞行时,人才与飞机是一体的,一旦飞机将人送到目的地后,飞机便又作为工具而独立地存在。语言则不同,它既是形式,也是内容,主客体始终是在一起的。
然后,程序员的成长及关注点:一个项目对于不同的人来说会意味着不同的过程和不同的想法,比如对于公司董事长、经理、项目经理和具体开发人员来说,项目的过程是非常不一样的。
对公司董事长来说,他面对的是公司生存和发展的问题。所以面对一个项目,他会思考该项目是否会赚钱,是否会持续给公司带来盈利,公司未来以何种方式来运营该项目或产品等。说白了,他会从经营的层面去思考一个项目。对公司经理而言,他面对一个已立项的项目,他会思考该如何组织公司力量开展工作,比如当前公司是否有力量做这个项目,该给公司的哪个部门主持或多部门联合合作,是否需要外包等?对项目经理而言,他就需要从成本、时间、范围等多个角度从看这个项目,如何在众多约束条件下实现该项目,达到公司和客户的要求,让多方都满意。对项目经理和开发经理来说,实现一个项目有N多思路和过程,那么就手头的项目来说,到底就选那条路径呢?当然这个问题没有唯一的答案,只能就事论事,从整个项目的大局和条件、资源等来看,而做出选择。对于开发团队来说,具体的需求也明确了,你们就按这些要求去做吧!至于你怎么做,领导层并不会怎么关心,细节的问题那是项目团队的事,领导不便过多干预,当然公司可能存在对项目开发过程中的宏观要求,比如多复用公司资产等。接到项目任务后,开发团队要思考到底使用面向过程开发等还是面向对象来开发,这些都是他们关心的问题。对于具体的开发人员来说,他们是具体实现工程或产品的一线人员,他们是系统的建设者,一砖一瓦都是由他们添加完成的,所以他们会考虑最为细节的问题。比如怎么设计流程,怎么设计其中的数据结构等。
总而言之,不同的角色和组织对项目的思考以及对任务的划分是不一样的,开发人员注重实现细节,开发团队注重开发方法,开发经理等注重开发过程,项目经理等注重软件工程,高层经理注重项目的组织和管理,公司董事注重项目的经营和市场等。
菜鸟都是从编程一步步走过来的,但是我们要相信一个项目的精髓在于分析架构良好的连接关系,而不仅仅是个人的编程能力。