作为软件工程师和程序员的朋友可能会遇到一些一根筋的程序员,觉得只要技术很牛什么问题都能搞定就很好,至于其它的事情一直不屑于去做,比如需求分析、设计、测试、甚至客户上线的事情也不愿意做。虽然这是极少数的人,但总会遇到这样的人。搞技术的有时候就有这样的思维,觉得自己技术牛就行,只佩服技术牛的人,而不在乎什么测试、管理、分析、设计等等。但一旦让他负责一个项目的时候,就傻眼了做出来的东西运行是不错,但很多不能满足客户的要求,甚至和客户对怼关系搞得很少紧张。
其实作为程序员有这样的思维有时也能理解的,本身可能进入单位就是以程序员身份进入而且待遇还比较差,于是就把自己当个程序员作为目标就可。但要开发一套软件可不只是编码这么简单,上至和客户的精准的沟通,带领团队设计开发测试满足客户要求的软件,还要与客户制定不影响其工作生产的上线计划等等,都是需要很高的能力与技巧的。
作为程序员的成长路径,首先第一目标就是要把自己锻炼成合格的软件工程师。软件工程师不只是编码这项工作,除了技术还有软件设计能力、开发能力、一定的测试能力、项目规划计划、甚至还有小团队的管理能力,如果以项目经理和技术总监为目标,那项目及团队的把控和建设能力尤为重要。作为软件工程师来说,其目光是放在整个项目的成功上来看待的,而不只是把眼光局限于编码上。如果带领一个项目,软件工程师可能有更多的思路及办法,而程序员可能可能就会陷入茫然。
作为个人来讲谁不愿意有更多的升迁机会、有更高的待遇呢?当然如果只是把编码技术牛作为追求目标也是可以的,但成长之路毕竟还是有一定限度的。程序员的成长路径其实也挺宽,就是看自己怎么规划。高级程序员、高级工程师、高级架构师、项目经理、部门负责人、技术总监、甚至副总等等都是不同的途径,仔细观察也发现不同的级别待遇那是相当的不同。
当然不是每个程序员都想当总监,只想做好编码其实也挺好,就看自己的选择了。
#谈谈程序员如何增强自己的竞争力
##1. 拓宽业务场景
我们会在很多场合听到对“精钻”这个词语的推崇,包括在职场上,我们常常听到前辈教导我们对待工作要精益求精,但事实上,在某一方面做到万里挑一的大牛是一条可取的道路,却不是职业发展的唯一道路。
我建议程序员们在进行工作选择的时候不要被自己原先所属的细分领域太过限制,认为自己原来在电商公司以后也必须在电商公司。
事实上,多去尝试不同领域的公司,去了解不同领域的公司在技术实现上有什么异同,对于程序员更深入地理解技术是很有帮助的。
尤其是当今行业发展日新月异,某一细分领域很难在一个人 15-20 年的职业生涯中一直处于蓬勃发展的状态,如果之后又出现了新的细分市场,复合背景积累的经验会帮助程序员快速切入到新的细分市场。
##2.把握职场节奏
在职场上有一个时间标准:3 年。 3 年时间,一定要在工作内容和职级上有一个质的变化,这个变化可以通过升职得到,也可以通过跳槽达成目标。
初入职场的 3 年,主要的工作内容就是夯实基础,此时基本处于“完成上级交付的任务”这样的阶段。
但在这个过程中,员工不能仅仅完成任务了事,而是要不断思考为什么上级要布置这个任务,这个需求是怎么来的,用于解决什么问题,有没有更好的解决方案等等。
之后的 3 年,也就是职业生涯的 3-5 年,作为程序员,需要达到一个小 Leader 的层级,即带领一个小团队(可以仅仅有几个人)负责某一个模块或是功能的研发,此时在上个阶段积累的经验和关于解决方案的各种想法的作用便凸显出来。
而此时作为小团队负责人的角色,程序员更多地需要关注上下游的逻辑,能够形成完整的逻辑链条。
工作经验的 5-8 年,此时程序员已经成为了技术负责人,可以独立负责某一个产品的研发,可以成功地推动产品从 0-1 的阶段,此时更多需要关注的便是跨部门之间的合作与沟通,确保研发行程的按时交付。
与此同时,更多地关注一些产品设计方面的内容,会对进一步的晋升很有帮助。
最后一个阶段,即工作 10 年以上,此时达到研发总监或是更高的职位会是一个比较理想的状态,而对于这个层次的要求,是对于整个行业能有比较清晰深入的判断,能够感知未来技术发展的方向并为公司提前布局。
##3.训练复合技能
除了编程之外,程序员要尽量培养一些其他方面的技能,例如演讲、写作等等。这样做一方面可以为程序员提供一些兼职机会,如主讲技术相关的直播课程、参考文章或书籍的撰写等。
类似的机会在提供报酬的同时也会增加员工的知名度和行业影响力,更有甚者,在社交媒体上发表了相关文章之后,吸引了一批志同道合的同行,开始合伙创业,有了更大的机遇。
就算没有这些额外的收益,复合技能的人才在公司内部也会受到青睐。
##4. 保持紧密沟通
有些程序员认为自己做的是技术性工作,只要写好代码就可以了。这是错误的认知。根据过来人的经验,那些有意识在工作之余关注行业动态,积攒人脉资源,并且乐于与同行沟通的程序员,往往在职业发展的路上走得更远。
一方面,程序员可以通过这些方式随时评估自己在市场上的价值和优势,当行业和技术的风向发生转变时,及时对自身查漏补缺,避免被时代抛弃。另一方面,人脉资源的积累,有时也能对自己下一次换工作起到雪中送炭的作用。
可见,行业信息、公司动态的互通有无对于职业发展有着至关重要的影响,准确地把握行业动态有助于员工抓住一些转瞬即逝的机会。
而对于信息的获取,自己的朋友、前同事、公司 HR 还有靠谱的猎头等,这些都是可以利用的资源,同时也可以参加一些展览、峰会等线下活动。
尤其对于那些自己感兴趣的技术方向,尽量积累一些人脉资源,一次有效的内推往往比海投简历更有效果。