进化 - 从孤胆极客到高效团队¶
- 天才程序员神话
- 程序员行为模式
- 请帮我隐藏代码
- 缺乏安全感。人们担心别人看到并评论自己未完成的工作
- 天才神话
- 天才神话只是我们缺乏安全感的另一个表现。
- 请帮我隐藏代码
- 隐藏是有害的
- 如果总是独自工作,失败的风险就会增加,你也会错失成长的机会。
- 尽早与他人分享想法不仅可以避免个人失误,验证想法的正确性,
而且可以增加所谓的项目的巴士因子(bus factor)。
- 巴士因子:项目中有多少人被巴士撞死会导致项目完全无法进行下去
- 还需要考虑项目的整体进度
- 快速反馈循环
- 独自工作一定比多人合作更具有风险
- 团队为王
- HRT:Heart
- 谦虚 Humility
- 尊重 Respect
- 信任 Trust
- 几乎每种社交冲突的源头最终都可归结为谦虚、尊重或信任的缺失
- HRT 实战
- 放下自我
- 就是告诉那些不够谦虚的人别摆架子
- 态度谦虚并不是说应该完全任人摆布
- 批评与自我批评
- 你的自尊不应该和你写的代码(或创建的任何创新项目)有任何联系。 也就是说,你的代码并不代表你。
- 快速失败和迭代
- 一份完备的事后分析报告应包含以下内容:
- 概述
- 从发现问题,调查问题,到解决问题的时间线,事件发生的主要原因
- 影响和损失估计
- 立即解决问题的一系列措施
- 预防事件再次发生的一系列措施
- 吸取的经验教训
- 一份完备的事后分析报告应包含以下内容:
- 留出学习的时间
- 学会忍耐
- 接受改变
- 放下自我
- HRT:Heart
- 程序员行为模式
- 打造团队文化
- 团队文化不仅仅是团队成员完成工作、编写代码或彼此相处的方式, 而且是成员共享的经验、价值观和目标。
- 元素
- 工作流程
- 人际
- 行为模式等
- 团队文化的重要性
- 如果不花费精力打造和维护团队文化,最终会出现具有很强个性的人, 在团队中培养他们的文化,接管你的团队。
- 团队成员应该重视并愿意维护团队文化,这一点也很重要。
- 虽然创始人和领导者通常会关注团队文化的健康, 但团队的每个成员都应参与其中,担负起定义、维护、保护团队文化的责任。
- “强大的文化”能够接受提升自己的改变,而抵御带来伤害的巨变。
- 团队契合度面试
- 成功团队文化的沟通模式
- 人少时使用同步沟通(如会议和电话会议),人多时使用异步沟通(如邮件、 问题跟踪系统、文档注释)。
- 确保所有的信息都存在项目文档中
- 高层同步
- 任务说明书
- 在一个实干、高效的团队中,编写任务说明书是为了简明地定义工作方向, 限定产品范围。
- 随着项目推进,任务说明书可以确保事情沿既定方向发展。但是, 项目说明书不应成为阻碍变化的不可逾越的障碍。
- 任务说明书
- 高效会议
- 主持会议的五条简单准则:
- 只邀请必需人员参加
- 草拟议程并在会议开始前尽早发出
- 完成会议目标即可散会
- 保持会议按议程进行
- 尽量将会议安排在中断点附近(如午餐或下班时间)
- 主持会议的五条简单准则:
- 分布式团队
- Subversion 项目组有一句格言:如果讨论不在邮件列表中进行, 就没有真的发生过。
- 面对面沟通的重要性
- 设计文档
- 设计文档不仅是未来产品的概念蓝图,而且也是与大团队沟通的低成本方式, 可以传达你的设计目标及实现方法。
- 日常讨论
- 邮件列表
- 在线聊天
- 使用问题跟踪系统
- 工程中的沟通
- 代码注释
- 署名:不建议
- 每次提交必有审阅
- 测试与发布流程
- 一切为了产品
- 打造一种强大、有效的团队文化,花时间注意团队的沟通, 创建出的团队会将更多的时间花在编写和提交产品上, 而花费更少的时间争论提交什么样的产品。
- 群龙不可无首
- 自然界里无真空
- 经理是个贬义词
- 胡萝卜加大棒”的管理方法
- 新时代的“经理”是“领导者”
- 传统的经理关心如何做事,而领导者关心做什么事 (并相信团队知道如何将其实现)......
- 唯一需要担心的是,所有事
- 好像你多年来一直按每天摘的苹果计算工作量,工作变成摘香蕉之后,
你收工时对自己说“我今天一个苹果也没摘”,却对身边的一大堆香蕉视而不见。
- 对管理工作进行量化比计算组装好的工具要困难得多。
- “彼得原理”:“任何层级组织里,每个人都将晋升到他不能胜任的阶层。”
- 好像你多年来一直按每天摘的苹果计算工作量,工作变成摘香蕉之后,
你收工时对自己说“我今天一个苹果也没摘”,却对身边的一大堆香蕉视而不见。
- 服务型领导
- “首先,不要急于管理。”
- 反模式
- 雇用软弱者
- 忽视表现不佳者
- 忽视人际问题
- 与所有人为友
- 放宽招人标准
- 把团队当孩子管
- 领导模式
- 放下自尊
- 成为禅意大师
- 成为催化剂
- 失败是一个选项
- 成为老师和导师
- 设定清晰的目标
- 以诚相待
- 关注幸福度
- 你有什么需要?
- 其他提示和技巧
- 放权,但也要做具体工作。
- 寻找接替自己的人。
- 知道何时出手。
- 给团队一方净土
- 保护团队
- 肯定团队的成就
- 同意尝试容易恢复的事情
- 人同植物
- 团队成员也和植物一样:有些需要更多阳光,有些更需要灌溉 (有些需要更多的牛粪,呃,肥料)。作为团队领导者, 你的责任就是发现谁需要什么,然后满足他们的需求。
- 内在激励和外在激励
- 应对有害之人
- 定义“有害”
- 某些不好的行为会使项目进度变慢,效率降低, 而且使公司工作环境变差——最终破坏团队的凝聚力
- 实际工作中,最好避免在日常谈话中用这个词
- 巩固团队
- 有效的最佳实践和流程
- 发布任务说明书,明确目标和非目标。
- 为邮件讨论建立适当的礼节规范。保存归档,请新成员阅读归档邮件, 防止少数人干扰讨论。
- 记录所有历史:不仅是代码历史,还包括设计决策、重要缺陷修复, 以及以往的错误历史。
- 有效合作。使用版本控制软件,保持代码少改动,可审阅, 增大“巴士因子”,防止知识集中在少数人手中。
- 明确缺陷修复、测试、软件发布的政策和流程。
- 降低新成员的磨合障碍。
- 依赖基于共识的决策方法,但也要制定备用流程, 以解决无法达成共识的冲突。
- 有效的最佳实践和流程
- 发现威胁
- 最可能受到影响的是团队的注意力和专注力
- 不尊重他人的时间
- 不肯花几分钟读一下基础的项目文档、任务说明书、FAQ, 或最新的邮件讨论内容,而是不断地提出自己本可以轻松找到答案的问题, 打扰整个团队。
- 自大
- 颐指气使
- 沟通幼稚或混乱
- 疑神疑鬼
- 完美主义
- 去除毒素
- 不建议仅仅因为某些人不擅社交或行为粗鲁就将其踢出社区
- 引导完美主义者的能量
- 不要让“完美成为良好的敌人”
- 不要喂食能量生物
- 不要过于情绪化
- 在愤怒中寻找事实
- 以德报怨
- 适时放手
- 放眼未来
- 基于 HRT 的强大团队文化是不可替代的,但技术能力绝对是可以替代的
- 为了短期效益而损害团队文化是不值得的
- 组织操控的艺术
- 好公司、坏公司,以及策略
- 理想情况
- 理想的工作体验
- 完成本职工作后寻求更多职责
- 承担风险而且不惧失败
- 通过失败发现自己的能力和不足,并逐渐拓展自己的极限
- 如果一年一次失败都没有发生过,就说明你没有承担足够的风险
- 如果在工作中不承担风险,你会少经受一些失败, 但也会少获得一些大的成功
- 表现得像成年人一样
- 对不确定的东西提出疑问
- 经理不是透视眼
- 通常情况
- 幸福的家庭总是相似的,不幸的家庭却各有各的不幸
- 不称职的经理
- 害怕失败是不称职的经理最常见的一个特征
- 缺乏安全感的经理会坚持插手你与团队以外人员的交互
- 藏匿信息使经理自己成为信息传达和沟通的渠道, 不称职的经理还会在你成功时夺取功劳, 在你失败时撇清干系(有时还将他们的失败归罪在你头上)
- 办公室政治家
- 整天作出有影响的样子,而不是实际产生影响
- 建议你避开办公室政治家:如有可能,尽量绕行, 但不要对他的上级说他的坏话
- 管理不当的组织
- 工程师是完成商业目标的手段,但这些目标通常是非技术的
- 意味着管理公司的人很可能不理解系统底层的技术细节, 只知道业务需求,因此会对工程师提出不切实际的要求
- 直接表现通常是不切实际的工期, 缺少称职的技术人员按时完成项目
- 在特别糟糕的公司里,指挥和控制结构僵化有如割据
- 很多公司充满了极力维护组织层级的人
- 公司是否像对待调皮孩子一样对待过你
- 工程师是完成商业目标的手段,但这些目标通常是非技术的
- 操控组织
- 如果你只注意公司中应该如何做事,通常只会得到挫败和失望。 相反,你应当承认事情的现状,专注于探索公司结构, 寻找可以用来完成工作的机制, 在公司中为自己打造出一个安逸的位置。
- “取得原谅比获取许可更容易” - 可能消耗政治资本
- 首先也是最重要的是,要了解公司允许什么行为
- 即使你准备好事后寻求原谅,也还是要谨慎行事
- 如果你决定要走“请求原谅”这条路, 可以在公司里寻找一些同事和朋友, 听听他们对你的想法的意见——特别是比较冒险的那些想法。
- 另辟蹊径
- 在公司内作出改变的另一个策略是想办法使你的想法被底层接受。
- 停止一个坏习惯是不可能的,你需要将其替换为一个好习惯。”
- 学会向上管理
- 将推出产品放在首位
- 将大多数时间花在这种防御性工作上,
很难得到团队外的人(包括你的上级)的欣赏
- 进攻性工作通常是新用户可见的功能
- 防御性工作针对的是产品的长期健康
- 简单准则:不管欠了多少技术债, 团队花在防御性工作上的时间不应超过全部工作时间的 三分之一到二分之一。
- 运气和人情经济
- 运气好的人“善于创造和捕捉偶然机会”
- 政治银行账户
- 晋升到一个安全职位
- 寻找有影响力的朋友
- 如何写信找忙碌的高管帮忙
- 三条要点和一个行为召唤
- 最多包含三条要点说明当前的问题
- 以及一个——只有一个——行为召唤
- 如果你实在忍不住,非得加上更多的背景和信息, 那就放在邮件最后(甚至在签名之后), 并清楚标明是“更多细节”或“背景信息”。
- 备用计划:撤退
- 做正确的事,等着被炒
- 希望尚存
- 首要目标应当是作出所需的改变,使自己开心,完成工作目标
- 理想的工作体验
- 理想情况
- 好公司、坏公司,以及策略
- 用户也是人
- 用户参与的三个阶段
- 首先需要唤起用户对产品的注意 — 他们知道这个产品的存在吗?在使用前他们对产品有何看法?
- 然后需要考虑用户在开始使用后的体验。产品是否达到预期? 产品可用度如何?是否帮助了用户?
- 最后,我们要讨论如何与忠实用户进行高效互动。 所有这些交互都是产品开发循环中的一部分。
- 管理公众认知
- 程序员看来,营销人员代表着工程文化的反面;
- 将市场营销视为扭曲事实的行为, 因此其与创新者对精英文化的直觉需求相悖
- 更严重的是,我们认为营销人员总是向客户作出过多承诺, 导致工程师交付的产品好像总是不够好
- 坏消息是:你不能忽视市场营销。市场营销确实很重要, 你必须做好这方面的工作。好消息是:积极与市场营销合作是可能的。
- 注意第一印象
- 不要低估精心设计的产品体验的感性影响
- 少许诺多提交
- 与工业分析师谦恭合作
- 你的软件可用性如何
- 关注用户,其他便都将水到渠成。
- 选择听众
- 好产品开发的目标是将这条竖线尽量向左侧移。
- 考虑进入的壁垒
- 衡量使用量,而非用户数
- 设计很重要
- 以用户为先
- 速度不容忽视
- 切勿求全
- 隐藏复杂性
- 人们使用你的软件是因为他们愿意这么做,而不是因为他们没法离开。 这种做法可以使用户对你产生信任,而用户的信任是你最宝贵的资源
- 管理与用户的关系
- 尊重用户的智商
- 耐心
- 创造信任和愉快
- 记住用户
- 市场营销
- 了解人们对软件的看法;这决定了他们会不会愿意尝试
- 产品设计
- 如果软件做不到容易尝试、速度快、友好,而且用户面广, 用户就会流失。
- 客户服务
- 主动与用户建立长期的良好关系能影响软件的演化和用户保持率。
- 市场营销
- 用户参与的三个阶段
- 定义“有害”