硕鼠的博客站

范路的博客主站,时而会发些东西。

Archive for 9 月, 2011

关于任务管理系统

书接上文。任务管理系统中的很多特性都是从复杂的工程管理软件中借鉴来的。那么在探寻任务管理系统的设计时,最好能够先来看看工程管理软件都有哪些常见的特性;然后再看看对于个人使用的任务系统来说,对于这些特性的需求会有什么样的变化;最后,阐述一下我个人对任务管理系统的一些看法。

  • 工程管理软件分析

工程管理软件中的任务,是有相互的依赖关系的。有些是由于后续任务需要使用前置任务的成果,有些则是由于后续任务需要使用前置任务所占用的有限资源。工程管理系统,在进行计划制定的时候,首先要将完整的工程划分为不同的任务。然后,再根据这些任务之间的依赖关系,来排定这些任务的先后执行测序。以求在最短时间和最小资源消耗的情况下,完成整体工程。

工程虽然并不像日历那样,是以时间作为根本特性的,但是一些关键时间点对于工程来说也是至关重要的。比如天朝经常会出现献礼工程。以及工程进行过程中的各种公休和节假日也都是需要计算在内的。通常一个工程里面会有若干个工程关键时间点。这些时间点通常是工程自然节点附近的一些特定的日期。比如工程可能在某个节假日附近完整一个功能节点,那么通常的做法是将这个节点直接设定在那个节假日之前,这样大家做完一个阶段的工作之后,正好可以休息几天。有时候一些为公众服务的系统,也喜欢赶在节假日之前上线,以便能够在节假日获得更好的收益。工程管理系统,会根据这些关键时间点,对任务的排列进行适当的调整,即使这些调整会使得工程所耗费的时间和资源有所上升。

工程管理系统中所管理的最重要的东西,就是资源了。这里所说的资源,指的是工程过程中不得不用,而数量又有一定的限定的东西。比如工作人员的工时、场地、各种仪器设备、零部件等。小型的工程管理软件只需要计算出完成工程所需、或所能调用的资源总量,然后根据这个资源总量进行任务调度和安排就好了。所需或所能够调用的资源总量,是根据工程的进度要求,平衡得来的。有些资源增加了之后,是可以提前项目进度的,有些则不行。通常的做法,是根据所有能够使用的资源总量,先预估工期;然后在根据工期进行任务资源分配;最后再根据任务资源调配情况,对工期和所需资源进行调整。

大型的工程管理系统会复杂得多,这些系统还需要考虑很多资源的建造、购买、仓储、领用等过程。比如航天卫星发射的工程管理系统中就需要考虑火箭发动机的生产,每个批次生产出来的火箭发动机,都需要拿出一枚来进行测试。而这个测试验证试验是一次性的,也就是说做实验的那个火箭,试验之后就废掉了。那么系统就需要考虑“组批生产”的问题,比如一个批次最多可以生产十枚火箭,那么最好能够将火箭发动机凑成十个一组来生产,否则的话,如果只生产两三枚火箭也需要多做一个出来做实验,那就太浪费了。大型的工程管理系统,通常还需要考虑分里程碑验收和支付的问题,每一个里程碑需要完成哪些任务,这些完成的任务如何验收,以及如果验收出现什么问题,怎么办。验收之后,通常是需要进行里程碑付款,我还见过一些系统,在里程碑付款和购置设备等过程中还考虑汇率波动风险和银行账户利息等因素的。比如别人付过来一笔美金,工程方直接将其都兑换成了人民币,但是工程中又需要以美金再去购买什么设备或零部件那就亏了。总之,资源管理根据工程管理软件的规模和行业差异,也会存在巨大的差异。但这肯定都是各种工程管理系统中最重要的一个部分。

工程的任务细分,并不是一次完成的。这个过程通常是逐层细化的,所以就会出现任务和子任务的概念。一个任务对于承接这个任务的团队来说就又成了一个工程,这个团队会将其再次划分为子任务。或者是完成一个大的任务,需要多个团队协同工作,也可以将这些团队所完成的共组划分为子任务。这个划分的过程,是有很多模板和定式的。比如,盖房子必须先画图纸,然后打地基,从下向上一层一层的盖,封顶之后先做外墙装修,然后做内墙装修和强电弱电工程。就算是家庭装修,也需要考虑先做墙面,在做墙面的时候要预留强弱电的线槽和开关接插口面板的位置;在做墙面的时候可以进行门窗油漆等工作;墙面和油漆的工作完成之后, 才能进行地面施工;再然后才是家电和家具的购置和摆放。地面工程的时候,是不会将墙面和油漆过的门窗搞脏的,但是墙面粉刷和油漆的时候会把地面搞脏的。强弱电线路的布设和接插口面板的设置,是需要破话墙面的。家具和家电是要放在地面上面的,所以一定要在地面施工完了之后才能做这些事情。这个过程是无法打破乱来的。

任务和资源,都是有状态的。工程管理系统就是通过对这些状态的管理来实现任务和资源的调配和管理的。简单的状态有:资源被占用、资源被闲置、任务可以开始、任务等待关键资源到达后可以开始、任务进行中、任务完成、任务暂停等。在资源不冲突的时候,工程管理系统会尽可能的安排并行任务以节省工程时间。比较复杂的状态管理,可能会包括仓储物流、人员培训、期货购买和交割等复杂过程,这里就不讨论了。工程管理系统的工作方式,基本上可以被看做是一种状态机的工作方式。

任务之间的等级并不是平等的,因为很多资源是无法进行分割和隔离的,所以很多任务是必须在共享资源的情况下并行进行的。在并行执行的任务之间就会存在优先级的差异,哪个任务需要占用更多的资源,在时间节点上更加紧迫,其优先级也就更高一些。

在任务完成了某个里程碑之后,或者是工程完成之后,工程管理系统是需要对工程的完成情况进行审计和评估的,是需要出具工程完成状况报告的。这个报告包含任务完成状况以及任务完成过程中资源使用的情况,任务完成状况和资源使用的情况和原计划之间的差异,这些差异产生的原因,以及针对这些差异,需要对后续的计划做出哪些调整等。

  • 对于个人使用的任务系统,在用户体验上所需要特别注意的地方

规划系统不能太过复杂,工程管理软件,根据自身的复杂度,提供不同复杂度的规划和录入系统。有些工程系统光是录入初始的数据就是一个庞大的工程。甚至会有专业的咨询、规划、设计机构来完成这些工作。这个过程对于个人使用的系统来说是必须要简化的。

个人任务系统和工程管理系统有一个最本质的差异。那就是工程管理系统是在一个封闭的时间段上来规划工程的,而个人任务系统是不可能从一个人出生一直规划到死亡的,所以个人任务系统通常都是在一个开放的时间段中规划任务的。而且,很多任务之间没有那多多的相关性。对于个人任务系统来说,相关性比较强的任务之间是可以有一定的依赖关系的,但是从整体来看各项大任务之间是没有紧密关系的。

个人任务系统中的资源管理是一个很麻烦的东西,有些资源在一个任务中起到一种或几种作用,但是这些特性对于其他任务来说可能就会发生变化。用户自己的时间也是一种资源,而且是关键资源。不同的个人之间也都互为其他人的资源。对于跨越任务和工程,散布在整个人生之中的任务管理系统,其所管理的资源只能是针对特定任务的。也就是说资源是任务相关的,规划一个任务或由一系列子任务构成的主任务时,可以涉及各种资源,但是这些资源是限定在任务内有效的。离开了这些任务,资源就需要重新定义了。

个人使用的任务系统,肯定需要包含能够通知到个人的各种通知手段。所以这个系统比如需要一个跨平台的通知子系统。工程管理软件中通常不需要这个东西,相关人员会主动的去查询任务分配和进展情况的。

工程管理系统中的那些复杂的审计和评估报告,对于个人任务系统来说也是不适用的。普通用户是读不懂,也没有耐心去读那些复杂报告的。而且,由于个人任务系统是在开放的时间段上进行规划的,所以这种系统更需要的是能够在任何一个时间点去检查过去任意时间段的任务完成情况和资源使用情况。并根据统计的结果,对后续的任务进行调整。

工程管理系统中所使用的语言和文字,都是在其特定行业和环境下使用的正式书面语言。个人系统完全可以使用一些个性化的、生动的生活语言、口头语言、网络流行语言来进行语言和文字描述。

用户选择了任务管理系统,通常是希望能够尽可能的按照计划完成任务的。工程管理系统是依靠契约、特定团队组织架构和制度来保证任务的完成的。那么个人系统能够依靠什么来促进任务的完成度呢?除了前面提到的提醒系统之外,应该再加入一些游戏性的鼓励和成就分享和刺激在里面。

  • 关于个人任务系统的一些设想

规划和任务执行情况反馈合一,随时规划新的任务,随时查看近期任务的执行情况,并对任务进行调整。

完善的通知和提醒系统,使用生动的生活语言通过各种平台和方式,通知用户启动、推进或完成任务。

通过各种各样的平台,接受用户的反馈,并记录任务完成的进度和状态,以及用户在完成任务过程中的各种相关信息,最终形成完整的报告,比如装修笔记、旅行路书等。

增加任务状态,一个任务可以有多个状态,将状态机的机制更多的引入任务系统。提供尽可能多的状态机模板、子任务划分模板,供用户套用。

加强资源和资源状态的管理。用户自己的时间,出现在任务中其他人的时间,以及参与任务的其他资源(包括资金)的规划、分配和调度。

在任务系统中添加游戏性,鼓励、激励、刺激用户按照计划完成任务。并将用户完成任务的状态和成就,分享到Social平台上,让整个social平台上的人都来一起见证和激励用户完成任务。

时间管理工具

如果说现代生活中,有什么东西最宝贵的话,那无疑就是时间了。我们总会觉得时间不够用,有很多愿望没有时间去完成。

于是,就涌现出了大量的,以时间管理为目的的工具,希望能够帮助人们更加合理的运用时间。

这些工具包括:

日历系统,通常提供约会、提醒、周期重复等功能。现在很多软件都提供日历的功能,我们使用比较多的有微软的Exchange Server和Outlook、以及Google Calendar。苹果好像也有自己的日历工具,但由于使用的不多,所以不是很熟悉。

任务管理系统,通常包含任务的归属、任务的场景和标签、任务的优先级等。为大家所熟悉的任务管理系统有:Things、Google Tasks、ToDo、Doit等。按照我接触和了解的情况来看,这一类工具是从工程管理工具中简化而来的。要比工程管理工具来得简单,主要是适合个人使用、而不是供工程项目使用。此类工具近些年来颇受大家的喜爱。

工程管理工具,现在很多时间管理工具上的特性,其实都是从工程管理工具中简化剥离而来的。这种东西顾名思义,并不是为个人设计的。工程管理工具,即使是比较简单的,也是为了几十人甚至是几百人协同完成一个工程项目而设计的。工程管理软件强调的并不是通知和周期性的变化,而是任务之间的依赖关系,任务所需要调用的资源,以及如何调度,以实现在要求的时间内,使用最少的资源完成任务。此类软件中,被使用得最广泛的,就要算是微软的Project,还有简化一些的XPlanner了。有些庞大的、运用于特定领域的工程管理类软件,其购置、维护的成本是非常恐怖的。这些软件通常是以咨询服务的形式进行销售的。我就曾经见过一款用于核电站建设的工程管理软件,其软件规模异常庞大,光是用于存储数据的实体,就有近万个,可见其内部业务逻辑之复杂。

这里要讨论的并不是庞大复杂的工程管理工具,而是供个人使用的时间管理工具。之所以将工程管理工具列在这里,是因为其中拥有很多时间管理的功能,很多供个人使用的时间管理工具正在不断的从中吸收各种有趣的特性。

工程管理软件的目的,是使得工程项目在占用最少资源的情况下,按照要求的期限完成。对于这种软件来说,不容角色的人和其他的各种设备或服务都被抽象成了不同种类的资源,其最终的服务对象是工程本身而不是作为资源的人。工程管理软件的工作过程大概分为三个环节:规划工程的实施过程和实施过程中的资源占用和调配;将规划通知所有和规划相关的人或机构,接收项目各个分支与环节的执行结果,以及各种相关资源的使用状况,并将这些数据汇总,以便对项目的执行过程或结果进行评估;根据项目期间,各个分支执行的情况和资源使用的情况,对项目后期的规划进行调整。这样看来,工程管理的过程就是一个规划过程和一个反馈过程的循环往复。

现在,人们越来越希望能够像管理复杂的工程项目那样规划和管理自己的人生。

从现在流行的这些时间管理工具来看,日历管理方式实在是太粗糙了,其中缺乏资源的概念。一些内网或组织内使用的日历工具,比如Exchange、Lotus Notes等,是允许查阅相关角色的日历的,可以帮助使用者,人工的在对方空闲的时候创建约会或会议。但是对方是否接受,还是需要对方人工确认的。工程管理过程中,规划者和被作为资源分配的人之间并不是平等的。规划者是可以决定某些人什么时候做什么事情的。而在日历工具中,人们的位置是平等的。

日历的另外一个缺陷就是,其中的事件,缺乏状态。一个约会、会议或提醒,对于日历系统来说都只有两个状态,到期或未到期。日常生活中,很多事情并不是这样的,很多事情从开始规划到最终完成,其中是要经历很多个状态和过程的。这对于日历系统来说,是很难表现的。

任务管理系统,就要比日历系统更近了一步。在任务管理系统中,原来日历系统中的事件,变成了任务。这其中的差异在于:事件的基本属性是时间,我们约定了周三晚上吃完饭,那么如果时间已经是周四上午了,对于日历系统来说这个事件的状态就是到期或过期。日历系统缺乏工程管理系统中的反馈环节,所以日历系统并不知道一个事件是否被执行了。任务系统就要好很多,任务的基本属性并不是时间,而是状态。一个任务是否被执行了,或执行到一个什么状态了,到达这个状态之后,下一步应该怎么办。任务也可以有时间属性,而且通常都是有这个属性的。但是即使约定的时间已经过去了,任务系统也不会直接判定任务已经完成了,而是需要通过反馈系统,让用户手工的录入任务的执行状态。如果任务尚未完成,那么任务系统会提醒用户对任务的时间属性进行调整或尽早完成逾期任务。

现在的个人任务系统还不够完善,有着工程管理系统的榜样树立在那里,个人任务系统的产品经理们肯定不会不知道应该如何将其完善起来的。现在的任务系统是在工程管理系统的基础上根据个人使用的特性做减法得到的。那些复杂的统计分析和资源调配,以及任务依赖关系,对于普通用户来说确实是难以理解了一些。现在的任务系统本身就是一种平衡,在用户体验和功能完整之间的一个平衡。依靠增加功能来使个人任务系统进一步的完善起来,至少在目前来说,对于大多数用户来说是不现实的。

如何进一步的完善任务系统,以便更好的帮助人们规划他们的时间,这个我想以后再在其他博文中慢慢阐述我的个人观点。这是关于时间话题的第二篇博客了。这个话题我想至少还能再写个两三篇吧,不着急,慢慢来。

Close Bitnami banner
Bitnami