案例 - 员工培训中心

一般的常见程序,都是Table and page,主要功能都是做数据的增删改查。

作为产品经理和架构师,必须要有两方面的知识:

  • 了解用户需求。
  • 了解架构的概念。

架构就是上节课里讲的程序类型,例如一张表的增删改查、三张表的增删改查等。

这是一个对应用程序的抽象认识。基本上可以涵盖所有应用程序的场景。

如果我们有了对软件开发的抽象的认识,以及对于业务知识的了解,接下来就是应用创意、解决具体问题了。

案例1:员工培训中心

一个企业成立了一个员工培训中心。员工要上班,同时也要进行培训。每个培训都以课程的形式来进行。所以需要有IT系统来辅助管理。

如何开始设计?就需要去收集需求,摸清楚现有行政管理的流程。这个过程既需要跟别人学,也需要去实际考察研究。借鉴别人和用户需求这两方面了解之后,就可以开始思考和设计了。

在这个案例中,主要的业务逻辑有:

  1. 学习管理系统:班级、课件(内容、作业)、老师、学生的作业以及老师的批改。
  2. 行政管理:哪个学员在哪个班、上什么课、哪个老师教、成绩和评语。

典型的业务流程是:获取员工数据、老板推荐课程、员工报名、课程主管录取员工、为学员分班、进行上课。

在上课之前,需要进行的准备工作:课件上传、课件开发,分配课件给具体的班。在这之后就可以发布课件了,最好的就是一课一课的发布。

此外,还有上课时使用的授课方式,如使用哪个会议系统、会议信息是什么。

各个业务的系统设计

企业的员工培训,大概就包括这些方面。接下来我们就可以开始设计各个业务部分的系统:

第1个系统:学员管理系统
学员数据从人力资源部门来。要能为学员分配账号。没有这个系统,信息就会一团乱麻。

第2个系统:学习管理系统

课件管理:课件开发、上传
上课管理:作业、判作业

以前没做过的,跟人学;以前摸过的,就有经验了。

作为架构师,在思考的时候,最重要的就是把复杂问题变成几个不太复杂的问题。把几个不太复杂的问题,每个都变成几个简单的问题。然后每个简单的问题,再去具体的分析清楚。

学习管理系统中的几个简单问题:

  1. 学员明细信息
  2. 报名:学员要能报名,有些课程是老板推荐报名并且根据各自拥有的权限梳理清楚该看到哪些课程。
  3. 预科和审核
  4. 如何分班、分配老师,以及怎么把这些信息推送到学习系统
  5. 学习管理系统:学生应该看到什么页面,老师应该看到什么页面。

还有一件事,就是权限。但是我们的jianghujs架构解决了权限问题,就没毛病了。

不要把事情混在一起思考,一定是一件事一件事的思考。这就是架构师最重要的职能。

一个好的架构师,应该能找到这些设计当中最挑战的问题:单选题、多选题、简答题等不同题型,怎么放在同一个数据表里。因为这些不同题型有不同的数据结构,不能放在一个表里。

解决方法:用对象JSON来保存结构会变的数据,就可以保存在同样的字段下面。这就解决了一个架构的问题。

所以,我们就还需要一个JSON编辑器,来编辑不同的题型的题目。编辑器产生了一个JSON对象,最后就存到表里了。

在任何一个系统,都面临这些挑战。这就是架构师的工作。没有程序员的经验,架构师就干不了这个活儿,因为不知道可以这么做。我们最重要的事情,就是分解出来,各个击破。

大家在实战中要用这种思路来思考。不要一想就想歪歪,想一些我们解决不了的问题。我们要在实战中操练。

第3个系统:课件开发系统

课件开发是一个漫长的过程,不能瞎写,要有审批系统。

审批要分阶段:草稿,编辑,审批。草稿和编辑要反复好几个来回;编辑和审批也要有好几个过程,直到觉得可以定稿。

问题:如果课程正在进行,课件更新了,怎么办?一批学生用一批课件,不要乱换。

这里面每一个环节,都是一个页面。每个页面也都有自己的一组用户。

同时,这里面还有权限控制。不同课程的老师不能互相修改别人的课程。

我们要先用语言清晰描述出来,直到我们能把页面长什么样描述清楚。

小结

通常产品经理和架构师是合二为一的角色,需要头脑很清醒,要有业务知识,也要有IT.编程的知识,也要有跟业务人员沟通的能力,也要有跟编程人员有沟通能力。市场上最稀缺的就是这种人。你不一定需要写代码,但是你必须清楚结构。

提醒大家:不用做程序员,不用做业务人员,但你要会与这两种人沟通。甚至你可能会比这两类人都更清楚代码应该怎么写,业务应该怎么设计。这需要语音的功底,会说话,还要言之有物。要过硬。