《告别失控》是讲述聘用、激励和领导顶尖软件开发团队的指导性书籍,对于如何建立一个可持续发展、始终能够交付符合预期的高质量软件、人人乐在其中文化氛围的研发团队,该书提供了很多有价值的经验法则、指导性建议、精辟见解。该书不仅能帮助项目经理成为更好的管理者,也有助于团队成员更高效的工作,对哪些想提升软技能的同学而言,该书启发性强也会是比较适合的一本好书。
程序员这个职业至少已经有60年的历史,全球从业人数庞大、从业者的素养参差不齐。(任何人都可以成为程序员,没有必需的证书标准或考试)
与其他工程类实践相比,编程更像是写小说(是一门有创意的艺术),在完成指定功能的前提下,代码细节难以把控。
规范的开发流程和框架,都仅是对编写软件过程的制约,并未涉及到程序员管理的问题。而程序员是一个古怪的群体(穿拖鞋、格子衫、懒散、无拘无束、个性独立、不愿做出改变、差异较大不能一视同仁等),如何发掘每个程序员的长处,让整个团队高效工作是一个挑战。总之,管理程序员就像放牧软件项目中的一群猫。
要想管理好程序员,就必须真正了解每个程序员。可以从以下几个视角理解程序员。
分类 | 解读 |
---|---|
客户端程序员 | 从事客户端程序开发的人员。客户端程序通常运行在终端用户的计算机、手机、iPad以及其他消费电子设备上。 |
服务器程序员 | 后端RD |
数据库程序员 | DBA |
Web开发及其他脚本编写者 | HTML、XML、CSS、JSP、JS、PHP,越来越多的web程序员能够像客户端程序员一样技术精湛。 |
这4种类型覆盖了世界上绝大多数的程序员,其中每一种程序员使用的工具、擅长解决的问题以及产品方向各不相同。大多数程序员只能把其中的一种做好。
每个行业和领域的背景与知识各不相同。团队是由具有程序设计天赋、领域知识、分析能力的人员混合构成。领域知识是程序员分类的另一个视角。
程序设计等级关联一组评价标准,程序员必须符合相关条件才能被录用到该等级。其中对工作年限的要求不是绝对的,年限可用于粗略衡量编程者具备的技巧和经验。 制定这一系列与程序员成长相适应的职级评判体系非常重要。
夜间型的人。大多数程序员属于夜晚型的人,往往在正常上班时间好久之后才到单位,并且工作到下班以后很久。要更关注结果,而不是他们的上班时间。
“牧童”与“农民” 。软件开发就像种地,农民会了解地形、研究土地的化学组成、种植、浇水、除草、收货。好的软件也是这样有条不紊地开发出来的。但多数程序员更倾向于当"牧童",出现问题的时候“跳上马离开”去独自解决问题,他们跳过规范,最终得到一次性的解决方案,解决突发问题能力很强。需要识别牧童,加以制约,使其开发出来的解决方案也能用于解决其他问题。
英雄。能够付出超人的努力并最终完成任务的人。不能总是期望他们付出超人的努力,这样会毁掉他们。需要关注他们的福利,选择性的用于关键项目。
内向的人。职员中总有一些非常沉默、非常内敛,他们或许能够出色地完成工作,但对团队动力或会议上几乎没有贡献,几乎感觉不到他们的存在。
愤世嫉俗、刻薄的人。需要衡量他们的才华能否匹配雇佣他们的代价。
小结:以上多种视角告诉我们,每个程序员都是不同的,就像世上没有两片相同的雪花,需要因材施用,不能一视同仁。管理人是困难的,有时候最有天赋的程序员同时也是最难管理的人。
根据“个体差异”研究,程序员在编码时间、代码大小、调试时间、bug数量等方面存在很大差异,优秀的程序员最多可以比平庸的程序员好30倍。程序设计经理最重要的工作就是招到正确的人。最糟糕的招聘可能会给团队带来长达数月的痛苦。
招聘工作很重要,做好新员工的入职工作同样重要,永远不要低估对新员工适当欢迎的重要性。如何让新员拥有宾至如归的感觉(就像回到家不用担心吃什么饭一样),直接关乎新员工的工作热情。不用提前规划,只要表达出对他们加入的兴奋之情就可以。
应当从员工接受录取通知的那一刻算起,与候选人保持"温暖"的关系,掌握候选人的心理变动,因为种种事件都会影响候选人是否会真正前来入职。
如“伙伴计划”、新人SOP、参观认识办公环境、自家主管领着新员工在办公室“游街”示众一番、团队目标沟通等。
大部分公司都是垂直的组织结构。按照和你的关系划分为:
- 向下管理(管理下属,项目经理大部分时间应该花费在向下管理上)
- 向上管理(管理上司)
- 对外管理(其他组织)
- 自我管理
成功地管理程序员最重要、最关键的因素就是获取下属的技术尊重。获取技术尊重的因素有很多,比如:
招聘到正确的人,那么其他的工作就会变得更容易;
受招聘预算限制、系统陈旧无趣等因素影响,招聘到杰出程序员几乎是不可能的。必须在招聘优秀程序员的同时,持续推动团队的进步(内部培养)。
不同类型的程序员稍加区别地对待。项目进展往往很难分辨,只能依赖一些间接因素来观察进展:状态报告、项目时间表、基本指标及口头反馈,给与他们信任和活动空间。
经理应该引导程序员做出正确的决定,而不应该自己就把决定做了;如果经常需要下达具体的命令,那说明你没能很好的利用你的管理技能。杰出的经理能够提前发现阻碍并提前移除阻碍,让目标的实施过程看起来很容易。
经理要保护他的团队成员,免受组织中每日泛滥不绝的各种问题、评估、讨论、记录、争议的干扰,淹没在繁杂事情的洪流中会极大降低RD的程序设计效率,经理需要站出来缓冲这些洪流,并让他们知道你在保护他们,这样你会获得相应的声誉。
识别、奖励和庆祝团队的成绩是至关重要的。如:10.24请队员吃饭、周五下班撸串、周六给加班队员晒个朋友圈?
小结:向下管理很难,但如果做的成功,职业生涯的辉煌是绝对有保证的。无论管理效果如何,要让队员知道你的忙,是忙于管理他们。
成功并不在于你做了什么,更需要考虑别人如何看待你所做的成果,现实中外在认知往往比实际行动更重要。管理好上司让他们成为你事业进步、个人成功的助力源泉。
上司是什么类型的?技术型、销售和市场型、财务型、大局型、细节型等。
主动沟通,让领导知道你为他分担了很多工作,随着时间的流逝你的汇报人会对你的能力和职权边界达成一种共识。
只做好自己的工作并不够,还要帮助你的老板获得成功。了解你老板的工作目标,知道可以为上司做些什么。
好时机几乎和好运气一样重要。就像电影发布的时机好坏直接影响它能否获得奥斯卡金像奖。
几条成为模范员工的秘诀:
向外管理是对组织外部关系的管理,比如技术合作部门、供应商、合作伙伴、竞争对手、行业中有影响力的人等。跨部门、跨组织的纽带关系很有必要,可以采用非常规的方式逐步建立关系。
最难管理的人总是自己。
保持一个积极准确的日程,只对哪些真正需要你时间的人慷慨。
寻找那些令你尊重的、可以在你的生活和事业上给你指导的人,然后某种方式接近他们,请求他们指导你的职业发展,并为困难的管理问题指路。
时间不充裕,不要最后才想到自己。每周花时间自我管理,每周拒绝一次约会,把时间留给自己改善自己的问题。
激励程序员没有一劳永逸的方法。以下是几个关键激励因素,最终还是需要我们反复思考和实践。
几乎没有人不想改变世界。很多人选择程序设计,至少有部分原因是为了对身处的世界发挥积极影响。
技术变革太迅速,最好的程序员必定是终身学习者。为员工营造极好的学习氛围。技术讲座可以来自外部、应试者、员工、新书作者、供应商、产品经理等。
最简单的奖励和激励程序员的方法之一,是为他们配置最先进的开发设备和环境。
认可与称赞不用花一分钱,却能对员工态度、职业道德、整体业绩产生巨大的影响。
无需每天都很开心,但能够坐下来了解员工之间当天发生的事情或者一个笑话,并与他们哈哈大笑。有时候,笑是处理问题打破紧张问题的利器。
略…
小结:每个程序员都不相同,激励程序员的动力因人而异,了解一个程序员的动力,不妨从你雇用他们之前,那时你有机会去研究激励他们的真正动力。
重金聘请的程序员,如何让其获得最高效的生产效率?需要有: