程序员转型不得不说的事 - 转型的原因
一转眼不做一线的开发已经将近两年了,但是在这两年当中还是没有离开编程,还是在不断的学习,或者当一个在站在圈子外面再来看做程序员的点点滴滴颇有些感触,所以在这里分享一下我的经验,希望用咱们希望从编程的圈子里走出来的人,以及希望进入编程圈子当中的人有一点用处。
首先我必须要说程序员为什么转型:
在国外有很多老枪,甚至经常看到有的公司的招聘要求动辙8年、10年,而在国内有这么久一线编程经验的人少之又少。我曾经在国外工作做一段时间,对于国外的程序员多“长寿”,而国内程序员多“短命”的现象都不感到奇怪。
单从工作性质上说,工作经验与工作经历其实对工作效果的帮助要比工作上的冲劲更加重要。原因很简单,工作的产品与工作好的产品完全不是一个概念,对于语言的内涵、设计模式直至软件工程的认识绝对是需要时间与经验的积累。但是为什么国内外程序员的职业发展会有这么大的差异呢。
在国外软件公司发展大多比较正常,也就是大家都是在良性发展,很少见到恶性的竞争,而且最重要的一点软件工程师这个职业是比较受人尊重的。也就是从外围环境上讲大家评价比较高,而从内部工作性质上说工作强度以及工作压力没有国内软件开发的从业人员那么大,所以从事这项职业很久时间也就不难理解了。
但是国内软件业的发展至今,对于开发者来说工作性质简直类似于IT民工,编程已经成了体力劳动而不是脑力劳动。造成这种现象的原因其实也不难理解,因为大多数公司急于求成,只关注数量与速度而完全不不关注质量,管理层对于软件工程方面经验的运用与理解很浅。
造成这种现象的原因是什么呢?其实你可以想象一下这个场景,同样一个功能找一个有经验的程序员,把设计做好,该做的架构做好,该定义的宏与常量定义出来,把今后可扩展的东西留出相应的接口。但是这些都做好了,对不起。老板可能会看到初学的程序员可能通过几个通宵的努力把一个可以基本运行正常的版本做出来。虽然能工作和工作得好有巨大的区别,但是如要老板所在的这个软件公司本身就比较急功近利的话,那么后果可想而知,马上就会得出老程序员不好使用的结论。
但是如果软件质量把控不好那么软件今后如何维护,可扩展性都会很差。但是等这些问题都暴露出来,一般来说项目代码的编写人员恐怕已经有很大一部分的流失了,后期的工作推动非常艰难,最终造成了恶性的循环。而等公司搞清楚这些道理开始重视架构,重视设计的时候,你会发现作为老程序员的你成本远没比那些按照软件作坊式的企业高,
软件作坊式的企业大量出现,造成了软件从业人员的体力劳动属性增加,脑力劳动属性降低。当一项工作要拼体力的时候老程序员怎么拼得过年轻人。尤其是在成家立业后需要承担家庭的责任,很多时候加不了班,那么久而久之项目经理不得不放弃使用老人,即使他们已经完成了自己的工作。
而且从另一方面社会对于30岁以上的程序员本身就是画了一个问号,因为社会对于程序员本身形成了一种青春饭的标签,所以真的没办法有时一个程序员的转型背景真的是许多的无奈。
程序员转型不得不说的事 - 成为技术大牛
其实抱怨再多我们也要面对现实,说到如何转型,我建议各位年轻的程序员不要等到不得已而为之的时候才做打算,而是在你还可以长时间的加班,还可以盯得住的时候就做相应的计划。首先你要考虑这样几个问题:
1、通过一段时间的工作,你对于自己在行业内的位置是如何认识,优秀的程序员还是一般的从业者(注意不要把你写程序的冲动,当成才华)
2、从你的工作当中你能获得快速的提升吗?
3、当你从事程序员的工作满一年的时候,你还保持了刚刚入行时的兴趣吗?
如果以上三个问题答案都是正面的,那么你完全可以考虑继续在技术岗位上获得提升,那么我对你的建议如下:
首先看你的职业方向,一定要取得一些重量级的技术认证,比如系统分析师、软件架构师等,另外一些国外的重要企业的认证比如思科网络CC系列,红帽认证的LINUX工程师等。
其次一定要参与技术社区活动,最好能够更新博客保持自己时刻的信息更新了解技术的发展方向,并能将自己的声音传播出来,做一个有一定影响力的技术人员。
还有就是一定要保持自己知识的不断更新,为自己制订一个学习的计划,比如算法,编译原理,设计模式,软件工程等等知识的不断积累。
最后就是一定要有顶级的软件公司做为自身职业生崖的一站,你可以在职业生崖的前半段为进入阿里巴巴,腾讯等国内顶级科技公司而努力(国外的更好),后面如果在上述公司内感觉没有太好的发展,可以选择到小一点的公司做一些技术主管,技术总监工作。
这样通过一个完整的过程,你就可以一步一步的沿着自己感兴趣并且喜欢的道路走下去,但是只有一个忠告,希望走这样道路的人多,但是真的能坚持下来的人很少。所以心态的平衡与对编程的兴趣其实是比学习的能力更重要的要素。
程序员转型不得不说的事 - 成为管理者
其实目前发表程序员转型的文章大致分为这几类,首先是牢骚型,抱怨程序员加班多,压力大,工资劳动强度不成正比,再有就是一种自嘲型,比如什么《嫁给程序员的几大理由》一系列的,但是这种文章批判现实主义的风格,虽然看着很有共鸣,在最后除了把现实说了一遍到如何改变的时候却没有了,光靠抱怨不能解决什么问题。
再有就是技术大牛给初中级开发者的建议类文章,比如对话架构师系列,其实我们必须要看到的一个现实,IT行业虽然每年有很多人入行,但是每年流失的人也多,在做了几年确定自己适合IT业后,坚持下去也是一个好的选择,但是现实当中的什么房价,结婚,小孩等等问题也非常让人心烦意乱,所以让自己有一个坚持下去的理由非常重要。
而给关于程序员转型成为管理者的建议并没有看到很多,不敢说自己在这方面很有发言权,只是说一点实际的东西希望大家如果遇到和我相同的情况少走一些弯路。
一 管理者需要什么素质?
首先一个管理者需要一定的人生阅历,管理是和人打交道,这其中最需要的能力就是沟通,而沟通最好的方法就是能够换位思考,你了解对方在想什么,要什么之后自然就有沟通。
所以大家不要奇怪说为什么有的大公司在招聘管理职位的时候,倾向一些已婚甚至已经有了孩子的人,其实原因很简单,如果你做为LEADER这些经历都没有,那么你的同事你的下属结婚的时候你能处理好吗。所以请广大程序员朋友除了在提高自己的技术水平外,也要有一定的精力去丰富自己的人生阅历。
再有一个重要的能力其实还是判断力,因为从一个下属的角度看一个LEADER和一个LEADER实际的情况还是有很大差距的,一个程序员工作的内容可能很复杂,但是属性很简单,虽然可能会经常加班,但是我觉得自己在做程序员的时候其实是相对比较幸福的时光,如果读者您是一名管理者,你可能也会觉得能用加班解决的问题其实不是什么大问题。做为一个技术经理首先要把一个个任务分解,然后分配,并保持项目进度的可控性,这是最主要的工作。
做为一个技术管理者或者说一个项目经理,那么往往也是技术问题的最终解决者。那么遇到技术问题如何解决,谁能解决,需要判断,而遇到一些问题,比如需求的变更等等问题,会不会影响整个项目的进度,如果会那么如何解决。所以往往程序员只是看到经理在不停的分配任务,但是这时候一定要想想他为什么这么分配,当然了如果你认为他分配的不合理,也要试着从项目进度的角度来和他沟通,如果你说“这个任务我完成不了”对比“这个任务这样分配可能会影响到整体的进度”效果不会一样。
二 程序员转型做管理岗位的瓶颈
首先以我自己举例,不能说是以偏盖全,但也有一定的代表性,其实我觉得我一直有一种万般皆下品,唯有技术高的想法在,尤其是我刚刚得到微软MVP这个荣誉的时候,更是如此,对于某些不懂技术既充当技术主管的管理人员表示不可理解。但是各种行业都有自己的规则,做为一个管理者其实在争取资源并最终完成项目的叠迭过程中,有时候沟通方式与沟通技巧以及大局观最重要,而不能完全是技术优则管。不是技术不重要,而关键是要选准定位。
另外还有一个很大的误区就是通过跳槽很难由一个开发的岗位跳出一个管理岗位来,跳槽可以让你的工资飞跃但不是工作性质的改变,一般公司看重的都是可把握的东西,比如你之前的经验,如果你之前是在做开发工作,那么再怎么跳可能也无法跳出来一个主管岗位来,所以这里一定要在职业规划里清晰体现什么时候你要的是什么,该需要长本事的时候不要太计较待遇,该要钱的时候不要太计较辛苦,想升职的话尽量多呆几年。
还有一个忠告就是如果你想得到职位提升那么尽量不要主动提出来。
我以前的时候也会犯类似的错误,希望加薪不说,希望职位提升却经常挂在嘴边。其实这里是这样的原则,如果你想要加薪并且你的工作能力的确到了公司的要求,那么公司肯定会考虑,因为如果你因为这个而离职,再次应聘公司面临风险。
而如果你想升职,那么一定要尽量少说,第一其实你的升职想法对你现在的领导以及其它有相同想法的人都构成威助,而且对于主管岗位一般公司都会求稳的,如果在提出想法的时候让公司感觉你会不稳定并且可能跳槽的话,那么你很有可能会失去机会了。
所以这里的处理方法就是公司不找你谈话不主动提出相关想法,找你谈话也只是说服从公司安排,如果升职会继续好好做,这样是最好的办法。
领取专属 10元无门槛券
私享最新 技术干货