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的技术大局观,必须具备开阔的视野看到整个事情的全景图,才能够在宏观层面更好的进行拆解。
    以美团点评金融平台 Web 前端技术体系为例(图片来源:https://tech.meituan.com/2018/03/16/front-end-web-architecture.html):

    我相信在做技术规划的时候,有这张技术全景图对于任务分解会起到非常大的帮助。规划要做的事情可以很容易按照分层图一层层拆分,或者按照不同框架系统进行拆分,同时也可以针对某层或者某个框架模块进行细分目标设定,使得目标更加精确容易衡量。

  • 明确可执行
    拆分出来的子任务需要明确可执行,子任务或者子目标也是要遵循SMART原则,同时拆分后更加贴近最终落地的结果,更加容易执行,未来也更容易进行衡量。

执行计划

任务分解后是制定执行计划,这个和做业务需求一样,要把一件事在分解拆细,评估工时,安排到人,进行项目排期。在执行计划上需要注意几点:

  • 设定里程碑

    对于一个长期的技术规划项目而言,经过任务拆解后可以能会分为几个子方向或者子项目并行开发,再加上周期漫长,如果要等到全部做完后再验证结果,这时候往往会产生非常大的偏差。里程碑的设立非常重要,一方面可以给到团队阶段性的胜利成果鼓励信心,另一方可以快速验证小步快走,避免出现重大的方向误差。

  • 高风险项目
    针对高风险项目,需要采取快速试错的方式,小步快走,前期要分阶段快速出成果。先做demo进行技术验证,再小范围尝试,最终再沉淀为应用。

  • 计划设定
    技术设定时候可以前紧后松,项目管理按照时间分阶段,月度计划可以细化到周或者天,长期计划可以细化到月。
    任务拆分和估时的颗粒度也要适中,拆分出来的每一件事情都是可以测试验证效果的,但同时不宜太大(1~3天工作量最好),这样可以提高工作量预估的准确性,而且将来计划调整也比较灵活。

风险评估

执行过程中需要不断评估风险,风险分为两类:技术风险和管理风险。
技术风险:前期需要评估技术可行性,结合团队技能和梯队情况,充分调研业界最佳实践,寻找到合适自己的技术方案,一定要记住不要被“颠覆性”的想法冲昏了头脑。
管理风险:团队人员配备是否充足,是否会因为业务波峰波谷导致技术需求无法持续,这个需要考验技术leader对于未来业务的判断,同时和业务团队充分沟通,针对技术需要留有一些固定比例人力,保证技术项目的长期性。

贯彻执行

执行过程中,项目到了一个里程碑,需要停下来进行总结复盘,看看当前的位置离目标是否越来越近,复盘过程中是否有改善的地方,同时按照当前的状态对计划进行调整和制定改进动作。规划就是为了更好地适应明天的变化。

4 总结一下

技术规划包括明确目标、任务分解、执行计划、风险评估、贯彻执行这5个环节,每个环节都需要技术leader们认真思考,技术规划不光是表面光鲜高大上的事情,更需要脚踏实的狠抓细节才能落地。
最后,大家往往提到技术规划的时候脑中总是飘过各种高大上、酷炫屌炸天的技术,对于那些脏活苦活不屑一顾。但是我们需要仔细思考,回归到技术的本源,任何技术都是为业务服务的,如何选取合适的技术并且体现业务价值才是真正应该值得各位同学好好追寻探索。

---华丽的分割线---
第一则广告:美团点评上海团队招聘前端资深/专家工程师,有兴趣的同学欢迎投简历到wangdan53[AT]meituan.com

第二则广告,有兴趣同学可以关注微信公众号奶爸码农,不定期分享关于投资、理财、IT等内容:

转载于:https://www.cnblogs.com/wdsunny/p/11244726.html

程序员如何做好技术规划?相关推荐

  1. 一个PHP程序员的职业生涯技术提升阶梯规划方案

    优秀的PHP程序员的职业生涯技术提升阶梯规划方案 作者:极客小俊 一个专注于web技术的80后 我不用拼过聪明人,我只需要拼过那些懒人 我就一定会超越大部分人! CSDN@极客小俊,原创文章, B站技 ...

  2. 读《程序员必读的职业规划书》

    半年前我就有幸拜读了@Easy的<程序员跳槽全攻略>电子书,当时趁着限免机智地入手了.当晚一口气读完后感觉收获颇丰,随手就发了篇微博正能量了出去.在前几天的下午,又看到Easy为庆祝纸书上 ...

  3. 程序员如何从技术岗转为技术管理层

    有一个非常有趣的现象:据说大部分的技术管理者,在其从程序员转为管理岗位的时候,都是在领导或公司的要求下,被动的推到管理岗位上的,并非是自己当初有强烈意愿.主动去选择管理岗的.这种被动的比例还不低,高达 ...

  4. 程序员如何从技术岗转为技术管理层?

    有一个非常有趣的现象:据说大部分的技术管理者,在其从程序员转为管理岗位的时候,都是在领导或公司的要求下,被动的推到管理岗位上的,并非是自己当初有强烈意愿.主动去选择管理岗的.这种被动的比例还不低,高达 ...

  5. 作为程序员未来发展的规划

    作为程序员未来发展的规划 过去的程序员生活的总结 ​ 我入行程序员有2年多了,可能也和我25岁的年龄有关,对未来的发展充满了迷茫. ​ 之前的生活无非就是学习技术和在公司运用技术,作为一名工程师,我可 ...

  6. 程序员职业发展与规划:我要做一辈子的程序员吗?

    经常听一些同学说:不知道下一份工作该去哪类公司做些什么,我的职场人际一团糟老板不重视我,我现在成长的非常慢所以又想跳槽了,我看不到公司的发展前景好迷茫,其实这一切的困惑都来源于没有做好职业规划或者你根 ...

  7. 读书笔记之《程序员必读的职业规划书》

    我是来填坑的, 早就忘记是什么时候什么原因关注的@Easy 的,之前就在"百度阅读"买了电子版的<程序员跳槽全攻略>,记得当时还送了鼠标垫的,5月份在又看到Easy为庆 ...

  8. 程序员的岗位路线规划,不止是编程?

    经常听到别人说30岁对于程序员来说是个瓶颈,其实这种说法有一定的道理.因为一位程序员如果是大学大专或本科毕业,到30岁的时候一直在编程没换过其它类型的工作,那差不多已经编写了7.8年的代码了.30岁左 ...

  9. 程序员如何进行职业规划?

    本文来自作者 王俊生 在 GitChat 上分享 「程序员如何进行职业规划?」,「阅读原文」查看交流实录. 「文末高能」 编辑 | 哈比 一直以来程序员这一职业都给人高薪资的印象,近年来随着互联网行业 ...

最新文章

  1. 钢铁飞龙每个人的机器人_让人震撼的特斯拉超级工厂全自动生产线
  2. C翻译汇编语言,[求助]求人帮忙把汇编语言程序翻译成C或者C++
  3. [QPlugins]学习大纲
  4. 操作系统-Windows操作系统的线程调度了解这些
  5. 揭秘全球最大网站 Facebook 背后应用软件
  6. 几个经典的递归小程序
  7. 源码阅读:PointNet++
  8. 小程序将页面转为图片--Wxml2Canvas
  9. 针对VMware安装Win10需要安装.NET Framework 3.5常见的0x800F0906、0x800F081F错误解决办法
  10. Vue中使用pdfJs预览PDF、图片
  11. MySQL数据库实操教程(20)——视图
  12. 关于elementui的table固定高度出现的表格高度有空缺
  13. Zabbix监控网络设备模板配置
  14. WMS、WFS、WMTS、TMS
  15. java 屏蔽广告js_用js屏蔽被http劫持的浮动广告实现方法
  16. Blender齿轮制作
  17. swiper + vue 中间大两边小轮播图
  18. 三种录制接口脚本的方法
  19. 大一上半学期基础C语言程序(四则运算,日期求天数,阶乘....)
  20. HBuilder制作移动APP资源升级包的教程。

热门文章

  1. linux deepin/debian/ubuntu apt查看软件版本 apt安装指定版本的包
  2. linux fedora35安装deepin-wine:deepin-wine-on-fedora项目
  3. JavaFX maven工程pom文件完整内容
  4. jenkins清除、修改admin主账号的密码
  5. linux 产生0~1之间的随机数
  6. docker安装最新版Jenkins:拉取镜像/创建容器
  7. Redis的两种持久化机制RDB和AOF
  8. 计算机考研学科专业基础,2018考研计算机学科专业基础综合考试大纲 出炉
  9. linux 句柄_linux 文件句柄数查看命令
  10. 外循环java作用_循环和外循环的区别和作用