(给
伯乐在线
加星标,看经典文章
)
编译:伯乐在线/Lex Lian
管理一支技术团队可能是世界上最难的事情之一。如果你是一个经理,你需要和很多方面的专家合作,和你的上级协调产品需求,和负责协调产品交付件的同级合作,和将产品功能转化成技术需求的同级合作,带领直接汇报给你的团队等等。在某些糟心的时刻,你需要面对的是会把患有自闭症的送报小孩
(原文,阿斯伯格综合症,爱因斯坦曾患有此症)
赶走的同事。
我曾经担任过开发经理、开发总监的工作,也曾经是一个开发人员,在过去的几十年中,在管理技术团队这件事情的两边,我经历过许多非常不一样的“管理风格”。从技术团队的角度出发,就成为一个卓越的技术经理必备的特质,我会给出一些建议。
首先,技术人员的工作环境始终飞速变化,我觉得如何成为一个卓越的技术经理是一个非常重要的话题。在过去的二十年中,我们可以看到软件开发的模式有发生了巨大的变革。在大多数企业中,软件开发的周期变得短,而且管理层因为每个季度盈利的目标而对产品开发施加更大的压力。对于许多初创企业,都需要在第一时间发布新的软件产品。这些情况都导致了在软件开发中我们会一直使用各种变更管理的方法。(参考PMP传统项目管理或Agile方法中的变更管理Change Management)
在我还是一个开发人员的时候,我明白了第一个道理。我的老板当时问我,你知道你的工作对公司有哪些贡献吗?
我:『额…… 我吗,我就是在写代码。』
老板:『好吧,你是在写代码。让我换一种方式来问你,你觉得你写的每一行代码会给公司带来多少利润呢?』
我:『(脑瓜爆炸中……)噢,不是?我觉得,我不能……我从来没有…… 额……你在说啥?』
我的老板事后向我解释,公司的想法是,每一个开发人员都应当知道自己对于公司的贡献。当然这不是在讨论每一行代码能产生多少贡献,更主要的目的是,你知道你的工作会对公司的利润产生影响。你的工作会影响你所开发的产品, 在其生命周期中,这个产品将帮助公司赚钱或是省钱。如果你能得到这些盈利或是节省的数字,除上公司的投入(项目上开发人员的工资收入), 就可以知道你所在项目的大致收益情况。听完这些话后,我一下子茅塞顿开。
这件事情的意义在于,在真实的商业世界里,我在这里引用梳着黑色大背头的Michael Douglas关于贪婪带来的好处的说法:对于公司来说,所有的事情都是赚钱相关的。
(详见Michael Douglas参演的电影Wall Street)
。然而,作为开发人员,我们专注于开发这一艺术性的工作上。我们创造出的代码,将比以前更快、更好、更优雅地解决问题,完成任务。我们就像画家一般在画布上尽情作画,直到完美,从无到有地创造,开发出令人兴奋、大呼碉堡的软件, 这和利润有半毛钱关系?
技术经理们就像“动物园”的看门人一样(想到程序猿们……)。他们应当要能够使用我们的语言,体谅我们付出的劳动,理解我们的问题,并且和我们一同分享胜利的喜悦。同时,当他们没有在做这些事情的时候,他们给予我们反馈,给予我们产品的需求,代表我们和他们的上级和同级的同事一起制定项目预算,确认开发的费用和团队人数。当某一个表面光鲜的销售姐姐因为要完成她的月度销售指标,将没有在当前开发计划中的产品功能承诺给了客户时,他们会帮助我们去解释为什么这样的情况会导致产品的发布日期延后一周。
经理们是公司机器的润滑油,是公司军队中的军士长。他们知道如何把事情做完,何时要紧,何时要松。简单的说,作为开发人员,你工作上成功的概率基本上正比于你老板的职业技能和工作的有效性。在我一生的职场经历中,我变得珍惜和感谢优秀的经理人,我知道真正优秀的经理人就像能中奖的彩票一样稀少。读了下面的文章,你就可以知道你有没有中了『好经理人』彩票。
1. 优秀的经理要联系团队和个人 | Managers Connect
-
一个卓越的经理会倾听团队的想法和顾虑。他会在公司要求的大框架下去衡量团队给予的反馈信息,努力在产品需求、交付日期和现实状况中达到平衡。
-
一个卓越的经理会相信他的团队时时刻刻说的都是真话,而且只有真话,同时他会不带感情色彩地去辨别是非黑白。
-
一个卓越的经理会在团队的需求和公司的需求两者之间进行权衡,而且他能够将同时满足多方面要求的项目计划进行到底。因为他相信这样做是正确的,而且在大多数情况下,这样做是通向成功的唯一道路。
-
一个卓越的经理,会不时地和整个团队以及其中的所有成员保持密切的沟通。他会知道团队面临的挑战是什么,以及团队或其中的个人应该如何做才能够达到成功。
-
一个卓越的经理会和团队和公司分享成功的经验,同时他会确保团队得到应得的荣誉。你总是不断地、及时地从你老板那里得到关于你工作表现的反馈,关于你在拟定目标上的进展状况,以及如何提高自身修养的建议,所以你总是能知道你在职业发展的道路上走得怎么样。
2. 优秀的经理要管理任务 | Managers Manage the Task
-
一个卓越的经理应该首先是一个有技术背景的人。作为一个开发者,当你告诉你的老板,因你发现某些不可重入的(non-re-entrant)函数在运行中会发生系统中断,而需要重构一个特定方法的时候,你的老板应该能够知道你在说些什么东东,或者至少会对你有能力解决这个问题表示认可。
-
一个卓越的经理要有技术的基础,虽然他可能不再是某方面的专家,但他还是有相当的技术能力参与到团队的技术讨论中去,或是在困难的情况下给予方法论上的建议和帮助。
-
一个卓越的经理知道他当时招聘的技术专家是你,并不是他自己,所以你的责任是在碰到问题的时候给予解决方案。好的经理管理的是任务,而不是技术。
-
一个卓越的经理并不会因为他在某个特定的技术领域的经验而在一个项目计划中强加于你特定的技术,给你挖坑。他认可通常解决一个问题会有很多种方法,多年前的经验和方法在今日未必适用。他不会在没有考虑所有可能的方案的情况下,强制做出技术设计的决定,也不会因为自己以前经常使用某些技术解决方案,而把这些强加给团队。
-
一个卓越的经理知道技术是日新月异,不断发展的,而找出某个特定任务的解决方法并实施最佳方案的人,应当是开发人员。