大德 发布的文章

<div class="entry">

            <p><a href="http://blog.mycolorway.com/wp-content/uploads/2014/02/coverimg.jpg"><img class="alignnone size-full wp-image-4572" alt="coverimg" src="http://blog.mycolorway.com/wp-content/uploads/2014/02/coverimg.jpg" width="600" height="340"></a></p>

<p>不少用户给我们提反馈,都问到了为什么任务不能分配给多个人。自Tower上线运营到现在,这个问题被提到的次数最多,稳居榜首。对此,我们仔细分析了用户使用多任务的出发点和场景,结论是:任务分配给多人,貌似合理,实际上副作用很大,会产生更多的问题。</p>
<p><span id="more-4536"></span></p>
<p>下面,通过一些具体的场景,来看看这个问题是怎么产生的:</p>
<p style="font-size: 15px;color: #000000;font-weight: bold;line-height: 0.8;margin-top: 15px">场景一</p>
<p style="font-size: 18px;color: #698e83;font-weight: bold;line-height: 1.2">用任务来排计划:在Tower里建立了新项目,然后把项目计划中的里程碑,录入成为任务。</p>
<p>这个场景看上去是没有问题的,制作项目计划,必然会梳理时间,安排里程碑节点,再分配执行资源上去。因此,用户把里程碑录入成任务,如果此时只能指派给一个成员的话,就必然觉得不够用了。</p>
<p>问题是,为什么要把任务当成计划呢?计划通常有起始日期,而任务只有完成时间,两者不该混用。</p>
<p>我们提供了团队日历(链接到日历帮助页面):计划的起始日期,在日历上可以直观显示;通过日历切换,还能方便的管理多个计划;计划还可以通知多个相关人员,开展讨论。日历才是排计划的合适工具,把任务分配给多人,并不能解决问题。</p>
<p>calendar-s</p>
<p style="font-size: 15px;color: #000000;font-weight: bold;line-height: 0.8;margin-top: 15px">场景二</p>
<p style="font-size: 18px;color: #698e83;font-weight: bold;line-height: 1.2">录入大任务:某产品需要一个网站,于是管理员录入了一条任务,任务标题叫“产品网站”。</p>
<p>这个场景好像也没什么问题。</p>
<p>但一个足够大的任务通常都不可能由一个人完成,这样的事情需要不同技能的人相互配合。例如“产品网站”就是一个不大可能由一人完成的事。创造一个网站,需要梳理信息结构、需要设计各页面视觉稿、需要前后端开发人员的配合、需要测试和部署。这么多的事分别需要不同技能来执行,需要不同的人来协作完成这个目标。所以“产品网站”其实是一个目标,不是一条任务。像这样的事情如果不进行拆分,直接把一个目标录入到任务里,同样会使事情责任变得很模糊,最终造成延误。</p>
<p>遇到类似的情况,应该尽可能进行拆分,拆分到一条一条对应单个成员的具体事项,然后把它录入到一个叫做“产品网站”的任务列表里,这样责任分明、任务清晰有条理,避免人浮于事或者相互推诿。</p>
<p>todolist</p>
<p style="font-size: 15px;color: #000000;font-weight: bold;line-height: 0.8;margin-top: 15px">场景三</p>
<p style="font-size: 18px;color: #698e83;font-weight: bold;line-height: 1.2">收集周报:某团队管理规则要求团队成员每周需要提交周报</p>
<p>管理干部每周都会把这个事安排下去,他在操作时会觉得:我的团队有20个人,每次都要录入20个任务,这也太恶心了吧。所以就会想:如果一个任务可以分配给多人就好了。</p>
<p>这和之前的两个场景不大一样。收集周报本来就是对应到具体成员的,已经不能再拆分了。但这类事情,其实和协作是毫无关系的,这是一个定期重复的日程事件。就像每年都要过春节一样,这是一个每周都要交周报的固定安排。</p>
<p>在日历里录入每周重复的事件可以很好的解决这个问题。例入,可以在周5录入一条名为“收集周报”的自动重复事件,抄送给所有成员。在团队规定里要求成员每周定时把周报回复到这个讨论里。这样收集到的信息还可以从日历来回顾,即清晰又省事。</p>
<p>cal-repeat</p>
<p>所以,仔细分析用户的需求场景,我们认为「支持任务分配给多人」并不是必需的。如果你有更充分的理由,欢迎继续给我们反馈(mailto:support@mycolorway.com),我们会反复思考,我们的认识是不是错的。</p>
<p>以下是我们团队在使用Tower协作中的一些经验,希望对你们团队也有启发:</p>
<p>1、不同技能的人协同完成一件事。</p>
<p>把任务按技能拆分,让每一个人各自负责自己的任务。</p>
<p>sketch-1</p>
<p>2、同一件事需要多人流转完成。</p>
<p>当A完成后一部分工作后,可以将任务转派给B,保证任务始终有人负责,不会中途掉链子。</p>
<p>sketch-2</p>
<p>3、完全相同的任务,需要多人来做。</p>
<p>如果需要精确追踪每个人的完成情况,就为每个人单独创建任务。如果是不需要精确追踪,可以使用讨论或者日历来一次性通知到多人。</p>
<p>sketch-3</p>
<p>4、某个任务池,需要多人来完成。</p>
<p>我们会用「抢单」模式,每个人根据自己的工作进展,把一些任务的负责人改成自己,告诉大家这事我在负责,避免分配冲突。</p>
<p>sketch-4</p>

        </div>

validate.js

validate.js is a lightweight JavaScript form validation library inspired by CodeIgniter.

validate.js 是一个受Codeigniter启发的轻量级的JavaScript表单验证库。

Features特性

  • Validate form fields from over a dozen rules
  • 拥有十多个表单验证规则。
  • No dependencies
  • 无依赖。
  • Customizable Messages
  • 可定制的提示消息。
  • Supply your own validation callbacks for custom rules
  • 支持自定义验证规则。
  • Chainable customization methods for ease of declaration
  • 链式写法易于定制。
  • Works in all major browsers, (even IE6!)
  • 支持所有主流浏览器(包括IE6!)
  • Modeled off the CodeIgniter form validation API
  • 模仿CodeIgniter的表单验证API。

How to use 使用方式

var validator = new FormValidator('example_form', [{
    name: 'req',
    display: 'required',    
    rules: 'required'
}, {
    name: 'alphanumeric',
    rules: 'alpha_numeric'
}, {
    name: 'password',
    rules: 'required'
}, {
    name: 'password_confirm',
    display: 'password confirmation',
    rules: 'required|matches[password]'
}, {
    name: 'email',
    rules: 'valid_email'
}, {
    name: 'minlength',
    display: 'min length',
    rules: 'min_length[8]'
}], function(errors) {
    if (errors.length > 0) {
        // Show the errors
    }
});

Documentation 文档

<repo>yuvista/validate.js</repo>

Plugins jQuery插件版

jQuery: https://github.com/mahil/validate_helper