《“前途丛书”这就是软件工程师》简介:
软件工程师是一群用代码改变世界的人。过去二三十年,互联网可以说改变了整个世界:我们的联络方式从延续数百年的写信,到后来发邮件,再到现在的即时通信;我们查询信息的方式从一本一本翻书,到现在随时随地使用搜索引擎;我们的购物方式从去商场超市到去亚马逊、淘宝、京东直接下单,再到一小时就能送达手上的盒马;我们的出行方式从站在路边拦出租车到坐在家里叫滴滴……可以说生活工作的方方面面,都发生了巨大的变化。而这些变化的背后站着一个职业,那就是软件工程师。正是软件工程师,通过一行一行的代码,让这一切得以实现。本书就来带你认识这个改变了世界的职业。翻开这本书你会发现——· 软件工程师不是只会搬砖的码农,而是一群简单务实、热爱创新的人· 软件工程师薪酬高,但很多不是利益驱动型的,而是成就感驱动型的· 996不是软件工程师工作的必需,而是行业特定发展阶段和公司管理不力的结果· 35岁的坎儿不是年龄的坎儿,而是能力的坎儿· 软件工程师不是一个可以“吃老本”的职业,终身学习是硬性要求· 代码写得漂亮只是第一步,真正的高手必须在抽象能力、设计能力、取舍能力上下功夫
《“前途丛书”这就是软件工程师》摘录:
发展的高峰期 你可能会问 具体怎 做 量呢?我的建议 以我们公司对员工的 为所在公 重 或 为 求为例 模化、平台化。 公司核 类型,这些成员具备的各项能力,是你要着重培养的 成 贡者( Contributor) 1。创始人( Founder)/合伙人( Partner) 这类人是公司的腰部力量,他们对要做的事有热情,并 会想各种方法推动工作的进展,他们需要有如下能 人合伙人是公司的顶梁 能力 需要有 1)探路能力。只要方向没问题,即使没有 體出路来。 (1)做出贡献。为公司带来资源、吸引人才、来益、 在实施过程中提出更好、更简单的 其中既包括经济效益,也包括社会效益。 方法以及相关创意 (2)带动团队 人就是一支军队,能够自驱为公司 难题。方法总比题多,能够带动团队解决 切拦路的问题。 团队制订方向和实施计,并能解决执行时的所有问题,具 备推动落地的能力 高标准。能够不断发现不足并弥 题,提高标准 (3)创新优化。能够对现有的东西提出小而美的创新和 3。行家( Expert)优化,并将其推动和执行。 这类人是公司的手足力量,他们要对所做的事情有很丰 (4)前瞻能力。能够感知行业变化,技术潮流,并依 的经验,能够正确判断和决策,这类人有如下能力思考行业和公司的未来,为应对未来做好准备。 (1)降低成本。为公司在执行层面上降低 成本(时间 金钱、人力、物力)。 抓重点,简化,标准化。只有抓住重点、简化向题
《“前途丛书”这就是软件工程师》目录:
第一部分 行业地图
01 特质:简单务实,极致创新 4
02 薪酬:高薪职业里的“常青树” 7
03 底层:一个成就感驱动的职业 11
04 选择:一线和次一线城市,机会巨大 13
05 现实:为什么会有996 18
06 进阶:软件工程师的四大台阶 22
07 周期:是否存在35 岁的坎儿 25
08 挑战:持续学习是刚性要求 31
09 机会:工种多,且新工种频繁出现 33
10 趋势:软件工程师即将遍布各行各业 36
第二部分 新手上路
◎入行前
01 基本储备:入门必学的语言和工具 40
02 选择平台:去面向未来、技术驱动的公司 43
03 认识自己:找到适合自己的路线 46
◎编码
04 编码规范:不要逆着规范做事 50
05 公司差异:即使没有规范,也得自我要求 53
06 优质代码:好代码没有止境 57
07 整洁代码:不是写出来的,而是读出来的 60
08 代码注释:像说明书一样清晰 62
09 编程原则:教科书没有告诉你的“为什么” 65
10 解决问题:别把原则当教条 70
◎测试
11 全面思考:做测试比写代码难 71
12 程序测试:对软件工程师的基本要求 75
◎改Bug
13 执行任务:从改Bug 开始 79
14 定位Bug:像侦探一样发现问题 81
15 修复Bug:务必小心谨慎 84
◎成长论
16 拆分任务:动手工作前,先做任务分解 86
17 阅读代码:重要的不是写代码,而是读代码 89
18 找到捷径:通读牛人代码 91
19 追本溯源:多读文档,多读书 94
20 重在过程:学习牛人的方法,别抄答案 96
21 潜移默化:和优秀的人一起工作 98
22 亦师亦友:和身边的人搭伴学 100
第三部分 进阶通道
◎设计程序
01 需求分析1:避免X-Y问题 105
02 需求分析2:明确模糊不清的问题 107
03 设计程序:学会谋篇布局 109
04 高度抽象:设计需要抽象能力 111
05 原型设计1:从最难的做起 116
06 原型设计2:原型设计的关键是接口 118
07 架构设计1:分而治之,理清思路 120
08 架构设计2:考虑异常情况和极限情况 123
09 技术调研:寻找最优解决方案 125
◎项目管理
10 软件工程:不同的开发模式 127
11 流程管控:用火车头模式避免研发延期 130
12 验证效果:做A/B test,用数据说话 133
13 监控打磨:上线前做好监控与压测 135
◎团队合作
14 外部沟通:知道怎么“规训”业务 138
15 内部协作:平衡前台团队和中后台团队 141
◎学习进阶
16 直击内核:打牢基础,以不变应万变 143
17 搭建体系:用知识树系统学习 146
18 主动学习:提高你的学习效率 149
第四部分 高手修养
◎分岔路的选择
01 上升通道:技术路线和管理路线 154
◎业务上的精进
02 预见未来:软件工程师要有前瞻能力 156
03 权衡利弊:软件工程师要有取舍能力 159
04 攻克难题1:主动寻找技术难题 162
05 攻克难题2:尝试不同的解决方案 164
06 关键决策:技术选型的六大要素 168
07 代码评审:不是“做出来”,而是“做漂亮” 172
08 评审清单:代码评审怎么做 174
09 评审误区:代码评审是为了找Bug 吗 176
◎带团队的心法
10 实力服众:工程师宁愿被lead,不愿被manage 178
11 敢于放手:从工程师变成管理者 180
12 善于说服:相对于下指令,还是要讲道理 181
13 招聘面试:考察一个人的元能力 183
14 员工激励:让工程师更有成就感 185
15 团队建设:做好人才布局 187
16 布局长远:关注长期目标 189
17 平衡需求:判断紧急与重要 191
18 协同机制:保持公开透明的信息协同 193
19 团队合作:一加一大于二 195
20 合作共赢:找到利益共同点 198
第五部分 行业大神
01 丹尼斯·里奇:保持简洁 203
02 林纳斯·托瓦兹:只是为了好玩 206
03 吉多·范罗苏姆: 允许不完美、保持开放 208
04 玛格丽特·汉密尔顿: 拯救人类登月计划 211
05 杰夫·迪恩: 开创分布式系统 215
06 法布里斯·贝拉: 一个人就是一支队伍 219
第六部分 行业清单
01 行业大事记 224
02 推荐资料 231
03 行业术语 255
· · · · · ·