08年的感想
 
08年是不平凡的一年,物价飞涨、汶川地震、北京奥运、股市大跌、经济危机、三鹿牛奶等等都在这一年中发生了。
 
记忆如同疯长的野草,就过去的事情很快就渐渐模糊了,多年后,只有透过51cto的博客,才能找回往昔的星星点点,因此要坚持写博客,再忙也要写。
 
眼下就要对08说byebye了,回想一年中的经历,有收获也有遗憾。
 
最大的收获就是换了份工作并认识了很多同事(现在是好朋友),拓宽了技术领域,使我更清楚的认识技术本身,也重新认识java,思考人生。
 
java不是万能的,要成为一个优秀的程序员,精通一门语言还不够,有很多问题用Java也许能做,但是代价太沉重,如果用C、C++、C#等,问题会迎刃而解。
 
Java不是最好的,有时候开源的东西做得更好,比如Apache的commons,很多功能都是对Java API的补充。用到自己的项目中,会让你省去很多时间编写一些基础的代码。我在自己的项目中,大量用到Apache的提供的组件,令工作的效率质量得到了前所未有的提高。比如上篇的文件的操作,当初是自己用递归写的。但是还是Apache封装的全面、好用,毕竟人家就是“补丁专家”,不服有罪。
 
技术是为需求服务的,不要为用技术而用技术。一味的追求流行技术是不明智的。比如你在做一个网站,你非要采用struts2、ajax....等等。到头来甚至不如人家在短时间内用php做得好。
 
对一个软件项目来说,系统的分析、系统设计是第一重要的。没有好分析,就无法全面把握需求,需求是需要挖掘的,需要分析和筛选的。需求的分析最好是采用UML的用例图来描述,简单也容易维护,因为没有一成不变的需求,当然也没必要搞太复杂,写大堆的doc文档做需求是极其愚蠢的,在做需求分析之前,应该与客户交流做一份软件的前景文档,这是客户、开发人员双方都认可的一个蓝图。
 
系统设计是系统实现的基础依据,对于中小型公司的项目来说,如果无法按照标准的RUP进行迭×××发,就不要硬套UP开发。否则项目的负责人会陷入两难的局面。不管怎么说,设计还是少不了的。对于复杂的业务,可以通过UML流程图、序列图、状态图来综合描述,通常只用其一就可以描述清楚。对于项目的大框架来说,开源的就那几个套路,没必要为每个业务都做出完整的类图才去写代码。
 
对于复杂的业务,一定通过活动图来描述业务过程,对着图去讨论,否则口头讨论,纸上乱画都是浪费时间没有实效。因此,作为一个项目的负责人,一定要学会用UML来表达自己的思想,用UML来交流。
 
技术不是最复杂的,通常做一个东西时,往往是业务让技术人员陷入困境,写代码的时候流程还没搞清楚----业务还没想清楚,这是导致工作效率低下,代码质量低下的罪魁。对一个熟练工来说,写代码是体力活,很快。新手另当别论,可以将一些最简单很具体的事情交给新手来做,对他们来说也是个学习的好机会。
 
还有一个很关键的问题,就是系统建模,实际上属于系统设计的范畴。
系统建模可从两个方面着手,一个是对象建模,一个是数据建模。这两种模型的本质是一样的,就看个人的习惯和工具了。
 
最流行的工具有两种,一种是Rose、一种是PowerDesigner,就工具本身来说,PD更好些。站在OOA、OOD设计角度来说,ROSE更好。
建模的任务有二:一是找出系统中的实体、二是找出实体间的关系。
实体简单说就是类或者表。
关系简单说就是组合关系或外键。
其实都是非常的简单的问题,可是往往在使用数据建模,很多人不去加外键----难道表之间没关系吗? 有,那么关系如何体现呢? 问其故:外键不要也行,通过业务控制即可,呵呵,要知道,现在是建模,通过图就能看到实体的关系,这才是目的。
要是用Rose建模,组合关系一目了然。
一些英雄人物,在项目不太大的情况下,他们可以不用工具建模,而是在自己的大脑中建模,然后直接写出类的代码,最后从类的代码生成数据表,最终可以从这些对象生成实体关系图、物理数据模型,真正达到了手中无剑心中有剑的境界。现在更讲求团队合作,不太推崇个人英雄主义。
 
08年的遗憾是有些计划没实现,做了一些没有意义的工作。
 
09年做个计划:
1、学习盗版Java----C#和ASP.NET, C#也很好玩,有时候还是大有用处的,J2EE有不少东西用起来都相当费劲,看看微软是怎么做的。
 
2、学习下PHP5,只要能做出好网页的技术都是好技术,关键是要简单易行。
 
3、学习一下网页设计(css、div、JavaScript)。
 
4、学习一门动态语言Groove,很喜欢这个。
 
6、研读《人月神话》、《数据结构》。
 
7、补补英语,目标是提高E文技术文档的阅读速度和理解的准确性。