技术管理课五
该如何进行任务分配呢?
一个任务最终要由人来执行,那么如何挑选合适的人呢?
一般来说,对于一个长期的项目,在长时间的磨合之后,管理者会了解每个人的深浅,从而会讲最重要,困难的任务交给信任的人。这种情况,我们往往只需要根据工期和任务的困难度,挑选合适的人选即可。
但是在项目初期开始的时候,该如何挑选人手呢?
- 建立基准线
这里我们需要根据一个人的过往经历,他的履历,来判断衡量他的能力。
- 询问
我们可以针对一个要分配的任务,来询问心中指定的人选,看他是否能够给出满意的答案。如果其已经考虑到了所有情况,已经进行了相关的调研,能够就这个问题提出哪些想法。
当然,在分配任务中,我们还需要注意,如果一个员工是新人,是否可以考虑多倾斜一些资源给他,也不要轻易的否定他的工作,耐心的花时间进行指导。
其次是再项目中期之后,需要针对不同类型的人才,安排不同的任务。提供对应的帮助,毕竟慢工出细活。有的适合快速迭代,有的时候慢工出细活。
该不该鼓励加班
我们从两个极端看两种人,一种人以工作为乐,其会将大量时间放在工作上,勤勤恳恳,这种人我们称之为劳模,另一种人会认真工作,但是在工作时间外不会考虑任何工作的人。
这两种人都在实际工作中存在。
那么针对这两类人,其实我们都应该持鼓励的态度,让其可以自由的发展。如果作为一个leader,经常在工作时间外发送一些邮件,这种情况会很容易形成鼓励加班的错觉。
而且在职场中,一个人能否被提拔,往往和加班并没有直接关系,其更加关心的,应该是其相关的能力。
这里可以利用我们之前的一对一时间,和组员不断的去交流,了解对方想要的是什么,可能喜欢热爱生活的人会会说,想要更多的旅游时间,可能喜欢工作的人会说,希望有更多的机会,去参与更多更重要的项目。
那么根据不同人的生活方式,选择去分配工作和任务。
喜欢全身心投入工作的,可以给予一些更有挑战的项目,喜欢生活的,可以将一些稳定业务的改进和迭代给他。
最后我们说下系统拆分
早期公司的一个项目,往往是从0到1,也就是所有功能实现在一个项目中,而在做大做强之后,往往都会进行项目拆分,也就是1到N。
但是在实际工作中,业务拆分往往面临测试复杂度提高的问题。
比如我们有多个模块 A B C
如果A的响应模板中新增了一个字段,那么就需要考虑
先针对调用B C获取数据时,如果获取不到的时候
这就可以先不对新增字段进行校验,可以为null
只有等到B C都保证一定返回的时候,才增加校验。
而且伴随着项目拆分,会导致测试中,很难在本地启动所有的服务,而且伴随着RPC的调用者多,会导致问题的必然出现。
那么就需要一个优秀的协调系统,针对修改,进行一遍遍的检查。
其次是对于报错的处理,如果当异常发生了,最好可以将异常层层包装传播出去,最终在某个地方体现,方便后续其他人查看详细的错误信息。
然后是日志,已经要将日志进行汇总,可以在一个地方以汇总的方式查看,比如Prometheus,比如Kafka。
最后我们给出一个系统是否需要进行拆分,是否达到了服务化的临界点。
是否业务量足够大,
是否开发人员具有足够的经验,
是否做好了回滚的准备。