- CheckStyle 报告与项目预定的编码标准的偏离度。
- CPD 报告代码重复。
- JavaNCSS 可以帮助团队专注于更高级的代码复杂性领域。
2009年4月29日星期三
性能监控 以及 开发自动化 -- Java
2009年4月22日星期三
BugFree 2.0.2 指派人员支持多个邮件发送
2009年4月14日星期二
开发语言的选择
- C++语言的效率优势已经不那么明显了:
现在机器的性能上去了,原来C++效率的优势没有原来这么大了。而且随着语言的不断进化,语言本身的效率也在不断的提高,虽说C++的效率还是比较高,但是各个语言间的效率已经越来越接近了; - 需要考虑工作进度、公司的人员配备:
虽说C++语言在效率上还残存一些优势,但是C++的开发周期、开发的工作量,都相对较大 --- 从实际情况来说,这个还是比较客气的说法。每次出产品,C++开发的服务器,都是时间最长最长的,开发人员需要的技术、开发过程中的成本也是最高的,和目前的快速维护、快速增加功能的原则背道而驰。关键的部分(如只能唯一的服务器)、最为核心的部分要用C++开发,达到稳定、高效的目的,这个无可厚非,但是系统中所有的地方都用C++,在开发周期、开发成本上就无法接受; - 发挥每种语言的优势:
每种语言的产生,必定有其出现的道理,有其存在的理由、优势。在开发过程中,要发挥每种语言的优势,进行合理的搭配,达到快速有效的开发,这样才是最合理的配置; - 体系结构优于语言的选择:
现在的开发,尤其是后台支撑系统的开发,已经是体系上的竞争,架构体系的优劣已经远远超越语言的竞争了。
体系方面,譬如简单的增加一级缓存,带来系统性能的提升、服务能力的提升、吞吐量的提升可能是数个数量级上的提升;而语言的不同,带来的可能仅仅是同一级别、同一层次上的提升;何况通过多种语言的协作,发挥各种语言的优势,不仅能够充分使用到公司目前的资源,而且使用到语言本身的优势,快速推出新功能,尽快的响应市场的呼声。开发语言相争和架构体系上比较起来,相对而言只是一个很局部的问题(目前在架构体系上,可以优化、可以提升的地方太多了)。
GTD --Getting Things Done
GTD是英文Getting Things Done的缩写,是一种行为管理的方法,也是David Allen写的一本书的书名。
GTD的主要原则在于一个人需要通过记录的方式把头脑中的各种任务移出来。通过这样的方式,头脑可以不用塞满各种需要完成的事情,而集中精力在正在完成的事情。
目录[隐藏] |
[编辑]GTD是关于什么的
和其他时间管理专家不同的是,Allen并不把重点放在设置任务的优先级。他提出制定出在各种环境下的任务列表,例如,制定一个需要打电话的列表,或者在市区才能完成的事情的列表。他也建议任何两分钟之内就能完成的任务应该马上做。
GTD在心理上的好处在于使你需要完成的事情相关的信息易于保存,跟踪和获取。Allen认为导致很多我们在做事的时候碰到的脑力上的障碍的原因是前期的计划不足(举个例子,对任何项目我们需要弄清楚要达到什么目标,还有什么措施需要完成)。
Allen认为我们的脑力上的“提醒系统”相当的低效,很少能够在恰当的时间和地点提醒我们需要做的事情。因此,把“下一步行动”根据场景分类存放在“可信的系统”当中,是一个能使我们在正确的时间得到正确的提醒的手段。在“GTD”中有很多个人的管理小技巧在实行Allen描述的工作流程中很有用的。
一个很概括的对于Allen的书的内容的描述是对于任何事情都准备好:
- “把所有事情都从你的脑袋里弄出来。在事情出现,而不是在事情爆发的时候,就做好相关行动的一系列决定。以合适的类别组织好你的项目的各种提醒以及下一步的行动。保持你的系统更新和完整,充分地检查,使你在任何时候都能信任你的对于你正在做(或者不做)的事情直觉的选择。”
[编辑]原则
GTD的核心原则如下:
[编辑]搜集
把任何你需要跟踪或者记住或者做的事情记在Allen称之为‘水桶’的地方:一个收件箱,电子邮箱,磁带,笔记本,PDA,或者它们的组合。把你脑子里的任何东西都拿出来放到你的搜集设备里,准备好做下一步的处理。每星期所有的水桶都应该被至少清空一次。
[编辑]处理
处理你的收件箱要遵循一个严格的工作流程:
- 从最上面开始。
- 一次处理一项。
- 不把任何东西放回收件箱。
- 如果任何一项需要做:
- 做(如果花的时间少于两分钟)
- 委托别人完成,或者
- 把它延期。
- 否则
- 把它存档以便查询,
- 把它扔掉,或者
- 使它成熟以便下一步的处理
两分钟原则:任何事情如果花的时间少于两分钟,那么马上就去做。两分钟是一个分水岭,这样的时间和正式地推迟一个动作所花的时间差不多。
[编辑]组织
Allen描述了一个建议的列表集合,你可以用来跟踪需要关注的项目:
- 下一步行动(Next actions) - 对于每个需要你关注的事项,定好什么是你可以实际采取的下一步行动。例如,如果事项为“写项目报告”,下一步行动可能会是“给Fred发邮件开个简短会议”,或者“给Jim打电话问报告的要求”,或者类似的事情。虽然要完成这个事项,可能会有很多的步骤和行动,但是其中一定会有你需要首先去做的事情,这样的事情就应该被记录在“下一步行动”列表上。较好的做法是把这些事项根据能够被完成的“环境”整理分类,例如“在办公室”,“用电话”,“在商场”.
- 项目(Projects) - 每个需要多于一个实际的行动才能达到的生活或者工作中的“开放式回路”就是一个“项目”.使用跟踪以及周期性的回顾来确保每个项目都有一个下一步的行动进行下去。
- 等待(Waiting for) - 当你已经指派了一个事项给其他人或者在项目进行下去之前需要等待外部的事件,就应当在你的系统当中跟踪以及定期检查是否已经可以采取行动或者需要发出一个提醒。
- 将来/可能(Someday/Maybe) - 这些事情你需要在某个点去做,但是不是马上。例如:“学习中文”,或者“进行一个潜水假期”.
对于跟踪你的预约和委托,一个日历也是重要的;另外,Allen特别推荐日历应该被用在他所谓的“硬工程”上:必须在某个特定的期限之前完成的事情,或者在约定的时间和地点完成的会议和约会.“待办”事项应该用在下一步行动列表当中。
GTD的最后一个关键组织模块是归档系统.“Getting Things Done”书里说如果要用一个归档系统,那它必须得是简单易用和有趣。即使是一张纸,如果你需要用来记录参考信息,如果不属于你已经有的一个目录,也要有自己的文件组织方式。Allen的建议是你可以维护一个按照字母顺序组织的归档系统,这样可以比较容易快速的存储和提取你所想要的信息。
Google的Gmail的用户可以用创建标签的方式来创建“待办事项”和“项目”,这种方式在Bryan Murdaugh的 “Getting Things Done with Gmail” [1]白皮书中有清楚的描述。它保留了很多GTD的相同概念,但是是在在线的电子邮件系统中实施。
[编辑]检查
如果你不至少每天或者只要你有时间就回顾检查,那么你的行动和提醒的列表将会变的毫无用处。以你当时拥有的精力,资源和时间,决定什么是对你来说最重要的事情,然后做。如果你倾向于拖延,你可能会老是做最容易的事情,避免那些难的。为了解决这个问题,你可以一个接一个地做列表上的事情,按照它们的顺序,就象你处理你的收件箱一样。
至少以星期为周期,GTD要求你回顾所有你比较主要的“行动”,“项目”和“等待”的事项,确保所有的新任务或者即将到来的事件都进入你的系统,而且所有的事情都更新到符合最新的情况。Allen建议制作一个难题档案来帮助你更新你关于主要行动的记忆。
[编辑]做
如果你把你的时间都花在组织工作、而不是做它们,那么这样的系统是不好的!David Allen的观点是,如果你可以把必须做的事情,让它变得简单、容易、有趣的话,那你就比较不会拖延、或者被太多的“开放性回路”所压倒。
[编辑]工具和技巧
一个Allen推荐的工具是难题文件夹,用来组织你的GTD的文字工作(也被称为‘43文件夹’).12个文件夹用来表示每一个月,另外的31个文件夹用来表示每一天。这些文件夹用来帮助提醒你当天的活动。每天你打开表达当天的文件夹。你把所有的事项都拿出文件夹,然后把空文件夹放进下一个月里。这种处理允许你为自己保存提醒的硬拷贝。例如,如果你在这个月的12号有一个音乐会,你可以把票放在第12个文件夹当中。当12号到的时候,它就在那里等着你。
[编辑]DIY Planner Hipster PDA
这是一种用来执行GTD的纸本DIY范本,对于习惯用实体纸本计划的人来说,可作为另一种优质选择。[2]
2009年4月2日星期四
测试 --- 背后的英雄,流程的改进
- 完善测试流程:
主要对测试的功能点、测试的覆盖面再做一次整理;尤其是经常用的功能、领导关心的功能(是不是有点太功利了,谁让领导具有一票否决权) - 测试人员的测试工作进行量化:
将测试人员每周测试了多少系统、测试了多少版本、发现了多少bug进行统计,这样一来可以监督测试人员的工作,二来也让领导知道一下测试的工作进展、测试的工作量,要知道测试人员不是只对某个产品进行测试,公司目前可以算上产品的数量是测试人员数倍都不止,不把这个列出来,领导只看到有问题的产品,而完好的产品看不到(运行正常没有事情,没有人反映问题,领导甚至把这个产品给忘了),对整个部门的工作评价也是不利的; - 对每个产品进行错误统计:
由于开发人员的因素,有些产品质量一直很好,有些产品反反复复的次数占多数,不仅占用测试人员的时间,而且开发小组本身的工作效率也提不高。通过这个统计,把每个产品的质量进行统计,作为对产品组的一个考评依据。 - 对测试要树立一个评价体系:
这个是最难的,如果按照bug率来进行统计,如何统计bug率?按照功能模块来限定bug数量,大功能点和小功能点包含的强度不一样的,按照代码行bug数量来统计,现在的系统泥中有我,我中有你,还真是一件麻烦事。上网看一下测试理论是怎么养的,别人是如何进行评价的。
2009年3月24日星期二
和Eclipse-Mylyn结合的流程管理工具寻找
2009年3月23日星期一
安装了Screen Anytime
- 录制时,对其他程序没有什么影响,感觉不到它的存在;
- 最主要的录制结果比较小
录制了几次1分多钟,生成的exe文件在500-600K之间,比其他的程序生成的要小。 - 结果直接生成exe,播放的时候也不用担心使用机器文件格式兼容性的问题。
- 便于回忆测试过程,和开发人员交流:
如果发现问题,进行回放就可以了,不用向以前那样为了重现错误,不断回忆操作过程;或者开发员不在的时候,事后和开发员说他们不承认,至少截获下来,眼见为实(虽然当时的环境不复存在); - 记录测试过程,测试人员不能偷懒:
将测试过程记录下来,测试人员在测试中的一切操作,如何操作,重复了几次,检查了一些什么功能、检查了一些什么环境参数都被记录下来。在提交测试报告的时候,一同提交测试录像,这样,就是想在测试中偷懒,也要考虑后果。对于测试报告中的每一条测试用例,如果检查的时候觉得有怀疑,也可以通过录像进行播放出来; - 准备向高层领导进行交流的材料:
现在测试后,结果还是有很多bug出现。虽然知道在就这么几个人,就这么点环境资源,这么点测试时间,无法做到全面、完整的测试,测试不可能100%捕获bug。就是有相对充足的资源,也不可能100%的堵住漏洞(尤其目前只有黑盒测试,没有代码复查、白盒测试等手段)。
在使用中遇到bug,高层领导就骂测试是吃白饭的,这些问题怎么都没有发现等等(有时候不是程序的问题,都会怪到程序上来 --- 部署是另一个中心完成的事情,虽然可以安排他们某些工作,但是不是直接的隶属关系,怪罪起来不是很方便)。有了录像,以后有问题,可以用这些录像可以进行检查:如果真的测试人员偷懒,没有按照要求进行测试,进行内部纪律处理;如果测试人员对这些功能进行了充分的测试,拿着录像和高层进行交流,证明这些功能都已经测试了,没有发现问题;领导机器上发现问题,这说明我们现在的测试环境不够或者测试方式不对:如果测试环境还不够,很多应该测试的环境没有资源搭建起来的话,这样也可以名正言顺的要求机器资源了;如果测试方式不对,则修改测试方式,找到一条适合我们自己的测试方式 - 生成环境中的测试,和其他部门进行交流:
现在产品出来,需要测试人员在正式环境中的测试环境进行测试一次,有了录像,至少测试人员可以跟着自己提交产品、提交测试报告的测试过程再重复执行一次,其他部门的人员也可以通过测试录像进行验证一次; - 也可以作为对客户的操作说明:
现在使用软件的客户,有相当一群对计算机基本操作一窍不通的,在电话中遥控指挥他们操作真的要累死。有了这个软件,可以通过电话摸清客户的环境,将操作步骤全部录下来,发送给客户,让客户跟着录像执行就可以了;
2009年3月20日星期五
为什么组长安排的任务完成不了,要自己安排才行
- 这个开发员本身的问题:
还是最根本的是先有鸡还是先有蛋的问题: 不加工资工作状态、学习积极性下降,看着他这种状态,加工资更加没有希望。
已经和他明确的讨论过这个问题:没有为公司创造更高的效益,是不可能给他涨工资的,如果一直这种状态,有失业的危险。估计是自己手上有这个权利,安排的工作他才完成。另外平时自己技术上有底子,也不用计自己的开发量开发时间,他们有问题,可以从解决方案、采用的技术给他们讲解讲解、包括技术的原理、为什么这么做以及这么做解决的是什么问题等等很系统的给他们培训一下,在技术上他们也不得不服。(经常他们做不出来的,或者觉得很耗时的工作,给他们讲解一下,工作时间成倍的缩减) - 组长的权威不够、强硬度不够:
现在的组长,因为工作相当努力,在一群人中,技术还是有可取之处,选拔上来作为组长(也实在是没人)。平时他也是和大家嘻嘻哈哈,比较容易逆来顺受,说的好听点比较乐观。在工作中思考的也不多,安排一个工作,讲了几次,业务上还是稀里糊涂的,大量的事情还需要自己亲自安排、亲自流程制定,这样对组长的威信也是削弱。遇到事情,组长没有手腕,自己解决不了,时间长了大家也不把他当回事(但是实在没人,每个公司的老板都想用最少的代价用最好的人才,但代价是有上限的--相当低的上限,人才的级别可以浮动的。所以现在人员的水平、素质真的是一代不如一代)。
还好,组长还是比较上进的,也在一点点的改变,自己也在不断的帮助他、要求他,往组长的要求上靠。平时开会的时候,也在他的组员面前不断树立他是组长的意识,有事情你们向组长汇报的,不是向我汇报。对于组长再观察一下。