题图:by natgeo from Instagram
阅读文本大概需要 5 分钟。
也许你会有这样的经历,刚跳槽到新公司,开始接手新的项目,熟悉业务。当你发现代码易读性不高,注释也是简单几句;这确实是一个不小的挑战。硬着头皮去啃代码,然后来熟悉业务。这方法看似乎可行,但缺会消耗大量的时间和精力,故此策是下策。那何为上策?上述的方式是以点线去摸索整个面。那我们可以换种思考方式,从整体的角度去看到业务,再逐步去熟知各个部分细节。
1.先以产品功能角度分析
产品从面向客户群体可以分为 ToC 产品和 ToB 产品。ToB 产品,B 是表示 Business,即 ToB 产品则是面向企业的产品。ToC 产品是 To Consumer 的缩写,即面向消费者的产品。但无论是 ToC 还是 ToB 产品,都是给客户使用的。
ToC 产品的范畴有类似 12306 购票网站、类似微信 APP 等。这类产品功能比较具体化,所以给用户感觉很直观,容易理解。而 ToB 产品更多是以接口、解决方案等方式提供,会比较抽象,如微信开放平台、淘宝卖家平台、网络安全解决方案、电商业务解决方案。
拆分业务最直接的方式是体验。以使用者的角度入手,遍历产品个各个功能项,然后进行分类工作和绘制思维导图。
分类可以从功能关联性、用户使用率、时序逻辑等不同角度来进行。
功能关联性指功能之间存在某种联系。如购票网站的注册功能和登录功能存在依赖关系,如果是新用户就需要先注册后才能去登录。
用户使用率可以通过统计使用功能的频率。
如果时序逻辑角度入手,重点关注是整个流程。如:分享一篇微信公众号文章到朋友圈,流程是浏览文章 -> 点击分享 -> 填写分享内容(可省略)-> 确认分享。
最后一步就是绘制产品功能项的思维导图,绘制产品功能的思维导图,导图的目的不是为了单纯列举功能项,是为了找到产品的核心竞争力。一个产品如果各项功能之间都是分散的,只能叫工具箱。绘制思维导图按照产品四个功能维度去划分。
核心功能:
必不可少的核心痛点功能,缺了就不能构成产品的基本能力。例如:社交软件的用户沟通功能,12306 网站的购买车票,文本编辑器能处理文本。
附加功能
比不可少的痒点功能,但不能带来收益。例如:闹钟支持更换响铃,浏览器附带下载管理。
增值功能
痒点功能,能够带来收益的功能。例如:腾讯视频VIP,百度网盘会员,MS Office 365订阅。
非必须功能
并不是必然要实现的功能(有不有都无所谓的功能)。例如:iOS 低电量警告音,车载中控的游戏功能,短信骚扰拦截后通知。
2.再看技术实现
通过将产品拆分为各个功能模块,我们已经对其从整体上的有了大概认识。但这些还远达不到拆分业务的要求,需要我们从技术实现角度往深入去剖析。技术实现层面可以分为产品架构、技术层级两个方面。
一款产品在一开始设计架构时,往往是花费时间。产品的架构相当于整座高楼大厦的钢筋骨骼。架构设计好的话,产品稳定,可扩展性强,可维护性高。产品架构分析是描述各个业务模块之间的关系。因此,同样也通过绘制产品的架构图加深理解。我在谷歌官网找到 Android 系统整体架构图。
技术层级是逻辑概念,指将业务进行分层。有句流行语挺有意思的。在软件行业中,如果分层无法搞定,那就再分一层。其实这也是我们常说的设计模式。例如常见的 MVC、MVP、MVVM 。目的是解决界面 UI 呈现和业务逻辑代码分离,所以拆分为视图、业务处理层、数据存储层。
3.最后研究技术方案
技术方案是各个抽象出来的需求和功能转为化一行行代码的指令。也可以简单理解为实现方式。举个栗子,有个业务功能需要客户端向服务器获取数据,采用 HTTP 短链接方式不停去请求服务器?还是 WebSocket 长链接去轮询?
推荐阅读:
不积跬步,无以至千里
长按二维码,添加关注!