进一步深入代码会帮助验证你最初的假设正确与否,但也可能留给你一大堆问题。也许你在较高层次明白系统做的事情,但不明白像下面这样的事。
- 软件系统如何融入已有的系统形态;
- 为什么会选择正在使用的技术;
- 软件系统的整体结构;
- 各个组件在运行时部署在哪里,如何相互沟通;
- Web层如何“知道”在哪里找到中间层;
- 日志/配置/错误的处理/其他采用了什么方法,在代码库中是否一致;
- 代码库中是否使用了通用的模式和原则;
- 如何添加新功能,在哪里添加;
- 栈的安全性是如何实现的;
- 如何实现可伸缩性;
- 与其他系统的接口如何工作;
- 其他。
我曾被要求评审和参与开发没有文档的系统。你当然可以从代码的角度评估大部分问题的答案,但这会很繁重。阅读代码的作用始终有限,但某些时候你可能需要向团队的其他人请教一些问题。如果没有问对问题,你就得不到正确的答案:你不知道你未知的。