大道至简第六章-从编程到工程
语言的是诞生是方便人们交流沟通,是为了人们能理解你所想的东西,你所要做的事情,正如英语,汉语,拉丁语等等语言,这些语言都是为了让人们能够很好地与对方交流沟通,你能说哪种语言更好哪种更差么,语言只是一种工具,能达到目的,就足够了,能让别人理解你所要表达的意思就行,不必追求是用英语交流还是用汉语交流更好, 学会制作和使用工具是程序员的重要标志。
程序=算法+结构;这是编程的本源定义,也即编程的精义,与代码相关的任何工作,最终仍会落足于这样的一条规则。
做事讲究方法的人往往效率更高,同样编程也需要方法,只不过工程中的方法是需要长期的实践总结出来的,实践积累到一定程度,自然而然地产生了方法,凭借对工程的不断回顾、理解、分析也就积累了经验,方法也就有了,自然就不用犯愁编程。
过程解决的是工程中角色关系的问题,过程中的问题就是角色、沟通和环节的问题,合适的角色应被安排到合适的位置上,沟通也是团队间的要素,良好有效沟通会使事情事半功倍,做项目工程也需要知道哪个环节更为重要,从而把着重点放在哪里,否则客户不会满意,项目自然也不会成功。
工程是需要不同知识领域的角色参与,过程伴随工程而出现,解决的是工程中步调一致的问题,软件规模的增大导致了工程的诞生,而庞大的工程要求更多的资源,有团队意识的团队才可以适应软件飞速发展的今天。
每个团队都需要一个合格的组织者,组织者可能做的绝大部分工作都是非技术性的,他的职责是组织方面的内容,比如人力资源、项目资金以及多个项目之间的协调,组织者并不是不能犯错误,而是要少犯错误来获取成功,此外作为组织者,与每个团队成员交流的细节也是日常工作。
工程当中是没有boss的,boss只是经营者,组织者保证决策与这个方向是同步的,而工程是在这样的一个方向、决策的构架下的一个具体行为。所以组织者需要明白自己面对的是哪个层面,以及是否能让项目立项或终止。
实现是软件开发的本质需求,工具的产生是出于实现的需要,软件工程的体系,实现作为软件开发的本质需求和基本动因,如同上帝之手在推动这十几年的软件工程理论体系的形成。