《极客与团队》
- 评价:“人际关系在工作中的重要性不亚于科学技术,但很多工程师都不太愿意投入太多精力去了解如何与别人合作。” 软件开发是一项团队运动,人的因素对结果的影响完全不亚于技术因素。一个项目成功的关键不仅仅是写出漂亮的代码,团队中的所有人朝着同一个目标一起合作也是同样重要。 这本书的主要目的是帮助程序员理解他人,与人沟通,以及与人合作的能力,进而在编写软件的过程中变得更有效率。
- 作者:Guide哥

“人际关系在工作中的重要性不亚于科学技术,但很多工程师都不太愿意投入太多精力去了解如何与别人合作。”
软件开发是一项团队运动,人的因素对结果的影响完全不亚于技术因素。一个项目成功的关键不仅仅是写出漂亮的代码,团队中的所有人朝着同一个目标一起合作也是同样重要。
这本书的主要目的是帮助程序员理解他人,与人沟通,以及与人合作的能力,进而在编写软件的过程中变得更有效率。
天才程序员的传说
大家应该都知道 Linux 之父 Linus Torvalds,这个被很多人吹捧为神一般的天才程序员。

实际上,Linus Torvalds 只是写了一个可以工作的类 UNIX 内核的初级版本。他真正的成就是领导和协调其他优秀的程序员一起来维护和完善 Linux。
知乎上有一个问题是“Linus大学时期写出了linux内核,那个最初的版本仅就技术而言,有多厉害?”。下面有一个回答是这样写的:
Linux的发展不是一步到位的,不是Linus动笔写了个无人企及的超级系统,人们就蜂拥而至。Linux能成为使用最广泛的操作系统之一,靠的是Linus的英明领导,社区的无私奉献,商业公司的积极参与。我觉得,我们了解Linux,更应该去了解开源社区是如何运作的,是什么使得商业公司选择将大量资源投入Linux,Linux的众多技术考量(如宏内核 vs 微内核,kernel 内部ABI兼容与否)的利弊何在。简单的造神,把Linux的成功全部归功于Linus的天才,是不利于我们学习和进步的。
天才传说只是我们缺乏安全感的一种表象罢了。很多程序员害怕和别人分享他刚刚开始做的东西,因为这意味着同行会看到他们的错误,从而知道这些代码背后的作者并非是天才。
假如你一直是单打独斗的话,你其实增加了自己失败的风险,而且浪费了自己成长的可能性。
反馈非常重要!不管是机器给你的反馈还是人给你的反馈。快速反馈可以确保你的工作在正确的方向上。
《高效程序员的45个习惯读书笔记》中关于敏捷开发这部分内容这样描述反馈:
敏捷开发就是在一个高度协作的环境下,不断使用反馈来进行自我调整和完善。也就是说敏捷的团队要共同工具,互相给予反馈或者从自己的代码中获取反馈,然后不断改进自己的代码。
反馈是敏捷的基础。一旦你意识到自己走错了方向,就要立即做出决策以改变方向。
参考开源项目或者企业项目,你会发现软件开发是集体项目!光靠自己通常是是没办法开发出一款优秀的项目。你需要合作,告诉别人你的想法,让别人帮你分担,团队里的人互相学习,从而打造出一支出色的团队。

团队里的成员社交的基础原则:
- 谦虚
- 尊重
- 信任
一定不要低估社交的力量。社交不是勾心斗角,不是操纵别人,奴隶别人,它是通过建立人与人之间的合作关系来一起把同一件事情做成功,一起实现同一个目标。
除了谦虚、尊重、信任之外,下面这些习惯同样非常重要,并且大部分人通常都会犯这些错误:
- 放下自负
- 学会批评和接受批评
- 快速失败和迭代
- 不断学习并为学习预留时间
- 保持耐心
- 对影响保持开放的态度 :不要固执己见,多听听别人的看法。不要推脱自己的错误,勇敢承担。
培养出色的团队文化

团队文化不仅仅是成员们编写代码的方式或是成员之间的相处之道,它还包含了所有人认可的经验、价值观、目标。
为什么要关心团队文化? 关心团队文化的原因在于如果不刻意和努力地营造它,那么团队最终会因为某个特别强势的人的出现而被注入他个人的文化基因。这种被引入的文化基因或许是好的,但是,往往事实相反。一个完善的团队文化应该是能够接受有益的改进,并且,能够抵御有害的激进变化。
什么是比较成功的团队文化? 一个比较成功的团队文化应该把绝大部分注意力都放在开发优秀的软件上面,而不是每天想着怎么聚会、开会、勾心斗角。
建议在招聘这个环节就注意筛选符合自己公司文化的求职者,将文化契合度作为考察点之一。
气氛随和的团队文化更容易受到性格激进的人的影响,其程度要大于随和的人对于激进的团队文化所产生的的影响。因此,随和的团队文化要避免被激进的新人牵着鼻子走,特别是要避免和这样的人发生激烈的冲突。有时候,团队的资深成员也要挺身而出,正面迎击这样的新人,防止他们对团队的随和分为产生破坏。
优秀团队的沟通模式建议:同步沟通的时候(比如开会)人越少越好,异步沟通的时候涉及到的听众越多越好。
一定要提高开会效率,避免不必要的时间和精力浪费。 下面是几个小建议:
- 只邀请一定要参加的人;
- 开会前要确定好议程,而且要事先通知所有人;
- 达成目的后应该提早散会;
- 注意不要跑题
- 尽量把会议安排在休息时间前后(比如午饭时间、下班前)
关于会前准备,我推荐遵循 WWGHQ 原则来:
- What:这个会是做什么的?
- Why:为什么开/参加这个会?
- Goal:这个会议的目标是什么?
- How:会议上我们需要讨论什么来达成这个目标?
- Question:准备一些会上会问的问题。
对于团队成员异地/远程办公的情况下,一定要利用好视频会议、语音、在线聊天、邮件等远程沟通的方式。团队成员之间多沟通,要让别人知道你在做什么。
很多成功的项目都有好几个邮件列表,把开发讨论、代码审查、用户讨论、公告发布等等分开来。不过,如果项目成员比较少的话,其实也没太大必要弄一大堆邮件列表。
大海航行靠船长

软件项目如果没有人领导的话,就像船上没有船长领航一样,它只会漫无目的地随波逐流罢了。
若想要项目有所进展,就必须有人站出来领导大家。
- TL(Tech Lead):技术主管。
- PM(Project Manager) : 项目主管。
如何当一个不合格的船长? :
- 雇佣听话的人,而不是合适的人 : 不要害怕别人比你优秀,对你会造成威胁,这是一种狭隘的想法。
- 无视表现不佳的人
- 无视人际关系
- 刻意维持和团队其他人的关系 :这可能反而会让别人觉得不舒服。
- 降低招聘标准 : 找到对的那个人比招到一个不应该招的员工的成本是微不足道的。
如何当一个合格的船长?:
- 放下自负 :不要自以为是,多听听别人的意见。
- 成为催化剂 : 团队主管最经常要做的事情就是引导大家达成共识。
- 当一个导师 : 指导团队的新人,让他们在实践中学习。
- 设立明确的目标 : 短期目标和长期目标指引者团队前进。
- 学会批评和赞美 : 批评和赞美都很难,要注意自己的表达方式。
- 适当关心团队成员工作之外的生活 :并不是让你去窥探别人的私生活。
- 关心团队成员的职业生涯
- 没必要事事躬亲,但也绝对不能当甩手掌柜。
- 帮团队遮风挡雨 : 保护团队不受各种不确定性的干扰。
- 适当激励 :激励分为两种一种是内部激励(内在激励)一种是外部激励(比如金钱激励)。通常来说,内部激励的效果还更好!要想方设法地从内心激励团队成员。
- ......
对付害群之马

软件开发中最难的其实是和人打交道。
哪些人可以称为害群之马?
- 不尊重别人的时间 : 比如很容易就能找到答案的问题还去麻烦别人。
- 自负 :比如无法尊重和倾听其他人的观点。
- 过分索求 : 比如喜欢抱怨而不愿意自己动手。
- 幼稚或是莫名其妙的交流 : 比如用户名很奇怪,经常改变,不同的地方用户名不一样。
- 偏执妄想 : 比如心里总是有各种阴谋论。
- 完美主义 : 太追求完美也会影响到项目的开发与进展。
如何对付害群之马?
- 转移完美主义者注意力 : 一旦找到解决问题的办法,哪怕不是最佳方案,但是只要够用,就应该把完美主义者的注意力放到其他问题上去。
- 不搭理那些挑衅的家伙 :你越是回应他,他就越是来劲,何必浪费自己宝贵的精力呢?
- 转移关注点 :遇到恶意挑衅的人,注意将自己的关注点切换到工作上。时刻保持冷静,知道哪些人是值得回应的,哪些人是可以无视的。
- 学会放弃 :当你无论怎么努力都没办法纠正害群之马的有害行为的话,你要学会果断放弃。你可以选择将对应的人移出团队或者采用其他不得已的办法。
操纵组织的艺术
我们还需要知道怎么在好公司和坏公司里生存。大多数软件工程师都服务于效率低下的有点官僚味道的公司因此要采取一些非常的手段才能达到目的。有些人称之为 办公室政治 ,你也可以把它叫作 社会工程 。而我们起的名字是 操纵组织。
有些坏领导根本不关心你的个人发展,你只是他们向上爬的垫脚石。他们可能会通过藏匿消息来达到窃取胜利果实以及让你背黑锅。
“办公室政治高手”通常左右逢源,很善于与人打交道。不过,这类人往往都是两面三刀。他们很会利用同僚或下属,踩着他们往上爬。他们会抓住各种机会来推卸责任,甚至比抢别人的功劳还迅速。
建议离这些“办公室政治高手”远一点。尽量也不要在背后说他的坏话,谁知道你倾诉的对象是不是已经被他蒙蔽了。
糟糕的公司 通常有下面这些特征 :
- 各种官僚政治和流程。
- 无脑的防火墙让你连一些无关紧要的网站也没办法访问。
- 每天需要填写各种表格,过于形式话。
- 通过代码量的方式来衡量你的生产力。
- ......
如何在糟糕的公司生存?
- 拉拢群众 : 当你找到足够多的人支持你的想法或者创意的时候,官僚结构也会开始考虑你的提议。
- 学习向上管理 : 尽可能确保你的经历以及团队之外的人不但知道你在干嘛,还要值得你干的很棒,
- 晋升到一个安全的位置 : 在公司的位置越高,你通常就越能掌控自己在公司的命运。你可以稍微投资一点精力在获得晋升上面。
- 离开 :远离糟糕的公司最直接的办法就是离开。
- ......
用户也是人
- 营销同样重要,没有营销,再好的产品也会被埋没。
- 软件易用性非常重要!如果你的软件不好用,速度不够快,界面不友好,访问不.方便的话,用户最后一定会离你而去。
- 编写软件是为了给用户带来方便和价值。关注用户在想什么,如何评论你的产品,以及长期使用的感受是至关重要的,用户才是你的软件成功的源泉。一分耕耘才有一分收获。
更新: 2022-02-18 12:04:13
原文: https://www.yuque.com/snailclimb/to3hqu/nup6xy