当一个java程序员到底有多难

简介:

当你下定决心要当一名程序员,特别是java程序员,你可能并不知道你将要面对的是什么。也许仅仅是因为兴趣,或许是歪打正着的入了这一行,又或者以为这个一个高收入的行业(毫无疑问,你悲催了)。

那,一个标准的java程序员到底要了解什么?擅长什么?精通什么?

首当其冲,你需要学习java语言(废话),于是你开始买个各种书籍,例如,Thinking in JavaCore Javajava 数据结构设计模式(java版);上各种培训班,各种网站以及论坛。当然,你会发现你根本不知道书里所说的什么面向对象编程,工厂模式这些狗屁不通的东西,你也不知道论坛上各种大神在争论不休的HashMap的实现方法,SSH的框架原理。但,没关系。无论如何你已经入行了,让我们看看,接下来你需要做什么……

半年之后,你终于对java有一些基本了解了,也写了一些自己的类,或者接口,虽然,它们只实现的了一个功能:Hello World. 你也了解了javac命令,classpath的加载规则,于是你不甘于只是在后台写写Hello World这样的代码,你希望能全方位的使自己的才华得到体现,于是你的噩梦开始了……

你听人说,现在流行的是B/S三层架构,无论是大神还是无名小卒,都在张开双臂,拥抱B/S三层架构,那,就它了,于是你开始了解三层架构,当你在度娘上搜索这个词汇的时候,你发现了SSH这个词出现的频率很高,于是,你要以SSH作为突破口,开始研究三层架构,不出意外的话,3个月后,你就分别学习了Struts,SrpingHibernate

你又发现了Struts是负责前端的展现,进而你又发现了JSP,JSF,Servlet,Spring MVC这些东西都是类似的功能,于是你又分别学习上述的几个名词,在分别使用了上述的前端以后,你发现,它们虽然设计理念很好,有的还是MVC的设计理念,但它们有一个共同的特点,丑。所以,为了让你的前端界面能漂亮一点,你又开始了解前端UI,于是你又开始了JQuery,Ext,Dojo的学习,你把它们和你的Struts或者Spring MVC集成起来,你长吁一口,终于看起来像那么回事了,为了尽快实现功能,你迫不亟待的要开始研究数据持久化了……

Hibernate是你的切入点,随即你又发现了它的替代品,包括iBatisJPA,它们功能重合而又各有优缺,有官方的,有民间的,但它们的作用对你来讲只有一个就是GRUD(增删改查),你对它们的了解也就到此为止了……

于是,你又继续往下一层走,你发现了你还需要掌握数据库知识,因为它们才是真正的数据载体,于是,你开始学习,Oracle,Sql Server,My Sql甚至是DB2,你还学会了SQL的基本语法,可以自己写查询脚本,甚至是存储过程;你发现它们和你当年学的的Access是何等的相似,但体积却打了无数倍,因为增加了太多你这辈子都不会用到的功能,当你庆幸自己终于是关系型数据库一知半解的时候,突然发现自己处在了数据库革命前夜,随着facebook,twitter这个社交网站的风靡,越来越多的程序员开始使用NO-SQLNEW-SQL,它们像海啸一样扑面而来,你还是由于是否要加入它们的时候,发现自己早已经被它们包围,于是,你不得不再一次的学习,Redis,MongoDB,Cassandra,Neo4j ……这些虽然都是非关系型数据库,但却是完全不同的设计理念和操作方法,这也就意味着,你要分别学习它们,What's the f@#k.但,终于,在历经了另外3个月的磨难后,你终于了解它们了……

现在,你终于进入了SSH框架最核心的那个S了,Spring。多么喜人的名字,充满了生机。你了解到当年它的出现就是为了推翻EJB专政,所以,为了更好的了解它的对手,你一边学习Spring,一边学习EJB,你发现了它们是多么的类似,如今的Spring越来越臃肿,而当年的EJB如今却焕发着青春,于是,你迷茫了,在你学完了Spring的核心框架Spring-Core,安全框架Spring-Security,Web框架Spring-MVCWebFlow,快速开发框架Spring-Roo。

当你终于从前端到数据库走了一遍,开始写代码的时候,Spring告诉你,你一定要面向接口编程,这样我就可以更好的使用我的依赖注入了,于是你有意识的按照规范约定来写代码,定义配置文件,声明和使用注解。当然,这还不后,你还需要管理好你的代码,于是你又开始学习版本管理工具,VSS,CVS,以及SVN,最后让你发现SVN是最适合你的工具,你把自己的代码和文档转入SVN之后,你突然发现,当下最流行的是GitHub,你又一次落在了潮流之后;随后,为了更高效的管理和编译你的代码,你开始学习Ant,这个Apache基金会的开源项目,当你发现它给你带来的益处并决定好好研究一番的时候,Apache已经开始全力推Maven了,甚至还建立了专门的jar的资料库,来方便他的用户维护自己的jar文件,在巨大的诱惑之下,你转入了Maven阵营,在学完了Maven之后,你继续发掘其他的自动化工具,于是你找到了JUnit,它大大简化了你的测试流程,在你写好了合理的测试用例之后,而且Maven在编译打包你的应用的时候,甚至可以自动找你的测试类,并自动测试,简直就是火力全开,你跟高兴……

终于,在Maven的帮助下,你打好了自己第一个应用的war包,现在将它部署到应用服务器上的时候了,这时候,选择题又来了,到底是选用哪个应用服务器,有着选择综合症的你,果断的把WebLogic,Tomcat,GlassFish,WebSphere……都学习了一遍,当你发现Tomcat这个小巧玲珑的容器更适合你的时候,你终于开始了自己的发布流程,在输入了http://localhost:8080/yourapp之后,你终于看到了自己的应用…… 没有出来,因为,报错了,跟随着Tomcat的日志,你发现了问题所在,是JNDI的配置问题,你通过查资料,学会了JNDI的配置,纠正了错误。这件事让你也意识到了日志是个有用的东西,于是你开始学习Log4j,并把自己的应用中都加入了日志。

当你看着自己的应用终于发布成功,你意识到,你可以接活了……

随后你就发现,你的客户远比你的电脑要复杂的多

它们要求,与其他系统集成,于是你开始学习Web Service;

它们要求,系统的冗余性,于是你开始学习Tomcat集群和Apache负载均衡;

它们要求,调用本地应用,于是你开始学习JNI和JNA;

它们要求,文档打印,于是你开始学习iText和POI;

它们要求,Linux做服务器,于是你研究Linux下的配置和部署;

它们要求,任务派发,于是你学习工作流;

……

于是,你才发现,当一个程序员不难,难的是一个有勇气面对客户需求的程序员。


原文发布时间为:2018-10-8

本文来自云栖社区合作伙伴“Java程序员联盟”,了解相关信息可以关注“Java程序员联盟”。

相关文章
|
1月前
|
存储 安全 Java
Java 程序员极速上手 go
Java 程序员极速上手 go
30 0
|
2月前
|
设计模式 缓存 分布式计算
|
3月前
|
人工智能 Java 大数据
Java程序员真的还有未来吗?如何备战2024春招?并狂拿大厂offer?
Java程序员还有未来吗? 嘿,小伙伴们,你们有没有想过Java程序员还有没有未来? 哈哈,别担心,我这就来给你们答疑解惑! 首先,让我们来看看Java的发展历程。自从Java诞生以来,它就一直是编程界的一颗璀璨明星。从Web应用到企业级应用,再到移动应用,Java无处不在。那么,现在呢?现在,随着人工智能、大数据和云计算的兴起,Java依然发挥着重要的作用。这些领域都需要大量的Java程序员来支持它们的发展。 那么,有人会说:“哎呀,现在出现了那么多新的编程语言和框架,Java程序员会不会被淘汰啊?”哈哈,别担心,Java程序员们!这些新语言和框架的出现并不会让Java消失。相反,它们
80 0
|
3月前
|
Java 程序员
Java程序员-你真的了解死锁吗
Java程序员-你真的了解死锁吗
37 0
|
4月前
|
存储 缓存 算法
Java程序员想年后跳槽,对JVM没有深入的理解,我劝你还是别跳了
Java 虚拟机是学习 Java 的基础,也是迈入高级 Java 开发工程师的必备知识点。所以今天这篇文章我们来聊聊如何从零开始学习 Java 虚拟机。
|
3月前
|
算法 架构师 安全
10年Java面试总结:Java程序员面试必备的面试技巧
作为一名资深10年Java技术专家,我参与了无数次的面试,无论是作为面试者还是面试官。在这里,我将分享我的一些面试经历和面试技巧,希望能帮助即将面临面试的Java程序员们。回顾我的Java职业生涯,我清晰地记得一次特别的面试经历。那是我申请一家知名科技公司的Java开发岗位。为了这次面试,我花了几周的时间准备,这不仅包括Java的基础和高级知识,还有关于公司产品的研究。
146 0
|
4月前
|
消息中间件 缓存 Java
一次阿里的面试经历,让“我”明白了Java程序员之间的差距
上周在拉勾上收到一个蚂蚁金服的大哥要我的简历,当时很惊讶,居然有蚂蚁金服的找到我,然后想都没想就给了。 受宠若惊呀,我知道自己的水平跟阿里的差距有多远,以前一直没用勇气去投,连试试都不敢。这次居然主动找过来了,当时就再想,难道阿里这么缺人么?还是只是为了完成某些KPI,当然了,我这种想法比较幼稚。
|
23天前
|
XML Java 程序员
作为Java程序员还不知道Spring中Bean创建过程和作用?
作为Java程序员还不知道Spring中Bean创建过程和作用?
14 0
|
1月前
|
Java 程序员 数据安全/隐私保护
【Java每日一题】——第十二题:完成百战程序员系统登录功能
【Java每日一题】——第十二题:完成百战程序员系统登录功能
30 0
|
3月前
|
算法 搜索推荐 Java
java程序员,是不是很想进字节跳动?开发三年的我拿到了入职通知
别误会哈,不是老苏我哈,老苏没有奔着大厂去奋斗的精力了! 这是一个来自粉丝(程序员小博)的投稿