资深程序员必备技能-如何对软件系统做技术规划

水军大提督  金牌会员 | 2024-6-24 00:23:30 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 531|帖子 531|积分 1593

1. 前言

本文是笔者对于技术规划的一些思考沉淀。如果这篇文章能帮助你入门技术规划,那天然是最好的,同时,正所谓教是最好的学,这也侧面了证实笔者已经掌握了技术规划的能力哈哈。
2. 我对软件系统技术规划的理解

软件系统技术规划,顾名思义,就是对软件系统做一些技术侧的规划,分三块形貌:

  • 软件系统
  • 技术侧
  • 规划
2.1. 软件系统

往大了说桌面端的PC软件,Web端的网页、移动端的APP等等都是软件系统,往小了说,一个服务,一个模块,一个组件,一个小工具也属于软件系统的范畴。任何一个软件系统都是可以做技术规划的,一方面世界上不存在完善的系统,总会有这样或那样的问题,把这些问题归因分类下,我们就可以做规划了;另一方面,世间万事万物总是向前发展的,即使现在的系统真的很完善,我们仍然可以思考系统将来的发展方向,并针对这个方向做一些技术探索甚至创新颠覆,这也是规划的一种。
2.2. 技术侧

技术侧是相对于业务侧来说的,本文虽然专注于技术视角,但是我们也要知道,技术和业务是相辅相成的,不能孤立的对待两者,有了业务的发展才有技术的用武之地,有了技术的支持业务才气更好得发展,因此做技术规划的过程是绕不开业务话题的。
2.3. 规划

根据规划-百度百科的定义,
规划,是个人或组织制定的比力全面长远的发展计划,是对将来整体性、长期性、根天性问题的思考和考量,设计将来整套行动的方案
按我个人理解,主要有两个关键点:

  • 规划即方案
  • 规划即计划
2.3.1. 规划即方案

方案,是用来解决问题的措施,因此方案既要明确问题是什么,同时要避免假大空,要避免蜃楼海市,要细化到怎么解决问题,或者说细化到解决问题的具体步骤。
规划即方案,说的是规划也要满意上述针对方案的论断,这点毋庸置疑。同时,规划相对于方案来说,起首侧重于解决根天性问题而不是一个两个BUG,其次正所谓不谋万世者,不足谋一时,不谋全局者,不足谋一域,好的规划必要从局部视角切换到全局视角,必要以一种较为全面整体的视角来出方案。
2.3.2. 规划即计划

2.3.2.1. 规划是面向将来的

规划主要是面向将来的,但是要想展望将来必先驻足当下。对于一个软件系统而言,必要对系统的现状甚至过去的演进有一个足够的了解后,才气做出比力好的规划。
2.3.2.2. 规划是长期性的

规划必要面向多久的将来呢?一样平常情况下是3-12个月,时间太短了赶着落地大概会出一大堆Bug,而且谁也不想天天活在Dealine的恐惧中;太长了也不好,正所谓计划赶不上变化,万一出现了一些意外情况导致结果不及预期,那么船小还能掉头。
2.3.2.3. 规划是要排期落地的

规划必要落地执行,简单来讲就是排期,在某个时间节点完成某项功能。
2.4. 小结


  • 无论大小系统都可以做技术规划
  • 做技术规划不能离开业务视角
  • 规划既是计划,也是方案。从这两点出发,那么其实也就引出了规划的方法论:

    • 梳理过去/现状
    • 展望将来,提出理想态
    • 基于过去/现状和理想态的差距,天然就可以发现根天性问题
    • 针对问题设计解决方案
    • 排期时间,落地执行解决问题

3. 为什么要做规划

事事都离不开规划,大到国家,有五年规划,小到个人,有人生规划和职业规划等。做规划在我理解最大的好处是,有了目的和方向感,有了目的和方向感就不会迷茫并且能精确发力,精力只有效到精确的地方才气起到事半功倍的作用。
具体到软件系统技术规划也是一样的道理,有了规划我们才气稳扎稳打的做出对用户更友好的系统,甚至成为业界标杆;固然,另有一个更现实的缘故原由,对于一个程序员而言,如果不掌握规划能力的话,那么是无法进一步往上发展的,它是我们迈向资深程序员的必备技能。
4. 如何对软件系统做技术规划

4.1. 收集资料

收集资料贯穿整个技术规划的始终,只有足够的输入才气有输出,资料包括但不限于代码、以前的规划文档、技术方案、接入文档等等
4.2. 梳理现状

从两个方案入手梳理现状:

  • 业务功能
  • 技术架构
4.2.1. 业务功能

我们可以现实重新开始体验系统,了解系统有哪些脚色,代入这些脚色现实操作一把系统,并最终沉淀一份接入文档。
4.2.2. 技术架构

体验系统的过程中我们可以抓包、查日志、看代码等方式梳理系统的架构和链路,最最少总结出以下两张图:

  • 分层架构图
  • 核心链路图
4.3. 展望将来提出理想态

有两种方法可以推测系统的将来:

  • 归纳法
  • 演绎法
4.3.1. 归纳法

我们可以去做竞品调研,了解司内司外同类系统是怎么做的,并整理归纳下,对比我们的系统就知道将来必要做什么了。
4.3.2. 演绎法

但是如果竞品系统没有值得借鉴的地方怎么办呢?那我们可以从本质出发,思考系统的本质是什么,为谁服务,基于此进行逻辑推理与演化思考,从而推导出系统的将来理想态,就如同本文最开始从规划是什么的定义出发,带出了怎么做规划的方法论。
4.4. 发现问题

什么是问题呢?现实和理想的差距就是问题。前文梳理现状和预测将来提出理想态如果已经搞清楚了,那么发现问题天然不在话下,具体而言,可以从以下几个方面总结问题

  • 技术架构层面
  • 接入效率层面
  • 性能层面
  • 稳定性层面
  • 成本层面
  • ...
4.5. 设计解决方案

针对一个问题,我们必要提出至少3个解决方案,并总结每个方案的优缺点,再进行对比选型,末了,针对选型出的方案总结出两张图:

  • 分层架构图
  • 核心链路图
4.6. 排期落地

方案出来了,剩下的就是排期落地,其实就是列出Todo项,根据优先级排序,并一项项得完成之。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

水军大提督

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表