工作5年多以来,除去早期那段时间我什么都不懂,TL说什么我就做什么,其它时间我都是自己一个人做项目。在北京的时候我一个人开始了一个新项目,从前期项目设计到代码开发到持续运营,从头到尾都是我一个人单打独斗。后来来到湾区的新组,我又是一个人负责一个项目,直到最近才有所改变。
一个人做项目有一个好处,就是工作效率特别高,毕竟安排单线程的优先级比多线程要简单很多。但是随着我负责的项目越来越多,而一个人的时间毕竟有限,我开始处理不了的时候,TL给我安排了一个临时的帮手来帮我做项目。于是,常年solo的我终于要开始带团队了(虽然只是临时的团队)!
我对于团队管理的理解,和计算机底层逻辑非常像,就是给多个线程安排项目优先级,再根据状况进行动态调整。我曾经带过两次intern,用的就是这种方法,而他们的实习项目做得都很不错,也证明了我的理解应该是正确的。于是,这次我就照样给我的帮手安排了项目优先级,并且提前告知每一个项目需要完成的时间(预留了一点buffer以免他无法及时完成)。现在的进度都在预期之内,所以看来这种方法确实可行。
团队领导另一个重要的工作就是解决问题。不管是背景知识上的问题,技术上的问题,还是资源上的问题,团队领导都需要负责解决。即使自己解决不了,也得找别人帮忙解决。举个例子,我第一次带intern做的项目是一个跟我自己的项目相关但又非常独立的项目,而这个项目所使用的工具我完全没有接触过。我能提供足够的背景知识,也能解决资源上的问题(基本上没有什么资源问题),但却无法解决技术上的问题。因此,我给他找了一个co-host,这个co-host虽然对我的项目完全不了解,但他对这个项目使用的技术有着丰富的使用经验。于是我们两个加起来就把这个intern项目给带好了。而这一次,不管是背景知识,技术上的问题,还是资源上的问题(同样没什么资源问题),我都能解决好,于是也不会出现什么解决不了的问题。
最后一个是我现在还没有经历过也不知道怎么做,但同时又非常重要的一个团队领导的任务,就是找项目。一个团队只要有源源不断的项目,再加上有良好的产出,那这个团队应该就可以继续经营下去。然而直到现在,我都没有做过一个长期的TL,所以我连找项目的机会都还没有。
以上说的都是作为一个团队leader如果做好向下管理的因素。当然,做一个团队leader除了要做好向下的管理,还要做好向上的管理。所谓的向上管理就是如何向自己的老板争取资源和项目,以及如何汇报项目的成绩。可惜的是,直到现在我都还没有总结出一套行之有效的经验。这可能是因为我从来没有做过一个长期的TL,所以从来不需要站在一个团队leader的角度进行向上管理。
这次思考还留下了很多问号,再加上我也缺乏很多带团队的经验,所以这些想法并没有非常成熟。但通过这样的思考,我发现这对我以后的职业发展还是非常有帮助的。我知道自己缺少了哪些经验,就会想办法去补足。希望以后可以做一个更成功的团队leader。