首先明确一下所谓的瓶颈是指进一步提升遇到了困难,而不是遇到导致不能胜任工作的困难。遇到这样的瓶颈其实在职业生涯中是很正常的。设想同一个岗位,相同的工作干了大好几年,该知道的都知道了,该会的都会了,进一步提升当然会出现瓶颈,大部分人都是会有这种情况的。以下说一下我的体会。
首先就是适应这种瓶颈,认为这是正常的,继续做好本职工作,看机会再谋求发展,这时心态要放好。比如我曾在外包公司干过,所有的项目都是既烦又简单的项目(因为难的公司不敢接,不烦的人家就自己干了),很快就会遇到瓶颈的。但是由于每个项目差异很大,比如系统环境,第三方开发包,特定的业务逻辑,甚至还会有开发语言。这时核心能力是如何适应新的项目环境,这就是关键了。这个就是另一种程序员的核心竞争力。如果暂时短时间不能摆脱这种现状,那么在提升硬的技术能力遇到瓶颈时就根据自己的具体环境提升其它的软实力。实践证明这是一件值得尝试去做的事情。
其次,正面应对提升软件开发技能的问题。我的体会是你想在工作中提升的话一般就要换岗位了,去做那些相对难的开发工作。而且越难提升的效果越显著。当然前提是难的工作最终能够被完成。因为很多时候你的能力是环境决定的,不是你自己,所以需要换换环境来解决瓶颈。顺便提一句,如果难的工作最终不能被解决,那你就要付出代价了。因为放弃一个自己胜任的岗位去做一个自己不胜任的工作,想想吧代价多大。如果这个换岗位是跳槽实现的,那就更惨了。所以呢不要轻举妄动,看清楚了再下决定。
那么有没有在不改变环境的前提下继续提升呢?当然是有的,那你就要付出更多了,那就是用自己的业余时间接触并尝试解决新的难的问题,还是那句话越难的问题提升能力越有效果。这个也是公平的,你付出多了就比别人得到的多,这很公平。
那么有没有不换环境,不用或者少量使用业余时间来突破瓶颈呢?有,也是有的。一般一个人觉得自己遇到瓶颈了那么熟练的完成手头的工作就应该不是一个问题。好,那就第一步从提高自己的工作效率开始,第一个目标就是尽可能快的完成自己的工作,并且不让同事和领导知道,这样结果就是你就会有一定量的空余时间。这段空余时间充分利用起来。从策略上讲不要太过份让人觉得你在学习新的东西,这样老板发现你时间多就会给你加工作,你的空余时间就又没了。更有技巧性的做法是从自己的工作内容入手,问一下自己刚完成的工作是不是还有更好的做法?如果有那就用更好的方法来实现,空余时间是用来干这个的。这个寻找更好办法的过程是可以对同一个工作内容不断反复循环进行的,所以你的时间永远不会多的。这个过程的具体实施细节这里就不说了,否则篇幅太长了。
当然还有别的方法可以继续提升,什么读书,充电,看高人的代码,还有什么什么别的。这个介绍的很多我就不重复了,自己网上搜吧。但是以我的经验来看都比不上解决更难的问题这个方法来的有效。真是应验了那句话:对你帮助最大的往往是你的对手。对于程序员来说提升自己的能力就是解决一个又一个的难题。困难是我们成长的老师,前进道路上最强大持久的原动力,也是战胜竞争对手的工具。