对于一线城市的程序员来说,月薪过万算是起步价。但是对于挣扎在二三线城市的程序员来说还是一个高峰,地域起到很大的作用。但是一线城市的房价又不是普通老百姓能够消费得起的,二三线城市虽然工资低点,但是房价还是基本上在承受范围之内(个别城市房价也是高的吓人)言归正传,一线城市的标准应该以月薪三万左右为准了。什么样的程序员能够拿到自己想要的工资水平?作为从业十几年的搬砖工尝试着总结了以下几点:
一. 编程基本功扎实,能够非常熟悉一门编程语言
万丈高楼平地而起,需要的坚实的地基,逻辑思维能力再强,性格上再沉得住气,也需要扎实的基本功。不能指望每次去写代码实现功能的时候,都要靠百度代码然后拿去复制粘贴然后调试。有多少的码农在接到任务之后先去网上找到类似的实现代码,然后粘贴过来直接调试,觉得能用也就觉得万事大吉了,等到自己负责的模块可以联调的时候,出现千奇百怪的错误,这样鲜活的例子在初学者身上很常见,这也是初学者必经之路。
编程语言到最后只不过是为了实现编程思想的工具,工具的在大致上功能类似,在具体实现层面上有一些细节的差异,都是为编程思想服务。编程上有一句话:真正懂得了一门语言,再去学习别的语言都显得游刃有余,很容易融会贯通,触类旁通。要真正的熟悉一门语言需要时间的打磨,思维的历练。不仅仅是会用,还要活用,创造性的应用。
很多刚入门的程序员在简历上,直接写上精通某种语言,写代码都还靠百度,还写上精通某种编程语言。遇到行家面试,基本上在印象分就会大打折扣,能面试上并拿到高工资真是奇迹了。即使觉得自己学的还可以了,在空闲之余还是要多回过头看看语言基础,曾经有个水准很高的大牛说,java编程思想这本书来来回回看了几十遍了,每次看都有不同的感受,又会有不同的收获。
二. 具备一定层面编程思想,具备一定的框架构架能力
一个标准的工程师,遇到任何技术难点都能有对应的解决方案,无论这个方案水准的高低。解决方案的高低代表这个工程师水准的高低。说到软件框架理论层面很虚,大家基本上随口就能说出常见的几种模型,管道式,瀑布式等,在使用时候采用高内聚,低耦合。但是在实际操作过程中,真正按照框架层面严格执行却很少。
曾经有个野程序员做过很多编程语言的项目,这些项目基本上都是单兵作战完成,自信满满的去腾讯面试,在说到软件框架上,甚至说到版本管理概念的时候一脸迷茫,代码都是自己管理,那还需要什么管控,弄得技术面试官好尴尬,面试的结果可想而知。能写代码不代表自己具备框架能力,从框架层面考虑问题,能够节省一直造轮子的时间,别人已经做好的轮子没必要自己再去费劲做一个,已经模块化抽象化的功能方法,拿过来直接使用。很多不成熟的项目里面,相同的功能方法,基本上一个模块实现一个,大家各玩各的。这样的代码在性能和协调性上表现的会很差,而且随着时间推移,这些代码就会成为老大难的问题,重构花费的时间都够重新开发一遍的了。不重构就需要继续忍受这蹩脚的用法。相信有过项目经历的人,都会或多或少的有似曾相似的感觉。
要成为架构师是一件可遇而不求的事情,需要有这样的环境,对应的能力。不可能每个人都能成为架构师的级别,但是让自己具备框架能力还是需呀努力去做的。没有点框架能力,整体设计能力,永远是徘徊在底层的码农。
三. 有过真正产品开发经验,市面上有还在运转的产品
实践是检验真理的唯一标准,没有真正做过项目,真正做过产品,就不能是一个标准的开发工程师。经历了项目开发过程就会知道项目启动前如何搭设一个框架,在项目进行过程中如何追踪技术点,如何去攻克一些技术难点,项目收官阶段如何测试产品的性能,是不是存在内存泄漏或者cpu占比过高方面的问题。只有经历过才知道一个产品怎么从零到量产,才会具备带团队的能力。在简历的一栏中的项目经历,公司看重就是这点经验。
经历的项目多了,做的产品多了,对于过程的控制也就更加准确了,自身的价值自然就上来了。对于做了多年的程序员,提升自身价值点都在项目经验上面。
具备以上三点,无论在哪个城市,在什么技术岗位上,薪资水准一定低不了。即使达不到最高的水平,也属于程序员里面高收入级别。
能力和资历上去了,能达到什么水准都是顺其自然的事情。另外也不要指望做程序员能发大财,就是比平均工资高点,工作起来更加辛苦点。做个忙忙碌碌的小码农,也是一件快乐的事情。