1 前言
随着程序员的经验, 资历不断提升, 不再满足于日常业务搬砖, 也要朝技术创新方向不断努力. 对低级别的技术同学来说也许点上面的优化就可以做的不错了, 但对于高级别的同学, 体系化的思考能力尤其重要, 这就需要做好技术规划.
在大前端新框架层出不穷的年代, 技术规划似乎约等于轮子大法, 不管三七二十一, 新出一个框架拿来就尝试一下, 例如 RN,Flutter 这类框架, 第一批吃螃蟹的总能获得不错的红利. 要是再有追求的, 直接另起炉灶自己实现一下, 例如 Weex 就是 RN 的 vue 语言版本, 在阿里体系内也是混的风生水起.
但最近几年大前端的新技术趋于稳定, 不再有那么多红利可吃, 另外很多公司也严禁重复造轮子, 作为业务开发的我们如何在日常繁重的业务开发中做好技术规划呢?
2 什么是技术规划
规划, 意思就是个人或组织制定的比较全面长远的发展计划, 是对未来整体性, 长期性, 基本性问题的思考和考量, 设计未来整套行动的方案. 规划是融合多要素, 多人士看法的某一特定领域的发展愿景.
- 百度百科
从百度百科的定义来看, 技术规划相比于日常技术优化有几个特点:
整体性: 技术规划一定是对现有系统有体系化的思考, 得出一个全面整体的改进方案, 不在停留在某些具体优化点之上
长期性: 技术规划一般周期都在在季度, 半年度甚至年度, 这就意味着这件事情是比较长期稳定的, 需要持续推进的
方向性: 技术规划需要针对某个方向, 提出一个较为长远的目标, 设计全面的发展计划和行动方案
规划的意义就在于给到一个长远的目标, 起到了灯塔的作用, 也许一开始并不能马上就找准方向得到理想的结果, 但是通过设立规划目标, 阶段性的里程碑, 不断做有积累的事情, 最终就能够得到理想的结果.
3 怎么做技术规划
前期准备
业务分析
技术不是空中楼阁, 一定是服务于业务场景, 这个需要技术同学加深业务的理解. 有句话提到加深业务理解总结下来就是:"站在业务方的视角, 在理解业务发展目标, 看清业务发展方向的前提下, 做出技术和业务的平衡".
所以技术规划首先要考虑的是业务价值, 千万不要为了技术自嗨, 为了规划而规划, 一定要想想做这件事情最终给业务能带来什么?
业界对标
当你要解决一个问题的时候, 要相信你不会是第一个遇到的, 也许业界已经有很好的解决方案, 所以技术规划时候需要前期做足准备, 充分调研看看别人是如何解决的, 是否适合你的场景, 多比较多对标, 再开始动手.
技术同学往往会有自己动手的冲动, 往往觉得自己亲自造轮子解决才有成就感, 其实如果你能采用成熟方案以最小代价解决问题, 这个难道不是更有效吗?
设立目标
一般设立目标的时候遵循 SMART(S=Specific,M=Measurable,A=Attainable,R=Relevant,T=Time-bound) 原则, 可以逐条对照目标原则看你的目标是否符合.
当然设立目标也需要考虑一些因素:
收益: 目标一定是能够获得业务收益的, 例如收入, 效率, 体验, 不要设立一个无法明确收益的目标.
技术: 从技术层面来看, 分为三个层次: 现有扩展或者深度挖掘, 新方向探索, 趋势判断. 越往后面的层次约考验技术同学的技术判断能力, 这个需要大量的积累.
团队: 目标是否是现有团队人力可以承受的? 技术能力上团队是否能够支撑? 比如做一个移动操作系统可能就不是一个中小公司可以考虑的事情, 或许只有华为, 阿里这类大型公司才有可能落地实现.
一个技术规划设立目标的例子:
在 xxx 时间内达到:
xxx 系统可用性 99.99%
xxx 系统线上故障 < x 个
xxx 系统响应时间 90 线 < x 秒
任务分解
在目标设立好之后, 需要进行目标的拆解, 形成一份可以执行的计划. 在任务分解的过程中需要注意几点:
全景图
任务分解不是没有章法的, 这个尤其考验技术 leader 的技术大局观, 必须具备开阔的视野看到整个事情的全景图, 才能够在宏观层面更好的进行拆解.
来源: https://www.cnblogs.com/wdsunny/p/11244726.html