程序员的能力拓展模型

听人说了一个词儿,叫作“Comfirtable Zone”,中文是“舒适区”。

这个词儿让我瞬间联系到程序员的能力边界问题,我画了能力拓展模型图。如下:

我觉得这个能力拓展模型,适用于一个人的方方面面,但这次我打算只拿程序员来扯一下。

能力拓展模型

图中左侧是我们的现状,最内层的原型是我们感到舒适的区域,我称之为“舒适区”。

以程序员为例,当程序员的技术能力和解决问题的能力达到一定水平之后,就能够轻松胜任某些开发任务,解决特定实际问题,给用户带来某方面的便利。他的能力与他接触到的问题匹配,此时程序员处于舒适区。这个舒适区的大小是由他解决问题能力的大小定义和界定的。

当问题超出程序员先有技能和经验说明,他能看到并了解,但还不能解决。那这些问题就是这个程序员随时可能面对的挑战区,也就是图中的黄色圆型。

图中的大片的红色区域,对程序员来讲,就是未知区域,未知即迷茫,未知即痛苦。这个区域往往是程序员看不清或看不到的,是百慕大三角的一片未知而神秘的区域,贸然跳入,可能折戟沉沙铩羽而归。

假如一个程序员愿意跳出舒适区,踏入挑战区,接受一定的不适,那他就能够有机会拓展他的能力,将自己的舒适区扩展得更大,他的能力模型就变成上图右侧部分,舒适区变大,挑战区变大,痛苦区变大,这也是符合人类认知规律的:知道的越多,不知道的也越多。

如果一个程序员连轻微不适都不愿意接受,那他就会渐渐固步自封,落后于别人,落后于时代,渐渐被这个日新月异的时代所抛弃,成为一个别人眼中没什么用的老家伙。

在开发过程中扩展舒适区

一个程序员的能力,是可以通过锻炼不断变强的。就像人的肌肉,一段时间让锻炼强度超负荷一点,适应了,习惯了,肌肉变得比原来强了,就再超负荷一点,通过这样的螺旋式递进,肌肉就会越来越强。程序员也是一样的,你的学习能力、代码能力、设计能力、沟通能力、管理能力等等,都是可以通过锻炼来加强的(我们得考虑一个人适合做什么,如果他没有某方面的才干,虽然通过锻炼也可以加强,但违背天性的事儿通常为事倍功半)。

在软件开发过程中,一个程序员,他会什么语言懂什么框架水平如何,自己心里有数,项目经理通过他的表现也认为自己心里有数。那么在有新的项目要做时,通常的做法是,哪个程序员熟悉实现Tx任务相关的技术,就让这个程序员做Tx任务,这通常又是出于交付期、生产率、成本等各方面的考虑。

在这种情况下,每个人都做自己驾轻就熟的事情,对整个项目来讲,自然是最经济的。可是对程序员自己来讲,却是不经济的。因为你无法接受新的挑战,你的能力边界的拓展就会很慢。所以,合理的情况是,项目经理在划分任务时,要对程序员负责,既给一个程序员能轻松完成的任务,也要给他需要费点儿劲儿才能完成的任务,通过具有挑战性的任务来锻炼这个程序员,让他更好更快的成长。但是这样做的管理成本太高,所以,现实当中,很少公司的项目经理会主动这么做(没合适人手take某个任务时会被动这么做)。

鉴于这种现实,作为程序员自己,如果你想更快地成长,就要表现得勇敢一些,主动走到挑战区域,去抢具有挑战性的任务。(如果不好意思主动,也可以在有挑战性的任务落在自己头上时屁颠屁颠地接受。)一旦你拿到了对你来讲具有挑战性的任务,那你就赚到了。没错,我是故意这么说的,你赚到了。虽然你会为此殚精竭虑,虽然你可能为此加班,虽然你可能为此在别人看不见的地方付出,但是你拥有了机会和更多可能性,如果你顺利完成了,那你的舒适区会扩大,你接触新挑战的机会也会变大,你就进入了良性循环,你会越来越强大。你终将走上七龙珠中悟空的变身之路,成为赛亚人,超级赛亚人,超级赛亚人2,超级赛亚人3,……直到成为超级赛亚人之神。

想想看,这是多么美好的事!

So,某个技术没搞过?不是问题。某个语言没学过?不是问题。软件结构太复杂,一时掌控不了?不是问题。业务不熟悉?不是问题。如果你觉得这些是问题,OK,请坐看云起,等待时光带走一切然后把你丢在原地。

在渴望成就自我的程序员眼里,问题即机会。只有抓住机会,我们解决问题的能力才会在痛苦的历练中像雪球一样越滚越大。

更多精彩文章,请参考我的“漫谈程序员专栏”。

本文曾在我的微信订阅号“程序视界”上发布,关注即可第一时间看到我的原创文章以及我推荐的精彩文章:

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-10 11:37:21

程序员的能力拓展模型的相关文章

程序猿的能力拓展模型

听人说了一个词儿,叫作"Comfortable Zone",中文是"舒适区". 这个词儿让我瞬间联系到程序猿的能力边界问题,我画了能力拓展模型图.例如以下: 我认为这个能力拓展模型,适用于一个人的方方面面.但这次我打算仅仅拿程序猿来扯一下. 能力拓展模型 图中左側是我们的现状,最内层的原型是我们感到舒适的区域.我称之为"舒适区". 以程序猿为例,当程序猿的技术能力和解决这个问题的能力达到一定水平之后,就能够轻松胜任某些开发任务.解决特定实际问题,

【杂谈】PHP程序员的能力水平层次

PHP程序员的能力水平层次 前言 之前看过很多篇关于服务端工程师和PHP开发者的能力模型介绍,每篇都对能力有侧重点. 下面我们来详细谈谈以开发能力为基准点的PHP程序员的能力水平层次. 层层递进 1.功能开发 这个水平的程序员一般是在校学生或者培训机构学习中的同学,这时对PHP基本语法不太熟悉,做东西都靠查资料. 对于功能实现,能用但是健壮性和扩展性都不行,也就是我们所提到的实验性项目的模块.推荐处于这个层次的同学去尝试大型的模块,去解决复杂的问题,在实际开发中提升对语言的熟悉程度. 2.系统开

程序员调试能力和相关书籍

在软件行业中,个人觉得每个Coder.Leader(那些当了Leader以后就不需要Code的除外)都应该除了具有良好的编码能力以外,最为主要的就是Debug的能力要坚实.千万不要告诉我Debug工作是Tester和QA的事情,首先你要认识到Debug的能力是一个并不简单的能力,能帮助你提高你的开发能力,加快开发速度,节约开发成本:其次你更应该知道,你所掌握的Debug的能力和技术并不可能抢去Tester或者QA的饭碗,他们做的工作更仔细.全面,更富有创造力.由于本人数年来一直使用VC6,所以下

程序员编程能力鉴定(甲级)——(一)

其实下面的英文扯了一大堆,意思就是, 输入2个字符串,找出第1个字符串中,没有在第2个字符串中出现的字符, 然后输出这些字符,注意:相同的字符仅输出一次,如果是英文字符,就输出其大写形式. On a broken keyboard, some of the keys are worn out. So when you type some sentences, the characters corresponding to those keys will not appear on screen.

做一个程序员最重要的能力是什么?

前几天正好和朋友聊到这一点. 我朋友w是一名实施,他打算转开发,正准备着要去参加培训班. 在沟通中,g(从事研发多年)说到"你认为作为一个程序员什么能力最重要?" w说:"技术." 我:"学习能力." g说:"重要的是学习能力!技术是可以学的,但自主学习能力却不是每个人都有的." 本来我不打算写这个故事的,但突然发现,这是个每个IT从业者都会遇到的问题.可能你认为我的答案并不是最好的,那么请在下面写上你自己的意见,谢谢.

对九个超级程序员的采访

对九个超级程序员的采访 原文:<Q&A With Nine Great Programmers>时间有限,我只能粗译,难免错误. 这篇访谈源自2006年,最先发布在波兰程序员 Jaroslaw “sztywny” Rzeszótko (AKA “Stiff”) 的博客上.但是这篇博文现在找不到了.非常感谢他能授权我重新发布这个博文. 在一个炎热无聊的下午,我突发奇想.我想通过电子邮件的方式对那些我非常感兴趣和非常敬重的程序员问10个问题.准备这10个问题我只花了5分钟,这些都是我个人想

论程序员的成长

<论程序员的成长> Athson | 2015-04-04 ~ 2015-04-17 原文地址: http://blog.athson.wang/?p=45   知识共享许可协议文本:简体中文版本著作由Athson.Athson Wang.鹏澍原创,以 CC 署名-非商业使用-禁止演绎 (by-nc-nd) 授权条款 执行公开许可.此作品衍生自http://blog.athson.wang/. 论程序员的成长 Athson | 2015-04-04 ~ 2015-04-17 中国程序员的个人成

阿里P8大牛:教你如何定制JAVA程序员的学习及职业规划

1-3年Java程序员学习的非常重要的年份将影响你的职业生涯和工资水平的方向,这几年是至关重要的,如何从初级阶段转向高级阶段,这是一种技巧.一个难点.一个方向.但我们绝大部分工作的时间都是增删改查,开始前几年就是在为了达成增删改查而努力,大部分的程序员具备这种能力之后就开始相对安逸的状态了,开始觉得这项工作没什么技术含量,增删改查的功能如果对于简单的工程代码来讲就是比较简单,如果是涉及到大总量的数据处理,能像简单数据一样玩转那就是真正的能力问题了. 所以java程序员如果能力到了增删改查的之后,

程序员成熟的标志

程序员在经历了若干年编程工作之后,很想知道自己水平到底如何?自己是否已经成为成熟的程序员?虽然程序员会对自己有一个自我评价,但是,自己的评 价和社会的评价.专业的评价会有差异,所以程序员自己并不能肯定这个评价.现实中,除了各种证书之外,很少有人会专门给出一个程序员的成熟度的评价.人们往往是偶发性地就事论事地对程序员的工作作出好与不好,行与不行的评论.因此,程序员对此感到很茫然,不知道要从那些方面去评价自己的能力. 一个程序员到底成熟不成熟,我想从以下几个方面谈谈自己的看法. 1.技术标志 如果程