《大道至简》第六章读后感
从编程到工程
从编程到工程,这是一句话的事情,做起来就不容易,很多人都能学好C/C++,但却做不好一个工程。
很多IT界内的人特别喜欢死抠细节,一直热衷于争论语言之间孰优孰劣,其实明白工程的人应该懂得正视“软件工程”这四个字,看清楚代码、方法、过程、工程与组织的关系!对于一个程序员,或者以程序员自命的人来说,看清楚这一切的第一步,就是一句“语言只是工具”!作者也是在考虑好久之后灵光一闪才领悟到工程的真谛,凌晨五点会出一个图来。不管“语言只是工具”这句话,究竟是对语言的膜拜,还是漠视,猿之于为人,“学会制作和使用工具”是最重要的标志。人类的进化就是劳动生产力的发展,人们会使用工具,这也是人作为高级动物与动物之间的区别。
在书中的图中,最内环的层里是编程的精义,也是原始的状态——“程序=算法+结构”,在几十万年之前就已经出现在愚公移山里了,只是没有人意识到而已。
几十万年前的智人,都在循环与分支所构成的逻辑中打转,推动逻辑发展的是一个很普遍的方法,那就是“方法”或“方法论”。不管是以前还是现在,要宣传一个思想、政策或方针,都会有相应的方法或方法论出现。它的出现是实践的结果,“实践是检验真理的唯一标准”这一理论是大家都知道的。理解过程也需要编程经验,理解对象也需要编程经验,理解 MDA 与 SOA 还是需要编程经验。
在前章说到“过程”,过程伴随工程而生。过程解决的是工程中角色的关系问题。过程中的问题就是角色、沟通和环节的问题。过程是怎样的,客户不关心,他不会因为你对技术的远景描述而憧憬,他要的 只是实质性的程序。工程,工程的实现需要用到工具,需要实现方法,有一个团队协作的过程,并最终实现出对象。项目的“复杂”可能要求不同的知识领域的角色参与, 而“庞大”则要求更多的(人力、技术与管理)资源。“团队”作为开发行为的模式,是软件规模和复杂度渐次累积的结果。
一个团队的存在就需要一个组织者,工程的实现细节是项目经理和技术经理所共同关注的那一部分。项目经理还需要关注人力资源、项目资金以及多个项目之间的协调等等,有些是关于项目的技术问题,有些不是,但项目经理都需要关注。
BOSS,这词给人的感觉就是威风。玩游戏的人都说打boss,看电视或者看小说的时候都有boss出现,感觉拽拽的有木有?我敢说某些人一直都在幻想着自己是那酷酷的拽拽的掌握整个公司员工的生杀大权的boss,随便咳一生地都得抖三抖。很多人包括我在内都以为boss是给自己发钱的那个老大,这其实是不对的。人家boss并没有那闲情去决定你的那微薄的薪水,boss在公司解决的是“经营”问题,比“组织”更靠外一层的。