Java程序员掉发系列——程序员的成长之路

一:Java语言学习

  对线程(thread),串行化,反射,网络编程,JNI技术,容器(Map,List, Iterator), 类加载器(ClassLoader),输入输出流,垃圾回收机制, 有比较深入的了解,最起码做过项目应用。
  有过Java项目的性能优化经验,最起码掌握一种性能监视工具的使用,熟悉JVM参数,最起码知道可以在JVM启动时指定不同垃圾回收机制,以及不同垃圾回收机制之间的差别,熟悉JVM参数优化。

二:J2EE方面

  最好知道JDBC规范是怎么回事情,面对Oracle数据库如果告诉你JDBC驱动不能用了,你还知道有OCI驱动可以。掌握常见的SQL语句,熟悉JMS, JNDI等组件,掌握一套web开发模式,从前台到后台,有能力整合好这样的框架。
  理解并掌握MVC思想,像SSH已经实现了MVC的分层,几乎不需要你自己再实现,假设你开发一个简单的Swing程序,你能MVC就说明你真的掌握了MVC的精髓。
  有能力在J2EE前端开发中构建自己的MVC模式,知道什么是WEB2.0,知道什么是SOA, SaaS, SaaP等含义

三:理解并能合理运用设计模式

  UML建模:知道并理解设计模式中蕴含的几种基本原则如:里氏替换原则, 开闭原则,合成复用原则,依赖倒置原则有很好的理解,并能举例说明。对常用的设计模式如工厂模式,单例模式,观察者模式,责任链模式,桥接模式等知道灵活运用,明白什么是回调(Callback)。
  最后用一位高人话来总结设计模式,它是为了让软件更容易被别人读懂,更容易维护而产生,设计模式本质是程序员之间的交流,如果A用工厂模式设计一个模块B来接替,A只要说该模块是工厂模式实现,B维护起来应该容易得多,所以设计模式是关于交流,不关于代码。切忌滥用设计模式。学会使用UML建模工具至少熟悉一种URL建模工具。

四:注重用户体验

  掌握KISS原则,知道欧卡姆剃刀原则:顾客就是上帝这个口号我们已经喊了N年了,程序员的劳动成果最终也需要转换为服务提供给客户,用户体验至关重要,常常看到的场景是功能实现了,软件很难使用,程序员有个很充足的理由我不是美工,其实注重用户体验跟美工八杆子也打不到一起,FoxMail的成功在很大程度是用户体验的成功,友好,清晰的用户提示,强的容错与纠错设计是获得好的用户体验的不二法门。
  傻瓜相机顾名思义傻子都会使用,这个就著名的KISS原则(Keep it simple and stupid)意思是UI设计要简单明了,傻子一看就知道怎么用,想想我们做出来的东西,对照说明书都不知道怎么用。另外一个就是最著名的例子IPhone手机外观设计,是典型的欧卡姆剃刀设计原则来完成人机交互。

五:自动测试与软件配置管理(SCM)实现

  知道什么是软件配置管理,知道Hudson — http://java.net/projects/hudson/运用该工具SCM,知道怎么获取测试代码覆盖率, Java有效代码行数(NCSS),完成firebug, JDepend等工具集成ant/maven。熟悉并注重在开发过程中使用JUnit单元测试,理解白盒测试规范。

六:熟悉常见的网络通信协议

  对HTTP协议,知道POST, GET的区别是什么,阅读过HTTP相关的RFC文档。学会使用sniffer工具查看数据包,帮助查找与调试程序,知道TCP与UDP的区别,知道并理解E—Mail发送与接受的协议如SMTP, POP3,IMAP等协议,了解MIME与Base64编码。知道组播是怎么回事情。

七:面向市场,永远对新技术保持渴望

  计算机技术的发展日新月异,做为IT行业的软件开发人员要不断的给自己充电,更新自己的技术与时代保持同步,同时还要面向市场。
  华为总裁任正非说过—“华为的技术革新必须面向市场”,作为程序员同样要有市场意识,很多人都后悔没有在android刚出来的时候加以关注学习。那些很早关注android开发技术的很多程序员因此获得丰厚回报。
  如今HTML5得到越来越多的浏览器厂家支持,你是否已经跟上脚步,开始学习。

八:保持谦虚,三人行必有我师

  乔帮主说他要保持初心,努力学习,我等更应该保持谦虚,IT技术发展日新月异,在你眼中不可能实现的技术,也许别人早已经有思路,保持谦虚就有机会吸取别人身上的长处。
  古人有云:满招损,谦受益。一个得道的高人更是说出了“下下人,上上智”的禅语。永远不要拒绝帮助你周围的人解决难题,解决难题是进步最快途径,不要放弃任何一次可以提升自己技术与能力的机会。

九:养成总结的习惯

  上学的时候老师常让写小结,也没总结出来所以然,以至于工作以后再也不提这档子事情,建议每个项目做完以后对自己都有个小结,总结自己在项目里面学到了什么,反问自己能不能完成在不需要别人帮助的情况下自己完成这样的系统搭建,是否熟悉与掌握项目中所用到的技术,即使有些东西不是你负责完成的但是什么也不能阻挡一颗求知的心。
  总结要尽量详细记录你遇到那些难题是怎么一个一个的解决的,下次再遇到你是否可以很快解决或者避免这样的问题。有总结才有提高。
  孔子曰:学而不思则罔,如果我们只是coding到吐血,不思考,不总结提高,永远不可能有能有本质提高,秦相李斯有云:"泰山不让土壤,故能成其大,河海不择细流,故能就其深”,点滴积累不断总结方能量变导致质变。

十:数学功底与算法知识

  用任何编程语言开发应用,都离不开核心算法支持,很多国外的软件单单从UI上看,恐怕写几年程序的人都可以模仿,但是UI之下的那些真实深浅不一,相信不是你想模仿就可以模仿的,为什么我们越来越山寨,因为我们没有核心竞争力,对于程序员来说算法与数学显然是他最重要的核心竞争力之一。
  《算法导论》 《编程珠玑》等书绝对值得读十遍。微软亚洲研究院视觉计算组负责人在一次演讲中说到他们招人的标准是“三好学生-数学好,编程好,态度好"。可是现实的普遍情况却是-微机原理闹危机,汇编语言不会变,实变函数学十遍。计算机基础知识被大家普遍忽视。从今天开始好好学习吧!!!

十一:Java代码反编译与代码保护

  Java编译产生字节码,因而可以被轻松的逆向工程(反编译),微软的C#生产的DLL也一样可以被轻松反编译。正式由于这个原因产生了许多Java开源的代码保护工具,而Proguard是其中佼佼者,已经被google集成在android之中用于Java代码保护。访问这里了解更多

十二:努力成为某个行业或者领域骨干

  面对漫长的职业生涯,要想不被淘汰,必须具备一招鲜吃遍天下的能力,选择自己感兴趣的方向,努力而深入的研究,计算机技术发展到今天已经细分很细,努力研究一种Java开源框架或者开源HTTP服务器源码或者研究过网络爬虫源码或者WEBKIT内核,不愁没有人要你。
  如果你是非常了解金融,企业ERP,证券,保险,移动应用行业的应用开发业务的人,一样不用愁工作。这些知识不随语言而改变,努力做一个有核心竞争力的Java程序员。

十三:提高语言与书面表达能力,掌握基础的项目管理知识

  文档与语言表达能力是最好的向外界展现自己能力的方式,很多程序员编程能力很高,表达能力一般,Linux能够成功,除了归功于网络社区的力量之外,也得益于Linux作者本人给各大基金会写信,宣传推广,试想如果没有良好的书面语言表达能力,即使Linux系统再优秀,却无法被准确表达,失去各大基金会的支持, Linux还会像今天这么好的局面嘛。所以重视文档,重视提升沟通与表达能力,才有可能成为Java系统程序员。
  掌握基本的2/8原则,会将模块细化分配给不同的人,预见并控制项目风险,把握项目进度,优化流程,合理的时间管理,了解TDD,熟悉敏捷开发模式,常规软件开发模式。

十四:掌握英语,良好的读写能力(外企人员向上晋升的不二法门)

例如:

Java基础常见英语词汇
序号英文寓意序号英文寓意
1OO: object—oriented面向对象56Throw抛出
2OOP:object—oriented programming面向对象编程57Throws(投掷)表示强制异常处理
3Object对象58Throwable(可抛出的)表示所有异常类的祖先类
4JDK:Java development kitjava开发工具包59Lang:language语言
5JVM:javavirtual machinejava虚拟机60Util工具
6Compile编绎61Display显示
7Run运行62Random随机
8Class63Collection集合
9System系统64ArrayList(数组列表)表示动态数组
10out输出65HashMap散列表,哈希表
11print打印66Swing轻巧的
12line67Awt:abstract window toolkit抽象窗口工具包
13variable变量68Frame窗体
14type类型69Size尺寸
15get得到70Title标题
16operation操作,运算71Add添加
17array数组72Panel面板
18parameter参数73Layout布局
19method方法74Scroll滚动
20function函数75Vertical垂直
21member—variable成员变量76Horizonatal水平
22member—function成员函数77Label标签
23set设置78TextField文本框
24public公有的79TextArea文本域
25private私有的80Button按钮
26protected受保护的81Checkbox复选框
27default默认82Radiobutton单选按钮
28access访问83Combobox复选框
29package84Event事件
30import导入85Mouse鼠标
31static静态的86Key
32void无(返回类型)87Focus焦点
33extends继承88Listener监听
34parentclass父类89Border边界
35base class基类90Flow
36super class超类91Grid网格
37child class子类92MenuBar菜单栏
38derived class派生类93Menu菜单
39override重写,覆盖94MenuItem菜单项
40overload重载95PopupMenu弹出菜单
41final最终的,不能改变的96Dialog对话框
42abstract抽象97Message消息
43interface接口98Icon图标
44implements实现99Tree
45exception异常100Node节点
46Runtime运行时101Jdbc : javadatabase connectivityjava数据库连接
47ArithmeticException算术异常102DriverManager驱动管理器
48ArrayIndexOutOfBoundsException数组下标越界异常103Connection连接
49Next下一个104Statement表示执行对象
50NullPointerException空引用/空指针异常105Preparedstatement表示预执行对象
51ClassNotFoundException类没有发现异常106Resultset结果集
52Try尝试107Close关闭
53Catch捕捉108executeQuery执行查询
54Finally最后
55NumberFormatException数字格式异常(字符串不能转化为数字)
Jbuilder中常用英文(共33个)
序号英文寓意序号英文寓意
1File文件18Message消息
2New新建19Source源文件
3NewProject新建项目20Bean豆子
4New Class新建类21Properties属性
5NewFile新建文件22Make编绎
6Openproject打开项目23Build编绎
7Open file打开文件24Rebuild重编绎
8Reopen重新打开25Refresh刷新
9Closeprojects关闭项目26Project properties项目属性
10Close all except…除了…全部关闭27Defaultproject properties默认的项目属性
11Exit退出28Run运行
12Rename重命名29Debug调试
13View视图30Tools工具
14Panes面板组31Preferences参数配置
15Project项目32Configure配置
16Content内容33Libraries
17Structure结构

标记此文,时刻提醒自己:路漫漫其修远兮,吾将上下而求索。愿与君共勉!

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序yang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值