不为有趣之事,何遣有涯之生
不失其所者久,死而不亡者寿

读书笔记 这就是软件工程师

这就是软件工程师

这是一套现代职业说明书
社会分工日益精细,行业快速迭代。只有专业,才有前途。快速了解一个行业,精进成为专家,事关行业中每个人的前途。

这套丛书运用最新的知识挖掘技术,采访行业顶尖高手,提取从新手到高手的进阶经验,用顶尖人才的视野呈现何谓专业 如何专业

所以通过一本小小的书,我们可以一窥某行业的概貌,值得大家去阅读下,况且读起来毫不费力,阅读体验也很好

以下是我对本书做的一个大致的阅读摘记

行业地图

站在高处俯瞰职业全貌

职业特质

  • 大多数都非常简单(专注与自己所做的事)
  • 喜欢偷懒(自动化)
  • 持续改善,追求极致
  • 热衷于创新

地域选择

  • 一线和次一线城市,机会巨大
  • IT服务上市公司分布图(北京占据了半壁江山)

996文化可能原因

  • 行业发展阶段:国内互联网行业还处于原始积累阶段(类似产品的跑马圈地),过于以流量为驱动,大多数都属于低维度的竞争(我们的原始积累差不多了,该迈向精耕细作阶段,该从劳动密集型向智力密集型转型了)
  • 公司组织管理能力不足:公司工作没有标准流程,没有邮件沟通和处理事情的习惯,喜欢随时打断随时讨论,一堆没有规划和准备的会议(会议变成发现问题地方而不是解决问题的地方),总的来说就是组织效率比较低

能力金字塔

  • 执行力
  • 设计能力
  • 融会贯通能力
  • 方法论
  • 开创新领域能力

青春饭的本质

  • 各个行业里,年龄的坎其实是能力的坎(在该有某项能力的年纪还不具备某项能力),只是软件行业容错率比较低
  • 35以后你需要的能力:带动团队、创新优化、前瞻能力、探路能力、解决难题、提高标准、降低成本、提升效率、防火能力(重要性从高到低)

底层职业逻辑

  • 成就感驱动而不是利益驱动
  • 持续学习是刚性要求
  • 工种多、分布广(各行各业)

新手上路

提供新人快速进入工作状态的抓手

基本储备

  • 入门语言推荐:Python、JavaScript;简单容易上手,即时反馈性强
  • 入门工具:windows操作系统、一款编程IDE工具
  • 正式入门语言:Java,综合实力最强
  • 正式入门工具:linux操作系统、Git版本管理工具、数据库设计工具、相关编程框架
  • 其它必要的辅助知识:离散数学、计算机英语、线性代数、高等数学、概率论、运筹学(根据行业特点选择)

进阶指导

  • 加入面向未来、技术驱动的公司(探索未来、技术驱动、工程师文化)
  • 找到适合自己的发展路线(特长、兴趣、方法、勤奋)
  • 遵从编码规范、设计规范、生产规范
  • 遵从编程原则,但也要学会变通
  • 好代码没有止境:初级可读,中级可扩展、高级可重用
  • 整洁代码的判断标准由读的人决定
  • 代码注释应该像说明书一样
  • 学会写测试代码(做测试比写代码难),要求有全面思考的能力
  • 程序测试是基本职业要求
  • 带着全面思考去修复bug

成长论

  • 动手之前先做任务分解
  • 学会阅读代码,通读牛人代码
  • 多读文档,多读书
  • 模仿牛人的方法,而不是答案
  • 和优秀的人一起工作
  • 找到身边共同成长的搭档

进阶通道

展现从业人员的进阶路径与方法,进入该阶段就摆脱了只执行,需要发挥创造性,独立设计了

程序设计

  • 需求分析:避免X-Y问题和明确模糊不清的问题
  • 学会谋篇布局:就像写文章一样,围绕核心问题先拆解再组合
  • 运用抽象能力:总结归纳通用方法和规则
  • 原型设计:从最难得做起,做好接口设计
  • 架构设计:分而治之;考虑系统异常与极限情况
  • 技术调研:寻找最优解决方案

项目管理

  • 不容项目特点采用不同的开发模式:瀑布模式、火车头模式、敏捷模式
  • 使用A/Btest,用数据说话来验证效果
  • 上线前做好监控与压测

团队合作

  • 外部:知道如何规训业务,了解需求背后的原因,告诉业务方需求不仅仅是单纯技术问题
  • 内部:平衡前端团队和后端团队(此处的前端和后端是根据离业务的远近而分的)

学习进阶

  • 直击内核:打牢基础,以不变应万变(程序语言、系统原理、中间件、理论知识)
  • 搭建体系:用知识树系统学习,探索知识缘由,掌握方法套路

下图是C++语言的知识树

  • 主动学习,提高你的学习效率

高手修养

行业高手的管理智慧和独特心法

分岔路的选择

  • 上升通道:技术路线和管理路线,根据自己的兴趣爱好和所处公司决定
  • 预见未来:具备一定知识广度,多做跨行业交流,跳出自己圈子,培养自己前瞻能力
  • 权衡利弊:学会取舍,确定自己要干什么,自己不干什么
  • 攻克难题:主动寻找技术难题,尝试不同的解决方案
  • 做好技术选型:1 技术解决问题的规模大小;2 技术背后支撑和时间考验;
  • 代码评审:不仅仅是做出来,而是要做漂亮,提升编码水平最快速的途径

带团队心法

  • 实力服众:工程师宁愿被lead,不愿被manager,所以要具备技术领导力
  • 敢于放手:从工程师变成管理者,思维从让自己变得更好变成怎么样让别人更好,让团队更好
  • 善于说服:说明为什么要做一件事
  • 面试招聘:考察一个人的元能力,.基本的素质和可持续的能力
  • 员工激励:让工程师更有成就感,通过产品、技术、工具,而是薪酬
  • 团队建设:做好人才布局
  • 长远布局:困于当前目标,抽不出时间考虑长期目标十分危险
  • 平衡需求:判断紧急(线上问题,核心业务)与重要(研发工具、数据体系、架构更新)
  • 协同机制:保持公开透明的信息协同
  • 团队合作:让协作发生化学反应,发挥1+1大于2的作用
  • 合作共赢:找到利益共同点

行业大神

领略行业顶端的风景,了解下几位大神

丹尼斯-李奇

  • 保持简洁
  • C语言之父

林纳斯-托瓦兹

  • 只是为了好玩
  • Linux之父
  • Git之父

吉多-范罗苏姆

  • 允许不完美、保持开放
  • Python之父

玛格丽特-汉密尔顿

  • 拯救人类登月计划
  • 阿波罗登月计划软件编程部部长

杰夫-迪恩

  • 开创分布式系统
  • 可以准确说出系统设计响应时间的男人

法布里斯-贝拉

  • 一个人就是一支队伍
  • 大量开源软件作者:QEMU、FFmpeg、TinyC、QuickJS
未经允许不得转载:菡萏如佳人 » 读书笔记

欢迎加入极客江湖

进入江湖关于作者