文章目录
这就是软件工程师
这是一套现代职业说明书
社会分工日益精细,行业快速迭代。只有专业,才有前途。快速了解一个行业,精进成为专家,事关行业中每个人的前途。
这套丛书运用最新的知识挖掘技术,采访行业顶尖高手,提取从新手到高手的进阶经验,用顶尖人才的视野呈现何谓专业
如何专业
所以通过一本小小的书,我们可以一窥某行业的概貌,值得大家去阅读下,况且读起来毫不费力,阅读体验也很好
以下是我对本书做的一个大致的阅读摘记
行业地图
站在高处俯瞰职业全貌
职业特质
- 大多数都非常简单(专注与自己所做的事)
- 喜欢偷懒(自动化)
- 持续改善,追求极致
- 热衷于创新
地域选择
- 一线和次一线城市,机会巨大
- 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