一个JAVA程序员成长之路分享 ——来自码码在线
我搞JAVA也有些日子了, 因为我比较贪玩,上进心不那么强, 总是逼不得已为了高薪跳槽才去学习, 所以也没混成什么大牛, 但小日子过的还算滋润, 起码顶得住一月近万元的吃喝拉撒玩各种贷款信用卡 不为金钱过于发愁了。 我特别感谢当初贴吧遇见的那位大神, 虽然每个月也就聊那么几句, 但是他总能在我不知道该学啥, 该怎么走的时候, 给我方向, 毫不夸张的说,我现在的衣食无忧, 技术马马虎虎, 都是拜他所赐。 所以 我也想分享一些自己的成长过程 以及技术路线 希望一些迷茫的新人,或者想转行但是踌躇不前的老哥老弟们 能够得到一些建议吧
其实这行的工资待遇和前景,比起一些风吹日晒的苦逼行业 还是要好不少的, 很多人说程序员累, 加班 , 掉头发 但其实在生存压力面前 这都不算什么, 有哪一行是轻松的呢?起码程序员技术到位了,工资还是比较可观的。
那么 入门的新手 要达到一个什么水平才能找到工作养活自己呢?
首先 JAVA基础语法 集合类 线程 IO操作, 这些掌握了 基础算是过关了, IO操作有点麻烦 被搞晕没关系 知道什么时候用 用到了 再去搜索就行
其次 web部分 servlet jsp session cookie mysql数据库 都要知道怎么操作怎么用 前端页面的话 html不必太深 能看懂就行 js或者jquery会操作dom能够把后台数据放到合适的位置就可以 现在前段js技术五花八门 基本很少有项目让后台弄前端了 如果有并且很长时间了 你可以考虑跳槽了……
学到这个阶段,你需要知道一个请求从页面或者移动端发起之后 经历什么样的过程再返回去的 知道ajax是什么 会发起异步请求到后台 。
框架方面 别学struts hibernate了 很少有项目用了 学springmvc spring mybatis就可以 ,不必清楚实现原理 会搭框架 搞一个增删改查出来就行了
到这里,大约就是初级阶段了 你可以去找工作了,期望别太高,如果有人要你 工资大约是5到6k 如果是成都西安这些二线 还要低点。之所以说如果有人要,那是因为这两年行情不太好……这些基本技术需求已经没法找到一个比较靠谱的工作了。
这个初级阶段,其实是最苦逼学的东西最多的阶段,你没有太多的时间,顶着没有收入还要吃喝拉撒的压力,也许还有你父母家人 朋友的不理解和嘲笑,在他们眼里,你念书那么多年出来,却连个靠谱的工作也没有,还在穷折腾,如果你不幸已经进了培训机构,两万多的学费加生活费,等你上班后你会知道攒钱两万是多么多么的困难……种种压力面前,你需要在四到五个月杀出一条血路证明自己的价值,怒怼所有嘲笑,将来工资傲世亲朋好友,让你的父母欣慰,让你能够挺起胸膛做人,铺垫好你后面二三十年的路,让你的父母老了能够老有所依。 如果你正好在培训机构学JAVA 看到我这些文字 希望你能坚持一下,拿出你的热血来 咬牙学它四个月,所有苦难的日子,在拿到高薪offer的那一刻都是值得的。
如果你看到以上 还是无动于衷,我只能说,别学了 该干嘛干嘛去吧……去享受青春吧 然后腐烂吧……啃老吧 … 不用我骂你废物了 自然走人骂……随着年龄的增长 你会知道你当初多么的愚蠢不堪,你甚至有可能会丧失做人最基本的繁殖权利,因为没有女人会愿意和你在一起…即便是现在有图你帅气外表的 也会离你而去……因为你连稳定的生活也没法提供。
这些话说的极端了点…天下行业多得是,但我就事论事,你已经进了培训机构,八成说明你真的是找不到什么出路了……真的……希望能够骂醒一些迷途少年吧。
扯远了,接下来继续说技术干货。
上面说 如果有人要你……这个可能要吓到很多新人了,我特么那么拼命的学出来,结果还是没人愿意要,怎么办??别担心 你只需要把下一阶段的技术,学一部分 伪装一下经验,就可以了。
初级阶段之后,你能够用tomcat和ssm框架弄一个简单的项目出来了, 这时候 你可以注意一下编码规范,变量命名用英文,状态变量用枚举 常量等 你这样做是最低成本的伪装经验,因为新人写的代码往往和狗啃的一样……不要在controller写逻辑 只接收检验数据 调用service和返回信息 不要把request传进service里 那样会破坏依赖分离的初衷,dao基本没啥说的 就是查数据 我见过无数新人写代码都是 service和dao就一个干巴巴的方法 逻辑全写在controller里……这种的不用看 都是菜鸟。
你会框架的CRUD之后 你可以看一下nginx 可以尝试做一个负载均衡玩一下,这个不需要你写代码 只需要配置下 但是能有效的提高简历质量,你还可以学习下MQ 就从activeMQ开始 尝试怎么用对接把任务异步出去, 你还可以试试redis 做个简单的数据缓存或者会话缓存,这时候你再去找工作就立马不一样了,学这三个可能也就用两三周不到,但是你的简历会体现出一个中级程序员的水平。
那说到中级技术水平 个人觉得应该掌握的技术有 负载均衡 apache http 或者nginx均可, 队列 ActiveMQ 就行(这个是java语言写的比较贴近java ),缓存 redis就行 memcache用的越来越少了感觉,还有精力的话,可以看一下mogoDB 做个简单的demo存个json进去玩一玩。 然后你的简历又丰富起来了………你工作里肯定用不到那么多,但是你就往你简历里写,糅合进你的项目里去,反正你知道什么场景用这些就行,问不出来的。 初级和中级界限很模糊的,只是一些中间件的使用而已。
如果你已经学到这个地步,那你要是再说找不到工作, 我是不信的 这时候你找工作 如果在北上广深 应该有机会破万了,至于具体拿多少,看你的表达忽悠能力了。
接下来就是比较高级的部分了,这个阶段 你大概又陷入苦学的阶段了………因为你不能只会用,你要知道原理,不至于让你自己实现一个出来,但是基本原理要知道。
到了这个阶段,你要懂得jvm基本结构,要知道垃圾回收机制,常用垃圾回收算法,jvm简单调优参数, 数据库也是个重头戏,你要知道mysql事务隔离机制的实现,怎么优化sql , 要知道springmvc流程 spring的原理 事务传播机制,mybatis流程原理, 乐观锁悲观锁什么情况用,你要学会考虑系统瓶颈,系统容灾,单点故障, 你要懂得一致性是怎么回事,cap理论 paxos算法 以及zookeeper干嘛用的,能解决什么问题? 你要懂得soa架构,dubbo , 微服务 spring boot spring cloud 这些高级框架 尝试用一用,谷歌,开源社区 将要取代百度成为你解决问题的主要动力和前进的方向, 你会有种一览众山小的感觉,你会觉得弄个百万并发的系统其实并不难,难的是后续问题,日志处理 运维问题, 关于运维我给不了太多建议,可以了解下 zabbix 之类的 可以去学习下 docker 微服务加docker将是未来的趋势。
学到这个地步,你大概已经不用担心工作问题,这种三五年经验的高级程序员需求永远很旺盛,注意 我说的是三五年学习实践经验,不是三五年一直crud经验。这个时候你如果在北上广,你的工资大概会接近20或者更多,成都西安这边大约15到20 你已经不用为钱太过于发愁了。但是请不要太安逸,因为上面说的那些也只是初窥门径而已。
到了这个地步,工资已经比较难以提高了,但是大部分程序员是走不到这一步的……因为他们眼里只有薪资,对程序没有一定的热爱,是很难坚持到这一步的。之所以说三十岁是程序员的分水岭,就是因为很多人在艰难的学习实践路上或是倒下了或是满足了…或是踏足管理 产品 等等岗位 这也是一种出路 只不过我这里讨论的是技术,我个人危机感比较强,技术抓在手里,永远后顾无忧…脱离了技术,你八成会被绑定在某个岗位或者公司上……跳槽?别人未必要你,凭啥你过去就是管理岗位?
又扯远了,到了这个阶段,你以为到头了?太年轻了……上面所说的高级阶段,只是构建一个比较大型比较稳定系统的必须而已,问题还是很多的,比如上面说的日志处理,如何利用庞大的日志产生商业价值?如今的淘宝 京东这种系统,你去买个鼠标 它就能给你推荐个键盘等周边外设, 那么它为啥不给你推荐个内衣内裤呢? 想明白这些,你需要进一步学习, 大数据要来了。
flume 日志处理 hadoop hive presto hdfs storm spark 大数据 流式计算 ,这些够你喝一壶的了,学到这个份上,也不需要别人指点你什么了,你能到达这个阶段本身已经证明了自己的学习和技术能力。到达这个阶段,你八成已经成为一个跨语言程序员了,因为处理数据,并不是java擅长的,你要非用java………那我只能说 人生苦短,何必折磨自己。 你应该已经学会了python scala 也可能有些R语言, 这时候你会发现,语言真的只是工具而已,学个语言很快的,来来回回就是那么些东西而已,思想最重要。
到了这个阶段 你会觉得技术不过如此,妈的学也学不到头,学来学去也都是跟着老外屁股后面用框架而已………恭喜你 你的无聊和孤独求败心态 将会成就你的下一个阶段……
下一个阶段 也是目前的终极演进状态了 那就是 机器学习 深度学习 神经网络 人工智能 楼主目前正在往这个阶段进军……因为真的有点无聊,又想提高水平 只好继续学了。
到了这个阶段,你会有很多挑战…
首先的挑战 来自于 数学…是的 你没听错 数学… 线性代数 概率统计 高等数学 …都是你面前的拦路虎,曾经觉得编程只要一加一等于二的美好时代一去不复返了……你想继续前进,请先去学线代 概率……不然寸步难行什么也看不懂…… 先从机器学习开始吧 这个是最简单的…但是光就基本的机器学习几个算法 看懂的人没几个……基本的k-means算法 decision tree 朴素贝叶斯 这三个 就需要线性代数 概率统计 以及信息熵相关知识。真的相当抽象……后面的深度学习 神经网络 楼主粗略看了下 没点数学功底 还是放弃吧,天书一样的……
到了这个阶段……全中国能帮你的人 也不好找了……开源社区能帮到你的也越来越少了…一切靠自己。到了这时候,你会发现,当初甚嚣尘上的 大学无用论,编程数学无用论 是多么的可笑, 代码是最没价值的,核心是数学理论……公司不敢开源不是因为代码值钱…是因为开源就没人敢用你们公司产品了 因为全是烂代码……
等你一窥终极阶段的门径的时候,你会发现 你危机感越发的强烈了…妈的机器这么吊炸天,围棋都暴虐人类, 以后编程距离取代的日子也不远了………说实话 恐怕真的不远了……人类社会自从有了计算机,越来越发展的快, 人工智能将会在你我的有生之年发展壮大,近处说,你怎么保住饭碗,怎么提高待遇改善生活呢?……啥也不说了 学吧……
感谢大家能看完我这么长的分享,希望能够对大家有所帮助。