一个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 朴素贝叶斯 这三个 就需要线性代数 概率统计 以及信息熵相关知识。真的相当抽象……后面的深度学习 神经网络 楼主粗略看了下 没点数学功底 还是放弃吧,天书一样的……

到了这个阶段……全中国能帮你的人 也不好找了……开源社区能帮到你的也越来越少了…一切靠自己。到了这时候,你会发现,当初甚嚣尘上的 大学无用论,编程数学无用论 是多么的可笑, 代码是最没价值的,核心是数学理论……公司不敢开源不是因为代码值钱…是因为开源就没人敢用你们公司产品了 因为全是烂代码……

等你一窥终极阶段的门径的时候,你会发现 你危机感越发的强烈了…妈的机器这么吊炸天,围棋都暴虐人类, 以后编程距离取代的日子也不远了………说实话 恐怕真的不远了……人类社会自从有了计算机,越来越发展的快, 人工智能将会在你我的有生之年发展壮大,近处说,你怎么保住饭碗,怎么提高待遇改善生活呢?……啥也不说了 学吧……

时间: 2024-10-12 21:44:12

一个JAVA程序员成长之路分享的相关文章

分享下多年积累的对JAVA程序员成长之路的总结

http://blog.csdn.net/zhongzelin/article/details/8643269我也搞了几年JAVA了,由于一向懒惰,没有成为大牛,只是一普通程序猿,不爱玩社交网站,不爱玩微博,唯独喜欢百度贴吧,潜水很久了,手痒来给新人分享下从新手成长为老鸟的已见,也刷刷存在感,应该不比曝照差吧. 首先初识语法的阶段,必须要学会怎么操作对象,操作if和for,操作list set map,然后是线程.IO和jdbc什么的,其余的,若是一时不理解,可以后边需要时再学.这阶段完了,你可

《菜鸟程序员成长之路:从技术小白到阿里巴巴Java工程师》

<菜鸟程序员成长之路:从技术小白到阿里巴巴Java工程师> 国庆节快乐!一年一度长度排第二的假期终于来了. 难得有十一长假,作者也想要休息几天啦. 不管你是选择出门玩,还是在公司加班,在学校复习,都希望你过好这个长假. 没有出去玩的也不用羡慕别人,利用这段时间充充电,不比去旅游看人头要好的多吗? 最近终于把我的原创文章整理成一本电子书了,趁着国庆开始之前发布出来,希望对你有所帮助. 这本电子书整理了我过去一年时间里在微信公众号[黄小斜]里创作的文章,包括Java学习.求职面试.成长心得.感悟思

一个java程序员自学IOS开发之路(四)

根据上图,由于我是一个Java程序员,前面两个阶段还是学的比较快的,但是由于电脑配置不行,光是开启虚拟机登陆OS系统就卡的不要不要的了,在那里面写代码简直是煎熬= =,后面的UI学习又要启动ios模拟器,根本无法进行. 于是下定决心,入手一台Macbook pro,告别我用了四年的联想~今天本本到货啦,哈哈^_^,可以愉快的继续了 2015/10/14 Day 15 为了便于开发者打造各式各样的优秀app,UIKit框架提供了非常多功能强大又易用的UI控件 2015/10/16 Day 16 第

Java程序员学习之路

1. Java语言基础 谈到Java语 言基础学习的书籍,大家肯定会推荐Bruce Eckel的<Thinking in Java>.它是一本写的相当深刻的技术书籍,Java语言基础部分基本没有其它任何一本书可以超越它.该书的作者Bruce Eckel在网络上被称为天才的投机者,作者的<Thinking in C++> 在1995年曾获SoftwareDevelopment Jolt Award最佳书籍大奖,<Thinking in Java>被评为1999年Java

能从普通Java程序员成长为架构师,只因做到了这3点

毋庸置疑,Java 是目前世界上最流行的语言,也因此作为 Java 程序员,面临的竞争异常激烈.那么,该如何才能"更有竞争力"?如果大家如果在自学遇到困难,想找一个java的学习环境,可以加入我们的java学习圈,点击我加入吧,会节约很多时间,减少很多在学习中遇到的难题. 所谓竞争力,其实包括两个方面:搞得定当下的事,并且未来有不错的发展空间.具体如何体现呢?有下面 3 点: 1.既然选择了 Java 技术栈,深入学习 Java 是首要的.不管是 Web 应用.后端服务还是大数据等等,

当世界上只剩下一个Java程序员

公元2050年,世界上只剩下了一个Java程序员. 你可能要问了,别的人都去哪儿了?原因很简单, Java没落了. 大约在2030年左右,出现了一个叫做X的语言,它既能做系统级开发(操作系统.数据库.编译器),也能做服务器端的开发,手机端,Web端都不在话下. 更为重要的是,这个新的编程语言和人类的自然语言很接近,无论大人小孩,稍微一学,很快就可以来编程.于是排名前100的语言统统消失了, 程序员们都失业了. Java也不例外,这个昔日的霸主在留下了一堆庞大而复杂的系统以后就不见了. Java程

一个Java程序员应该掌握的10项技能

1.语法:必须比较熟悉,在写代码的时候IDE的编辑器对某一行报错应该能够根据报错信息知道是什么样的语法错误并且知道任何修正. 2.命令:必须熟悉JDK带的一些常用命令及其常用选项,命令至少需要熟悉:appletviewer.HtmlConverter.jar.java.javac.javadoc.javap.javaw.native2ascii.serialver,如果这些命令你没有全部使用过,那么你对java实际上还很不了解. 3.工具:必须至少熟练使用一种IDE的开发工具,例如Eclipse

一个java程序员自学IOS开发之路(一)

首先自我介绍吧,南昌大学软件工程专业2015界毕业生,从大学牲变到程序猿,由于在学校里只学了Java语言和B/S架构开发,于是乎出来实习和工作也是搞Java网页开发. 但是作为一名果粉,现阶段想转IOS开发,最近也开始自学了,写点东西记下来吧 2015/9/17 Day 1 安装虚拟机并安装Mac OS X系统(苦逼的我还在用联想Y-470) 开始看C语言基础,由于大学里学过一点,还是比较轻松的 2015/9/19 Day 2 由于Java中没有指针,开始看指针的相关知识 2015/9/20 D

一个java程序员自学IOS开发之路(十)

2015/11/26 Day 41 今天开始学起触摸事件 在用户使用app过程中,会产生各种各样的事件 iOS中的事件可以分为3大类型 响应者对象 在iOS中不是任何对象都能处理事件,只有继承了UIResponder的对象才能接收并处理事件.我们称之为“响应者对象” UIApplication.UIViewController.UIView都继承自UIResponder,因此它们都是响应者对象,都能够接收并处理事件 UIResponder内部提供了以下方法来处理事件 触摸事件 - (void)t