在暑假期间,我拜读了周爱民所著的《大道至简——软件工程实践者的思想》。在此之前,我先了解了一下这本书的作者——周爱民。
周爱民(Aimingoo),有十余年的软件开发、项目管理、团队建设的经验。曾任多家软件公司高级程序设计师、项目经理、部门经理、区域总经理等职,前支付宝(中国)公司业务架构师,前盛大网络平台架构师。目前主要从事软件工程、体系架构和语言基础方面的研究与实践。这是百度百科上查到的资料,从他的生平中不难看出,他是一个有着丰富管理经营经验和编程经验的软件工程实践者,可以说是我们这些软件工程学生们的楷模了。这样一个人在2012年出版的《大道至简》想必凝聚了这位软件工程实践者半生的智慧。
这本书中无意义的话非常少,几乎每一句都能引发人的思考。我在拜读过程中经历了一次又一次的头脑风暴,书中的很多术语都让我觉得不明觉厉。但看着看着,我发现,书中的反例好像与我不谋而合。我貌似就是书中作者所说勤奋的“愚公”——即十分勤奋,拿到问题就开始解决,不考虑方法,经常加班的人。即使在学了一学期的面向对象的程序设计之后,我还是更倾向于将程序写在一个文件中,这种设计理念在设计简单程序时并不会有太大的问题,但一个软件肯定是会越来越复杂的,在设计复杂的程序时,往往要写成千上万条代码,这些代码放到一个文件中不仅在检查时会十分困难,在分工时也会很困难。在解决大型实际问题时肯定不能只让一个人来解决,这样的工程量对一个人来说简直时不可能完成的事情,即使有一个牛人能完成这样的程序,那花费的时间不是会将软件公司拖死就是会将甲方公司拖死。而《大道至简》中所提倡的方法就是面向对象的程序设计。周爱民提倡我们将程序分为一个个“模块”,把大“模块”分成小“模块”,再把小“模块”分成小小“模块”,这样我们就可以分工作了,一部分人写这几个模块,另一部分人写那几个。
在我们步入工作后,工作内容肯定不是简简单单的编程。我们不仅要调节好开发人员之间的关系,还要调节好开发人员与客户之间的关系。书中以一个管理者的视角讲述了如何管理一个团队,即不能轻易改变一个团队的既定习惯,也不能放任团队中的负面价值的习惯存在。看似矛盾的一句话却是管理者作用的精髓。开发人员可能希望客户用c的方式讲述自己的需求,但不肯能每个客户都精通c语言,这时经理就是二者之间交流的纽带。
这套理论似乎再编程中也适用,客户从外界输入信息,经理就是接收信息,并且把信息处理后以规定形式传输给开发人员的“模块“,而开发人员就是接收规定信息,并且将这些信息按照客户的需要处理的”模块“。这样看来,似乎公司就是一个程序,程序就是一个公司,既要有接收信息的”模块“,也要有处理信息的”模块“,还可能会有管理内存的”模块“,管理“模块”之间关系的“模块”等等。
这些就是我拜读《大道至简》后得到的拙劣见解。