十年开发,我却还在CRUD,拿着1.6W的薪水,程序员的出路在哪里?

前言

你们知道程序员最熟悉,最熟练,最常用的两个快捷键是哪两个吗?没错,就是你现在心中所想的:ctrl+c 和 ctrl+v ,俗名为:复制和粘贴。对于大部分程序员来说:复制和粘贴就是他创造伟大产品的左膀和右臂。

不知从何时起,很多企业将入职门槛限定在35岁以下,“35岁”已然成为职场老鸟的魔咒,而近年来有关“程序员猝死”、“程序员跳楼”等新闻层出不穷,这股百般苦恼的邪气,已入侵到了程序员群体,每每看到这类信息,我的心情都无比沉重,刚好我今年35岁,正经历着大多数人在这个年龄所面临的困惑、承担的压力、肩上的重担,这个年龄的遭遇我都感同身受,希望借此篇文章与大家一起分享心情、心得。

CRUD程序员可能要失业了

在码农界,有一个古老的传说,那些伟大的程序员们,大部分代码都是从StackOverflow问答里复制粘贴来的。在Flask中如何验证注册用户?怎样关闭sendmail服务?网上都有……

有了互联网上这些开源代码,年薪几十万的码农工作,机器人也能干。

剑桥大学和微软研究所联合开发了一个系统,名叫DeepCoder,就能够通过搜索一系列代码建立一个完整的程序,可达到编程比赛的水平。随着数据集规格的扩大,它还能用来构建更复杂的产品。

这个系统通过自我训练能够变得更聪明,能够构建出若干个代码段的最佳组合以及在特定位置选择最合适的程序段。随着这个系统的不断自我学习,它能够具有越来越快的运行速度。

剑桥大学的Matej Balog和微软研究所的Alexander L. Gaunt、Marc Brockschmidt、Sebastian Nowozin、Daniel Tarlow一起构建了这个系统并且共同发表了一篇文章来介绍这个系统。有程序员说,像这样的系统不能通过小代码片段构建更大规格的项目。这种说法,就像是吹着口哨过坟场——给自己壮胆罢了。

很多程序员的日常工作就是将代码进行分解然后进行重组。对于这样的工作,可以通过深度学习系统很好地完成。我想这应该是一个实现数据库基本增删改查功能的最伟大的解决方案。事实上,这种系统的出现可能意味着CRUD程序员的集体失业。

做正确的事情

我就是一个土生土长的程序员,最早做的前端开发(第一代css、js程序员),然后开始转做后端开发Java,又转到架构师以及管理,以下就是我从有限的10年左右提炼出的部分建议。这些也许对你来说不一定有用,但一定是发自我内心的建议。

23-27岁:技术积累阶段

假设本科23岁毕业,那么工作的前5年对你来说就是打基础的阶段。在这5年时间里面,你要积累足够的技术底子,打磨自己的技术实力,成为某一个技术细分领域的牛人。

我自己依然记得当年这样的场景:蹲在出租房里面每晚每晚的啃技术文档,在公司连续打地铺干通宵的场景。

只有真正经历过贫穷,经历过苦难的人,才会越早就懂得努力才自己这一生唯一的出路和唯一的机会。忘了谁说的了,大概就是这个理。

27-30岁:形成思维方法论和知识体系的阶段

当你积累足够的技术实力,例如超过10万行代码以后,你应该形成了自己的思维方法论和自己独立的学习技巧,任何新的技术在你眼中都能迅速的看到技术的本质,快速吸收成为你的知识体系的一部分。

你只要前一个阶段打的基础足够牢固,这个阶段你一定会开始蚕食别的领域,这是一定的。逐渐的不再满足于纯技术领域的探索,而是开始探索技术背后的事情:什么技术在什么样的场合能够发挥最大的价值;技术团队应该怎样构建;技术在公司未来的价值?创业公司对技术的需求?支撑技术的产品,怎样学习做产品?支撑产品背后的运营体系是怎样建立的?商业社会对技术、产品、运营等的是怎样的认知,商业社会有什么的特定规律?也许还有更多…

在这个阶段,积累技术对你来说简直是小菜一碟,你更需要磨练的是思考能力,形成自己的思维方法和知识体系,这将是你帮助你一生的武器。

30-33岁:这个阶段,最关键的是了解自己

知道自己擅长什么,自己的优势在哪里,怎样才能够最大化自己的价值,同时也知道自己有什么重大缺陷。未来是扬长避短还是不断避免自己的缺陷,这些需要提前想清楚。一旦想清楚,想透了,就剩下行动。你可以选择避开做自己不擅长的事情,不勉强自己,不让自己处于对自己不利的环境。当然,你也可以选择不断补短,把自己的不擅长点变成自己最擅长的。这个需要结合自己的情况来慎重选择,最终看你要走什么样的一条路,是打算做技术专家、管理者、还是技术结合产品,还是创业者。

上面的例子不是绝对,拿同事举例吧:25岁拿到了百万年薪,23岁的时候入职阿里,定级P6+(P6的职级,P7的薪资),对于底层源码有很深的理解,一句话形容就是:能上天(分布式、高并发、微服务等等)、入地(底层原理、源码解读等等)

凡事还是要看具体情况,不高估自己,持续学习,坚持进步

如何打破35岁魔咒?

古人云:生于忧患,死于安乐。我从事软件开发行业已经近13年,从一线大厂的程序员、高级研发经理、架构师直至CTO,即便一路走来顺风顺水,但职业发展的压力从未远离过我,生怕自己的能力结构跟不上这个行业和时代节奏,从不敢懈怠。

如果在事业上追求安乐和稳定,很可能在未来会迎来巨大的危机。商业是不相信“眼泪”的,企业在面对生存和发展危机时,没有任何温情可言。对于无法给公司创造利润的人,无论是25岁,还是35岁,都会被淘汰。我认为,35岁是否魔咒,因人而异,如果你谋定而后动、提前布局,35岁反而是一个硕果累累的年龄,甚至有可能提前实现财富自由。

不要用思想上的勤奋来掩盖思维上的懒惰

现阶段的你必须知道自己的目标

1.你适合学什么?2.你需要学什么?

1、阅读源码

阅读、分析源码是程序员最基本的码代码能力也是码农的根本所在,学习经典源码中所用到的经典设计思想及常用设计模式,能够帮你了解大牛是如何写代码的,从而吸收大牛的代码功力。在阿里面试中,MyBatis,Spring等框架的底层原理是经常会被问到的。

2、分布式架构

阿里巴巴有很多大团队,这种大团队里有很多小团队,到小团队之后,做的业务都不相同,如果想立足成为一线互联网公司中的万能选手,最主流的分布式架构中有很多知识都是必须要去了解与学习的。并且在阿里面试过程中,面试官会问到实际应用场景的问题:比如微服务化、用户量、并发量、业务复杂度以及可扩展程度等,这里不多赘述。

3、微服务架构

微服务是现在互联网架构技术中最火热的话题之一,也是博主目前正在学习研究的方向。在阿里面试过程中,面试官很少会问到关于微服务相关的问题。但作为一名开发者,一名有技术梦想的程序员微服务架构是现在必须要去了解的主流技术。

微服务的内容过多,这里只列举了两个,需要了解更多的朋友可以帮忙转发文章后,关注私信回复【学习】来免费获取更多微服务的思维脑图和相关资料

5、性能优化

性能一直是让程序员比较头疼的问题。当系统架构变得复杂而庞大之后,性能方面就会下降,特别是阿里巴巴这样的一线互联网公司最为注重,因此想进入阿里,性能优化一定是要去深入学习与理解的一环。

6.设计模式

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是它能被广泛应用的原因。

完整进阶架构大纲

最后

作为后端Java过来人,博主也是整理了很多进阶架构视频资料、面试文档以及PDF的学习资料,针对上面一套系统大纲博主也有对应的相关进阶架构视频资料,如果‘你’确定好自己未来的道路或者想学习提升自己技术栈、技术知识的话,可以帮忙转发文章后,关注私信回复【学习】来免费获取

全部评论

相关推荐

11-11 14:21
西京学院 C++
无敌混子大王:首先一点,不管学校层次怎么样,教育经历放在第一页靠上位置,第一页看不到教育经历,hr基本直接扔掉了
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务