第 1 章 程序员为何难以管理 / 1 1.1 程序员的特点 / 3 1.2 **的程序设计经理从何而来 / 6 第 2 章 了解程序员 / 8 2.1 程序设计工作的不同类型 / 9 2.1.1 嵌入式程序员和物联网程序员 / 9 2.1.2 前端程序员 / 10 2.1.3 后端程序员 / 10 2.1.4 数据库程序员 / 11 2.1.5 Web 开发人员及其他脚本编写者 / 12 2.1.6 全栈程序员 / 12 2.1.7 DevOps / 13 2.1.8 DevSecOps / 14 2.2 程序员的不同类型 / 15 2.2.1 系统工程师/架构师 / 15 2.2.2 系统程序员 / 15 2.2.3 应用程序员 / 16 2.2.4 非真正意义上的程序员 / 17 2.3 领域知识 / 17 2.4 程序员的工作要求与能力 / 18 2.5 雇佣关系类型 / 22 2.5.1 内部员工 / 22 2.5.2 远程员工 / 23 2.5.3 合同制员工 / 23 2.5.4 根据合同管理团队和外包公司 / 24 2.6 代沟 / 24 2.7 个性特点 / 27 2.7.1 左脑型与右脑型 / 28 2.7.2 夜晚型与白天型 / 29 2.7.3 “牛仔”与“农夫” / 29 2.7.4 “英雄” / 30 2.7.5 内向的人 / 31 2.7.6 愤世嫉俗的人 / 31 2.7.7 “奇葩” / 31 2.8 本章总结 / 32 2.9 工具 / 32 第3 章 寻找并延揽出类拔萃的程序员 / 33 3.1 确定要招聘哪种程序员 / 35 3.2 编写岗位描述 / 36 3.3 沟通招聘需求 / 40 3.4 招聘全职员工 / 41 3.4.1 招聘工作一直在路上 / 42 3.4.2 招聘预算 / 43 3.4.3 招聘案例分析 / 44 3.4.4 内部** / 46 3.4.5 **的招聘 / 47 3.4.6 招聘小贴士 / 48 3.5 招聘合同制员工 / 50 3.6 审查简历 / 51 3.7 缩小面试范围 / 52 3.8 准备面试 / 53 3.9 面试 / 59 3.10 做出决定雇用一位候选人 / 62 3.11 给候选人发出恰如其分的录用通知 / 65 3.12 持续跟进,直到候选人答应入职 / 71 3.13 本章总结 / 71 3.14 工具 / 72 第4 章 帮助新员工顺利入职 / 73 4.1 引导新员工尽早入职 / 73 4.2 为新员工的到来做好准备 / 75 4.3 第 **必须要做的事 / 76 4.4 向新员工介绍公司 / 79 4.5 确保新员工成功融入团队 / 80 4.6 对新员工初的预期 / 82 4.7 本章总结 / 84 4.8 工具 / 85 第5 章 成为**的程序设计经理:向下管理 / 86 5.1 赢得技术层面的尊重 / 86 5.2 招聘出类拔萃的程序员 / 92 5.3 锤炼现有的团队,强化他们的技能 / 92 5.3.1 因人制宜,因人施“管” / 92 5.3.2 引导 / 97 5.3.3 仪表盘 / 97 5.3.4 保护团队 / 98 5.4 绩效考核和改进 / 100 5.4.1 设立目标 / 100 5.4.2 绩效评估 / 102 5.4.3 清楚何时止损 / 107 5.4.4 裁退清单 / 109 5.5 人员组成结构方面的考量要素 / 109 5.5.1 人员配置 / 109 5.5.2 组织 / 114 5.5.3 职能化程序设计团队 / 120 5.5.4 跨职能团队 / 121 5.5.5 敏捷团队 / 123 5.6 对功能失调的组织进行故障诊断 / 123 5.7 交付成果和庆祝胜利 / 124 5.8 本章总结 / 124 5.9 工具 / 125 第6 章 成为**的程序设计经理:向上管理、对外管理以及自我管理 / 126 6.1 向上管理 / 126 6.1.1 了解你的领导 / 127 6.1.2 准备好沟通材料 / 128 6.1.3 了解你领导的领导 / 129 6.1.4 时机 / 130 6.1.5 成为模范员工 / 131 6.1.6 小结 / 132 6.2 对外管理 / 132 6.2.1 与部门内的人合作 / 132 6.2.2 了解其他部门 / 133 6.2.3 有效利用重要的职能部门,获得他们的支持和协助 / 135 6.2.4 管理跨公司关系 / 139 6.2.5 小结 / 145 6.3 自我管理 / 145 6.3.1 个人风格 / 146 6.3.2 时间管理能力(优先级管理) / 148 6.3.3 沟通管理能力 / 150 6.3.4 管理实践 / 153 6.3.5 跟踪管理能力 / 157 6.3.6 虚心好学、处处请教的能力 / 158 6.3.7 小结 / 159 6.4 本章总结 / 159 6.5 工具 / 160 经验法则与至理名言 / 161 管理中面临的挑战 / 163 人员管理 / 181 管理团队,顺利交付 / 204 第7 章 激励程序员 / 222 7.1 激励理论 / 222 7.1.1 马斯洛的需求层次理论 / 222 7.1.2 麦格雷戈的X-Y 理论 / 224 7.1.3 赫茨伯格的激励因素和保健因素理论 / 225 7.2 适用于程序员的激励因素 / 226 7.3 理论付诸实践 / 229 7.4 保健因素—缺乏会导致不满的因素 / 230 7.4.1 赢得员工的尊重 / 230 7.4.2 趣味性 / 234 7.4.3 学习与成长 / 235 7.4.4 良好的工作条件 / 236 7.4.5 合理的公司政策和管理 / 241 7.4.6 爱人以德 / 243 7.5 关键激励因素 / 247 7.5.1 改变世界 / 248 7.5.2 学习与成长 / 249 7.5.3 工具和技术 / 250 7.5.4 认可与赞许 / 251 7.5.5 趣味性 / 252 7.5.6 利益 / 253 7.6 个人承诺 / 254 7.7 对新技术的攻守之道 / 256 7.8 了解你的程序员的动力—从头开始 / 257 7.9 本章总结 / 258 7.10 工具 / 259 第8 章 建立成功的程序设计文化 / 260 8.1 准确定义“成功”的概念 / 261 8.2 程序设计文化 / 261 8.3 公司文化 / 262 8.3.1 化繁为简,降低公司文化的复杂度 / 263 8.3.2 趋利避害,远离公司的负面文化 / 264 8.3.3 弹斤估两:技术在你的公司中扮演什么样的角色 / 265 8.3.4 探本溯源:哪种力量推动你的公司的发展 / 266 8.4 成功的程序设计文化的特征 / 268 8.4.1 互相尊重 / 269 8.4.2 创新 / 269 8.4.3 合规 / 271 8.4.4 高品质交付 / 271 8.4.5 **率交流 / 272 8.4.6 虚拟团队间的沟通 / 273 8.4.7 公平 / 275 8.4.8 授权 / 276 8.4.9 职业精神 / 277 8.4.10 直面问题 / 277 8.4.11 追求** / 278 8.4.12 奖励程序设计中的**表现 / 279 8.4.13 团队精神和协作 / 279 8.4.14 激情 / 279 8.4.15 客户至上 / 280 8.4.16 持续学习 / 281 8.4.17 良好的环境 / 282 8.5 本章总结 / 283 8.6 工具 / 283 第9 章 成功管理软件交付过程 / 284 9.1 激励目标 / 285 9.2 定义“成功” / 286 9.2.1 识别无法调整的交付日期 / 288 9.2.2 奖励计划 / 289 9.3 确保需求清晰 / 290 9.3.1 通过合作来进行优先级排序 / 293 9.3.2 把需求限制在“做什么”而不是“如何做” / 296 9.3.3 力求取悦客户 / 297 9.4 定义“完成” / 298 9.5 估算所需工作 / 300 9.6 确保适当的架构与设计 / 306 9.6.1 多少设计才足够 / 308 9.6.2 概念论证、原型和Spike 的价值 / 309 9.6.3 进行设计评审 / 310 9.7 支持工作 / 310 9.7.1 你需要一个计划 / 313 9.7.2 确定项目的节奏 / 315 9.7.3 设立共同认可的里程碑 / 315 9.7.4 确保每个人都在沟通 / 316 9.7.5 聚焦于使命 / 318 9.7.6 消除障碍 / 319 9.7.7 确保达成商定好的标准与需求 / 320 9.7.8 采用测试驱动开发 / 321 9.7.9 坚持代码审查 / 322 9.8 交付上线 / 323 9.8.1 不再增加新功能 / 324 9.8.2 运行产品 / 324 9.8.3 准备好宣布成功以及开启更新版本的工作 / 325 9.8.4 知道何时减少损失 / 326 9.8.5 OEM 或国际版 / 327 9.9 圆满完成 / 328 9.9.1 庆祝 / 328 9.9.2 回顾 / 329 9.9.3 分享 / 332 9.9.4 重构 / 332 9.9.5 小版本升级 / 332 9.10 本章总结 / 333 9.11 工具 / 333 第 10 章 敏捷团队中的管理者 / 334 10.1 为什么管理者可能会觉得被冷落 / 335 10.2 敏捷如何改变管理者职责 / 336 10.3 敏捷组织中管理者的职责 / 338 10.4 敏捷组织结构调整如何改变管理者的职责 / 339 10.5 敏捷团队中管理者的十大关键职责 / 342 10.5.1 培养敏捷文化 / 343 10.5.2 拥抱敏捷价值观 / 344 10.5.3 辅导和指导良好的敏捷实践 / 348 10.5.4 消除敏捷误区 / 351 10.5.5 铭记敏捷模式和反模式 / 356 10.5.6 牵头组建跨专业团队的实践社区 / 360 10.5.7 消除障碍 / 361 10.5.8 咨询与辅导 / 362 10.5.9 雇用 / 363 10.5.10 解雇 / 364 10.6 本章总结 / 364 10.7 工具 / 365