我曾经担任过开发经理、开发总监的工做,也曾经是一个开发人员,在过去的几十年中,在管理技术团队这件事情的两边,我经历过许多很是不同的“管理风格”。从技术团队的角度出发,就成为一个卓越的技术经理必备的特质,我会给出一些建议。 程序员
首先,技术人员的工做环境始终飞速变化,我以为如何成为一个卓越的技术经理是一个很是重要的话题。 segmentfault
在过去的二十年中,咱们能够看到软件开发的模式有发生了巨大的变革。在大多数企业中,软件开发的周期变得短,并且管理层由于每一个季度盈利的目标而对产品开发施加更大的压力。对于许多初创企业,都须要在第一时间发布新的软件产品。这些状况都致使了在软件开发中咱们会一直使用各类变动管理的方法。
app
在我仍是一个开发人员的时候,我明白了第一个道理。个人老板当时问我,你知道你的工做对公司有哪些贡献吗? 框架
我:『额…… 我吗,我就是在写代码。』 函数
老板:『好吧,你是在写代码。让我换一种方式来问你,你以为你写的每一行代码会给公司带来多少利润呢?』 工具
我:『(脑瓜爆炸中……)噢,不是?我以为,我不能……我历来没有…… 额……你在说啥?』 spa
个人老板过后向我解释,公司的想法是,每个开发人员都应当知道本身对于公司的贡献。固然这不是在讨论每一行代码能产生多少贡献,更主要的目的是,你知道你的工做会对公司的利润产生影响。你的工做会影响你所开发的产品,在其生命周期中,这个产品将帮助公司赚钱或是省钱。若是你能获得这些盈利或是节省的数字,除上公司的投入(项目上开发人员的工资收入),就能够知道你所在项目的大体收益状况。听完这些话后,我一会儿茅塞顿开。 设计
这件事情的意义在于,在真实的商业世界里,我在这里引用梳着黑色大背头的Michael Douglas关于贪婪带来的好处的说法:对于公司来讲,全部的事情都是赚钱相关的。(详见Michael
Douglas参演的电影Wall Street)。然而,做为开发人员,咱们专一于开发这一艺术性的工做上。咱们创造出的代码,将比之前更快、更好、更优雅地解决问题,完成任务。咱们就像画家通常在画布上尽情做画,直到完美,从无到有地创造,开发出使人兴奋、大呼碉堡的软件,这和利润有半毛钱关系? orm
技术经理们就像“动物园”的看门人同样(想到程序猿们……)。他们应当要可以使用咱们的语言,体谅咱们付出的劳动,理解咱们的问题,而且和咱们一同分享胜利的喜悦。同时,当他们没有在作这些事情的时候,他们给予咱们反馈,给予咱们产品的需求,表明咱们和他们的上级和同级的同事一块儿制定项目预算,确认开发的费用和团队人数。当某一个表面光鲜的销售姐姐由于要完成她的月度销售指标,将没有在当前开发计划中的产品功能承诺给了客户时,他们会帮助咱们去解释为何这样的状况会致使产品的发布日期延后一周。 blog
经理们是公司机器的润滑油,是公司军队中的军士长。他们知道如何把事情作完,什么时候要紧,什么时候要松。简单的说,做为开发人员,你工做上成功的几率基本上正比于你老板的职业技能和工做的有效性。在我一辈子的职场经历中,我变得珍惜和感谢优秀的经理人,我知道真正优秀的经理人就像能中奖的彩票同样稀少。读了下面的文章,你就能够知道你有没有中了『好经理人』彩票。
一个卓越的经理是善于管理时间、任务、需求、规范、资源和人员的经理。他会拥有看到整片树林的能力,但同是他相信做为开发人员的你可以照顾好整片树林中的树木。他会经过各类可能的方法关注你的工做量, 了解你的进展状况。毕竟卓越的经理应当会使用各类必要的管理方法和工具来跟踪团队的工做和进展。这意味着你的团队应当会使用一些工具来跟踪和汇报天天的开发任务。这类工具能够是简单的缺陷跟踪系统(如 Mantis 或 Bugzilla),或者是完整的基于敏捷开发流程设计的系统(如 Greehopper)。无论怎样,这些工具会让你的老板可以以一种非主动的方式管理项目。同时,这类工具也可以提醒你老板在什么时间应该积极地介入到项目中来。
一个卓越的经理不会以“微管理”的方式来管理你的工做(除非你在工做上表现实在不好),并且不会常常天天经过各类可能的方式来骚扰你,来得到你最新的工做进展状况。他知道在你解决困难问题的时候,你的大脑须要一个不被打扰的环境,任何打扰只会拖延解决问题的时间。他会知道你何时须要这样的环境来完成工做。
若是一个卓越的经理不知道为何你对一项工做的估测时间增大之时,他会须要你提供时间估测的具体分析,并和你一块儿探讨。若是须要对你的时间估测进行改动的话,他会征得你的赞成,而不是强行地进行更改。另外,当计划外的工做被添加到你的计划中的时候,他会从新安排计划,以确保你能有足够的时间来完成这些工做。(《为何程序员老是不能准确估测项目时间》)
一个卓越的经理会为你提供你所须要的全部资源,以确保你可以在规定的时间内完成工做。
可是,若是你须要的新硬件、软件、或是对工做环境的改变超出了目前项目容许的范围,只要你证实这些变化的确可以提升你的工做效率,他会赞成的。做为一个技术团队的一员, 你的职责是理解投资回报(Return of Investment,ROI)的基本概念。这样的话,你就能像你的老板描述问什么项目计划外的支出可以帮助公司得到更多的回报。
一个卓越的经理会尊重他的团队的专业技能、 时间安排以及各类诉求。他会给团队成员提供各类须要的工具来帮助他们在规定的时间内完成事先承诺的工做。他会尊重你的我的生活和职业发展。当员工须要处理办公室里或平常生活中碰到的各类问题时,他会灵活安排员工的工做。对一个卓越的经理来讲,只要团队的工做在规定的时间内完成,他不会要求全部人严格按照进度去工做,他也不会过分关注每一项工做什么时候完成。卓越的经理人知道在特殊情况下团队须要额外的时间来完成一项工做,但他们知道,当团队夜以继日的在天天晚上、周末、假日加班的时候,这是例外,并非常态。一个卓越的经理理解当团队一周工做60个小时以上的时候,这是由于团队想这么干,并非被逼的。若是员工是被迫如此加班的话,他会意识到这是他本身在开发任务的时间管理上有问题,而不是由于团队的能力问题形成的。
我彻底了解一个经理的职责远远超出了他所带领的团队。我试图从一个团队成员,而不是一个一线经理,或是一个总监的角度来写这篇文章。对程序员来讲,在基层工做的一个好处是当你不知道你的上级在作什么的时候,你能够随便批评他们。相信我,一个一线的技术经理天天的工做包含了不少和管理团队无关的事情。若是你以为你老板的工做很容易,或者你会比他们作得更好,为何不去试一下作你老板在作的事情?我以为你是不会想要他们的工做或是相应而来的压力的。
若是一个团队有幸可以获得一位卓越的技术经理,这支团队应当积极地保护甚至培养和他们老板之间的关系。一般,开发团队可使用他们老板不知道的方法,经过额外的付出和努力来帮助他们的老板成功。一个卓越的经理会关心他的团队,一样的,一支卓越的团队也会如此地关心他们的老板。久而久之,团队和经理成为了有机的一体,像剑圣通常坚如盘石,望风披靡,成为组织中其余团队的标杆。
在卓越团队中的每个人,都应该反映出这支团队的经理的技能、态度和道德水准。
via 伯乐在线