本书是一本独特的成长纪实,以计算机专业研究生小海的视角,带领读者推开H 公司上海研发中心的大门,亲历一场从象牙塔到职业开发的蜕变之旅。本书避免枯燥的理论堆砌,也避免代码讲解的细枝末节,而是通过小海跌宕起伏的职场故事,将企业级软件开发的全景图徐徐展开——那些藏在代码背后的商业逻辑、跨团队协作的暗礁险滩,以及技术人员在功能与性能、安全与成本间的权衡智慧,都在鲜活的场景中一一呈现。 本书以小海的入职经历开始,读者会陪伴小海学习上手编程、软件设计、质量保障、安全合规、敏捷开发等内容。本书采用场景化的叙事让技术落地,如"夏令时时间显示错乱”"移动端病假申请与保险理赔集成”等;本书用实战经验构建知识体系,如代码层面的"荣辱观”、架构设计的系统思维等。不仅告诉读者"做什么”和"怎么做”,更深入剖析"为什么”——这是给计算机学子和职场新人的转型指南,也是给技术人员的全景地图。在AI 重塑世界的今天,书中传递的系统性思维与平衡艺术,正是开发者从"码农”蜕变为"架构师”的关键钥匙。
朱征宇,上海流程智造科技创新研究院常务副院长,致力于打造国产自主的工业软件产品。曾任惠普公司上海全球软件研发中心负责人,主导研发全球领先的企业级软件产品。
目录
第1 章 入职经历 / 1
1.1 本章导读 / 1
1.2 实习的机会 / 1
1.2.1 岗位描述 / 2
1.2.2 匹配技能 / 3
1.2.3 补齐短板 / 5
1.3 紧张的面试 / 10
1.3.1 电话面试 / 10
1.3.2 进入笔试 / 13
1.3.3 技术面试 / 15
1.3.4 HR 面试 / 18
1.3.5 入职准备 / 20
1.4 终于入职了 / 22
1.4.1 入职培训 / 22
1.4.2 办公环境 / 24
1.4.3 内部分享 / 25
1.4.4 代码荣辱观 / 26
1.5 加入开发小组 / 27
1.5.1 小组的成员 / 27
1.5.2 列席每日站会 / 29
1.6 开发产品的使用场景 / 31
1.6.1 灵活的数据同步引擎 / 33
1.6.2 跨平台的消息中枢 / 34
1.6.3 新老系统的应用迁移 / 36
1.7 配置开发环境 / 37
1.7.1 云端开发环境 / 37
1.7.2 代码构建工具 / 40
1.7.3 自动测试工具 / 41
1.7.4 开发协作工具 / 43
第2 章 上手编程 / 45
2.1 本章导读 / 45
2.2 修改缺陷 / 46
2.2.1 夏令时切换导致显示错乱 / 46
2.2.2 夏令时切换导致调度混乱 / 50
2.2.3 夏令时切换导致风控系统报警 / 53
2.2.4 统一时间格式的重构 / 56
2.3 开发新功能 / 59
2.3.1 发掘真正的需求 / 59
2.3.2 从需求到设计 / 60
2.3.3 通用性 / 64
2.3.4 可配置的元数据 / 65
2.3.5 分层设计 / 68
2.3.6 安全漏洞 / 70
2.3.7 性能 / 72
2.3.8 可观测性 / 75
2.3.9 可维护性 / 78
第3 章 软件设计 / 81
3.1 本章导读 / 81
3.2 设计原则 / 82
3.2.1 设计原则的必要性 / 82
3.2.2 通用设计原则 / 83
3.2.3 反模式设计原则 / 87
3.2.4 架构设计原则 / 92
3.2.5 面向对象设计原则 / 96
3.2.6 设计演进原则 / 98
3.2.7 设计模式的准则 / 100
3.2.8 分布式设计原则 / 103
3.2.9 十二要素应用 / 107
3.2.10 思考和阅读 / 110
3.3 软件架构 / 110
3.3.1 以客户端/服务器为基础的架构拓展 / 110
3.3.2 基于微服务和云原生的架构 / 114
3.3.3 数据存储和查询 / 117
3.3.4 常用的中间件 / 123
3.3.5 思考和阅读 / 129
3.4 技术选型 / 130
3.4.1 技术要求 / 130
3.4.2 技术选型的要素 / 132
3.4.3 后端技术栈 / 135
3.4.4 前端技术栈 / 139
3.4.5 数据库技术栈 / 141
3.4.6 思考和阅读 / 143
3.5 设计实现 / 143
3.5.1 组件视图 / 143
3.5.2 部署视图 / 145
3.5.3 数据视图 / 148
3.6.4 后端设计 / 150
3.6.5 API 设计 / 155
3.6.6 前端设计 / 157
3.6.7 设计示例 / 162
3.6.8 思考和阅读 / 166
第4 章 质量保障 / 167
4.1 本章导读 / 167
4.2 质量的本质 / 168
4.2.1 质量内建的全流程管控 / 168
4.2.2 质量的动态性 / 171
4.2.3 质量与效率 / 172
4.2.4 质量与风险 / 172
4.2.5 思考和阅读 / 174
4.3 软件质量的标准 / 174
4.3.1 功能适用性 / 174
4.3.2 性能效率 / 176
4.3.3 兼容性 / 179
4.3.4 交互能力 / 181
4.3.5 可靠性 / 188
4.3.6 软件安全性 / 192
4.3.7 可维护性 / 197
4.3.8 灵活性 / 201
4.3.9 思考和阅读 / 205
4.4 可测试性 / 206
4.4.1 可测试性面临的挑战 / 206
4.4.2 可测试性设计的核心价值 / 207
4.4.3 可测试性的四个维度 / 207
4.4.4 分级可测试性实践 / 208
4.4.5 思考和阅读 / 210
4.5 测试的左移和右移 / 210
4.5.1 测试的左移 / 210
4.5.2 测试的右移 / 213
4.5.3 思考和阅读 / 216
4.6 测试方法 / 217
4.6.1 常见的测试方法 / 217
4.6.2 流量回放 / 221
4.6.3 精准测试 / 222
4.6.4 变异测试 / 224
4.6.5 服务虚拟化 / 226
4.6.6 思考和阅读 / 227
4.7 性能工程 / 228
4.7.1 性能测试 / 228
4.7.2 全链路压测 / 229
4.7.3 全链路压测的挑战 / 232
4.7.4 DevPerfOps全流程 / 233
4.7.5 思考和阅读 / 235
4.8 混沌工程 / 236
4.8.1 混沌工程的常见误区 / 236
4.8.2 混沌工程实施原则 / 238
4.8.3 实施混沌工程的步骤 / 239
4.8.4 思考和阅读 / 240
4.9 大模型时代的质量 / 241
4.9.1 大模型对传统软件质量的提升 / 241
4.9.2 大模型时代的技术质量风险 / 244
4.9.3 大模型时代的质量应对策略 / 246
4.9.4 集成中间件的质量提升新场景 / 249
4.9.5 思考和阅读 / 250
第5 章 安全合规 / 251
5.1 本章导读 / 251
5.2 小海的噩梦 / 252
5.3 大张的安全日记 / 253
5.3.1 权限的“浆糊” / 253
5.3.2 服务端的“暗箭” / 254
5.3.3 加密“翻车”了 / 254
5.3.4 注入“攻击” / 255
5.3.5 设计“陷阱” / 256
5.3.6 配置的“雷区” / 257
5.3.7 身份认证“失灵” / 258
5.3.8 完整性“崩塌” / 259
5.3.9 “虚设”的监控 / 260
5.3.10 第三方“惹祸” / 261
5.3.11 思考和阅读 / 263
5.4 大张的“软件安全宝典” / 263
5.4.1 基本原则 / 263
5.4.2 进阶心法 / 266
5.4.3 纵深防御:综合的安全防御体系 / 272
5.4.4 安全的终极公式 / 276
5.4.5 思考和阅读 / 277
5.5 全流程安全工程 / 277
5.5.1 安全面临的挑战 / 278
5.5.2 DevSecOps 支持全流程安全工程 / 278
5.6 安全需求分析 / 280
5.6.1 风险 / 280
5.6.2 合规 / 283
5.6.3 安全需求的清单 / 285
5.6.4 思考和阅读 / 287
5.7 威胁建模手册 / 287
5.7.1 威胁建模 / 287
5.7.2 威胁识别 / 288
5.7.3 威胁分析 / 290
5.7.4 防御战术 / 291
5.7.5 安全与体验的平衡 / 293
5.7.6 思考和阅读 / 294
5.8 安全设计与编程 / 295
5.8.1 身份认证 / 295
5.8.2 权限管理 / 299
5.8.3 安全审计 / 302
5.8.4 思考和阅读 / 304
5.9 安全测试指南
5.9.1 安全测试的核心理念 / 305
5.9.2 静态应用程序安全测试 / 305
5.9.3 动态应用程序安全测试 / 306
5.9.4 第三方依赖库的漏洞扫描 / 309
5.9.5 模糊测试 / 310
5.9.6 渗透测试 / 311
5.9.7 交互式应用安全测试 / 312
5.9.8 思考和阅读 / 313
5.10 软件供应链安全 / 313
5.10.1 软件供应链安全是什么 / 313
5.10.2 第三方依赖库的双刃剑 / 315
5.10.3 代码签名和验证 / 317
5.10.4 供应链攻击的“狡猾手段” / 318
5.10.5 软件供应链安全的“防御宝典” / 319
5.10.6 思考和阅读 / 321
5.11 大模型时代的安全 / 322
5.11.1 大模型对传统软件安全的助力 / 322
5.11.2 大模型时代的技术风险 / 323
5.11.3 大模型时代的合规困境 / 325
5.11.4 大模型的安全应对策略 / 326
5.11.5 集成中间件的应用新场景 / 329
5.11.6 思考和阅读 / 330
第6 章 敏捷开发 / 331
6.1 本章导读 / 331
6.2 糖果小镇的敏捷转型 / 332
6.2.1 糖果小镇的童话故事 / 332
6.2.2 糖果小镇的魔法手册 / 335
6.3 软件开发的工程实践 / 340
6.3.1 热闹的工程世界 / 340
6.3.2 软件工程的独特魅力 / 343
6.3.3 项目制开发与产品式开发 / 345
6.3.4 思考和阅读 / 347
6.4 敏捷背后的社会学密码 / 347
6.4.1 康威定律的神奇魔力 / 347
6.4.2 两个披萨团队的奥秘 / 348
6.4.3 邓巴数的启示 / 349
6.4.4 人月神话的反思 / 350
6.4.5 思考和阅读 / 351
6.5 敏捷隐含的经济学智慧 / 351
6.5.1 软件产品的价值 / 351
6.5.2 机会成本的取舍之道 / 353
6.5.3 拥抱变化与沉没成本的抉择 / 354
6.5.4 神奇的边际效应 / 355
6.5.5 敏捷里的时间价值 / 356
6.5.6 思考和阅读 / 358
6.6 软件产品的定位 / 359
6.6.1 软件产品的客户 / 359
6.6.2 软件产品的用户 / 360
6.6.3 软件产品的竞争者 / 363
6.6.4 软件产品差异化的认知提升 / 364
6.6.5 软件产品差异化的构建要素 / 365
6.6.6 软件产品差异化的实施路径 / 366
6.6.7 思考和阅读 / 367
6.7 软件的生命周期 / 368
6.7.1 软件技术生命周期的不同阶段 / 368
6.7.2 软件产品生命周期的不同阶段 / 370
6.7.3 创新者的窘境 / 372
6.7.4 软件开发的生命周期 / 372
6.7.5 思考和阅读 / 374
6.8 大规模敏捷开发 / 374
6.8.1 为什么需要SAFe / 375
6.8.2 金州勇士队vs SAFe实践 / 376
6.8.3 SAFe 的四层结构 / 379
6.8.4 常见的陷阱 / 379
6.8.7 思考和阅读 / 382
第7 章 后记 / 384
7.1 小海的成长轨迹 / 384
7.2 从校园到职场的技术试炼场 / 385
7.3 职业发展的不同路径 / 389
7.3.1 产品经理的艰难抉择 / 389
7.3.2 架构师的冲锋陷阵 / 394