从 2012 年编写第一个网站开始,我有幸进入程序员的行列已经接近 10 年了。十分惭愧的是,在这期间并没有什么特别的成就和产出。还好我喜欢思考以及写写东西,将工作、生活中收集到的一些关于软件工程中的认知心得,从不同地方整理出来,构成了这本个人风格非常强烈的文集。
在工作中,我们需要解决大量的问题,而解决问题则需要对事物有充分的认识。我希望在这本文集中,和大家聊聊在编程之外我对软件工程的思考——换个角度认识软件。也许回到生活中,回到软件所解决问题的出发点,才会让我们更有启发。对于软件工程师来说,很多问题都能在生活中找到答案,而不必过于关注技术本身。
- 如果我们能把现实中的概念进行归纳、命名,澄清概念之间的关系,则非常容易将领域知识映射到面向对象的实践中。在业务系统开发中,给概念一个好的名字,甚至比高深的算法带来更多的价值。
- 如果我们能对一堆复杂问题的进行隔离、简化,习惯使用模型思维分析问题,就很容易理解复杂的软件架构。
- 如果我们能去软件使用者的工作现场走访一下,了解一下软件使用者的工作、生活,就很容易理解他们的实际需求。有时候理解软件背后的“生意”,比开发软件时采用的技术更重要。
- 如果我们难以理解软件的业务逻辑,可以尝试把“电”断掉,通过“断电法”将业务逻辑拉回生活场景,理解业务起来会容易很多,且得到的业务知识更真实。
- 如果把团队也看做系统,我们会发现即使我们自己也在系统中,有秩序和约束,有信息流动和动态的平衡。
艺术源于生活,而高于生活。其实软件也是,软件来源于生活中的问题,并承载生活中的业务知识,结合计算机平台的能力,最终带来效率革命。
这本文集可以看做过往一些博客的合集,但也有一条主线贯穿前后,其中包括生活中的逻辑、模型思维、业务模型、领域模型、软件架构和团队系统,从生活递进到软件工程。
阅读之前,不必将这本文集给予过高地期望,它不像通常的技术文章,其内容也存在大量的观点而非公认的事实。限于笔者水平,可能存在很多错误和需要改进的地方,欢迎批评指正。
如果希望看到更多内容可以访问:https://renzhi.shaogefenhao.com。