关于《软件研发的艺术》课程的感想及一些书籍整理
前几年参加了一门《软件研发艺术》的内部公开课,由内部大佬授课。这门课程对于我后续的开发能力成长起到了一定的帮助,最近我也持续推荐给我的组内同事一起学习
一方面作为个体他们能收获到希望在这里学到的更专业的软件开发意识、技能,增加他们的行业竞争力
另一方面对于团队而言,用更大的大佬背书,其实是在加固团队成员的技术信仰、树立一个标杆,个体的战斗力高了、团队自然也可以迎接更大的任务
下面是我的几个总结,忽略掉了大众都知道的那些,和一些细节
1.团队代码需要有统一的规范,做到可读、可测、可运维
这条的前半句很多书籍上都有讲过,类似编写代码可读性的艺术之类的书籍,会给你强调如何缩进、如何命名等等,这更多的是在于可读性这个指标
真正的公司内部的研发,可测和可运维这两个指标同样重要。一段代码写了没办法测试,或者上线之后出现了容量问题,没办法通过线性扩容解决,这也是很糟糕的代码。
2.面向故障的编程,提高软件的运行稳定性
我们平时接受的写码的教育里,面向对象的概念提的比较多,但是没有人提面向故障的编程的概念。
面向对象,更多在于强调如何通过对于现实世界的抽象,提升后续对于代码的复用,做到扩展开放、修改封闭,提升研发的效率
面向故障的编程,更多的在于强调代码的稳定性,上线之后任何依赖的服务都是不可信的,网络环境、接入网关、mysql、redis这些随时都可能会出事故,如何在软件研发过程做好充分的容错?这是研发也应该考虑的内容
3.代码的是一个人逻辑表达能力与抽象能力的外化
很多时候大家代码写的乱,并不在于对于语法或者命名上有多差,而在于没有想清楚系统的目标、模块划分、模块交互。
逻辑是内在的,代码是外在的,提升内核的办法在于深入理解系统,理清楚逻辑关系,推荐学习一下《金字塔原理》
其他一些比较细节的我不再搬运了,经验是需要经历和思考才能转化为自己的内在功力,简单的贴出来可能只是过眼而已
下面是一些书籍参考:
- 《201+principles+of+software+development.pdf》 《软件研发的201原则》
- 《编写可读代码的艺术-完整版》
- 《代码简洁之道》
- 《快速软件开发-有效控制与完成进度计划》
- 《人月神话-中文版》
我把这几本书电子版书籍放到了我的公众号,如果需要可以扫码关注我的公众号&回复 "软件研发艺术" 可以下载