——程序员版《人性的弱点》,提升职业生涯软技能

※探讨领导力、合作、沟通、高效等团队成功关键因素※

一、天才程序员神话

1、请帮我隐藏代码

没有人喜欢受到批评,尤其是对自己未完成工作的批评。

在某种意义上,这只是人类本性的一部分——缺乏安全感。

2、天才神话

人有一种本能:发现领导者和楷模,将他们偶像化,然后试图模仿他们。在内心世界,我们都希望成为天才。

3、隐藏是有害的

如果总是独自工作,失败的风险就会增加,你也会错失成长的机会。

尽早分享想法不仅可以避免个人失误,验证想法的正确性,而且可以减少缺少你时项目完全无法进行下去的风险。

总之,独自工作一定比多人合作更具有风险。

4、团队为王

编程领域极少出现独行侠,即便真有,他们也不是在真空中完成超人创举的。

软件开发是一项团队活动。高效团队千金难求,是成功的真正关键。

5、三大基石

下面三大原则不仅可以调和人际关系,还是所有良好交互与合作的基础。

  • 谦虚(Humility):你并非宇宙中心,并非无所不知,也会犯错,但愿意自我改进。
  • 尊重(Respect):你要真诚关心同事,以礼相待,欣赏其能力,认可其成就。
  • 信任(Trust):你要相信别人可以胜任工作并作出正确选择,愿意在合适的时候将权力交给他们。

这些原则合称为HRT。

几乎每种社交冲突的源头最终都可归结为谦虚、尊重或信任的缺失。

6、HRT实战

  • 放下自我——自信和谦虚并不矛盾,只是别表现得无所不知。
  • 批评与自我批评——批评要基于尊重,学会接受批评。
  • 快速失败和迭代——失败是一个选项。从错误中学习的关键是将失败记录在案。
  • 留出学习的时间——跨出自己的舒适区域,接受未知的挑战。
  • 学会忍耐——充满耐心。
  • 接受改变——越愿意接受改变,就越能引起改变。越是脆弱的人,越表现得坚强。

7、下一步

掌握了“与他们合作的艺术”,你必须开始检视和反省自己的行为。

重要的改变应当从自身开始,由内及外。

二、打造团队文化

团队文化种类多样,反映出不同的价值观和任务优先级。

1、什么是团队文化

团队文化不仅仅是团队成员完成工作、编写代码或彼此相处的方式,而且是成员共享的经验、价值观和目标。

2、团队文化的重要性

如果团队成员不重视团队文化,不仅难以培养很强的团队认同感和集体荣誉感,而且新成员很容易给团队文化带来不好的影响。

“强大的文化”能够接受提升自己的改变,而抵御带来伤害的巨变。

好的团队文化可以帮助你集中精力,提高效率,让你充满力量,造就一个更快乐的团队。

团队文化的有趣之处在于,如果定义明确,团队文化就会自己选择成员。

3、团队文化与人

在软件行业中,制造产品的工程师需要进行大量的创新思维。要得到高质量的产品,就需要优秀的工程师。想让优秀的工程师做出杰出的工作并且留下不走,就需要为他们创造良好的团队文化,让他们放心地分享想法,并有参与决策过程的权利。

4、成功团队文化的沟通模式

沟通的通用准则:人少时使用同步沟通(如会议与电话会议),人多时使用异步沟通(如邮件、问题跟踪系统、文档注释)。

5、高层同步

在最高层次上,团队需要保持统一的共同目标,在沟通中遵循最佳实践。

  • 任务说明书:迫使团队面对意见分歧,就产品方向达成共识。确保事情沿既定方向发展。
  • 高效会议:避免不必要的例会。主持会议的五条简单准则

(1)只邀请必需人员参加

(2)草拟议程并在会议开始前尽早发出

(3)完成会议目标即可散会

(4)保持会议按议程进行

(5)尽量将会议安排在中断点附近(如午餐或下班时间)

  • 分布式团队:视频交谈。不要低估了面对面谈话的信息量。
  • 设计文档:不仅是未来产品的概要蓝图,而且也是与大团队沟通的低成本方式,可以传达你的设计目标及实现方法。

6、日常讨论

面谈是最好的方式。

  • 邮件列表:约定邮件讨论的规则——保持文明,防止“聒噪的少数人”扰乱秩序。
  • 在线聊天:群聊、一对一。

7、使用问题跟踪系统

注意维护,设置优先级,避免漏掉重要的问题而修复无关紧要的缺陷。

8、工程中的沟通

  • 代码注释:凡事不过,制定团队注释风格。
  • 署名:强烈反对源代码文件中宣示所有权的署名。
  • 每次提交必有审阅:保证风格、质量。严格的审阅不仅可以提高代码库质量,而且可以极大地提升项目成员对代码质量的集体荣誉感。
  • 测试与发布流程:测试驱动开发、回归测试,提升自动化测试能力。

9、一切为了产品

强大、有效的团队文件,花时间注意团队的沟通,创造出的团队会将更多的时间花在编写和提交产品上,而花费更少的时间争论提交什么样的产品。

三、群龙不可无首

一个团队没有领导者就无法运作。透彻地理解领导方式是影响工作方向的关键技能。

1、自然界里无真空

如果没有人领航,项目团队就是一群只会等待事情发生而无所事事的极客而已。

2、经理是个贬义词

新时代的“经理”是“领导者”。

领导唯一需要担心的是,所有事。当经理可以扩展自己,而且说不定自己特别善于为团队提供所需要的指导、帮助和氛围。

3、服务型领导

为团队搭桥铺路,在需要时给出建议,而且依旧愿意从事具体工作。

服务型领导者唯一需要管理的是团队的技术和人际关系的健康。

4、反模式

  • 雇用软弱者
  • 忽视表现不佳者
  • 忽视人际关系
  • 与所有人为友
  • 放宽招人标准
  • 把团队当孩子管

5、领导模式

  • 放下自尊:信任团队、你不可能做好所有事也不能解决所有问题、犯错时道歉。
  • 成为禅意大师:在任何时候保持镇定。你是齿轮组中最大的那个,你的举动会被所有人关注。
  • 成为催化剂:促进团队达成共识、很多时候认识正确的人比知道正确的答案更有用。
  • 失败是一个选项:失败并不可怕,但要让团队整体承担失败,并从失败中学习经验。
  • 成为老师和导师:三个条件,1熟悉团队的流程和系统,2能够向别人清楚地解释事情,3能够判断新人需要多少帮助。
  • 设定清晰的目标:让团队往同样的方向使劲,可以极大提高团队的效率。
  • 以诚相待:真诚。
  • 关注幸福度:确保每个团队成员都能保持高效、快乐。很大程度上关注他们的职业发展。
  • 其它提示和技巧:放权,但也要做具体工作。寻找接替自己的人。知道何时出手。给团队一方净土。保护团队。肯定团队的成就。同意具有冒险精神的成员尝试容易恢复的事情。

6、人同植物

发现谁需要什么,然后满足他们的需求。

7、内在激励与外在激励

使人们最幸福最高效的方法不是外部激励(例如,给他们很多钱),而是增强他们的内在激励:自主性、卓越性和目标。

8、总结

花点时间审视一下所在的团队,看看团队主管用了哪些模式和反模式导致团队的成功(或失败),你会对团队运作的关键获得更实际的理解。

四、应对有害之人

创新工作中最困难的部分是人。

1、定义“有害”

暂且指代行为不佳的人。

2、巩固团队

  • 发布任务说明书,明确目标和非目标。
  • 为邮件讨论建立适当的礼节规范。
  • 记录所有历史:代码历史、设计决策历史、重要缺陷修复历史、过往错误历史。
  • 有效合作。使用版本控制软件,防止知识集中在少数人手中。
  • 明确缺陷修复、测试、软件发布的政策和流程。
  • 降低新成员的磨合障碍。
  • 依赖基于共识的决策方法,但也要指定备用流程,以解决无法达成共识的冲突。

3、发现威胁

最可能受到有害之人影响的是团队的注意力和专注力。

  • 不尊重他人时间
  • 自大
  • 颐指气使
  • 沟通幼稚或混乱
  • 疑神疑鬼
  • 完美主义

4、去除毒素

创造一种友善的人对抗刻薄的人的派系之争是不利于社区健康的。注意力应该集中在如何消除行为,而不是如何驱逐人。

  • 引导完美主义者的能量:将完美主义者的注意力集中到另一个需要解决的问题。
  • 不要喂食能量生物:对挑衅不予理会。
  • 不要过于情绪化:时刻保持冷静。
  • 在愤怒中寻找事实:思考他说的是否言之有理?
  • 以德报怨:~
  • 适时放手:有时候,不管你如何努力,最终还是需要选择放下,继续前行。
  • 放眼未来:就长远来看,确定相信项目将收益吗?最终冲突会以有益的方式解决吗?

5、总结

不要将愚蠢归结为恶意。

五、组织操控的艺术

1、好公司、坏公司,以及策略

2、理想情况

理想的工作体验:

  • 完成本职工作后寻求更多职责。
  • 承担风险而且不惧失败。
  • 表现得像成年人一样。
  • 对不确定的东西提出疑问。

3、通常情况

  • 不称职的经理
  • 办公室政治家
  • 管理不当的组织

4、操控组织

  • 取得原谅比获取许可更容易
  • 另辟蹊径——想方法使你的想法被底层接受
  • 学会向上管理
  • 运气和人情经济
  • 政治银行账户
  • 晋升到一个安全职位
  • 寻找有影响力的朋友
  • 如何写信找忙碌的高管帮忙——三条要点和一个行为召唤

5、备用计划:撤退

跑路——做正确的事,等着被炒

6、希望尚存

首要目标应当是做出所需的改变,使自己开心,完成工作目标。

六、用户也是人

良好的软件需要很多其他人来使用并对其感到满意。要创造优秀的产品,你还需要积极地与用户合作,如果疏于此道,你所得到的不过是一个没人使用的漂亮软件。

1、管理公众认知

你听说过市场营销这个词吗?你需要营销策略,才能让自己的软件进入市场。

  • 注意第一印象
  • 少承诺多提交
  • 与工业分析师谦恭合作

2、你的软件可用性如何

除非你开发的是软件工具,否则工程师不会是软件的客户。关注用户,其它百年都将水到渠成。

关注用户的一些重要方法

  • 选择听众
  • 考虑进入的壁垒
  • 衡量使用数,而非用户数

3、设计很重要

良好的设计的很大一部分是以用户为先,隐藏复杂性,提高产品速度,最重要的是,不要一味求全。

  • 以用户为先
  • 速度不容忽视
  • 切勿求全
  • 隐藏复杂性

4、管理与用户的关系

不管你是否相信,很多用户希望与产品的公司或团队建立关系。程序员常犯的错误之一就是交付软件之后就对用户反馈置之不理了。用户啥也不懂???

  • 尊重用户的智商
  • 耐心
  • 创造信任和愉快

5、记住用户

  • 市场营销:了解人们对软件的看法;这决定了他们会不会去尝试。
  • 产品设计:如果软件做不到容易尝试、速度快、友好,而且用户面广,用户就会流失。
  • 客户服务:主动与用户建立长期的良好关系能影响软件的演化和用户保持率。

后记

如果你读完本书只记得一点内容,那么请记住HRT原则:谦虚、尊重、信任。

推荐书目

安静:内向性格的竞争力》,作者Susan Cain

编写可读代码的艺术》,作者Dustin Boswell、Trevor Foucher

重来》,作者Jason Fried、David Heinemeier Hansson

怪诞行为学》,作者Dan Ariely

硅谷最受欢迎的情商课》,作者Chade-Meng Tan

你就是极客!软件开发人员生存指南》,作者Michael Lopp

人件(第2版)》,作者Tom DeMarco

人月神话(第2版)》,作者Frederick P.Brooks

软件开发者路线图》,作者Dave Hoover、Adewale Oshineye

三双鞋:美捷步总裁谢家华自述》,作者Tony Hsieh

无从选择》,作者Barry Schwartz

拥抱变革》,作者Mary Lynn Manns

《进化 从孤胆极客到高效团队》总结相关推荐

  1. STL源码剖析学习七:stack和queue

    STL源码剖析学习七:stack和queue stack是一种先进后出的数据结构,只有一个出口. 允许新增.删除.获取最顶端的元素,没有任何办法可以存取其他元素,不允许有遍历行为. 缺省情况下用deq ...

  2. 《STL源码剖析》学习-- 1.9-- 可能令你困惑的C++语法1

    最近在看侯捷的<STL源码剖析>,虽然感觉自己c++看得比较深一点,还是感觉还多东西不是那么明白,这里将一些细小的东西或者概念记录一下. 有些东西是根据<C++编程思想>理解的 ...

  3. 《STL源码剖析》学习--6章--_rotate算法分析

     最近在看侯捷的<STL源码剖析>,其中有许多不太明白之处,后经分析或查找资料有了些理解,现记录一下. <STL源码剖析>学习--6章--random access ite ...

  4. 《STL源码剖析》学习--6章--power算法分析

    最近在看侯捷的<STL源码剖析>,其中有许多不太明白之处,后经分析或查找资料有了些理解,现记录一下. 6章--power算法分析 书本中的算法如下所示: template <clas ...

  5. STL源码剖析——P142关于list::sort函数

    在list容器中,由于容器自身组织数据的特殊性,所以list提供了自己的排序函数list::sort, 并且实现得相当巧妙,不过<STL源码剖析>的原文中,我有些许疑问,对于该排序算法,侯 ...

  6. STL源码剖析---红黑树原理详解下

    转载请标明出处,原文地址:http://blog.csdn.net/hackbuteer1/article/details/7760584       算法导论书上给出的红黑树的性质如下,跟STL源码 ...

  7. STL源码剖析面试问题

    当vector的内存用完了,它是如何动态扩展内存的?它是怎么释放内存的?用clear可以释放掉内存吗?是不是线程安全的? vector内存用完了,会以当前size大小重新申请2* size的内存,然后 ...

  8. STL源码剖析学习二:空间配置器(allocator)

    STL源码剖析学习二:空间配置器(allocator) 标准接口: vlaue_type pointer const_pointer reference const_reference size_ty ...

  9. STL源码剖析 数值算法 copy 算法

    copy复制操作,其操作通过使用assignment operator .针对使用trivial assignment operator的元素型别可以直接使用内存直接复制行为(使用C函数 memove ...

  10. STL源码剖析 算法开篇

    STL源码剖析 算法章节 算法总览_CHYabc123456hh的博客-CSDN博客 质变算法 质变算法 - 会改变操作对象的数值,比如互换.替换.填写.删除.排列组合.分隔.随机重排.排序等 #in ...

最新文章

  1. 【struts2+hibernate+spring项目实战】Spring计时器任务 Spring整合JavaMail(邮件发送)(ssh)
  2. python自然语言处理书籍_精通Python自然语言处理pdf
  3. Maven 创建、测试工程
  4. java成绩前五名的代码_java 如何选出成绩排前5名的学生呢
  5. 2004-11-28+ 认识Duwamish 7.0(3)错误处理
  6. php include 导航栏,PHP全栈开发(八):CSS Ⅹ 导航栏制作
  7. Codeforces Good bye 2015 B. New Year and Old Property dfs 数位DP
  8. [转帖]golang操作mysql使用总结
  9. WebService 服务 转
  10. 学生社团管理系统(Java+Swing+mysql)(超简陋)
  11. 2020年注册电气工程师基础考试大纲:公共基础(供配电、发输变电相同)
  12. drawio二次开发
  13. 用一行python代码用openpyxl找到excel某一列的最大行数
  14. ESP32分区表图解
  15. 行车记录仪数据被删除了怎么恢复?解决方法分享
  16. SwiftUI 使用Apple Visionkit构建文档扫描仪
  17. J2EE基础教程(4):struts框架(视频笔记)
  18. 从零开始的LC刷题(74): Reverse Vowels of a String
  19. Linux——文件的权限管理、acl列表、特殊权限位、练习2
  20. 日记-反思自制力不足与提出改进方案

热门文章

  1. Python入门(二十七)——线程深入复习(.tart()、 .join()、.setDaemon(True))
  2. Javascript高级程序设计--读书笔记--第八章BOM
  3. 羊皮卷的故事-第七章
  4. 【Python】列表、元组、字典的使用详解(增删改查)
  5. systemd:源自红帽的系统初始化和服务管理套件
  6. 用mysql写报纸发行员_我想从事报纸发行员这个工作,但不了解,请问报纸发行具体是干什么呢??...
  7. 围观手机游戏: 一场还没准备好的全民冲锋
  8. 2021计算智能期末复习
  9. 计算机pe病毒的感染过程,感染型PE病毒分析与专杀修复工具的开发.pdf
  10. js 兼容事件添加addEvent()