技术预研(Technical Pre-Research, TPR)是指在立项之后到开发工作完成之前的时间内,对项目将采用的关键技术提前学习和研究,以便尽可能早地发现并解决开发过程中将会遇到的技术障碍。
了解需求
这块是预研的第一步,我们需要向需求方了解要实现什么功能?实现什么效果?给用户带来什么好处?能不能真正的解决问题?会不会产生什么不良的影响?这个需求的难点是什么?为这个需求要付出多大的代价(开发成本、沟通成本、机器、钱)?这个需求的性价比如何?这个需求是否违法?可能在这一步中,我们就可以把一些价值不大或者违法的需求扼杀在摇篮里。
充分理解需求
一切技术都是为了产品服务的,没有产品技术一文不值。我们要真正地从产品角度去思考,去理解产品经理到底要做什么;我们还要从用户的角度出发,去思考用户需要什么样的功能。这两点都可以帮助我们充分地理解需求。
需求的分解
在充分了解技术背景后,和产品沟通,了解可能的产品形态。需要尽量多的列举出不同的产品形态,然后将需求进行小粒度的分解。
预研的顺序
对需求分解成一个个小的技术点,并对每个技术点的相互依赖关系进行排序,预研应该先研究被依赖的技术点,而不是最难的技术点。当然,工程师可以凭借自己的经验来判断某技术点是否需要预研。所以说经验越多的工程师,预研的速度越快。
对于依赖方的验证
我们对自己的技术能有一个整体的把握,能有一定的信心。但是对依赖方(第三方)的技术就不一定了,所以我们要对依赖方做一个充分的技术验证,这块也是非常的重要。我们需要尽早的发现问题,如果需要依赖方去修改,这块的周期是非常长的,如果依赖方不配合修改,整个方案可能因此不通,很可能导致整个方案失败。具体的验证方式可以参照下面“技术方案的验证”。
多种技术方案的比较
对于一个功能,可能存在着多种实现方式,所以说我们需要将不同方案的优缺点弄清楚,并形成文档,并从工程师的角度给出自己推荐的方式,并说明自己的理由。对于不同方案的优缺点,一定要保持一种客观的态度,尽量通过多个维度去比较各种方案,比如:实现的难易程度、对性能的影响、对三方的依赖、资金成本、兼容性问题、是否存在体验上的偏差、稳定性。
技术方案的验证
我们要尽早暴露技术方案的问题,一些致命的问题可能会导致整个方案失败。
我们可以从以下方面去找到问题:
基本功能的坑
稳定性问题
性能的坑
压力测试
不同机型/平台/硬件的坑
兼容性问题
依赖方/耦合程度问题
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!