Monthly Archives: August 2010

双赢培训第二天后对自己的总结

今天完成了第二天双赢培训。把培训中的内容做一个记录。 工作技能分三种,专业技能-Professional Skill、交流技能-People Skill和概念化技能-Conceptional Skill。这三种技能在职业生涯中都需要,只不过偏重不一样。交流技能在每个阶段都一样重要。专业技能在职业开始阶段最重要,层次提高之后就慢慢弱化。概念化技能职位越高越重要。对专业人士来说,最看重专业技能。所以经常导致看不起老板,觉得怎么这么简单的东西都不懂。应该反省啊,老板之所以为老板,必有他们超人的地方。一般就是人家人际技能和概念化技能比较强。 有研究结果表明,大部分的大方明、大创造都是咖啡馆达成的。这就是著名的世界咖啡馆。所以有时候应该营造轻松的氛围。 分析问题有Mind Mapping和三段分析法。所谓三段分析法,先确定问题,再找出出现问题原因,然后再找如何解决问题。而描述这个图就用Mind Mapping比较好。中间放问题,然后再从中间引出原因,再从原因找方案。Mind Mapping的好处有二,一是比较好画;二是大脑比较容易接受,因为大脑细胞就是这个结构的。 双赢沟通有六个方面,未来导向-Fast/Future Orientation、喜欢改变-Comfort with Change、双赢导向-Win-Win Orientation、相互依赖-Comfort with Interdependence、信任-Ability to Trust和反馈-Self-Discloser and Feadback。一切要向前看,不要老盯着过去不放。当然信任也是一种能力。有同事问我借100,我可以毫无考虑就借了,借10万就的好好想想了。在不太确定该不该信任时,做好最坏的打算,做好计划以减少风险。 人最信任谁,自己。其次信任谁,和自己像的人。所以想要做成一件事最好先和对方像。先从外表像,行为像,再从兴趣像,再到内在像。交流时先要营造一种放松的环境,做最好的倾听者,这方面神父做的最好。我去科隆大教堂的时候就打算用方言去忏悔。为啥呢,放心啊!瑞典有个著名的心理学家,Milton Ericsson。刚出道时分到疯人院去,有人就整他,要他去和有精神错乱的人打交道。以前所有的人进去都没有完整的出来过。那人幻想自己是一只猩猩,老做猩猩的样子、。Milton进去后就把自己也搞成和猩猩一样。一个小时就一直和病人一直转,后来那个病人受不了了,说:“别闹了,我们做下吧”。 Karl G.Jung研究搞出了个DISC。又是一个瑞典人,我就呐了闷了,瑞典咋出了这么些人。在瑞典呆了这么久实在是没有看出来,下次再去该好好研究了。DISC是将人分成四种类型。D-Dominance or Driver;I-Influence or Interaction;S-Stesdiness or Support;C-Compliance or Correct。D型人比较喜欢结果、直接,做决定,需要加强部分的是听。I型人比较喜欢气氛、梦想,应该需要加强细节部分。S型的人喜欢安全感、团体,应该加强主动性。C型的人喜欢细节和数据,应该加强做决定。如果一个组织D型的人多了容易引起纷争;多I型的人容易少善后的人;多S型容易保守;多C型的人容易无趣。最好是什么人都有,保持多样性。我感觉我们公司C型人也不多,咋就变得有些无趣呢?不同类型的人在压力要求下有不同的表现,D型人在压力下容易变成暴君;I型人容易攻击;S型人容易投降;I型人容易逃避。如果压力更大些,类型就会转化。SI,CD。所以有时候新闻说一个一直很平和的人,忍耐(S型)的人做了什么过激的事,那是已经几乎压弯了。

双赢培训第一天后对自己的总结

工作摸爬滚打这么些年,一直不是很成功。以前也经常反省,但总是不是很到位。今天参加了了双赢培训,感触颇多,对培训的内容以及适用我的地方作一个总结。 成功需要有IQ和EQ,这些在以前听到过很多。今天还听到了AQ、TQ和PQ。AQ-Adverse Quitient,逆境商数,这方面刘备可以说是典范啊,屡败屡战,无论到何时都对自己充满信心。我在这发面就不是很好,顺境时做的好一些,逆境时容易对环境失去信心,总想不适应啊!该换个环境怎么的。TQ-Team Quitient,团队商数。这发面我做的还可以,和团队合作还是比较融洽。PQ-Partner Quitient,伙伴关系商数,主要指沟通方面。这方面我做的也不是很好。这次培训主要就是针对这方面的,后面有各个部分的反省。 有研究结果表明,沟通中信息可分为3个部分。第一部分为内容Content(Verbal),而这部分只占信息的7%。第二部分为语气Emotion(Vobal),这部分占38%。第三部分也是最重要的部分,肢体语言Body Language(Visual)。通常三种形式组合起来才能达到最好的效果。而组合时一致性最重要。如果想表达仇恨,如果文字是仇恨的,语气是温柔的,脸部是微笑的。那么对方根本搞不清楚你要表达什么意思。对一致性上我做的还可以。但是三种方式结合,就做的差一些。譬如说发完邮件应该再打个电话确认一下。如果重要的事,还应该跑过去当面再沟通。主要还是主动性上欠缺。 沟通时可以分为3个部分,听(Listen)、问(Question)和反馈(Feedback)。 而听是公认最为困难的。听可以分为多个层次。不理不睬,边听边做事就属于这一类;假装的听,虽然耳朵在听,但是思维已经跑到其它地方去了;选择的听,只听自己想听的部分;带着答案的听-Listening with Answer,在刚开始听就带着答案了,后面的话没有任何意义了;同理性的听-Listening with Understanding,听的目的是想理解对方的想法。不同场合下还有,第三者立场-Dissociation和对方立场-Association。这方面我犯的错误就比较严重,特别是对不想交流的人,经常会不理不睬。以后应该尽量避免,应该多用同理性的听,并在不同场合站在第三者或对方立场上思考问题。 问分为三种形式,开放式问题、封闭式问题和引导式问题。开放式问题和封闭式问题有不同的应用场合。引导式问题显得不是那么光明正大。我的问题主要在于人多的会上问的比较少。 反馈分为要求别人给自己反馈和给别人反馈。给别人反馈需要注意方式;给自己反馈需要心态。这方面我做的很少,无论是给别人反馈还是要求反馈。 有一个著名的潜能之窗(Johari Window)。分为4个部分,我知你知-暴露在公共场所的部分;你知我不知-盲点,如果第一次照镜子,第一次听自己录音都会觉得怪;我知你不知-私人部分,大部分名人倒下都是由于这个原因,有不可告人的地方。要求他人反馈可以减少盲点,和他人分享可以减少私人区域。 任何事物都有一个周期-Life Cycle,无论动物、植物、人、公司。动物植物很难在一个生命周期之内达到几个高峰。一个公司通过不断寻找增长点达到多个高峰。一个人可以寻求不同的职务、公司、行业来达到多个高峰。需要不断的寻找自己的第二曲线-2nd Curve。寻找第二曲线可以在上升期、顶峰、下降期和濒临死亡期。最好的点是顶峰。很多公司倒闭的原因就是在濒临死亡期才想到去寻找第二曲线。我的问题主要在于在上升期的前期就忍不住寂寞开始寻找第二曲线。 明天还有一天培训。到时候继续反省。

软件测试干什么用

软件测试干什么用?最平常的回答就是提高软件质量。 测试人员一般根据什么来测试软件呢?我估计是软件设计文档。但是仅根据软件设计文档来测试软件大大的限制了测试的功效。如果和设计不符,测试人员就会报一个问题。但是如果测试用例很难编写,测试人员一般不会报问题。 而这正是问题所在。一个程序如果单元测试很难编写,那就是程序内部结构不咋的。一个软件如果系统测试很难编写,那就是软件架构不咋的。所以如果发现单元测试很难编写,就需要考虑重构程序了。所以如果发现系统测试很难编写,就需要考虑调整架构了。

如何提高软件可用性

大家都知道软件可用性是一个软件成功的关键。微软成功的关键是可用性,苹果成功的关键是可用性,狗狗成功的关键还是可用性。 那么如何提高软件的可用性呢?用户根据什么来使用一个软件呢?那当然是软件使用文档了。一个软件如果软件文档很难编写,一个功能说明如果连设计人员都看不明白,那么软件的可用性就不咋的。所以应该边编写软件文档,边考虑可用性,再反过头来修改软件设计。 很多公司都有专门的文档编写人员。但是经常存在的问题是文档编写人员根本就不明白软件是怎么回事。更别说提出软件可用性的建议了。如果文档编写人员也能对系统相当熟悉当然最好了。但是术业有专攻,一般很难达到。即使能有这样的人,成本也不一样了。 所以我觉的软件文档应该由文档编写人员提供文档结构参考。设计软件设计人员负责编写。编写过程中如果发现难写一般会比较自然的考虑修改设计。文档初步编写完成之后再由文档编写人员润色。润色完了之后再由客户代表和系统测试人员测试文档是否描述清晰。

JSON嵌套支持

Oryx采用JSON用来描述模型。虽然JSON简单,但是动不动几千行的代码实在看的眼花缭乱。更何况有相当多的重复描述,改起来非常不便,一改要改好几个地方。顺手写了一个可以处理嵌套JSON的JAVA类,如在属性中有”$name.json”,表示将name.json文件包含进来,name.json可以是一个JSONObject也可以是一个JSONArray。多重嵌套也支持。 代码如下:

为Oryx添加一个按钮

Oryx界面的最上方是一条工具栏,工具栏中用于多模型的各种处理。第一眼就看见保存和另存好像重复了。当时想当然的认为这是Oryx的一个问题。后来才发现原来此保存非彼保存。第一个用于保存的数据库,第二个用于保存到文件系统。只是图标和提示都一样。右面图片中的Description就是鼠标放上去之后的那个tooltip。我把两个分了一下,在i18n目录下的translation_**.js中将描述写成不一样就可以了。 Oryx采用的JS语法相当的复杂,我实在是不是特别明白。反正依葫芦画瓢把它做出来了。我把file.js拷贝成deploy.js,放到同一个目录下。只保留一个Plugin,在construct只留下一个按钮注册,再留下一个对应的按钮处理函数,其它的都可以不要。生成deploy.js后还需要将这个plugin加入到根目录下的plugins.xml中。 试了好多次才在界面上出现加入的按钮,后来发现做这种修改的时候一定要把浏览器的缓存清除一下,要不然还是使用老的代码,会以为改错了呢!

我佩服的几个人

打小到大,在现实生活中让我佩服的人还真不是很多。大不了感觉和我水平差不多。 从小时候上学开始到大学毕业,没有用功过多长时间,成绩也不比别人差多少。 毕业后到一研究所,从做微波器件到FPGA设计到电路设计再到软件设计,感觉都做的可以,没有碰到让我特别佩服的人。 跳槽后到做通信的Z公司,碰到的也是和我水平差不多的。 到现在做通信的E公司,还真是碰到几个让我佩服的人。C君,上海人,做事相当细致认真有规划,发现我们产品中很多设计文档都是他写的(当然大部分并不是他做的),这些文档在多年之后的今天看起来依然相当专业。单说他每天写一篇Blog我就坚持不住。L君,穆斯林,理解力相当的强,能发现很多不能发现的问题,提出别人想不到的方案,LP说那是因为他不吃猪肉才那么聪明的。P.N君,瑞典籍芬兰人,懂的相当多的JAVA知识,有一个产品几乎都是他实现的,其它的二三十号人就是给他打打下手。P.R君,典型的瑞典人,很能激励人,非常职业的经理人,用荷兰同事J君的说法就是他从来没把事儿做错过。 这些让我佩服的人有他们本身的能力,以及他们做事的态度。一个人十年如一个做同一件事,而且还能保持激情的人相当另人佩服。

Oryx插件stencil set设计

Oryx采用开放的插件设计,界面插件称为stencil set,可以方便的添加一个stencil set。Nicolas Peters有一篇学士论文Oryx Stencil Set Specification(和他的论文相比,我当年的论文简直是狗屁),中间不但讲述了规范,还有一个实际的例子。论文可以从下面网址下到http://code.google.com/p/oryx-editor/downloads/list。 设计一套新的stencil set最好的方法是从Oryx默认提供的workflownets开始,拷贝修改。 Oryx将一个图形模块称为一个stencil,为一种模型设计的一套图形模块称为stencil set。Oryx引用的方式为从editor.xhtml->json->view&icon。editor.xhtml引用哪个json文件会被使用;json文件中定义有哪些图形模块,图形模块如何显示(在view和icon中定义),每个图形模块有哪些属性,图像模块之间怎么连接,模型模块怎么包含等等。 在主页xhtml文件中指定哪个json文件会用到。 在json文件的开头定义基本属性。 “title”:”xFlow”, “namespace”:”http://www.xflow.org#”, “description”:”X Flow”, 在json的stencils中定义每个图形模块。Workflow Net的json文件中定义了一个diagram的,用于定义主界面的属性定义。 type属性可以是node,普通的节点;也可以是edge,用于连接节点。 id属性在一个stencil set中必须唯一。 view属性用于如何显示SVG矢量图。w3schools的教程看来之后基本就会了http://www.w3schools.com/svg/default.asp。 icon属性用于显示图标。 roles属性用于节点之间如何连接。在后面rules中说明。 properties用于指定节点有哪些属性。 需要注意的是,stencils中定义的顺序就是实际显示的顺序。containmentRules中定义的顺序和显示顺序没有关系。 connectionRules用于指定如何连接。下面的例子中,所有role为nodeSource的节点可以连接到role为nodeTarget的节点 “connectionRules”: [ { “role”:”controlflow”, “connects”: [ { “from”:”nodeSource”, “to”:”nodeTarget” }, ] }

Oryx开发环境建立

Oryx是一个用于业务建模的WEB框架。是几个波茨坦大学的几个学生的毕业设计。现在已有很多种业务建模语言的插件(stencil set)可以使用,像BPEL、BPMN、UML这些常用的建模语言已经可以直接使用。 大部分业务建模工具采用先放节点A,再放节点B,然后再让节点A指向节点B。这种方式总是感觉不是很方便,多了一个没有必要的步骤,而且节点A能不能指向节点B呢?我发现有两种比较好的处理方式。一种是Oryx采用的,先放置节点A,可以知道节点A可以到哪些节点,直接拉出这个节点。这样既少了一个步骤,又避免了记忆模型。还有一种是ActiveVOS采用的,先放置节点A,在把节点B粘到节点A上。ActiveVOS是商业软件,玩不了,只能玩玩Oryx了:-)。 Oryx是一个相当开放的框架,支持一种新的建模语言相当方便。当然开源总是有些这样那样的缺点,要用起来得费劲些。我把我设置Oryx的开发环境记录一下。希望对后来人有些借鉴意义。 代码可以从SVN直接下载,下载地址http://oryx-editor.googlecode.com/svn/trunk/。下载得费些时间,相当的大,超过300M。下载的代码可以直接导入到Eclipse工程中,但是Oryx把两部分(客户端Oryx和后端backend)放在一个Eclipse工程中。这种方式要扩展调试就不太方便了。所以我就把它拆成两个项目,采用的方式为先用Oryx本身提供的ANT生成WAR包,再根据WAR里有哪些内容从Oryx源码中获取。 然后准备执行环境,Oryx默认使用PostgreSQL数据库存储。由于Oryx使用Hibernate为底层存储,所以我猜其它数据库估计也可以,修改一下hibernate.cfg.xml应该就可以了。我安装了PostgreSQL8.4,还必须安装Python 2.6,在wiki上说需要Python 2.5,但是我试了Python 2.5不工作(原因应该是PostgreSQL8.4显式依赖python26.dll)。安装好了之后执行下面语句创建用户、创建数据库、执行SQL语句创建表函数等。Oryx后端poem使用的默认密码是poem,如果用其它密码,那么需要修改hibernate.cfg.xml。 createuser -U postgres –echo –-pwprompt –encrypted poem dropdb -U postgres poem createdb -U postgres –echo –encoding utf8 –owner poem poem psql -U postgres –dbname poem –file db_schema.sql Oryx使用了相当多的Java Script,而且Oryx将它们打包成一个文件oryx.debug.js。如果想要调试或修改就会很麻烦。我自己生成了一个xhtml文件,把build.xml中所有concat的js加到xhtml中,这些js包含Core的,还有Plugins的,具体用了哪些Plugins的js可以从plugin.xml中得到。