或许,你注意到了:我们说的是 Lead,而不是 Leader。因为当我们说 Leader 的时候,指的往往是领导(leader)——一个正式领导职务的人,肩负着领导(lead)团队、组织前进的职责。而当我们说 Lead 的时候,说的则是一个带领我们前进的人。这个人可以是领导(leader),也可以是其他/她人。也因此,Tech Lead 是一个角色,而非真实的岗位,这个角色的意义在于带领其他/她人前进。
那么回想一下,在你的团队里,你是跟着谁一起干活?在做相关的技术工作的时候,你更愿意听谁的话,是你的领导,还是?
我们希望有人带着我们一起干活,比自己优秀的人一起工作,总能从他/她身上学到一些有用的东西。作为一个技术人员,我们服的是那些技术比自己好的人。同样是一个功能,我们实现起来要一天,而他/她可能只需要一个小时——效率既高,质量又好。这样的一个人,便相当于项目中的 Tech Lead,他/她并非真实的领导(leader)。但是在技术上,我们都听他/她的。在他/她的帮助下,我们可以提升自己的技术,构建更好的应用。
如果你身处在金字塔关系的科层制组织中,再回忆一下,谁是你的管理者经常夸奖技术好的人?从某种意义上,他/她便相当于是项目的 Tech Lead。你的管理者会向他/她咨询一些技术上的问题,相关的结论也往往会在你们的项目上使用。
对于 Tech Lead 来说 ,重要的不是管理,而是 Lead。那么问题来了,到底什么是 Tech Lead?
也因此,那些自称是 “技术负责人”(Tech Lead)的人,往往不一定是真正的技术负责人。他/她们承担项目的开发工作,只是作为一个项目或者是团队的负责人,来管理这个项目;对这个项目进行一些技术决策——使用什么框架、使用什么服务、进行接口对接,不做一些编码工作。他/她们相当于是这个项目的技术管理者(Tech Manager)。
为此,我们不得不再提及管理者这个角色。管理者分为四种类型:
Tech Lead 便在这四种角色之间不断的转换。首先 Tech Lead 是技术上的 Expert,能解决项目上的复杂技术问题。又是一个 Coach,需要帮助到项目中的成员成长。还是一个 Leader,能以身作则,告诉其他/她人怎么做。在需要的时候,还会成为项目上的 Manager,来完成团队的目标。
而受限于不同公司的组织结构影响,Tech Lead 往往包含了多种角色——既是项目经理,又是技术负责人,又是……。如在 ThoughtWorks,Tech Lead 可以是一个纯粹的技术岗位,有的则还要充当项目经理的职责。如果只以 Tech 来看待 Lead 这个角色,那么它是:
除了技术上的工作,他/她还需要懂业务,以此才能开发出符合业务需求的软件。还需要能管理风险(主要是技术相关的风险),才能对应变化。
围观我的Github Idea墙, 也许,你会遇到心仪的项目