构建之法-3-软件工程师的成长

软件工程师的成长.png

本章主要是关于个人成长。如何衡量软件工程师的能力?软件工程师常见的思维误区。职业发展以及技能的反面。


3.1 个人能力的衡量与发展

3.1.1 能力衡量

当你在简历上写下“职业软件工程师”时,有没有想过自己到底有多“职业”呢?就像篮球运动员的职业简历上一样,包含出场数、命中率、防守、助攻等数据。我们可以衡量软件的工作量和质量:

  1. 项目有多大:代码行数(Line of Code, LOC)或者功能点数(Function Point)
  2. 花了多长时间:n个人 * m月
  3. 质量如何:bug数量或者返工的次数
  4. 是否按时交付:交付时间不仅越快越好,还要稳定。即估计与实际用时接近。
3.1.2 个人成长
  • 掌握技能基础知识
  • 积累行业领域的知识与经验
  • 理解软件设计思想、软件工程思想
  • 提升职业技能:管理、表达、交流、合作、执行力

3.2 软件工程师的思维误区

  • 分析麻痹(Analysis Paralysis)
    这种极端的工程师总是想要弄清所有细节、所有依赖关系之后再动手。偏悲观,不想修复问题,出了问题总想赖在相关问题上。

  • 不分主次
    过于积极,总想修复所有的问题,包括主要问题和次要问题。

  • 过早优化
    不能在局部问题上陷入进去,花大量时间优化,审视该问题对全局的重要性。

  • 过早泛化
    总想一次实现所有的功能,能适合所有的用户,等等。


3.3 软件工程师的职业发展

  • 考级
    等级考试和技术资格考试。

  • Steve McConnell ——职业之路
    知识领域+能力(入门、熟练、带头人、大师)

  • 大公司——职业之路
    例如,微软的职业等级:

    微软的职业等级

  • 自我评估
    工程师应该在实际工作中不断学习和不断成长,根据自己的情况选择在哪个方面追求“专和精”,在哪几个方面达到“知道就好”的水平。


3.4 技能的反面

巴克斯顿说技能的反面是“Problem Solving”—“解决问题”。

当你在简历上写下精通xx时,却把时间花在解决一些低层次问题上,那你其实就不精通xx。

提高技能的方法就是不断的练习,把低层次的问题都解决,变成不用经过大脑的自动操作,然后才有时间和脑力来解决较高层次的问题。

image.png

在中间部分是学习区,也就是我们要尝试、失败、学习、再尝试。。。逐渐就构建扩大了底部舒适区。一开始不要直接上手很难的领域,相当于直接进入顶部恐慌区,反而适得其反,出现拖延症现象。

书中,作者以玩魔方为例,如下:

魔方的技能有哪些层次呢?下面是我粗浅的看法。

1. 听说过魔方的玩法,理论上了解(已经知道:通过扭动魔方的各个层面,直到六面出现一样的颜色为止)
2. 对口诀知其然,能在实践中根据某种口诀玩成六面(作者达到了这种水平)
3. 对口诀知其所以然,能够根据情况加以变化
4. 同上,唯手熟尔。几十秒就可以搞定的(学校冠军们达到了这种水平)
5. 同上,但是转得特别快,十几秒就能转好的那些人,还能有一些例如闭眼睛还原魔方的绝技的(世界冠军们达到了这种水平)
6. 能够设计出新型的魔方

那怎么才能考察出一个人是否“精通”魔方呢?我想了这样一个办法:

a . 给面试者一个各面打乱颜色的魔方;
b . 要求他把六面还原;
c . 如果还原了,要求他把魔方恢复成我最初给他的那个混乱的局面,必须一模一样。

精通魔方的同学,来吧。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容