读《大道至简》有感
近日,在老师的建议下,阅读了周爱民前辈所著的《大道至简》,感触颇多。《大道至简》书如其名,以极为精简的语言传授编程之道,篇幅甚小且又近乎不涉及专业技能,仅向读者传授作者对软件工程行业的理解与思考,作为一名初入软件工程的学生,我在此书中获益匪浅。
本书的首章,是我们中学时代最为熟悉的《愚公移山》的故事,叩石啃壤,子子孙孙,无穷尽也。如此庞大的工程在编程中也不过只是一个简简单单的判断循环语句,故再庞大的项目也可以分解为细小的单元,从而逐步实现一个程序,这便是编程的精义,所以只有先天智障与懒人无法学得编程。而愚公愚蠢在何处?在不思考。李冰与愚公的“较量”又进入到了另一个话题:程序=算法+结构+方法,编码显然是不在其中的,软件工程师最宝贵的莫过于其编程的思想,在编程前必先分析需求梳理逻辑构建模型,最后才是编码,像愚公这样不去思考只会编程的程序员,如作者所说,盲目的工作必然带来无意义的加班。我在大一一年所学涉及编程思想的部分寥寥无几(至少我没学到),构成程序的主要部分知之甚少,今后学习重点也会转移到这方面上去,当然这不代表搭建基础不重要,应该归咎于国内编程教育的落后。作者在第一章也抛出了语言仅仅是工具的观点,这点我再认可不过,任何一门语言都有优缺,但语言绝无优劣,只分不同的用途而已。我在正式进入计算机专业学习前确实有相反的想法(毕竟翻译家也是会的语言越多越好),但学了两门高级语言后,这种想法也随之改变了。
第三章主要在讲团队管理,坦白讲我这18年都没怎么接触过团队这种东西,而且作为初学者,到达管理层面恐怕过于漫长,所以这部分内容请允许我草草略过。不过在作者的总结中,我也大致了解了完成一个项目大概需要哪些角色的哪些作用。
沟通。沟通是程序实现的重要途经,最基本的,程序员与计算机之间的沟通就要通过编程实现,而程序员与程序员之间的沟通则有益于项目完成,同样项目经理与客户,程序员与项目经理亦要有沟通,若是这些沟通环节稍有差错,做出的程序恐怕就是李鬼与李逵的区别了。
故沟通作为项目的重要一环,绝不能流于形式。想要做到行之有效的沟通,可以依靠uml建模语言(似乎是下学期的课?)这些方式实现。总之,学会沟通也是程序员的一门必修课程。
再下一章作者举了两个模型的例子来说明编程的精髓不在于架子而是骨子,简而言之,架子是可以随时搬来用以解决问题的,但若没有编程的思想作为骨子,那恐怕再多的架子也未必有合适的,编程的精髓在创生新的方法。
之后的两章设计的术语有点过多了,很难从中凑出于我有益的内容,故略过,往后有机会再去理解吧
最后一章算是回到本书的主题了,程序=算法+结构+方法,算法、结构属于编程思想,而方法则需要灵活创生,这也是为何现在的企业更钟爱于有经验的工作者而非新人。
这样一本书就算是未完结了,从中收获的经验与教训颇丰,但我想这本书给我带来最大的收益,就是为我描绘出了一名合格的软件工程师的轮廓:成熟的编程思想及变通创新、团队规划管理能力、善于与不同的对象沟通以及基本的编程能力。这本书算是解答了我心中的很多疑惑也给了我一些教训,我想这对我未来的学习规划是有一定的指导意义的。