1997 年,Clay Christensen出版了具有里程碑意义的著作《创新者的困境》( The Innovator's Dilemma)。
在这本书中,他介绍了自己经历的各种行业,比如硬盘驱动器、反铲挖土机、钢铁厂等等,并介绍了公司如何创新,以及很多公司都会面临创新停滞、业务止步不前的困境。
如图所示,对于任何产品,都会有mvp,以及功能的相对最大发展限度。比如对于文字处理器,就会有常见的段落格式、分页、打印等功能集成。
但是到达某个临界点后,就很少会有人关心还有什么新功能。比如Microsoft Word 团队可以不断推出新版本,但大部分功能并没有赢得用户喜欢的大范围使用,甚至很多功能遭到不少用户吐槽。
随着一个产品功能类别不断完善,用户对于核心功能的要求会提高,但已经没有之前那么紧急了。
在上图中,产品 A 的市场份额明显更大,它具有先发优势,而且在一些核心功能方面领先于产品 B。
产品 A 的功能相对更齐全,B 无法与之竞争;最开始,B 甚至没有资格成为A的竞争对手。所以为了生存,B 必须找到另一个新的市场,或许还有未被满足的需求。
在这一点上,有几个方向是可以尝试的:1)B 从 A 没有竞争的市场中获利;2) 随着时间的推移,B 持续进行创新性迭代;3)A不再进行大的创新性优化,满足于现有的产品完善度;
问题在于,所有的迭代都是为了让公司继续创造成功的产品,即使很多产品已经达到了功能上限,很多功能用户都不会用甚至不知道。
但这不是我想讨论的。对这本书感兴趣的,可以自行阅读了解。
我最近一直在思考关于程序员不断突破技术、跨越能力阶级的问题,因为我早就经历过了加速学习的阶段,不过上面的图表实际上是一个很好的模型,来体现每个进步阶段。
刚开始,你没有什么可失去的,所有东西对你来说都是成败参半,所以如果想成功,你只需要选择一些东西并开始。
随着时间的推移,你会克服教程、基础项目、不成熟的解决方案、糟糕的架构等,然后达到符合要求的专业能力水平。
当你达到这个阶段,我就要恭喜你了!因为你意识到自己还需要学习多少。
而当你处于绿色区域时,说明你正在以一种有意义的方式使用你的技能。
选择多样化的项目、继续学习技术、向更多高级工程师学习等,将帮助你继续发展自己的技能。直到某个时候——当然,这不是一条实线——你会真正掌握你的专业知识。
而继续往前发展,直到超过这一点,那么价值将是渐近递减的。
也就是说,你或许掌握很多晦涩难懂的技术知识,或者掌握非常复杂的数据结构,但在某些时候,这些技能实际上并没有帮助你成为更强大的程序员。
于是,你需要开始探索其他技能。
上图显示了为什么这个过程如此艰难。你所有的短期激励都是在技能 A 上持续发力的结果。
这是你取得好结果的有效方式,而且随着时间你会越来越自信,拥有最大的自我效能感。
这个过程反馈极强,你能明显感觉到多劳多得,薪资也是不错的水平,而且某些方面还能赢得你同事的尊重。
但是!一旦你开始切换到技能 B,它会让你回到最底层。
当然,你现有的知识或许可以帮助你更快地学习它,但这需要你花大量时间,专注它!对于技术大佬来说,时间非常宝贵。
以上的过程演变,基本给大家讲明白了当程序员工作到了一定年限,达到技术专家水平时,会面临什么样的问题。
无论是公司创新还是个人的自我革新,都是一个很艰难的过程。
徐悲鸿有一句话我很喜欢,也分享给大家共勉:
道在日新,艺亦须日新,新者生机也;不新则死。
【扫码加我的个人微信】
觉得有用,记得点赞????,也是一种支持。