《构建之法》第三章 学习笔记

软件工程师的成长

个人能力的衡量与发展

软件系统的绝大部分模块都是由个人开发或者维护的,这些单个的成员叫做Individual Contributor(IC)。

IC在团队中的工作流程如下:

  1. 通过交流、实验、快速原型等方法,理解问题、需求或任务。
  2. 提出多种解决方法并估计工作量。(包括寻找以前的方案)
  3. 与相关角色交流解决问题的提案,确定一个可行的方案。
  4. 执行,把想法变成实际能工作的代码,同时验证方案的可行性和其他特性(例如程序的效能)。
  5. 和团队其他角色合作,在测试环境中实现方案,修复缺陷(bug)。如果此方案有严重的问题,就考虑其他方案。
  6. 发布解决方案后对结果负责。

初级软件工程师的成长

  • 积累软件开发相关的知识,提升技术技能,例如编程语言的掌握,诊断/提高效能的技术,对设备驱动程序、内核调试器、开发平台的掌握。
  • 积累问题领域的知识和经验。
  • 对通用的软件设计思想和软件工程思想的理解。
  • 提升职业技能,例如自我管理的能力、表达和交流的能力、与人合作的能力、按质按量完成任务的执行力。
  • 实际成果

团队对个人的期望

  • 交流。
  • 说到做到。
  • 接受团队赋予的角色并按要求完成工作。
  • 全力投入团队的活动。
  • 按照团队流程的要求工作。
  • 在各项任务前做好准备工作。
  • 理性地工作。

思维误区

  • 分析麻痹。想弄清所有的细节、所有的依赖关系之后再动手,心理上过于悲观,不想修复问题,出了问题都赖在相关问题上。
  • 不分主次、想解决所有依赖问题。想马上动手修复所有的主要和次要依赖问题。
  • 过早优化。陷入局部问题,花费大量时间进行优化。“过早优化是一切罪恶的根源”。
  • 过早扩大化/泛化。在我看来其实和“过早优化”属于同一个方面,即陷入局部问题,浪费过多时间。

技能的反面

巴克斯顿(Bill Buxton)说的技能的反面是解决(低层次)问题(Problem Solving)。要将提高技能,就要通过不断地练习,把低层次的问题都解决了,变成不用经过大脑的自动操作,然后才有时间和脑力来解决较高层次的问题。

注意在学习的时候,要确保自己学习的内容适合自己当前的状况,避免进入学习恐慌区,出现拖延症的现象。

感想

这一章给我的感觉就是很真实,很多地方都有切身的体会,比如“过早优化”,陷入技能的反面——解决问题中这些,不只是在编程中,在生活的方方面面都有类似的问题。引以为诫。

转载于:https://www.cnblogs.com/thechosenone95/p/9929491.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值