`
hejiajunsh
  • 浏览: 409910 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

someone分享的JAVA程序员成长之路

阅读更多

首先初识语法的阶段,必须要学会怎么操作对象,操作if和for,操作list set map,然后是线程、IO和jdbc什么的,其余的,若是一时不理解,可以后边需要时再学。

 

这阶段完了,你可以写些能在控制台打印出来的小程序,锻炼下逻辑思维。也就是号称JAVASE毕业了,其实不过是入门而已,如果要往WEB方向发展,这些倒是基本足够了。

 

接下来要学HTML JSP SERVLET 数据库 JAVASCRIPT TOMCAT,目标,写出第一个动态网站,也许只是个登陆功能,只能展示下个人资料,但这是很重要的一步,你要弄清楚的是,一个用户的点击产生的请求,是从哪里发起,哪里接收,哪里处理,哪里返回,你得理解浏览器和服务器的关系和分工,cookie和session,request和response。这个是个WEB开发的学习初级阶段,这都是些JAVA诞生以来最原始的最官方的WEB开发技术,当然现在真正的项目很少直接采用这些技术了,为了不断提高技术的易用性、开发效率和可维护性、可扩展性,无数开源项目都是在这些原始技术的基础上封装、改进。所以这个阶段不要盲目乐观地跑去找工作或者对实习挑三拣四,你会被打击到的。

 

好,初始阶段完成,开始进入WEB开发的正题,首先是传说中的三大框架,struts hibernate spring成为熟练的增删改查程序员是必须的,在这个阶段你还要理解为什么要用这仨而不是那些JSP SERVLET JDBC,你要体会到写MVC、三层架构的好处。这个阶段不要轻易质疑三大框架的价值,也许刚开始你会觉得麻烦,觉得他们有时候是多此一举,一两年后回过头来你会觉得少了这些框架你已经很难干活了。这个阶段还要避免的心态是能熟练地增删改查了,就认为写程序不过如此,然后往简历上填个精通,这也是新手面试被批得体无完肤的原因之一。如果你学得好,这会应该能熟练地写个博客啊,小论坛啊之类的WEB项目了,也就是达到了就业的基本要求。

 

接下来就没有固定模式了,你的第一家企业对你的影响会很大,我见识过烂企业是如何毁新人的,用着设计恶劣的架构,老掉牙的技术,不断地耽误新人的成长,有的员工在这种企业一呆数年,思维已经完全被错误观点定型,深陷于公司业务和老系统中疲于奔命,看似能解决问题,却无法给公司带来真正的进步,就像一个用了数年砍刀的人,就算再熟练,刀法再好,也打不过用枪的。如果离开了这个公司,恐怕很难在这个行业再立足。记得有个说法很好,一个人用10年的时间重复做头一两年做的事,你的真实工作经验其实还是一两年。烂公司的老员工就是如此。在这头一年里,定个标准吧,你应该能做到的有:

 

1、把一些常用的琐碎技术学会了,比如xml的作用和实际运用,如何操作文件,如何运用日志,如何简化封装常用的工具类,比如日期操作、编码处理、分页模块等等,这些小东西会占用你大量的时间去处理摸索。

 

2、把数据库用好。数据库不是会增删改查就可以了的,你要关注事务设置是否合理,是否有可能产生脏数据,是否要动用乐观锁悲观锁等等,重要数据出了错,无论是技术上还是业务上都是很麻烦的事。

 

3、懂得什么是集群,什么是分布式,懂得怎么向别的系统发请求,交换数据,webservice。

 

4、如果你也写页面,你要会用JAVASCRIPT,不一定要很深入,你可以用JQUERY代替,做到无刷新的页面操作以及AJAX请求。

 

第一年能达到这个程度,你绝对已经在平均水准之上了。在我达到这个水平时,我有种似乎一切网站开发都不在话下的感觉,当然后来我很快就发现了我还差得太远太远....这个阶段想面个高薪的工作还是很难的,只能说达到温饱线了,不用为柴米油盐发愁。

 

下一个阶段,你应该考虑你的代码质量了。

 

1、多线程和异步、并发的概念会忽然变得很重要,因为在一个对性能有要求的系统里,是不会允许你把各种琐事都排着队一件件去办的,你不能老写些a方法调b方法再调c方法再调d方法然后返回的代码。你开始想起有队列这种东西,有runable这种东西,你开始觉得自己的代码高端起来了,和当年的增删改查程序员有天壤之别。但同时麻烦也来了,你开始遇到线程安全问题,尤其是当你的程序跑在一个多机环境而不是单机环境里的时候,你会对这些很头痛。对于这些问题,Jms技术是个很有代表性的东西,当然并不像ssh那么常用。

 

2、你会发现数据库性能实在不行,出于不甘现状,或者赶时髦,你该去了解nosql了,memcached redis mongodb,眼花缭乱,没关系,试着用用,能很好地缓解mysql之类关系数据库的压力。

 

3、出于公司某些业务需要,你可能会钻研一个特定技术领域,比如全文搜索技术,lucene\solr,比如工作流jbpm,比如权限系统,单点登陆之类的,又或者某些特定业务领域的算法研究,这些是你的加分项。

 

4、你开始发现你的代码很乱,久了以后自己都看不懂,重复的,难以重用的代码堆积如山,不想维护,BUG百出。于是你要开始重视设计模式,合理地改造下自己的代码习惯,不再被僵化的SSH,MVC三层架构束缚住。

 

5、Google和各种资料是你进步的动力,极少再遇到必须请教别人才能解决的问题,如果你这个阶段还老是问别人,你的技术生涯也就快到头了。

 

这个阶段,如果你的交际和自我推销能力不是太差,你的收入将是白领水平,至少接近了。

 

我觉得多数程序员在工作多年之后都能达到这个水平,有的人只需要两年,有的人却要用上五六年,在这个阶段落伍的人,有的是出于天赋和思维所限,有的是出于对技术缺乏热情,有的是出于工作内容的制约。等到年近中年,再也拼不过年轻人,被淘汰出局,只能在自嘲为屌丝和码农的无奈中黯然转行。

这是个很重要的分水龄,你能不能继续进步,能不能在30岁以后继续从事技术工作,能不能在公司里独当一面,我觉得就看你能不能超越这个阶段了。我前面提到的烂公司里的工作数年的项目经理,连这个层次都还没达到...

 

接下来又是个全新的阶段。

 

1、你要读读优秀开源项目的源码,你要搞懂一些当年不懂的基础知识,你开始理解thinking in java的精髓,你能写一些底层的代码,有时还会觉得自己封装的比某些开源工具更好用更简单。

 

2、WEB的难点和重点永远都在于性能、负载能力上,而现在网络的发达造成了数据量和操作密度的大大上升,硬件却没有相应的进步,你得试着更好地运用更多的服务器来协同工作,从WEB端到服务端到数据库,全都需要集群,需要分布式,需要合理的控制数据的流向,掌握好网站上下,一大堆机器的平衡,找出性能的瓶颈,找出稳定性和安全性的瓶颈,硬件出现故障,第三方技术出现错误,将被当成家常便饭融入到你的系统和代码里仔细考虑。

 

3、开始觉得方案无比地重要,一将无能累死千军将不断应验,一个不好的设计,一个不好的方案,会让一群优秀的程序员工作成果大打折扣。你要关注架构知识,不能再满足于SSH三层架构到底。领域驱动设计,面向事件开发,敏捷开发等等一系列的思想在关键时刻能决定你项目的生死,这个阶段不再有标准范例让你照抄,你只知道思想和原理,实践却需要自己不断尝试和改进。

 

4、多关注各种杂七杂八的开源技术,有些你可能前面已经接触过了,和通信有关的,和集成开发环境有关的,和架构有关的,各个领域你都应该能信口说上几个主流技术,虽然你可能只是听说过,了解,但关键时刻你得知道如何去选择技术,并快速掌握它。你还会去考虑尝试下别的语言,这里不是说转向什么C++ C#之类的,那和JAVA程序员不相干,我说的是一些运行于JVM之上的语言,比如scala和groovy,初识他们时你会觉得java真的老了。但当你回到一个综合性的大型项目中,又会觉得java积累下来的整个体系技术是如此完善,就像一个工业化标准一样。

你能把这个阶段实践好,胜任项目经理,乃至中小公司的技术总监都是可以的。

 

不知不觉写了这么多了,以上是我个人眼里的一般向JAVA EE发展线路,限于篇辐也不全面,实际个人成长路线可能因为工作内容的不同差异会很大,有的人偏向了底层研究,有的人偏向了业务需求设计,有的带有浓重的行业色彩,而且技术之外,还有很多知识也很重要.w做JAVA没有轻松的方向,但一个对技术抱有兴趣的人,走到这一步时,仍然会对开发抱有热情,想要写出好的项目。纯为了生计而工作的程序猿是走不到这一步的。

分享到:
评论

相关推荐

    英文版程序员面试情景对话.pdf,这是一份不错的文件

    英文版程序员面试情景对话.pdf,这是一份不错的文件 作为一份英文版程序员面试情景对话文件,这个文件提供了一个完整的面试过程,从开始的自我介绍到最后的薪资谈判。以下是从该文件中提取的关键知识点: 面试流程...

    Java Interview Guide.epub

    You only have a short time to convince someone that you're worth hiring, so you can't afford to go to a job interview unprepared. Unfortunately, memorizing the answers to interview questions just ...

    Java中对象与引用对象的关系

    Java中对象与引用对象的关系 在 Java 中,对象和引用对象的关系是一个非常重要的概念。从宏观的角度来看,对象是类的实例。例如,我们可以定义一个名为 Someone 的类,代表一些人(通过指定年龄、性别、性格等基本...

    Java对象哈希映射库JOhm.zip

    JOhm 是一个 Java 的对象哈希映射库,用于在 Redis 中存储 Java 对象。JOhm 基于 Jedis 开发。 示例代码: jedisPool = new JedisPool(new Config(), "localhost");  JOhm.setPool(jedisPool); User ...

    for_someone-do_it_if_be_MEN.rar_it

    标题中的"for_someone-do_it_if_be_MEN.rar_it"可能是指一个针对初学者的Java编程学习资源包,特别是为那些希望快速掌握Java技术的人设计的。"MEN"在这里可能是一个象征性的词语,意味着决心和勇气,鼓励学习者积极...

    git-blame-someone-else, 为你的错误代码责备别人.zip

    git-blame-someone-else, 为你的错误代码责备别人 git-blame-someone-else我爱 git-blame-someone-else - 李纳斯・托沃兹 说, * !安装$ git clone https://github.com/jayphelps/git-

    java网络对战的国际象棋源码

    一个可以进行网络对战的国际象棋源码。这个程序可以换棋子和棋盘,还有聊天、以applet运行等功能,非常不错!! <br>一、用ant编译源码(所有源文件及目录结构请下载) <br>C:\cs>...如其中之一 <br>C:\cs>java ...

    Java Web Services

    the interface of someone else's service; and how to use UDDI to advertise (publish) and look up services in each local or global registry. Java Web Services also discusses security issues, ...

    JAVA面试题目 JAVA面试题目一览表

    "When someone criticizes my work, I try to view it as an opportunity to learn and improve. I listen carefully to their perspective, consider the feedback, and apply it to future tasks."例如:“我将...

    连连看java源程序

    连连看java源代码This is the project README file. Here, you should describe your project. Tell the reader (someone who does not know anything about this project) all he/she needs to know. The comments ...

    Someone special

    Someone special

    someone like you吉他谱

    someone like yousomeone like yousomeone like yousomeone like yousomeone like you

    SIP.rar_java code for SIP _sip

    2. **Java SIP API**:Java提供了一个名为JSR 289的API,也称为Java SIP API,它允许开发者用Java语言来编写SIP应用程序。这个API包括了处理SIP消息、注册、会话管理等一系列接口和类。 3. **SIP Provider**:在...

    someone is like you.py

    someone is like you.py

    PyPI 官网下载 | pbt-someone357-1.0.0.tar.gz

    PyPI是Python开发者发布和分享他们开源软件的地方,用户可以方便地安装和使用这些库。描述进一步证实了这个资源的确来源于PyPI,并且文件以`.tar.gz`格式压缩,这是一种常见的在Linux和Unix-like系统中使用的归档和...

    Building Maintainable Software, Java Edition(O'Reilly,2016)

    Have you ever felt frustrated working with someone else’s code? Difficult-to-maintain source code is a big problem in software development today, leading to costly delays and defects. Be part of the ...

    if you love someone精美PPT模板

    if you love someone精美PPT模板

    JAVA 注解详解及简单实例

    JAVA 注解详解及简单实例 JAVA 注解是指在 Java 语言中使用的元数据,主要用于生成文档、跟踪代码的依赖性、编译检查和简化项目配置等多种目的。下面是关于 JAVA 注解的详细介绍和简单实例。 一、什么是注解 ...

Global site tag (gtag.js) - Google Analytics