构建之法-3-软件工程师的成长
2019-05-06 本文已影响0人
BigLong
软件工程师的成长.png
本章主要是关于个人成长。如何衡量软件工程师的能力?软件工程师常见的思维误区。职业发展以及技能的反面。
3.1 个人能力的衡量与发展
3.1.1 能力衡量
当你在简历上写下“职业软件工程师”时,有没有想过自己到底有多“职业”呢?就像篮球运动员的职业简历上一样,包含出场数、命中率、防守、助攻等数据。我们可以衡量软件的工作量和质量:
- 项目有多大:代码行数(Line of Code, LOC)或者功能点数(Function Point)
- 花了多长时间:n个人 * m月
- 质量如何:bug数量或者返工的次数
- 是否按时交付:交付时间不仅越快越好,还要稳定。即估计与实际用时接近。
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 . 如果还原了,要求他把魔方恢复成我最初给他的那个混乱的局面,必须一模一样。
精通魔方的同学,来吧。