- 浏览: 1990105 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (509)
- JavaEE (122)
- Oracle数据库 (29)
- JavaScript (37)
- SAP (5)
- MySql数据库 (7)
- JavaSE (4)
- Ajax (1)
- jQuery (13)
- SSH框架 (36)
- Web Service (10)
- JSF框架 (2)
- JBPM (0)
- ireport报表 (2)
- ibatis (5)
- Hibernate (31)
- JSP (11)
- Tomcat 服务器 (20)
- Other (19)
- JavaWeb (4)
- Maven (11)
- OSWorkFlow (10)
- HTML (13)
- Exception汇总 (7)
- SVN (2)
- 笑话 (1)
- JSTL (1)
- WebSphere Message Broker (13)
- ANT命令 (3)
- Liunx (12)
- Struts2 (26)
- Eclipse (6)
- DOS (3)
- Flex (11)
- WebSphere (1)
- 开发常用工具 (3)
- Junit (2)
- EJB (4)
- Struts1.2 (2)
- Jboss (1)
- Android (2)
- Java框架源码解析 (1)
- Spring (4)
- MyBatis (6)
- SpringMVC (4)
- Jetty (2)
- 数据库表设计 (1)
- SSO (4)
最新评论
-
贝塔ZQ:
也可以试试PageOffice插件,觉得更简单点
Jxl操作Excel设置背景、字体颜色、对齐方式、列的宽度 -
jia1208:
...
Could not publish server configuration for Tomcat v6.0 Server at localhost. -
u011274527:
赞
java.io.EOFException java.io.ObjectInputStream$PeekInputStream.readFully 错误 -
旭旭小牛啦:
怎么没哟了,继续赛
jQuery 选择器 -
wzw3919:
100行会报空指针
Java 解压缩zip文件
个人工作总结
2010-04-12 作者:ttion 来源:ttion的blog
一个人的软件工程
一个简单的网页、自助建站、个人Blog、CMS,这是本人自认的站长生涯,我人生的第一桶金也是来自个人建站,对“个人站长”这个词汇总会有点感慨,而一个人的软件工程即始于此,做的第一套系统的名称叫做“免费者内容管理系统”(最初的想法是想通过这套程序开源,建立一个中国的开源社区“免费者www.mianfeizhe.com”,后来整个域名和网站出售掉了)。
免费者内容管理系统,采用jsp+servlet框架(当时,只学了这些技术)进行开发,版本通过U盘进行控制,当时整体需求还算是比较明确的,因为是防系统,所以开发起来遇到不是业务上的问题,而恰恰遇到的是一些技术问题,前台静态化、模板标签,都是当时开发中的拦路虎,而此时回顾那些通过字符串解析、IO流输入输出静态页面,还是有些欣慰的,因为通过这些实现建立在这套系统之上的一套语言(模板标签),后来了解到的FreeMarker(模板搜索引擎)正是我所需要的。现在如果让我再去维护那套系统的话,我想我做的第一件事情就是推翻重写,以前的代码看起来真的太幼稚了,不知道再过一年来看自己的代码,我会是什么样的心态和感想呢?一个人的软件工程有痛苦并快乐着。
所谓的迭代开发
这是我做的第一个真实的项目,一个关于手机上网,无线网关的数据配置的开发,整个项目开发周期是3个月,采用迭代开发,开发人数6人,三天时间通过会议室形式了解需求,以及领取工作任务,然后便埋头投入到了项目当中,每天加班熬夜到10点钟左右,同时经常是加完班以后再回家吃饭,每天在心情极度低下,那一阵子经常容易忘事,有时候进入房间就忘记自己要做什么了。在开发过程当中,由于缺乏沟通,开发出来的东西总是会有些出入(包括开发与开发之间的,开发与需求上的),在后期测试过程当中,发现存取数据没有经过转码,页面过于复杂,导致用户体验是那么的不尽如意,后来差不多推翻了重新开发,再次进入无发估摸的开发过程当中,现在回想起来都有些后怕。我想是由于前期分析不足、没有有效的沟通、难以掌控的工作计划、个人编码能力等等,导致了整个项目的失败吧。当然,任何事物都是相对的,有坏的一面肯定也存在好的一面,通过这个项目,首先在技术得到了很大程度的提升,同时通过这个项目自己对软件工程的重要性也理解的更为深刻,也让自己对编码规范、编程思想引起了注意,态度的转变应该是最大的收获吧。
敏捷开发
近几年在软件开发行业,敏捷开发无疑是最热门的话题,而09年3月份进入的BMS敏捷项目组,也算是接触了敏捷,从项目开工会,Story评估会议,Story撰写,站立会议,持续集成,统一IDE构建,结对编程等等,对我来说都是新鲜的事物,这些新鲜事物总会让我着迷,一个又一个有趣的实践,让我感受到了开发当中的快乐,以前提交版本时的忐忑与不安,在这个项目过程当中,我完全感受不到。做完整个项目最大的感受——整体计划可控制,小粒度的Story可以让每个组员明确每天做什么。不再纠缠在无法估摸的项目进度当中,饱满的8个小时工作,整体工作效率有明显的提升。
敏捷的精髓是“充分沟通、坦诚合作”,敏捷当中的很多实践都是围绕着这展开的。
敏捷宣言:
– 个体和交互 胜过 过程和工具
– 可以工作的软件 胜过 面面俱到的文档
– 客户合作 胜过 合同谈判
– 响应变化 胜过 遵循计划
虽然右边的也有价值,但是我们认为左边的具有更大的价值
敏捷流派XP的价值观:简单、交流、反馈、勇气、尊重。
敏捷实践
Story评估会议
参会人员:开发、测试、资料(如果客户不能在现场,可由资料作为客户代表)、PM,会议采用举牌的形式决定Story的粒度,取最小的Story的力度作为单位,以举牌的形式决定一个Story的开发-测试结束周期,一般天数可写为:1、2、5、10、14、20(一般单位为半天),然后通过全体举牌的形式得出总分,再除以全体举牌人数得出一个Story的周期,当然,你有弃权的权利,所以准备牌的时候总会留一张笑脸来表示弃权。每一次参与这个会议时,总会让我感到比较的高兴,像极了拍卖会。
结对编程
结对编程此前是一项比较受质疑的一个实践,而经历过结对编程这一实践的人员,是最乐意接受这一实践的,至少我是。第一个和我结对的是个女同志,后来由于工作原因,她离开了项目组,而后我和项目经理结对开发,两个人一台电脑一个鼠标一个键盘,两个头脑,一个是驾驶员(敲键盘的人),一个是领航员(前后观察),两个人每过十分钟就可以进行角色互换。当然在项目开始前,挑选Pair时,一定是自愿的,且能够互相尊重的。有效的结对编程可以很大程度的保证代码质量,可以省去Code Review这一过程,同时这个实践也是非常容易培养新手。
本地构建&持续集成
在现在我已经很乐意去接收这个实践了,使用的CC作为服务器,此前由于机器内存不够,导致运行CC时,就不能做其他事情了,同时由于项目工程较多,在持续集成构建与执行上面花费的时间太多,所以此前总是有那么一点的反感,而当机器更换后、个人编码能力的提升、持续集成形成制度,接受持续集成也变得那么的水到渠成。持续集成就像一个炼丹炉,一直在运行的过程当中,而我们所做的就是一直往炉子里面扔代码,CC自动对那些代码进行检查,然后生成报告。持续集成是很好的试金石,通过持续集成也能提高个人的编码能力。
TDD(Test-Driven Development)
测试驱动开发,这也是自己一直在努力做好的一个实践,以前第一次写单元测试代码时总是有那么一些的不理解,当时觉得写这些代码是没用的,第一,由于项目组没有把测试代码作为交互物,第二,当时个人对单元测试代码了解不深刻,觉得是无用的工作。而在后来的重构过程当中,越来越认识到单元测试代码的重要性,有时候修改代码中的一个小点,都需要围绕该小点进行一次很充分的测试,浪费了大量的工作时间,同时现在项目组当中,将测试代码作为编码过程当中的一部分(新增代码单元测试代码行覆盖率需要达到100%,修改代码单元测试代码行覆盖率达到80%),自己对单元测试代码编写也越来越感兴趣,不过由于以前老代码过于复杂,可测性不高,在修改代码时,单元测试代码的编写总是那么的困难,在编写过程当中我们项目组使用了,反射、EasyMock等技术来编写测试代码,在维护代码时,TDD执行起来总是那么的困难,当然老代码是一个原因,个人的态度也是一个重要的原因,革命尚未成功,同志仍需努力!
TDD的意思是,在编码过程当中,先编写UT代码,他是简单的UT代码,此时可能会出现红灯,甚至编译不通过,根据UT编写代码,让UT代码一步一步通过,直到出现绿灯。在JavaEye中了解到有些项目组将单元测试代码作为交互物,替换掉一些文档,其实代码就是一个很好的文档,当然,你的代码要写的足够优美、简单。
站立会议(Stand up meeting)
第一次接触站立会议时,就感觉的比较的好奇,一块白板,所有人围成一圈,项目经理在中间,以结对组为单位,点到哪个Story时,相应负责人根据如下模板进行陈述。
“我昨天完成了...”
“今天要完成…”
“我遇到了…困难”
项目组是第一次执行敏捷,在大家反馈的时候跑题时,可爱的项目经理总会打断,会后讨论。
站立会议一般控制在15分钟之内,毕竟站着说话腰痛(这是个人理解的)。
我想站立会议,是很好体现敏捷流派XP的勇气、反馈、交流价值观的一个实践,你对问题进行反馈就需要勇气,反馈的过程当中就产生了交流,确实是一个非常有趣的实践。在执行过程当中,最好能按照上面的模板进行陈述,让每个人参与进来,今天是pair中的一个人员反馈,明天就换一个,同时项目经理对人员反馈时,不能带有个人情绪进行指责,我想这样一天的好心情都破坏了,同时在执行过程当中不要跑题、延长会议时间、开小会,毕竟其他人还站着呢。
重构
现在在项目过程当中,偶尔会停下来进行一次重构,第一次重构是整改一处查询,一是由于查询速度过慢,二是由于查询数据不太准确,而在我接手重构时,也确实头大了一下,十一个功能使用同一处代码(高耦合),其中的查询使用在代码当中拼接查询条件,有时改动其中一小段代码,都可能导致某个功能出现数据库错误,第一个想法是通过配置文件控制SQL语句,整理出一个SQL解析器出来,在这个方案执行了一天以后,由于时间原因,以及其复杂度、难维护性的原因,彻底的放弃了,第二个方案便是采用工厂方法和组合的设计模式进行解耦处理,在重构过程当中,总共分配了两名人员给我,在第一个方案失败后,施行第二个方案,由于时间问题,他们两个担任了测试的工作,从开发到测试,整体重构花费了4天的时间,查询速度由此前的2分钟降低到了2秒钟,代码彻底的解耦,设计的变得简单,当然由于使用工厂方法,日后维护工作量是增加了的。
第二次相对较大规模的重构是,项目组实施代码责任田制度,每个人领取一块代码土地,然后通过单元测试代码覆盖率,圈复杂度,问题单数量,代码结构作为度量项,进行评断责任田的执行结果,并予以相应的奖励。在重构的过程当中,我愈来愈感觉到单元测试代码的重要性,曾经歪了一首《勇气》重构版,聊以抒发对单元测试代码之情,“重构真的需要勇气,来面对流言蜚语,只要你一个单元测试,我的重构就有意义,我的真心!”。
重构应该是一个时刻进行的过程,曾经在JavaEye上面看到了一位仁兄说他们项目组的一件趣事,开发人员A在维护某个类时,五分钟后提交到配置库时,发现代码不见了,然后询问,这时候开发人员B说,我觉得这样实现不太好,我已经将那个类删除了。从这件事情当中可以看出他们重构的力度,每五分钟可以进行一次重构。我想我需要对此更加努力了。
Show Case(技术展示)
这个实践是在敏捷指导书当中看到的,然后,觉得这个实践非常适合我们项目组,老代码过于复杂,整体系统相对比较复杂,每个人都只是某个模块的专家。我想正好可以通过Show Case的形式来改善现状。由某个人提出某个模块,出发缘由可以是,由于遇到了难题,希望通过大家的力量来解决,可以是觉得自己这块代码的实现很好,希望展示一下自己的技术。同时,通过Show Case可以找出需要重构的代码,为问题找到更好的解决方案,这样大家也可以了解其他模块,不再是某个模块的专家。
我们项目组从我提出到现在,执行了三次Show Case,主要以解决问题作为出发点,但是由于讲解人员在展示时,讲的比较发散,没有注重点,结果收效不是很大,倒是成了Code Review。我想我们在进行Show Case时,第一,应该事前通知参与人员,能让参与人员有一个初步的了解。第二,展示人员应该掌握好注重点,不要浪费时间在无足轻重的事情上面,同时要把握好时间度,不要让这有趣的实践变得无味。
Show Case
会议目的:将工作成果展示给用户,获得用户的反馈,让团队所有成员了解项目的进展
会议形式:不限,可能只花15分钟,但是随时都可以进行.通过展示,也可能得到其他团队成员对被展示代码的意见.
展示内容:代码、测试代码、界面原型、重构代码、好的实践、新工具的使用、知识共享、教训、经验等都可以做为技术展示的素材.
参加人员: 开发团队、研发代表、客户
以上是我个人在工作上面的一些总结以及理解,在09年当中学习到了很多东西,在第一个项目组当中学习了技术,以及一些编程思想,同时在痛苦的加班当中,来到了第二个项目组,这也让我深刻的感受到了软件工程的重要性,如何工作,如何进行时间管理,我想这还是一个需要继续努力的方向。
发表评论
-
计算机常用英语单词
2014-10-06 09:14 0... -
程序员很少上《非诚勿扰》电视节目相亲之分析
2013-02-14 21:38 1915程序员很少上《非诚勿扰》电视节目相亲之分析 ... -
程序员与女朋友相处之道
2013-02-14 21:36 1162程序员与女朋友相处之 ... -
提示信息。
2012-08-14 00:34 9701. sorry, folder does not provi ... -
检测Java代码的常用工具
2012-05-03 20:28 1057findBugs 、 CheckStyle、 PMD、 ... -
Java多线程资料
2012-04-12 08:01 0多线程. -
面试 资料
2012-02-08 00:23 0阿斯顿发撒旦 阿斯顿 -
junit4单元测试实例
2012-01-04 08:35 1540单元测试 -
EDiary2.53 电子记事本
2011-11-22 10:14 1422EDiary2.53电子记事本 ,用于记录开发过 ... -
QQ表情图片
2011-11-02 22:29 0AAA -
Struts2+Ibatis+Spring框架
2011-11-02 02:45 1168下面是使用struts2+ibatis+spring整合的一个 ... -
IBM MQ API在线帮助文档
2011-10-12 14:52 2897IBM Websphere Message Queue MQ ... -
FastStone Capture 截图工具.
2011-10-10 18:22 999FastStone Capture 截图工具. -
使用Eclipse SVN将自己的项目添加到Google code上 搭建自己的代码仓库SVN
2011-09-05 00:37 2026使用Eclipse SVN将自己的项目添加到Google ... -
编写好代码的10条戒律
2011-08-30 23:04 12231. DRY: 不要重复你自己 ... -
ant的一些学习资料
2011-08-02 00:35 1046阿什顿f啊撒地方按时 啊外人额外 -
帮助文档
2011-07-22 01:08 1127各种帮助文档。 -
项目图片
2011-07-19 00:45 1078图片 -
设计图
2011-07-12 22:46 1100aaaa -
绩效考核模板
2011-07-12 08:27 1687绩效考核模板一: 公司员工绩效考核表 总分: ...
相关推荐
【个人年终工作总结报告样板】 在每年的年终时刻,回顾过去一年的工作表现,总结经验教训,是个人职业发展的重要环节。2008年的个人年终工作总结报告主要围绕以下几个方面展开: 首先,强调个人形象的塑造与素质...
【个人工作总结范文】 在当前企业转型的关键阶段,个人的工作总结显得尤为重要,因为它不仅是对个人工作成绩的回顾,更是自我提升和企业发展的重要参考。在技术领域,个人的工作表现和能力直接影响到企业的转型成功...
【团支部组织部工作总结及个人工作总结】 在信息学院的团支部组织部中,近一年的工作主要围绕配合学院展开各类大型活动、日常常规工作、新生团组织关系的转接以及团支书会议及培训等方面展开。这是一份详尽的个人...
从给定的文件信息中,我们可以提炼出以下关键的IT行业无关的知识点,但考虑到题目的特殊要求,这里将从教育、个人成长与管理的角度,深入解析“个人工作总结模板”中涉及的重要概念与实践策略。 ### 知识点一:个人...
【标题】:保险个人工作总结(共7篇).doc 【描述】:该文档是一份关于保险个人工作的总结,包含了七篇文章,旨在回顾2019年的工作经历,展示个人在保险行业的成长与经验积累。 【标签】:无 【部分内容】: 在...
在这个2017年的个人工作总结中,作者主要阐述了在xxx工作期间承担的各项任务。包括文件资料的收集与整理,法宣在线考试的管理工作,协助完成文件起草,讲座安排,以及办公室的其他日常事务。这些工作体现了作者在...
【年终工作总结PPT模板制作要点】 在年终工作总结的PPT制作过程中,我们需要...通过以上要点,你可以创建一份全面、专业且引人入胜的年终工作总结PPT,有效地展示公司和个人的成就,为新的一年制定清晰的发展蓝图。
这篇文档是关于一份优秀的上半年个人工作总结的范文,主要涵盖了工作态度、工作效率提升、工作中存在的问题以及对未来工作的规划。以下是对这些知识点的详细说明: 1. 工作态度:作者强调了对自己工作的要求,如...
【运维工作个人工作总结】 在运维领域,个人工作总结是对一段时间内工作成果、经验教训的全面梳理。这份运维工作个人工作总结展示了作者在三个月内的成长历程,涵盖了技术提升、团队合作、问题解决等多个方面。 ...
由于给定文件的内容部分无法直接解析,我只能基于标题和描述进行推断,无法提取具体的地理教学知识点,因此以下内容将会侧重于年终工作总结的撰写方式与总结中可能涉及的通用知识点。首先,年终工作总结是每位工作者...
风电运维专业个人专业技术工作总结 一、安全方面: 在风电运维工作中,安全是首要考虑的因素。为了保证人身安全,我们需要严格执行电力安全工作规程,分析安全工作中的危险点,并制定相应的安全措施。同时,我们还...
【工作总结】个人月度工作总结范文精选 工作总结是一个重要的自我反思和自我提升的工具,它可以记录我们在过去一段时间内的工作成果、经验和教训,以便更好地规划未来的工作。以下是对个人月度工作总结的一些详细...
【工作总结】2020年监理个人工作总结 这篇文章是一篇关于2020年度监理人员的个人工作总结,主要概述了该监理人员在这一年中的工作经历、挑战、学习成长以及在工程质量、安全文明施工控制等方面所做的贡献。以下是...
由于提供的文件内容为一串数字和少量文字片段,且描述为“邮政员工个人工作总结”,因此可以推断这些数字串很可能是用于文档识别的校验码或者错误的OCR输出。而少量文字片段“think big, do small.” 可能是文档中的...
公路建设个人工作总结是一个重要的文档,它反映了作者在公路建设领域的工作经历、学习成果和个人感悟。在这一年的时间里,作者从一名新手逐渐成长为能够胜任技术工作的专业人士,经历了从理论学习到实践操作,再到内...
【供电公司个人工作总结】 作为一名在供电公司工作的专业人士,过去的一年对我来说是充满挑战和学习的时期。自20XX年7月加入公司以来,我在电力信息管理中心和工程组的岗位上不断成长,逐步熟悉了电力行业的核心...
【本文概要】这篇文档是关于一位...通过这份工作总结,我们可以看到一名新员工如何逐步适应和提升自己的角色,他的经历提醒我们在任何职位上都需要不断学习、改进,以实现个人价值的最大化,并为团队和组织创造价值。
【文档标题】:“文秘工个人工作总结.doc” 【文档描述】:这份文档是一个关于文秘工作人员的个人工作总结,强调了该岗位在一年内的工作表现、成长和未来改进方向。 【标签】:“范文” 【主要知识点】: 1. **...
【运维维修个人工作总结】 在IT领域,运维维修工作至关重要,因为它直接影响到企业的日常运营和业务稳定性。2021年的运维维修个人工作总结是对一年工作的全面回顾和反思,旨在提升运维管理水平,为未来的IT规划提供...