﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-paulwong-随笔分类-Project Management</title><link>http://www.blogjava.net/paulwong/category/38539.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 20 May 2021 14:15:13 GMT</lastBuildDate><pubDate>Thu, 20 May 2021 14:15:13 GMT</pubDate><ttl>60</ttl><item><title>软件工程的最大难题</title><link>http://www.blogjava.net/paulwong/archive/2021/05/20/435877.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Thu, 20 May 2021 08:31:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2021/05/20/435877.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/435877.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2021/05/20/435877.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/435877.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/435877.html</trackback:ping><description><![CDATA[<br /><a href="http://www.ruanyifeng.com/blog/2021/05/scaling-problem.html" target="_blank">http://www.ruanyifeng.com/blog/2021/05/scaling-problem.html</a><br /><img src ="http://www.blogjava.net/paulwong/aggbug/435877.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2021-05-20 16:31 <a href="http://www.blogjava.net/paulwong/archive/2021/05/20/435877.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>为什么开发与测试老掐架呢</title><link>http://www.blogjava.net/paulwong/archive/2016/04/12/430050.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Tue, 12 Apr 2016 03:01:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2016/04/12/430050.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/430050.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2016/04/12/430050.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/430050.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/430050.html</trackback:ping><description><![CDATA[<div id="OSChina_News_72395" newscontent=""  textcontent"="" style="margin: 10px 0px; line-height: 1.6; font-size: 10.5pt; overflow: hidden; font-family: 'Microsoft YaHei', Verdana, sans-serif, 宋体;"><p box-sizing:="" margin-top:="" margin-bottom:="" color:="" font-family:="" microsoft="" font-size:="" line-height:="" white-space:="" background-color:="" style="margin: 0px 0px 15pt; padding: 0px;"><img src="http://img.blog.csdn.net/20160410225822878" alt="" title="" border:="" box-sizing:="" max-width:="" data-bd-imgshare-binded="1" style="margin: 0px; padding: 0px; border: 0px; max-width: 640px;" /></p><p box-sizing:="" margin-top:="" margin-bottom:="" color:="" font-family:="" microsoft="" font-size:="" line-height:="" white-space:="" background-color:="" style="margin: 0px 0px 15pt; padding: 0px;">让我们思考几个常见的问题：</p><ul box-sizing:="" color:="" font-family:="" microsoft="" font-size:="" line-height:="" white-space:="" background-color:=""  list-paddingleft-2"="" style="margin: 0.5em 0px 0.5em 1.5em; padding: 0px; list-style-position: inside;"><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px; display: inline;">软件测试的目的是什么？</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px; display: inline;">开发人员能否构建出没有Bug的完美软件？</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px; display: inline;">测人人员和开发人员是什么关系？</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px; display: inline;">软件测试能否保证软件质量？</p></li></ul><p box-sizing:="" margin-top:="" margin-bottom:="" color:="" font-family:="" microsoft="" font-size:="" line-height:="" white-space:="" background-color:="" style="margin: 0px 0px 15pt; padding: 0px;">先闭目冥想五分钟吧，然后可以尝试着回答上面的问题。</p><p box-sizing:="" margin-top:="" margin-bottom:="" color:="" font-family:="" microsoft="" font-size:="" line-height:="" white-space:="" background-color:="" style="margin: 0px 0px 15pt; padding: 0px;">计算机先驱 Maurice Wikes 回忆起 1949 年他在英国剑桥工作的情形，在拖着打孔纸带上楼给雏形计算机 EDASC 装载程序时，他看到了自己的未来：</p><blockquote style="margin: 15px 10px; padding-right: 5px; padding-left: 35px; border-color: #eeeeee; color: #006600; font-size: 9pt; background-image: url(&quot;/img/blockquote.gif&quot;); background-color: #f4f5f7; background-position: 0% 0%; background-repeat: no-repeat;"><p style="margin: 0px 0px 15pt; padding: 0px;">我强烈的意识到，生命中剩下的好日子，都将耗费在给自己的程序找错误上头。</p></blockquote><p box-sizing:="" margin-top:="" margin-bottom:="" color:="" font-family:="" microsoft="" font-size:="" line-height:="" white-space:="" background-color:="" style="margin: 0px 0px 15pt; padding: 0px;">Maurice Wikes告诉我们，没有完美的软件。</p><p box-sizing:="" margin-top:="" margin-bottom:="" color:="" font-family:="" microsoft="" font-size:="" line-height:="" white-space:="" background-color:="" style="margin: 0px 0px 15pt; padding: 0px;">我曾经写过一篇荐书文，推荐了温伯格技术思想三部曲中的《<a href="http://mp.weixin.qq.com/s?__biz=MzAxMzUzNzYyNA==&amp;mid=400738399&amp;idx=1&amp;sn=215470061d405d22b12389dadd65c767&amp;scene=20#rd" color:="" text-decoration:="" box-sizing:="" style="margin: 0px; padding: 0px; color: #3e62a6; outline: 0px;"><strong box-sizing:="" style="margin: 0px; padding: 0px;">颠覆完美软件：软件测试必须知道的几件事</strong></a>》。在这本书里，温伯格也告诉我们，没有完美的软件。所有的开发和测试人员都应该读读那本书。</p><p box-sizing:="" margin-top:="" margin-bottom:="" color:="" font-family:="" microsoft="" font-size:="" line-height:="" white-space:="" background-color:="" style="margin: 0px 0px 15pt; padding: 0px;">温伯格在《颠覆完美软件》中几乎讨论所有常见的与软件测试相关的概念、问题和指导思想，所以，在这篇文章里，我只能来吐槽啦，我将从以下几方面列一些常见的现象，希望能引起大家的思考。</p><ul box-sizing:="" color:="" font-family:="" microsoft="" font-size:="" line-height:="" white-space:="" background-color:=""  list-paddingleft-2"="" style="margin: 0.5em 0px 0.5em 1.5em; padding: 0px; list-style-position: inside;"><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px; display: inline;">测试和开发的关系</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px; display: inline;">流程与标准</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px; display: inline;">资源</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px; display: inline;">态度</p></li></ul><h3>测试和开发的关系</h3><p box-sizing:="" margin-top:="" margin-bottom:="" color:="" font-family:="" microsoft="" font-size:="" line-height:="" white-space:="" background-color:="" style="margin: 0px 0px 15pt; padding: 0px;">测试和开发是对立的吗？</p><p box-sizing:="" margin-top:="" margin-bottom:="" color:="" font-family:="" microsoft="" font-size:="" line-height:="" white-space:="" background-color:="" style="margin: 0px 0px 15pt; padding: 0px;">从处理Bug的角度看，似乎可以这么说。<strong box-sizing:="" style="margin: 0px; padding: 0px;">开发人员既生产代码，也生产Bug</strong>。因为开发人员不可避免地会生产Bug，所以测试人员必须存在，以便在软件交付之前尽可能多地检出Bug，保证交付给客户的软件质量更好一些。一个产Bug，一个挑Bug，看起来似乎是对立的。</p><p box-sizing:="" margin-top:="" margin-bottom:="" color:="" font-family:="" microsoft="" font-size:="" line-height:="" white-space:="" background-color:="" style="margin: 0px 0px 15pt; padding: 0px;">在现实中，很多测试团队和开发团队也正是因为这一点而搞得关系不和，甚至真的对立起来。请回想一下你周围发生的与开发和测试相关的事儿，看看有没有遇到过下面的情景：</p><ul box-sizing:="" color:="" font-family:="" microsoft="" font-size:="" line-height:="" white-space:="" background-color:=""  list-paddingleft-2"="" style="margin: 0.5em 0px 0.5em 1.5em; padding: 0px; list-style-position: inside;"><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px; display: inline;">开发说，测试净找麻烦，客户跟本不可能像他们那样使用软件</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px; display: inline;">测试说，问题总是会在看似极端的条件下产生，用户总是会不经意触碰到看似极端的不可能出现的条件</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px; display: inline;">开发说，测试花在异常情况下的精力比测试主流程还多，不知道轻重缓急</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px; display: inline;">测试说，开发从来不考虑测试的感受，连测都不测就扔给我们</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px; display: inline;">开发说，我都测了，还要测试人员干什么</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px; display: inline;">测试说，这么明显的问题你们都不测一下，把我们测试当垃圾桶啊</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px; display: inline;">&#8230;&#8230;</p></li></ul><p box-sizing:="" margin-top:="" margin-bottom:="" color:="" font-family:="" microsoft="" font-size:="" line-height:="" white-space:="" background-color:="" style="margin: 0px 0px 15pt; padding: 0px;">许许多多类似的问题，让开发和测试的关系从扑朔迷离、相爱相杀走向对立。我见过开发和测试搞冷战某人遇见某人侧脸而过，也见过测试经理和开发经理打架，还见过高层领导故意让测试团队和开发团队关系紧张以为这样可以提高测试效率也能给开发压力最终会产出更高质量的软件&#8230;&#8230;</p><p box-sizing:="" margin-top:="" margin-bottom:="" color:="" font-family:="" microsoft="" font-size:="" line-height:="" white-space:="" background-color:="" style="margin: 0px 0px 15pt; padding: 0px;">实际上，测试和开发拥有同一个目的：让软件更完美。测试和开发的关系，是一个问题的两面，应该是相辅相成和平共处的。测试不是为了挑刺儿，他提出的问题也不针对生产软件的开发人员，而仅仅是在努力想让开发人员的产出物看起来更好用。只要开发不将测试提Bug这个行为看成针对个人的行为，一切就有了美好的前提。</p><p box-sizing:="" margin-top:="" margin-bottom:="" color:="" font-family:="" microsoft="" font-size:="" line-height:="" white-space:="" background-color:="" style="margin: 0px 0px 15pt; padding: 0px;"><strong box-sizing:="" style="margin: 0px; padding: 0px;">否定软件，并不是否定开发软件的人</strong>。这是开发和测试都需要明确的一个原则和前提。</p><p box-sizing:="" margin-top:="" margin-bottom:="" color:="" font-family:="" microsoft="" font-size:="" line-height:="" white-space:="" background-color:="" style="margin: 0px 0px 15pt; padding: 0px;">还有的人认为开发和测试之关系类似皮与毛，皮之不存毛将焉附？所以有的开发也会因此而有优越感：没我们写软件，你们测试早下岗了！可是，开发不写软件，开发也下岗了耶！</p><p box-sizing:="" margin-top:="" margin-bottom:="" color:="" font-family:="" microsoft="" font-size:="" line-height:="" white-space:="" background-color:="" style="margin: 0px 0px 15pt; padding: 0px;">感谢开发的不完美，让测试可以有事可做并练就慧眼。</p><p box-sizing:="" margin-top:="" margin-bottom:="" color:="" font-family:="" microsoft="" font-size:="" line-height:="" white-space:="" background-color:="" style="margin: 0px 0px 15pt; padding: 0px;">感谢测试的认真细致和耐心体贴，让开发可以发现自己的不完美并有机会提升自己&#8212;&#8212;那些说我软件不好的，都是为了我好。</p><h3>资源</h3><blockquote box-sizing:="" margin:="" 0px="" padding:="" 15px="" border-left-width:="" border-left-color:="" border-radius:="" 5px="" color:="" font-family:="" microsoft="" font-size:="" line-height:="" white-space:="" background-color:="" style="margin: 15px 10px; padding-right: 5px; padding-left: 35px; border-color: #eeeeee; color: #006600; font-size: 9pt; background-image: url(&quot;/img/blockquote.gif&quot;); background-color: #f4f5f7; background-position: 0% 0%; background-repeat: no-repeat;"><p box-sizing:="" margin-top:="" margin-bottom:="" margin-left:="" line-height:="" style="margin: 0px 0px 15pt; padding: 0px;">别动我们测试的服务器，你们自己搭一个！</p><p box-sizing:="" margin-top:="" margin-bottom:="" margin-left:="" line-height:="" style="margin: 0px 0px 15pt; padding: 0px;">我们没环境，不用你们的用谁的？</p><p box-sizing:="" margin-top:="" margin-bottom:="" margin-left:="" line-height:="" style="margin: 0px 0px 15pt; padding: 0px;">谁把我们的测试手机拿走了？你们申请一个嘛，老来占我们设备。</p><p box-sizing:="" margin-top:="" margin-bottom:="" margin-left:="" line-height:="" style="margin: 0px 0px 15pt; padding: 0px;">谁在用我们的账号？招呼都不打！我要用，赶紧退出来！</p></blockquote><p box-sizing:="" margin-top:="" margin-bottom:="" color:="" font-family:="" microsoft="" font-size:="" line-height:="" white-space:="" background-color:="" style="margin: 0px 0px 15pt; padding: 0px;">有时开发和测试之间也会有资源上的冲突，要有努力的有创造性的解决（我可以负责任地说，装黑苹果不是好办法），<strong box-sizing:="" style="margin: 0px; padding: 0px;">不要让大家伙的工作卡在环境上，这是管理者要解决的基本问题</strong>。我见过很多非常棒的一线经理，在现实制约下，主动把自己的手机、iPad都贡献出来当做测试设备。这也是解决资源问题的一种办法哦。</p><h3>流程与标准</h3><p box-sizing:="" margin-top:="" margin-bottom:="" color:="" font-family:="" microsoft="" font-size:="" line-height:="" white-space:="" background-color:="" style="margin: 0px 0px 15pt; padding: 0px;">你身边的人员会这么抱怨吗：</p><ul box-sizing:="" color:="" font-family:="" microsoft="" font-size:="" line-height:="" white-space:="" background-color:=""  list-paddingleft-2"="" style="margin: 0.5em 0px 0.5em 1.5em; padding: 0px; list-style-position: inside;"><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px; display: inline;">开发根本不看我们的测试用例，评审邮件从来就不回复</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px; display: inline;">我们一报Bug，开发就说用户根本不可能这么用，还说不知道我们怎么会这么测</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px; display: inline;">送测单里根本不写测试范围或者寥寥几句跟没写一样</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px; display: inline;">开发调整设计从来也不告诉我们</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px; display: inline;">为什么产品经理和UI只和开发讨论需求变更？</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px; display: inline;">为什么发布计划里不给测试预留测试时间？</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px; display: inline;">为什么开发写完代码测都不测就扔给我们？</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px; display: inline;">为什么客户那里发现了问题老问是谁测的、为什么没测出来？</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px; display: inline;">测试老是一声不吭就把Bug优先级设置为Major</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px; display: inline;">测试总是把大量时间花在用户根本不可能用到的功能上</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px; display: inline;">测试分不清哪些什么是重点，你给他说他还老是一堆道理这了那了</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px; display: inline;">测试提的Bug，现象描述也不准确，重现步骤也没有，有的根本就知道是不是误操作</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px; display: inline;">测试老来打断我，一会儿叫一下一会儿叫一下，根本没办法专注开发</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px; display: inline;">jira上的Bug重复率太高，一个问题提N遍，难道就不能合并一下？</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px; display: inline;">测试发现Bug，一声招呼都不打就直接告诉老板了，搞得我很被动</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px; display: inline;">测试就是专门挑刺儿的，有劲不往正地儿使，你倒是测测用户常用的功能啊</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px; display: inline;">那么简单的Bug都能流出到用户那里，真不知道测试怎么测的</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px; display: inline;">开发老嫌测试报告数据不漂亮，逼着我们调整</p></li></ul><p box-sizing:="" margin-top:="" margin-bottom:="" color:="" font-family:="" microsoft="" font-size:="" line-height:="" white-space:="" background-color:="" style="margin: 0px 0px 15pt; padding: 0px;">Ok，如果你身边的开发和测试从来没有过类似的问题，那很好，恭喜你，看来你们的团队人nice协作也很顺畅，棒棒哒。</p><p box-sizing:="" margin-top:="" margin-bottom:="" color:="" font-family:="" microsoft="" font-size:="" line-height:="" white-space:="" background-color:="" style="margin: 0px 0px 15pt; padding: 0px;">假如你身边充斥着这样嘈杂的抱怨，那说明什么呢？开发、测试、发布这一套流程有问题？还是团队缺乏明确的指向来引导大家向积极、有效的行为靠近？</p><p box-sizing:="" margin-top:="" margin-bottom:="" color:="" font-family:="" microsoft="" font-size:="" line-height:="" white-space:="" background-color:="" style="margin: 0px 0px 15pt; padding: 0px;">流程和标准总是有待解释的，再好的规则，歪嘴和尚也能把它念斜&#8230;&#8230;</p><p box-sizing:="" margin-top:="" margin-bottom:="" color:="" font-family:="" microsoft="" font-size:="" line-height:="" white-space:="" background-color:="" style="margin: 0px 0px 15pt; padding: 0px;">我们随便挑一个问题吧：<strong box-sizing:="" style="margin: 0px; padding: 0px;">为什么开发写完代码测都不测就扔给我们</strong>？这个问题普遍存在，它反映出的是程序员和测试人员的工作边界难以界定的矛盾。</p><p box-sizing:="" margin-top:="" margin-bottom:="" color:="" font-family:="" microsoft="" font-size:="" line-height:="" white-space:="" background-color:="" style="margin: 0px 0px 15pt; padding: 0px;">程序员会说，我都测一遍，还要你们测试做什么？</p><p box-sizing:="" margin-top:="" margin-bottom:="" color:="" font-family:="" microsoft="" font-size:="" line-height:="" white-space:="" background-color:="" style="margin: 0px 0px 15pt; padding: 0px;">测试会说，你测都不测，冒烟都过不了，有没有责任心？</p><p box-sizing:="" margin-top:="" margin-bottom:="" color:="" font-family:="" microsoft="" font-size:="" line-height:="" white-space:="" background-color:="" style="margin: 0px 0px 15pt; padding: 0px;">程序员说，要我写测试用例，搭各种环境，遍历各种正常、异常逻辑，我还有没有时间写代码了？</p><p box-sizing:="" margin-top:="" margin-bottom:="" color:="" font-family:="" microsoft="" font-size:="" line-height:="" white-space:="" background-color:="" style="margin: 0px 0px 15pt; padding: 0px;">测试会说，我们测试是垃圾桶吗，什么烂玩意儿都直接扔给我们，我们的时间就那么不值钱？</p><p box-sizing:="" margin-top:="" margin-bottom:="" color:="" font-family:="" microsoft="" font-size:="" line-height:="" white-space:="" background-color:="" style="margin: 0px 0px 15pt; padding: 0px;">开发会说，测试本来就是干这个的，你不测谁测？</p><p box-sizing:="" margin-top:="" margin-bottom:="" color:="" font-family:="" microsoft="" font-size:="" line-height:="" white-space:="" background-color:="" style="margin: 0px 0px 15pt; padding: 0px;">&#8230;&#8230;</p><p box-sizing:="" margin-top:="" margin-bottom:="" color:="" font-family:="" microsoft="" font-size:="" line-height:="" white-space:="" background-color:="" style="margin: 0px 0px 15pt; padding: 0px;">像这样的问题，能制定一个标准，说明什么样的逻辑开发要自测覆盖什么样的逻辑可以交给测试来测？能画一条三八线吗？</p><p box-sizing:="" margin-top:="" margin-bottom:="" color:="" font-family:="" microsoft="" font-size:="" line-height:="" white-space:="" background-color:="" style="margin: 0px 0px 15pt; padding: 0px;">不能。所以，这个时候，靠谱的一线管理者就显得很重要。如何创造性的发现适合团队的方法来让大家顺畅地协同工作，比标准、制度更重要，这往往依赖于技术管理者的能力和团队成员的意识。没有普适的方法，只有适合这个组织的、此时此地的策略，加油吧，在战斗中摸索出最适合当下的道路。</p><p box-sizing:="" margin-top:="" margin-bottom:="" color:="" font-family:="" microsoft="" font-size:="" line-height:="" white-space:="" background-color:="" style="margin: 0px 0px 15pt; padding: 0px;">那什么是靠谱的一线管理者呢？</p><p box-sizing:="" margin-top:="" margin-bottom:="" color:="" font-family:="" microsoft="" font-size:="" line-height:="" white-space:="" background-color:="" style="margin: 0px 0px 15pt; padding: 0px;">温伯格《成为技术领导者》一书中对领导职责的定义如下：</p><blockquote style="margin: 15px 10px; padding-right: 5px; padding-left: 35px; border-color: #eeeeee; color: #006600; font-size: 9pt; background-image: url(&quot;/img/blockquote.gif&quot;); background-color: #f4f5f7; background-position: 0% 0%; background-repeat: no-repeat;"><p style="margin: 0px 0px 15pt; padding: 0px;">领导的职责就是创造这样一个环境，每个人都能在其中发挥出更多的能力。</p></blockquote><p box-sizing:="" margin-top:="" margin-bottom:="" color:="" font-family:="" microsoft="" font-size:="" line-height:="" white-space:="" background-color:="" style="margin: 0px 0px 15pt; padding: 0px;">如果一个技术领导带领的团队，大部分人都能专心做与其能力适配的事情而不用整天泡在与本节前面所列类似的问题里，那他基本上就算是比较靠谱了。</p><p box-sizing:="" margin-top:="" margin-bottom:="" color:="" font-family:="" microsoft="" font-size:="" line-height:="" white-space:="" background-color:="" style="margin: 0px 0px 15pt; padding: 0px;">至于像给测试预留多长的测试周期、调整设计要不要通知测试、需求调整要不要测试参与等问题，合理的流程和标准可以起到很大的辅助作用，技术领导者只要依据合理的制度，引导大家有效参与，就可以化解。</p><h3>态度</h3><p box-sizing:="" margin-top:="" margin-bottom:="" color:="" font-family:="" microsoft="" font-size:="" line-height:="" white-space:="" background-color:="" style="margin: 0px 0px 15pt; padding: 0px;">场景一：</p><pre white-space:="" word-wrap:="" box-sizing:="" margin-top:="" margin-bottom:="" font-family:="" source="" code="" padding:="" font-size:="" line-height:="" word-break:="" color:="" border-width:="" border-top-="" :="" border-right-="" border-bottom-="" border-color:="" border-radius:="" background-color:="" style="margin-top: 10px; margin-bottom: 10px; padding: 5px; font-size: 9pt; font-family: 'Courier New', Arial; border-width: 1px 1px 1px 5px; border-style: solid; border-color: #dddddd #dddddd #dddddd #6ce26c; white-space: pre-wrap; word-wrap: break-word; background: #f6f6f6;">测试MM对阿猿说发现了一个Bug。  阿猿矢口否认：不可能，绝对不可能！  MM：真的有Bug，你过来看一下！  阿猿：我都不用看，在我这儿好好儿的。  MM：你来看一下嘛&#8230;&#8230;  阿猿：看什么看，肯定你环境问题，动什么东西了吗？重启了吗？</pre><p box-sizing:="" margin-top:="" margin-bottom:="" color:="" font-family:="" microsoft="" font-size:="" line-height:="" white-space:="" background-color:="" style="margin: 0px 0px 15pt; padding: 0px;">场景二：</p><pre white-space:="" word-wrap:="" box-sizing:="" margin-top:="" margin-bottom:="" font-family:="" source="" code="" padding:="" font-size:="" line-height:="" word-break:="" color:="" border-width:="" border-top-="" :="" border-right-="" border-bottom-="" border-color:="" border-radius:="" background-color:="" style="margin-top: 10px; margin-bottom: 10px; padding: 5px; font-size: 9pt; font-family: 'Courier New', Arial; border-width: 1px 1px 1px 5px; border-style: solid; border-color: #dddddd #dddddd #dddddd #6ce26c; white-space: pre-wrap; word-wrap: break-word; background: #f6f6f6;">测试MM想在jira上提个Bug，先在QQ上对阿猿说：有个Bug，你过来看下？  阿猿：忙着呢，焦头烂额的。  MM：一分钟都用不了，你来看下吧。  阿猿：思路一打断就不好恢复了，等会儿！  MM：你不看我提到jira上了啊。  阿猿：随便，你不就是爱提Bug嘛。</pre><p box-sizing:="" margin-top:="" margin-bottom:="" color:="" font-family:="" microsoft="" font-size:="" line-height:="" white-space:="" background-color:="" style="margin: 0px 0px 15pt; padding: 0px;">场景三：</p><pre white-space:="" word-wrap:="" box-sizing:="" margin-top:="" margin-bottom:="" font-family:="" source="" code="" padding:="" font-size:="" line-height:="" word-break:="" color:="" border-width:="" border-top-="" :="" border-right-="" border-bottom-="" border-color:="" border-radius:="" background-color:="" style="margin-top: 10px; margin-bottom: 10px; padding: 5px; font-size: 9pt; font-family: 'Courier New', Arial; border-width: 1px 1px 1px 5px; border-style: solid; border-color: #dddddd #dddddd #dddddd #6ce26c; white-space: pre-wrap; word-wrap: break-word; background: #f6f6f6;">测试MM呼叫阿猿：阿猿阿猿，程序又崩溃了，快来看看！  阿猿慢腾腾地起身过来，鼠标点几下：看不出来什么问题，你怎么操作的？  MM：这样点一下，那样，这样，&#8230;&#8230;回车&#8230;&#8230;。  阿猿：重现不了啊，你想办法重现，重现了再叫我，我忙着呢。  MM：&#8230;&#8230;</pre><p box-sizing:="" margin-top:="" margin-bottom:="" color:="" font-family:="" microsoft="" font-size:="" line-height:="" white-space:="" background-color:="" style="margin: 0px 0px 15pt; padding: 0px;">我曾经画过一张暴漫，以&#8220;<a href="http://mp.weixin.qq.com/s?__biz=MzAxMzUzNzYyNA==&amp;mid=206526175&amp;idx=1&amp;sn=3c4b5da82774d0dfa0de7fee06fa689e&amp;scene=18#rd" color:="" text-decoration:="" box-sizing:="" style="margin: 0px; padding: 0px; color: #3e62a6; outline: 0px;"><strong box-sizing:="" style="margin: 0px; padding: 0px;">她发现了一个Bug</strong></a>&#8221;为题发布在微信订阅号&#8220;程序视界&#8221;里，再现类似的场景，感兴趣的可以在订阅号内回复10019查看（点击订阅号底部的帮助菜单里的&#8220;所有文章&#8221;子菜单也能找到）。</p><p box-sizing:="" margin-top:="" margin-bottom:="" color:="" font-family:="" microsoft="" font-size:="" line-height:="" white-space:="" background-color:="" style="margin: 0px 0px 15pt; padding: 0px;">开发和测试的日常工作中，上面的情景不断上演，这其中有一部分原因来自态度。我们有时还能听到类似下面的话：</p><ul box-sizing:="" color:="" font-family:="" microsoft="" font-size:="" line-height:="" white-space:="" background-color:=""  list-paddingleft-2"="" style="margin: 0.5em 0px 0.5em 1.5em; padding: 0px; list-style-position: inside;"><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px; display: inline;">你Bug里的现象描述根本没用</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px; display: inline;">你根本就没理解这个逻辑，给你说不清楚</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px; display: inline;">测试什么都不懂&#8230;&#8230;</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px; display: inline;">你听我的，我让你怎么测你就怎么测</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px; display: inline;">你这种测法儿，再好的软件都经不起你折腾</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px; display: inline;">用户根本不可能这样用，你们整来整去净瞎耽误工夫</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px; display: inline;">一轮都没测完，你们就给老板说可以按期交付没问题？</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px; display: inline;">你们安排计划时根本不考虑测试，三天，三天怎么可能测得完！</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px; padding: 0px; display: inline;">&#8230;&#8230;</p></li></ul><p box-sizing:="" margin-top:="" margin-bottom:="" color:="" font-family:="" microsoft="" font-size:="" line-height:="" white-space:="" background-color:="" style="margin: 0px 0px 15pt; padding: 0px;">有时，有一些开发人员会用技术优势藐视测试，认为测试工作技术含量低，内心认为测试是附属没地位，说话就不太客气&#8230;&#8230;测试会感觉到，反过来也会对开发有意见&#8230;&#8230;就这么，从相敬如宾开始走向嫌怨丛生&#8230;&#8230;</p><p box-sizing:="" margin-top:="" margin-bottom:="" color:="" font-family:="" microsoft="" font-size:="" line-height:="" white-space:="" background-color:="" style="margin: 0px 0px 15pt; padding: 0px;">有个朋友的QQ签名档是：<strong box-sizing:="" style="margin: 0px; padding: 0px;">没有自我，只有大道</strong>。我琢磨，放在软件项目里，也挺适用的。</p><p box-sizing:="" margin-top:="" margin-bottom:="" color:="" font-family:="" microsoft="" font-size:="" line-height:="" white-space:="" background-color:="" style="margin: 0px 0px 15pt; padding: 0px;">其实，开发和测试拥有共同的目的：生产高质量软件。具体说，每一个产品、项目、版本都有明确的目标，这些目标是属于开发和测试的，是大家的。我们把共同的目标牢记在心，摆在首位，我们还要想着别人所做的一切，都是针对软件本身，都是在为目标而努力，这样就心平气和多了，就容易从当下的泥沼中超脱出来，求同存异共同前进。</p><ul box-sizing:="" color:="" font-family:="" microsoft="" font-size:="" line-height:="" white-space:="" background-color:=""  list-paddingleft-2"="" style="margin: 0.5em 0px 0.5em 1.5em; padding: 0px; list-style-position: inside;"></ul><p box-sizing:="" margin-top:="" margin-bottom:="" color:="" font-family:="" microsoft="" font-size:="" line-height:="" white-space:="" background-color:="" style="margin: 0px 0px 15pt; padding: 0px;"><strong box-sizing:="" style="margin: 0px; padding: 0px;">作者：foruok&nbsp;微信订阅号&#8220;程序视界&#8221;</strong>(programmer_sight)</p><p box-sizing:="" margin-top:="" margin-bottom:="" color:="" font-family:="" microsoft="" font-size:="" line-height:="" white-space:="" background-color:="" style="margin: 0px 0px 15pt; padding: 0px;">原文：<a href="http://blog.csdn.net/foruok/article/details/51116106" target="_blank" style="margin: 0px; padding: 0px; color: #3e62a6; outline: 0px;">CSDN</a></p></div><img src ="http://www.blogjava.net/paulwong/aggbug/430050.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2016-04-12 11:01 <a href="http://www.blogjava.net/paulwong/archive/2016/04/12/430050.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>张左峰的歪理邪说 之 Redmine 1.4.X 史上最全插件方案</title><link>http://www.blogjava.net/paulwong/archive/2015/08/19/426885.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Wed, 19 Aug 2015 02:26:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2015/08/19/426885.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/426885.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2015/08/19/426885.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/426885.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/426885.html</trackback:ping><description><![CDATA[<div lh22"="" style="padding: 10px; margin: 0px 12px; border: 1px dashed #d5d5d5; line-height: 22px; color: #555555; font-family: 宋体, 'Arial Narrow', arial, serif; font-size: 12px; background-color: #ffffff;">原创作品，允许转载，转载时请务必以超链接形式标明文章&nbsp;<a href="http://salivaxiu.blog.51cto.com/330680/1613510" target="_blank" style="padding: 0px; margin: 0px; color: #386d00;">原始出处</a>&nbsp;、作者信息和本声明。否则将追究法律责任。<a href="http://salivaxiu.blog.51cto.com/330680/1613510" style="padding: 0px; margin: 0px; color: #386d00; text-decoration: none;">http://salivaxiu.blog.51cto.com/330680/1613510</a></div><div style="margin: 20px 15px 8px; line-height: 2; border-bottom-width: 1px; border-bottom-style: dashed; border-bottom-color: #d9d9d9; word-wrap: break-word; word-break: normal; color: #555555; font-family: 宋体, 'Arial Narrow', arial, serif; background-color: #ffffff;"><p style="padding: 0px; margin: 0px; clear: both; height: auto; overflow: hidden; color: #454545; font-family: tahoma, helvetica, arial; line-height: 21px;">前面有一个0.9.X的插件推荐列表，但是太老了，更新一下！</p><p style="padding: 0px; margin: 0px; clear: both; height: auto; overflow: hidden; color: #454545; font-family: tahoma, helvetica, arial; line-height: 21px;">&nbsp;</p><p style="padding: 0px; margin: 0px; clear: both; height: auto; overflow: hidden; color: #454545; font-family: tahoma, helvetica, arial; line-height: 21px;">PS.很多插件是我自己汉化，甚至付费的，并且进行小幅修改，所以仅供参考。。。。。</p><p style="padding: 0px; margin: 0px; clear: both; height: auto; overflow: hidden; color: #454545; font-family: tahoma, helvetica, arial; line-height: 21px;">&nbsp;</p><p style="padding: 0px; margin: 0px; clear: both; height: auto; overflow: hidden; color: #454545; font-family: tahoma, helvetica, arial; line-height: 21px;">PPS.话说，搞Redmine这帮人，真是一群疯子，更新太快了。。。。。就不敢更新慢点么。。。。。。</p><p style="padding: 0px; margin: 0px; clear: both; height: auto; overflow: hidden; color: #454545; font-family: tahoma, helvetica, arial; line-height: 21px;">&nbsp;</p><p style="padding: 0px; margin: 0px; clear: both; height: auto; overflow: hidden; color: #454545; font-family: tahoma, helvetica, arial; line-height: 21px;">Advanced&nbsp;roadmap&nbsp;&amp;&nbsp;milestones&nbsp;plugin&nbsp;&nbsp;0.7.0&nbsp;&nbsp;高级路线图，里程碑，不解释<br style="padding: 0px; margin: 0px;" />Author&nbsp;box&nbsp;&nbsp;0.0.3&nbsp;&nbsp;这个可以在Wiki侧边栏显示一个你的头像和信息，搞个人崇拜用的<br style="padding: 0px; margin: 0px;" />CRM&nbsp;plugin&nbsp;2.3.3-pro&nbsp;CRM插件，很好用，也很专业，付费的<br style="padding: 0px; margin: 0px;" />Due&nbsp;Date&nbsp;Reminder&nbsp;plugin&nbsp;&nbsp;0.2.1&nbsp;超期提醒插件<br style="padding: 0px; margin: 0px;" />Issue&nbsp;Hot&nbsp;Buttons&nbsp;Plugin&nbsp;&nbsp;0.4.5&nbsp;超级有用的插件，快速自定义功能按钮，很方便更新问题，尤其是一两项的时候<br style="padding: 0px; margin: 0px;" />Redmine&nbsp;Add&nbsp;Subversion&nbsp;Links&nbsp;&nbsp;0.0.5&nbsp;为版本库增加直接的SVN链接<br style="padding: 0px; margin: 0px;" />Redmine&nbsp;Assets&nbsp;plugin&nbsp;&nbsp;0.0.1&nbsp;软资产管理，各位亲们，如果你有几万个问题，里卖包含图片文档啥的，你要找一个特痛苦吧？这个插件帮你解决<br style="padding: 0px; margin: 0px;" />Redmine&nbsp;Banner&nbsp;plugin&nbsp;0.0.6&nbsp;公告。。。超级实用。。。可以针对全局，也可以针对项目，发出公告<br style="padding: 0px; margin: 0px;" />Redmine&nbsp;Better&nbsp;Gantt&nbsp;Chart&nbsp;plugin&nbsp;0.6.5&nbsp;更好的甘特图。。的确更好<br style="padding: 0px; margin: 0px;" />Redmine&nbsp;CKEditor&nbsp;plugin&nbsp;0.0.6&nbsp;超级棒的Textile插件，替换Redmine那个简单的文本编辑器<br style="padding: 0px; margin: 0px;" />Redmine&nbsp;Code&nbsp;Review&nbsp;plugin&nbsp;0.4.8&nbsp;代码评审，不解释<br style="padding: 0px; margin: 0px;" />Redmine&nbsp;Default&nbsp;Version&nbsp;plugin&nbsp;0.0.2&nbsp;默认版本，给新建问题设置一个默认版本<br style="padding: 0px; margin: 0px;" />Digest&nbsp;plugin&nbsp;0.2.0&nbsp;一个后台发送项目活动信息的插件，做日报，或者什么汇报用的DMSF&nbsp;1.2.3&nbsp;网页版的SVN，文档管家，支持HTML5，超级好用，但是界面稍显臃肿<br style="padding: 0px; margin: 0px;" />Redmine&nbsp;Doodles&nbsp;plugin&nbsp;0.5.1&nbsp;投票，不解释<br style="padding: 0px; margin: 0px;" />Redmine&nbsp;Glossary&nbsp;Plugin&nbsp;0.7.0&nbsp;名词解释插件，知识管理一部分<br style="padding: 0px; margin: 0px;" />Redmine&nbsp;Good&nbsp;Job&nbsp;plugin&nbsp;0.1.1&nbsp;Goodjob....耍帅用的<br style="padding: 0px; margin: 0px;" />Issue&nbsp;Importer&nbsp;1.0&nbsp;导入插件，超级实用，如果你有多个工作系统，切换来切换去，离不开这玩意，但是不建议新手使用，批量出错，特痛苦。<br style="padding: 0px; margin: 0px;" />Redmine&nbsp;Information&nbsp;Plugin&nbsp;0.2.5&nbsp;这个也挺有用的，把系统的一些信息开放出来，比如宏，让大家参考<br style="padding: 0px; margin: 0px;" />Redmine&nbsp;Attach&nbsp;Screenshot&nbsp;plugin&nbsp;0.4.2&nbsp;附件截图，好似用了Java<br style="padding: 0px; margin: 0px;" />Redmine&nbsp;Issue&nbsp;Checklist&nbsp;plugin&nbsp;1.0.3&nbsp;Checklist，这个还解释么<br style="padding: 0px; margin: 0px;" />Redmine&nbsp;Issue&nbsp;Extensions&nbsp;plugin&nbsp;0.1.0&nbsp;问题扩展插件，官方都用的，必须用啊<br style="padding: 0px; margin: 0px;" />Redmine&nbsp;Issue&nbsp;Templates&nbsp;plugin&nbsp;0.0.2.1&nbsp;这是一个比较好用的插件，问题模板，尤其是一些重复性高，但是需要对过程管理的，配合<br style="padding: 0px; margin: 0px;" />ChecklistKnowledgebase&nbsp;1.0.0&nbsp;知识库。。。我觉得也很实用的，不过有个BUG，需要你在数据库指定关联一下项目<br style="padding: 0px; margin: 0px;" />List&nbsp;duplicate&nbsp;views&nbsp;plugin&nbsp;0.0.5&nbsp;好似可以检测到插件冲突。。。我就遇到过<br style="padding: 0px; margin: 0px;" />Redmine&nbsp;Local&nbsp;Avatars&nbsp;plugin&nbsp;0.1.1&nbsp;本地头像，哈哈，我们断网的<br style="padding: 0px; margin: 0px;" />Redmine&nbsp;Logs&nbsp;plugin&nbsp;0.0.3&nbsp;可以再后台直接看日志，不用登陆到服务器了<br style="padding: 0px; margin: 0px;" />Redmine&nbsp;(Monitoring&nbsp;&amp;&nbsp;Controlling&nbsp;|&nbsp;Monitoramento&nbsp;&amp;&nbsp;Controle)&nbsp;0.1.1&nbsp;图形化的数据分析插件，装B用的（当然也有实际意义，宏观数据）<br style="padding: 0px; margin: 0px;" />My&nbsp;Roadmaps&nbsp;plugin&nbsp;0.1.12&nbsp;我的路线图。。。。其实没啥用<br style="padding: 0px; margin: 0px;" />Redmine&nbsp;News&nbsp;Balloon&nbsp;plugin&nbsp;0.0.1&nbsp;如果有新闻，会弹出一个气泡，提醒你<br style="padding: 0px; margin: 0px;" />Niko-niko&nbsp;Calendar&nbsp;plugin&nbsp;1.1.2&nbsp;我最最最最喜欢的插件，感觉跟每天微博一样，挺有意思的<br style="padding: 0px; margin: 0px;" />Redmine&nbsp;plugin&nbsp;views&nbsp;revisions&nbsp;plugin&nbsp;0.0.1&nbsp;忘了。。。。。<br style="padding: 0px; margin: 0px;" />Preview&nbsp;attached&nbsp;files&nbsp;and&nbsp;attributes&nbsp;column&nbsp;plugin&nbsp;0.1.7&nbsp;附件的那个缩略图<br style="padding: 0px; margin: 0px;" />Private&nbsp;Wiki&nbsp;0.1.1&nbsp;私有维基，Redmine最大的问题，在于权限管理不够细分，多这么一个插件，就相当增加一项特殊权限<br style="padding: 0px; margin: 0px;" />Reorder&nbsp;links&nbsp;arbitrary&nbsp;0.0.7&nbsp;这个对管理员设置有帮助，可以快速设置排序<br style="padding: 0px; margin: 0px;" />Smart&nbsp;issues&nbsp;sort&nbsp;plugin&nbsp;0.3.1&nbsp;智能排序，对经常用父任务的人，帮助很大<br style="padding: 0px; margin: 0px;" />My&nbsp;Page&nbsp;Blocks&nbsp;plugin&nbsp;1.2&nbsp;(20120610)&nbsp;自定义我的工作台，很好使！<br style="padding: 0px; margin: 0px;" />Redmine&nbsp;Wiki&nbsp;Extensions&nbsp;plugin&nbsp;0.4.1&nbsp;维基扩展，不解释，官方都用<br style="padding: 0px; margin: 0px;" />Wiki&nbsp;sidebar&nbsp;toc&nbsp;plugin&nbsp;0.0.1&nbsp;维基侧边栏吧？想不起来了<br style="padding: 0px; margin: 0px;" />Redmine&nbsp;Wiki&nbsp;table&nbsp;of&nbsp;contents&nbsp;plugin&nbsp;0.0.3&nbsp;维基快速位置排序<br style="padding: 0px; margin: 0px;" />Issues&nbsp;XLS&nbsp;export&nbsp;0.2.1&nbsp;&nbsp;问题列表XLS导出</p><p style="padding: 0px; margin: 0px; clear: both; height: auto; overflow: hidden; color: #454545; font-family: tahoma, helvetica, arial; line-height: 21px;">&nbsp;</p><p style="padding: 0px; margin: 0px; clear: both; height: auto; overflow: hidden; color: #454545; font-family: tahoma, helvetica, arial; line-height: 21px;">我还没用的，但是考虑装上试试的列表，都是1.4.X可以用的</p><p style="padding: 0px; margin: 0px; clear: both; height: auto; overflow: hidden; color: #454545; font-family: tahoma, helvetica, arial; line-height: 21px;">&nbsp;</p><p style="padding: 0px; margin: 0px; clear: both; height: auto; overflow: hidden; color: #454545; font-family: tahoma, helvetica, arial; line-height: 21px;">用户属性&nbsp;<a href="http://www.redmine.org/plugins/userprofile" target="_blank" style="padding: 0px; margin: 0px; color: #3fa7cb; text-decoration: none;">http://www.redmine.org/plugins/userprofile</a><br style="padding: 0px; margin: 0px;" />会议室预定&nbsp;<a href="http://www.redmine.org/plugins/mmqb" target="_blank" style="padding: 0px; margin: 0px; color: #3fa7cb; text-decoration: none;">http://www.redmine.org/plugins/mmqb</a><br style="padding: 0px; margin: 0px;" />费用、分票&nbsp;<a href="http://www.redmine.org/plugins/invoices" target="_blank" style="padding: 0px; margin: 0px; color: #3fa7cb; text-decoration: none;">http://www.redmine.org/plugins/invoices</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;需付费，可以考虑<br style="padding: 0px; margin: 0px;" />免费发票&nbsp;<a href="http://www.redmine.org/plugins/haltr" target="_blank" style="padding: 0px; margin: 0px; color: #3fa7cb; text-decoration: none;">http://www.redmine.org/plugins/haltr</a><br style="padding: 0px; margin: 0px;" />我的技能&nbsp;<a href="http://www.redmine.org/plugins/redmine_coderwall" target="_blank" style="padding: 0px; margin: 0px; color: #3fa7cb; text-decoration: none;">http://www.redmine.org/plugins/redmine_coderwall</a><br style="padding: 0px; margin: 0px;" />甘特图日期&nbsp;<a href="http://www.redmine.org/plugins/redmine_gantt_with_date" target="_blank" style="padding: 0px; margin: 0px; color: #3fa7cb; text-decoration: none;">http://www.redmine.org/plugins/redmine_gantt_with_date</a><br style="padding: 0px; margin: 0px;" />登陆后跳转&nbsp;<a href="http://www.redmine.org/plugins/landing_page" target="_blank" style="padding: 0px; margin: 0px; color: #3fa7cb; text-decoration: none;">http://www.redmine.org/plugins/landing_page</a><br style="padding: 0px; margin: 0px;" />Wiki加密&nbsp;<a href="http://www.redmine.org/plugins/redmine_wikicipher" target="_blank" style="padding: 0px; margin: 0px; color: #3fa7cb; text-decoration: none;">http://www.redmine.org/plugins/redmine_wikicipher</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;可以考虑<br style="padding: 0px; margin: 0px;" />Email过滤&nbsp;<a href="http://www.redmine.org/plugins/redmine_email_notification_content_filter" target="_blank" style="padding: 0px; margin: 0px; color: #3fa7cb; text-decoration: none;">http://www.redmine.org/plugins/redmine_email_notification_content_filter</a>&nbsp;&nbsp;可以考虑<br style="padding: 0px; margin: 0px;" />另一个截图&nbsp;<a href="http://www.redmine.org/plugins/javasript_screenshot" target="_blank" style="padding: 0px; margin: 0px; color: #3fa7cb; text-decoration: none;">http://www.redmine.org/plugins/javasript_screenshot</a><br style="padding: 0px; margin: 0px;" />项目侧边栏&nbsp;<a href="http://www.redmine.org/plugins/sidebar" target="_blank" style="padding: 0px; margin: 0px; color: #3fa7cb; text-decoration: none;">http://www.redmine.org/plugins/sidebar</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;可以考虑<br style="padding: 0px; margin: 0px;" />匿名观察&nbsp;<a href="http://www.redmine.org/plugins/anonymous-watchers" target="_blank" style="padding: 0px; margin: 0px; color: #3fa7cb; text-decoration: none;">http://www.redmine.org/plugins/anonymous-watchers</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;可以考虑<br style="padding: 0px; margin: 0px;" />你的意思&nbsp;<a href="http://www.redmine.org/plugins/didyoumean" target="_blank" style="padding: 0px; margin: 0px; color: #3fa7cb; text-decoration: none;">http://www.redmine.org/plugins/didyoumean</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;可以考虑<br style="padding: 0px; margin: 0px;" />隐身模式&nbsp;<a href="http://www.redmine.org/plugins/redmine_stealth" target="_blank" style="padding: 0px; margin: 0px; color: #3fa7cb; text-decoration: none;">http://www.redmine.org/plugins/redmine_stealth</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;可以考虑<br style="padding: 0px; margin: 0px;" />发行说明&nbsp;<a href="http://www.redmine.org/plugins/redmine_release_notes" target="_blank" style="padding: 0px; margin: 0px; color: #3fa7cb; text-decoration: none;">http://www.redmine.org/plugins/redmine_release_notes</a></p><p style="padding: 0px; margin: 0px; clear: both; height: auto; overflow: hidden; color: #454545; font-family: tahoma, helvetica, arial; line-height: 21px;">论坛主题&nbsp;<a href="http://www.redmine.org/plugins/redmine_boards" target="_blank" style="padding: 0px; margin: 0px; color: #3fa7cb; text-decoration: none;">http://www.redmine.org/plugins/redmine_boards</a><br style="padding: 0px; margin: 0px;" />自定义邮件&nbsp;<a href="http://www.redmine.org/plugins/notify_custom_users" target="_blank" style="padding: 0px; margin: 0px; color: #3fa7cb; text-decoration: none;">http://www.redmine.org/plugins/notify_custom_users</a><br style="padding: 0px; margin: 0px;" />日历假期&nbsp;<a href="http://www.redmine.org/plugins/redmine_multi_calendar" target="_blank" style="padding: 0px; margin: 0px; color: #3fa7cb; text-decoration: none;">http://www.redmine.org/plugins/redmine_multi_calendar</a><br style="padding: 0px; margin: 0px;" />多种上传&nbsp;<a href="http://www.redmine.org/plugins/redmine_multiple_files_upload" target="_blank" style="padding: 0px; margin: 0px; color: #3fa7cb; text-decoration: none;">http://www.redmine.org/plugins/redmine_multiple_files_upload</a></p><p style="padding: 0px; margin: 0px; clear: both; height: auto; overflow: hidden; color: #454545; font-family: tahoma, helvetica, arial; line-height: 21px;">Wiki<br style="padding: 0px; margin: 0px;" />维基按钮&nbsp;<a href="http://www.redmine.org/plugins/redmine_wiki_files_toolbar" target="_blank" style="padding: 0px; margin: 0px; color: #3fa7cb; text-decoration: none;">http://www.redmine.org/plugins/redmine_wiki_files_toolbar</a></p><p style="padding: 0px; margin: 0px; clear: both; height: auto; overflow: hidden; color: #454545; font-family: tahoma, helvetica, arial; line-height: 21px;">Time<br style="padding: 0px; margin: 0px;" />时间联系&nbsp;<a href="http://www.redmine.org/plugins/linked_time_entries" target="_blank" style="padding: 0px; margin: 0px; color: #3fa7cb; text-decoration: none;">http://www.redmine.org/plugins/linked_time_entries</a></p><p style="padding: 0px; margin: 0px; clear: both; height: auto; overflow: hidden; color: #454545; font-family: tahoma, helvetica, arial; line-height: 21px;">版本库<br style="padding: 0px; margin: 0px;" />SCM扩展&nbsp;&nbsp;<a href="http://www.redmine.org/plugins/redmine_scm_extensions" target="_blank" style="padding: 0px; margin: 0px; color: #3fa7cb; text-decoration: none;">http://www.redmine.org/plugins/redmine_scm_extensions</a><br style="padding: 0px; margin: 0px;" />编辑维基&nbsp;<a href="http://www.redmine.org/plugins/redmine_require_wiki_comment" target="_blank" style="padding: 0px; margin: 0px; color: #3fa7cb; text-decoration: none;">http://www.redmine.org/plugins/redmine_require_wiki_comment</a></p></div><img src ="http://www.blogjava.net/paulwong/aggbug/426885.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2015-08-19 10:26 <a href="http://www.blogjava.net/paulwong/archive/2015/08/19/426885.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>员工激励</title><link>http://www.blogjava.net/paulwong/archive/2015/07/20/426319.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Mon, 20 Jul 2015 02:02:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2015/07/20/426319.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/426319.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2015/07/20/426319.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/426319.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/426319.html</trackback:ping><description><![CDATA[<h1>员工激励机制</h1>
<p style="padding: 0px; margin: 8px 0px; line-height: 28.7999992370605px; letter-spacing: 0.5px; font-size: 16px; color: #333333; font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif; background-color: #ffffff;">俗话说 &#8220;水不激不扬，人不激不奋&#8221; 是我国古代典型的激励思想。中国古代在激励方面有颇多论述和实践，我认为中国儒家思想博大精深，但不太好操作。</p>
<h2><a href="https://github.com/netkiller/journal/blob/master/%E7%AE%A1%E7%90%86/%E5%91%98%E5%B7%A5%E6%BF%80%E5%8A%B1/%E5%91%98%E5%B7%A5%E6%BF%80%E5%8A%B1.md#什么事激励" rel="nofollow" style="padding: 0px; margin: 0px; color: #ff8373; outline: 0px; font-size: 12px;"></a>什么是激励？</h2>
<p style="padding: 0px; margin: 8px 0px; line-height: 28.7999992370605px; letter-spacing: 0.5px; font-size: 16px; color: #333333; font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif; background-color: #ffffff;">激励过程可以看作是外部刺激、个体内部条件、行为表现和行为结果的共同作用过程。 激励是一个动态变化循环的过程：奖励目标&#8594;努力&#8594;绩效&#8594;奖励&#8594;满意&#8594;努力，这其中还有个人完成目标的能力，获得奖励的期望值，觉察到的公平，消耗力量、能力等一系列因素。只有综合考虑到各个方面，才能取得满意的激励效果。</p>
<h2><a href="https://github.com/netkiller/journal/blob/master/%E7%AE%A1%E7%90%86/%E5%91%98%E5%B7%A5%E6%BF%80%E5%8A%B1/%E5%91%98%E5%B7%A5%E6%BF%80%E5%8A%B1.md#为什么要激励" rel="nofollow" style="padding: 0px; margin: 0px; color: #ff8373; outline: 0px; font-size: 12px;"></a>为什么要激励？</h2>
<p style="padding: 0px; margin: 8px 0px; line-height: 28.7999992370605px; letter-spacing: 0.5px; font-size: 16px; color: #333333; font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif; background-color: #ffffff;">我们将&#8220;付出&#8221;，&#8220;回报&#8221;放在一架天枰上：</p>
<ul style="padding: 0px; margin: 0px 0px 10px 20px; line-height: 22.5px; color: #333333; font-family: 'Microsoft YaHei', Verdana, sans-serif, 宋体; font-size: 12.5px; background-color: #ffffff;">
     <li style="padding: 0px; margin: 0px;">当天枰两侧相等时，员工感到公平；</li>
     <li style="padding: 0px; margin: 0px;">
     <p style="padding: 0px; margin: 8px 0px; letter-spacing: 0.5px;">当天枰左侧大于（〉）右侧时，员工感到占了便宜，行为有： &#8212;&#8212;员工产生歉疚感，从而更努力工作。 &#8212;&#8212;员工心安理得。</p>
     </li>
     <li style="padding: 0px; margin: 0px;">
     <p style="padding: 0px; margin: 8px 0px; letter-spacing: 0.5px;">当天枰左侧小于（〈）右侧时，员工感到吃了亏，行为有： &#8212;&#8212;员工争取更多的奖酬、待遇。 &#8212;&#8212;员工减少自己投入努力，如迟到早退、怠工、出废品、浪费原料、放弃责任。 &#8212;&#8212;员工想方设法把参照者的奖酬待遇拉下来。 &#8212;&#8212;员工想要参照者工作干得更多。 &#8212;&#8212;参照者心理上调节对这些变量的认识（类似于用阿Q精神），使之平衡。 &#8212;&#8212;改变参照对象，求得&#8220;比上不足、比下有余&#8221;的自慰效果。 &#8212;&#8212;在企业没法达到公平感觉时，员工辞职，另谋高就。</p>
     </li>
</ul>
<p style="padding: 0px; margin: 8px 0px; line-height: 28.7999992370605px; letter-spacing: 0.5px; font-size: 16px; color: #333333; font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif; background-color: #ffffff;">公平感觉纯粹是主观、心理上的反应。在现实中，人们常常高估自己的投入贡献，低估别人的投入贡献，从而造成观察问题的系统偏差。</p>
<h2><a href="https://github.com/netkiller/journal/blob/master/%E7%AE%A1%E7%90%86/%E5%91%98%E5%B7%A5%E6%BF%80%E5%8A%B1/%E5%91%98%E5%B7%A5%E6%BF%80%E5%8A%B1.md#何时激励员工" rel="nofollow" style="padding: 0px; margin: 0px; color: #ff8373; outline: 0px; font-size: 12px;"></a>何时激励员工</h2>
<p style="padding: 0px; margin: 8px 0px; line-height: 28.7999992370605px; letter-spacing: 0.5px; font-size: 16px; color: #333333; font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif; background-color: #ffffff;">员工激励是无时无刻的，伴随整个职业生涯，而非需要的时候激励一把。</p>
<h2><a href="https://github.com/netkiller/journal/blob/master/%E7%AE%A1%E7%90%86/%E5%91%98%E5%B7%A5%E6%BF%80%E5%8A%B1/%E5%91%98%E5%B7%A5%E6%BF%80%E5%8A%B1.md#在哪激励员工" rel="nofollow" style="padding: 0px; margin: 0px; color: #ff8373; outline: 0px; font-size: 12px;"></a>在哪激励员工</h2>
<p style="padding: 0px; margin: 8px 0px; line-height: 28.7999992370605px; letter-spacing: 0.5px; font-size: 16px; color: #333333; font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif; background-color: #ffffff;">同样员工激励可以是任何时间任何地点。</p>
<h2><a href="https://github.com/netkiller/journal/blob/master/%E7%AE%A1%E7%90%86/%E5%91%98%E5%B7%A5%E6%BF%80%E5%8A%B1/%E5%91%98%E5%B7%A5%E6%BF%80%E5%8A%B1.md#谁来激励员工" rel="nofollow" style="padding: 0px; margin: 0px; color: #ff8373; outline: 0px; font-size: 12px;"></a>谁来激励员工</h2>
<p style="padding: 0px; margin: 8px 0px; line-height: 28.7999992370605px; letter-spacing: 0.5px; font-size: 16px; color: #333333; font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif; background-color: #ffffff;">很多企业认为激励员工是人力资源的工作，人力资源部门职能确实包此项工作，但人力资源部门实施起来也有很多不足的地方。 首先人力资源部门并不熟悉每个部门的工作细节，如果各部门或小组能够内部激励员工效果远远好于由人力资源部门主导的相关工作。</p>
<h2><a href="https://github.com/netkiller/journal/blob/master/%E7%AE%A1%E7%90%86/%E5%91%98%E5%B7%A5%E6%BF%80%E5%8A%B1/%E5%91%98%E5%B7%A5%E6%BF%80%E5%8A%B1.md#激励的误区" rel="nofollow" style="padding: 0px; margin: 0px; color: #ff8373; outline: 0px; font-size: 12px;"></a>激励的误区</h2>
<p style="padding: 0px; margin: 8px 0px; line-height: 28.7999992370605px; letter-spacing: 0.5px; font-size: 16px; color: #333333; font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif; background-color: #ffffff;">画饼方法，很多企业采用这种方法，这种激励在当下已经失去了作用或收效甚微。先不说画饼是否能兑现，画饼法设置的目标太遥远，而到达目标途中每步细节是缺失的。</p>
<p style="padding: 0px; margin: 8px 0px; line-height: 28.7999992370605px; letter-spacing: 0.5px; font-size: 16px; color: #333333; font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif; background-color: #ffffff;">最常见的例子就是大会上老板说&#8220;大家好好干，达到业绩，年底发奖金&#8221;，会议结束老板回到自己的办公室，员工回到自己的位置上该干什么干什么。 因为公司的业绩就像股市一样不可预测，这个年终奖就像买彩票或是场赌博，且风险很大，员工都默认放弃，顺其自然，能拿到奖金也好，拿不到也没有什么付出。</p>
<p style="padding: 0px; margin: 8px 0px; line-height: 28.7999992370605px; letter-spacing: 0.5px; font-size: 16px; color: #333333; font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif; background-color: #ffffff;">当员工得到奖励，可能热情状态能保持几天，几周，一两个月，这种热情状态不可能持续保持，在这个期间员工的工作状态是有显著提升的。高潮过去随后热情就会消退，慢慢回到正常的工作状态。 所以激励是持续的，渐进的，激励密度也很有讲究，&#8220;密&#8221;与&#8220;<span style="padding: 0px; margin: 0px; font-family: 'Microsoft YaHei', Verdana, sans-serif, 宋体; font-size: 14px; line-height: 22px;">疏</span>&#8221;都会影响激励的效果。</p>
<h2><a href="https://github.com/netkiller/journal/blob/master/%E7%AE%A1%E7%90%86/%E5%91%98%E5%B7%A5%E6%BF%80%E5%8A%B1/%E5%91%98%E5%B7%A5%E6%BF%80%E5%8A%B1.md#怎样激励员工" rel="nofollow" style="padding: 0px; margin: 0px; color: #ff8373; outline: 0px; font-size: 12px;"></a>怎样激励员工</h2>
<p style="padding: 0px; margin: 8px 0px; line-height: 28.7999992370605px; letter-spacing: 0.5px; font-size: 16px; color: #333333; font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif; background-color: #ffffff;">从上面的天枰法则我们可以看到，激励就是不停地调整法码。有哪些激励方法呢：</p>
<ol style="padding: 0px; margin: 10px 20px; line-height: 22.5px; color: #333333; font-family: 'Microsoft YaHei', Verdana, sans-serif, 宋体; font-size: 12.5px; background-color: #ffffff;">
     <li style="padding: 0px; margin: 0px;">表率激励</li>
     <li style="padding: 0px; margin: 0px;">荣誉激励</li>
     <li style="padding: 0px; margin: 0px;">奖惩激励</li>
     <li style="padding: 0px; margin: 0px;">目标激励</li>
     <li style="padding: 0px; margin: 0px;">物质激励</li>
     <li style="padding: 0px; margin: 0px;">情感激励</li>
     <li style="padding: 0px; margin: 0px;">公平激励</li>
     <li style="padding: 0px; margin: 0px;">信任激励</li>
     <li style="padding: 0px; margin: 0px;">赏识激励</li>
     <li style="padding: 0px; margin: 0px;">尊重激励</li>
     <li style="padding: 0px; margin: 0px;">参与激励</li>
     <li style="padding: 0px; margin: 0px;">荣誉激励</li>
     <li style="padding: 0px; margin: 0px;">关心激励</li>
     <li style="padding: 0px; margin: 0px;">相互激励</li>
     <li style="padding: 0px; margin: 0px;">股票增值</li>
     <li style="padding: 0px; margin: 0px;">股票期權</li>
     <li style="padding: 0px; margin: 0px;">虛擬股票</li>
     <li style="padding: 0px; margin: 0px;">員工持股</li>
</ol>
<p style="padding: 0px; margin: 8px 0px; line-height: 28.7999992370605px; letter-spacing: 0.5px; font-size: 16px; color: #333333; font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif; background-color: #ffffff;">激励方式太多了，无法依依列举，你可以参考相关管理学的书籍，近代管理学有很成熟激励方法，以及很多成熟的案例参考。</p>
<p style="padding: 0px; margin: 8px 0px; line-height: 28.7999992370605px; letter-spacing: 0.5px; font-size: 16px; color: #333333; font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif; background-color: #ffffff;">我想谈的是&#8220;激励图&#8221;，这是我多年总结出来的图表。供大家参考。&nbsp;<a href="https://raw.githubusercontent.com/netkiller/journal/master/%E7%AE%A1%E7%90%86/%E5%91%98%E5%B7%A5%E6%BF%80%E5%8A%B1/%E6%BF%80%E5%8A%B1%E5%9B%BE.png" target="_blank" rel="nofollow" style="padding: 0px; margin: 0px; color: #ff8373; outline: 0px; font-size: 12px;"></a><a href="http://static.oschina.net/uploads/img/201507/16102714_aTYE.png" target="_blank" style="padding: 0px; margin: 0px; color: #ff8373; outline: 0px; font-size: 12px;"><img src="http://static.oschina.net/uploads/img/201507/16102714_aTYE.png" alt="激励图" style="padding: 5px; margin: 10px 0px; border: 1px solid #dddddd; max-width: 640px; cursor: pointer; background: #f4f7f9;" /></a></p>
<p style="padding: 0px; margin: 8px 0px; line-height: 28.7999992370605px; letter-spacing: 0.5px; font-size: 16px; color: #333333; font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif; background-color: #ffffff;">从激励图中我们可以看到：</p>
<ol style="padding: 0px; margin: 10px 20px; line-height: 22.5px; color: #333333; font-family: 'Microsoft YaHei', Verdana, sans-serif, 宋体; font-size: 12.5px; background-color: #ffffff;">
     <li style="padding: 0px; margin: 0px;">从不激励的企业，员工永远是常态工作，偶尔还会产生负面情绪。</li>
     <li style="padding: 0px; margin: 0px;">如果激励与下一次激励间隔过长效果就不明显</li>
     <li style="padding: 0px; margin: 0px;">当激励后间隔太长或者停止激励，员工在经过一段常态的工作后，会出现负能量增长的情况</li>
     <li style="padding: 0px; margin: 0px;">最不好的结果是一旦激励完后直接进入消极阶段</li>
     <li style="padding: 0px; margin: 0px;">正能量常态的团队，这种团队最常见的就是直销，保险行业，激励后的结果我们无法预知，已经上升到精神层面。</li>
     <li style="padding: 0px; margin: 0px;">让激励成为常态，持续不断激励这是每个企业需要思考的一个问题。<br />
     </li>
</ol><a href="http://my.oschina.net/neochen/blog/479169" target="_blank">http://my.oschina.net/neochen/blog/479169</a><img src ="http://www.blogjava.net/paulwong/aggbug/426319.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2015-07-20 10:02 <a href="http://www.blogjava.net/paulwong/archive/2015/07/20/426319.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>十人看完，十人都疯了，疯了还想看...</title><link>http://www.blogjava.net/paulwong/archive/2015/06/13/425666.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Sat, 13 Jun 2015 02:53:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2015/06/13/425666.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/425666.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2015/06/13/425666.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/425666.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/425666.html</trackback:ping><description><![CDATA[【习惯】<br /><br />乞丐到小王家乞讨，他给十块，第二天乞丐又去，又给十块，持续两年。一天只给五块，乞丐：以前给十块，怎么现在给五块？小王：我结婚了。乞丐一巴掌打过去：妈的，你竟拿我的钱去养你老婆？启示：当提供免费服务让客户成为一种习惯，这种服务就不再是优势，而是劣势。<br /><br /><br /><br />【穷人】<br /><br />穷人问佛：我为什么这样穷？佛说：你没有学会给予别人。穷人：我一无所有如何给予？佛：一个人一无所有也可以给予别人七种东西。颜施-微笑处事；言施-说赞美安慰的话；心施-敞开心扉对人和蔼；眼施-善义的眼光给予别人；身施-以行动帮助别人；座施-即谦让座位；房施-有容人之心。<br /><br /><br /><br />【经典故事】<br /><br />老虎抓到一头鹿后要把它吃掉！鹿说：&#8220;你不能吃我！&#8221;老虎愣了一下，问：&#8220;为什么？&#8221;鹿：&#8220;因为我是国家二级保护动物！&#8221;老虎大笑道：&#8220;总不能为了二级保护动物而让一级保护动物饿死吧？！&#8221;感悟：时刻保持危机感，不要让自己那点优势害死。<br /><br /><br /><br />【夫妻】<br /><br />夫妇逛商场，女的看中一套高档餐具，坚持要买，丈夫嫌贵，不肯掏钱。导购一看，悄悄对丈夫说了句话，他一听马上掏钱。是什么让他立马转变？导购员对丈夫说：&#8220;这么贵的餐具，你太太是不会舍得让你洗碗的。&#8221;启示：人的观念没有什么不可改变，关键是角度，要善于揣摩客户心理。<br /><br /><br /><br />【班花】<br /><br />女生公开投票选班花，相貌平平的小梅发表演说：如我当选，再过几年，在座姐妹可以向自己先生骄傲的说，我上大学时候，比班花还漂亮！结果，她全票当选&#8212;&#8212;启示：说服别人支持你，不一定要证明比别人都优秀，而是让别人觉得,因为有你，他们变得更优秀更有成就感。<br /><br /><br /><br />【管理的弊端】<br /><br />女孩买了条裤子，一试太长，请奶奶帮忙剪短，奶奶说忙；找妈妈，也没空；找姐姐，更没空。女孩失望地入睡了。奶奶忙完家务想起小孙女的裤子，就把裤子剪短了一点；姐姐回来又把裤子剪短了；妈妈回来也把裤子剪短了，最后裤子没法穿了。&#8212;&#8212;管理的弊端就在于：要么都不管，要么都来管！<br /><br /><br /><br />【杯子】<br /><br />当一只玻璃杯中装满牛奶的时候，人们会说&#8220;这是牛奶&#8221;；当改装菜油的时候，人们会说&#8220;这是菜油&#8221;。只有当杯子空置时，人们才看到杯子，说&#8220;这是一只杯子&#8221;。同样，当我们心中装满成见、财富、权势的时候，就已经不是自己了；人往往热衷拥有很多，却往往难以真正的拥有自己。<br /><br /><br /><br />【碗破的启示】<br /><br />一个卖瓷碗的老人挑着扁担在路上走着，突然一个瓷碗掉到地上摔碎了，但是老人头也不回地继续向前走。路人看到觉得很奇怪，便问：&#8220;为什么你的碗摔碎了你却不看一下呢？&#8221;老人答到：&#8220;我再怎么回头看，碗还是碎的。&#8221;你得到什么启示呢？<br /><br /><br /><br />【要害与敏感关键点】<br /><br />公司在男厕小便池上贴了一纸条：&#8220;往前一小步，文明一大步。&#8221;结果地上仍有许多尿渍。后来公司认真吸取教训，纸条改成：&#8220;尿不到池里说明你短；尿到池外说明你软&#8221;，结果地上比以前干净许多。启示：有时扬其长不如揭其短！给客户的提案要具体并准确地切中其要害与敏感关键点才有效。<br /><br /><br /><br />【个人与团队】<br /><br />老师问弟子：一滴水如何能不干枯？弟子沉默不语。老师说道：一滴水，风可以将它吹干、土可以把它吸干、太阳可以把它蒸发，要想要不干枯，只有让它融入大海。一个人无力独撑天下，要想获得成功，就得学会与人合作，独木难林，这就是我们常说的：再强大的个人都不如一个团结的组织。<br /><br /><br /><br />【比耐力】<br /><br />两只乌龟在田边相对一动不动，老农对一旁的专家说：它们在比耐力，谁先动谁就输了。专家指着一只龟壳上有甲骨文的乌龟说：据我多年研究，这只乌龟已死五千多年了。另一只乌龟伸出头来说：死了也不说一声，害得老子在这里干等。装死的乌龟大笑说：你输了吧，专家的话你也听！<br /><br /><br /><br />【经验与学历】<br /><br />一伙劫匪在抢银行时说了句至理名言：&#8220;通通不许动，钱是国家的，命是自己的！&#8221;劫匪回去后，其中一新来的硕士劫匪说，老大，我们赶快数一下抢了多少，那老劫匪（小学文化）说：&#8220;你傻啊？这么多，你要数到什么时候？今天晚上看新闻不就知道吗？&#8221;网友微评：这年头工作经验比学历更重要！<br /><br /><br /><br />【值得思考】<br /><br />某人买了一坛好酒，放在小院，第二天，酒少了1/5，便在酒桶上贴了不许偷酒四个字。第三天酒又少了2/5，又贴了偷酒者重罚。第四天，酒还是被偷，于是贴尿桶二字，看谁还喝。第五天他哭了。桶满了&#8230;&#8230;故事还没完，第六天，他再次在酒桶上贴了不许偷酒四字。那一天很多人都哭了。<br /><br /><br /><br />【鹦鹉与乌鸦】<br /><br />鹦鹉遇到乌鸦，笼中的鹦鹉安逸；野外的乌鸦自由。鹦鹉羡慕乌鸦自由，乌鸦羡慕鹦鹉安逸，二鸟便商议互换。乌鸦得到安逸，但难得主人欢喜，最后抑郁而死；鹦鹉得到自由，但长期安逸，不能独立生存，最终饥饿而死。做最好的自己，不要羡慕他人的幸福，也许那并不适合你。<br /><br /><br /><br />【顿悟】<br /><br />老师问：&#8220;有个人要烧壶开水，生火到一半时发现柴不够，他该怎么办?&#8221;有的同学说赶快去找，有的说去借、去买。老师说：&#8220;为什么不把壶里的水倒掉一些？&#8221;。同学顿悟，世事总不能万般如意，有舍才有得。人生的许多寻找，不在于千山万水，而在于咫尺之间。<br /><br /><br /><br />【化妆品】<br /><br />朋友刚结婚不久，开了家化妆品店，生意好得不得了。有天我去店里玩，见一40多岁的女顾客问小李：&#8220;这款化妆品效果怎么样？&#8221;小李：&#8220;哦，这款我不熟悉。请等一下，我妈帮你介绍。&#8221;说着把他老婆拉了过来。顾客直视其老婆足足十分钟，什么也没问就掏出钱包：&#8220;买＂。<br /><br /><br /><br />【营销哲学】<br /><br />害羞男孩在教室自习，看到一个很中意的女孩，眼看女孩看完书要离开了，害羞的男孩憋红了脸上前搭讪：同学能借我10块钱吃面条吗？钱包丢宿舍了，这是我的学生证，你给我手机号，回头还你钱。女孩想了想说：行吧。正掏钱，男孩又说：要是能借20，我请你也吃一碗。<br /><br /><br /><br />【琐事】<br /><br />一只鼬鼠要与一只狮子决战，狮子果断地拒绝了。鼬鼠说：&#8220;你害怕了吗？&#8221;狮子说：&#8220;如果答应你，你就可以得到曾与狮子比武的殊荣；而我呢，以后所有的动物都会耻笑我竟和鼬鼠打架。&#8221;不要被不重要的人和事过多打搅，因为成功的秘诀就是抓住目标不放，而不是把时间浪费在无谓的琐事上。<br /><br /><br /><br />【销售心理】<br /><br />某富翁娶妻，有三个人选，富翁给了三个女孩各一千元，请她们把房间装满。女孩A买了很多棉花，装满房间的1/2。女孩B买了很多气球，装满房间3/4。女孩C买了蜡烛，让光充满房间。最终，富翁选了胸部最大的那个。这个故事告诉我们：了解客户的真实需求非常重要。<br /><br /><br /><br />【有效沟通】<br /><br />两头牛在一起吃草，青牛问黑牛：&#8220;喂！你的草是什么味道？&#8221;黑牛道：&#8220;草莓味！&#8221;青牛靠过来吃了一口，愤怒地喊到&#8220;你个骗子！&#8221;黑牛轻蔑地看他一眼，回道：&#8220;我说草没味。&#8221;启示：团队合作、管理过程中，能否有效沟通、掌握有效沟通渠道是凝聚竞争力，强化执行力，提升业绩的关键。<br /><br /><br /><br />美女住酒店一晚<br /><br />结账时账单800元，她抱怨太贵。经理说这是标准收费，酒店附设泳池、健身房和wifi。美女说自己完全没使用，经理说饭店有提供，是她自己不用。女客人打开皮包掏钱付账，但说要扣除经理和她共度春宵的700元，只拿出100元。经理急呼：&#8220;我哪有？&#8221;女客人：&#8220;我有提供，是你自己不用！&#8221;<img src ="http://www.blogjava.net/paulwong/aggbug/425666.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2015-06-13 10:53 <a href="http://www.blogjava.net/paulwong/archive/2015/06/13/425666.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>项目管理资源</title><link>http://www.blogjava.net/paulwong/archive/2014/12/29/421942.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Mon, 29 Dec 2014 15:16:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2014/12/29/421942.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/421942.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2014/12/29/421942.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/421942.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/421942.html</trackback:ping><description><![CDATA[Management Tutorials<br /><a href="http://www.tutorialspoint.com/management_tutorials.htm" target="_blank">http://www.tutorialspoint.com/management_tutorials.htm</a><br /><br /><br /><br /><br /><br /><br /><br /><img src ="http://www.blogjava.net/paulwong/aggbug/421942.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2014-12-29 23:16 <a href="http://www.blogjava.net/paulwong/archive/2014/12/29/421942.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何写好系统用例</title><link>http://www.blogjava.net/paulwong/archive/2014/10/24/418989.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Fri, 24 Oct 2014 01:46:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2014/10/24/418989.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/418989.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2014/10/24/418989.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/418989.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/418989.html</trackback:ping><description><![CDATA[关于系统用例的书籍，太多。不想在这里去解释什么是系统用例。但为什么要写系统用例呢，又如何写好呢？<br /><br />写系统用例是为了更清晰的展示系统的业务场景的功能实现。也是为了给程序员参考的一个图。同时也是与客户沟通的桥梁。很多东西，千言万语，不如一张图那么直观。但在很多项目中，用例分析这个过程被忽略而过。<br /><br />程序员往往只看到文本的需求，就自己开始做了，对于小项目或许这样可以，如果是大项目，后期肯定崩溃。<br /><br />一个良好的系统用例，用图形的方式描述了客户的要求：<br />1. 有那些人去参与这个事件。<br /><br />2.这些人具体要做什么 （可以理解为调用的方法）<br /><br />3.这些人做这个事情，需要什么先决条件 (可以理解为参数，包括权限等等)<br /><br />4.这些在做这些事情的时候，需要第三方帮忙吗？或者需要第三方系统接口吗？<br /><br />5.做完这些事情，应该达到一个什么样的目的，也就是结果，这个结果会是下一个用例的输入吗？<br /><br />当你有着人物，事件，参数，输入，输出的一张图 摆在眼前的时候，所有的事情的都清晰了。<br /><br />看着这张图，就可以写出 相关的接口程序，实现方法等。<br /><br />通过大量的系统用例，可以提取出公共的用例，比如权限等。从而抽象出公共的实现方法，才不会导致同一个方法，不同的程序员各自实现了一套。<br /><br />以图书为例子，列表说明一个用例的主要部分，以及要表达清楚的地方。<p>&nbsp;</p><table border="1" cellspacing="0" cellpadding="0" align="left"><tbody><tr><td width="115" valign="top"><p><strong><span>用例名称</span></strong></p></td><td width="393" valign="top"><p><span>bu_</span><span>借阅图书</span></p></td></tr><tr><td width="115" valign="top"><p><strong><span>用例描述</span></strong></p></td><td width="393" valign="top"><p align="left"><span>借阅人通过此用例向系统查询并提交借书请求</span></p></td></tr><tr><td width="115" valign="top"><p><strong><span>执行者</span></strong></p></td><td width="393" valign="top"><p align="left"><span>借阅人</span></p></td></tr><tr><td width="115" valign="top"><p><strong><span>前置条件</span></strong></p></td><td width="393" valign="top"><p align="left"><span>1.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>借阅人借阅证件在有效期内</span></span></p><p align="left"><span>2.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>借阅人没有逾期未归还的图书</span></span></p></td></tr><tr><td width="115" valign="top"><p><strong><span>后置条件</span></strong></p></td><td width="393" valign="top"><p align="left"><span>1.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>创建借书定单</span></span></p><p align="left"><span>2.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>更新借阅人借阅记录</span></span></p></td></tr><tr><td width="115" valign="top"><p><strong><span>主过程描述</span></strong></p></td><td width="393" valign="top"><p><span>1</span><span>用户用借阅证提供的帐号登录系统，计算机显示我的图书馆界面</span></p><p><span>2.</span><span>用户选择查询图书，计算机显示查询界面</span></p><p><span>3.</span><span>用户按书名、作者、出版社查询，计算机显示查询结果</span></p><p><span>4.</span><span>用户可单选或多选书本，并确认借阅。计算机显示确认借阅图书清单。</span></p><p><span>5.</span><span>用户选择确认借阅，计算机显示借阅定单及费用</span></p><p><span>6</span><span>用户选择提交定单，计算机显示提交结果和定单号</span></p><p><span>7.</span><span>计算机执行后置条件。用例结束</span></p></td></tr><tr><td width="115" valign="top"><p><strong><span>分支过程描述</span></strong></p></td><td width="393" valign="top"><p align="left"><span>2.1.1</span><span>用户选择查看原有定单，计算机执行<span>4;</span></span></p><p align="left"><span>4.1.1</span><span>用户可单选或多选书本，放入借书篮，计算机显示借书篮现有内容</span></p><p align="left"><span>4.1.2</span><span>.1.1</span><span>用户选择继续借书，计算机执行<span>2</span>；</span></p><p align="left"><span>4.1.2</span><span>.2.1</span><span>用户选择提交借书篮，计算机执行<span>4</span></span></p><p align="left"><span>4.2.1</span>&nbsp;<span>用户选择放弃，计算机执行<span>2</span>；</span></p><p align="left"><span>6.1.1</span><span>用户选择保存定单，计算机保存并执行<span>1</span>；</span></p><p align="left"><span>6.2.1</span><span>用户选择放弃，计算机执行<span>1</span>；</span></p></td></tr><tr><td width="115" valign="top"><p><strong><span>异常过程描述</span></strong></p></td><td width="393" valign="top"><p align="left"><span>1.1.1</span><span>借阅证已过期，拒绝登录，用例结束</span></p><p align="left"><span>1.2.1</span><span>借阅人有逾期未归还书本，启动<span>bu_</span>归还图书用例</span></p><p align="left"><span>5.1.1</span><span>用户余额不足，计算机显示余额和所需金额</span></p><p align="left"><span>5.1.2</span><span>.1.1</span><span>用户选择续费，启动<span>bu_</span>交纳借阅费用例</span></p><p align="left"><span>5.1.2</span><span>.2.1</span><span>用户选择放弃，计算机执行<span>1</span></span></p></td></tr><tr><td width="115" valign="top"><p><strong><span>业务规则</span></strong></p></td><td width="393" valign="top"><p align="left"><span>4.</span><span>至少选择一本<span>,</span>至多选择三本</span></p></td></tr><tr><td width="115" valign="top"><p><strong><span>涉及的业务实体</span></strong></p></td><td width="393" valign="top"><p align="left"><span>Be_</span><span>费用记录</span></p><p align="left"><span>Be_</span><span>图书</span></p><p align="left"><span>Be_</span><span>借书篮</span></p><p align="left"><span>Be_</span><span>借阅定单</span></p><p align="left"><span>Be_</span><span>借阅证</span></p></td></tr></tbody></table><img src ="http://www.blogjava.net/paulwong/aggbug/418989.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2014-10-24 09:46 <a href="http://www.blogjava.net/paulwong/archive/2014/10/24/418989.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>软件开发各种文档</title><link>http://www.blogjava.net/paulwong/archive/2014/10/24/418988.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Fri, 24 Oct 2014 01:44:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2014/10/24/418988.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/418988.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2014/10/24/418988.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/418988.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/418988.html</trackback:ping><description><![CDATA[现在的软件开发，越来越多的是文档的管理了，编写文档成了一个很重要的工作，而且维护这些文档也是一件很繁琐的工作，个人比较喜欢敏捷开发，代码即文档，用比较好的命名规范和简明扼要的注释标明代码用途即可，但这终归是自己理想中的软件开发，事实上这么多年做过的很多项目来看，客户是无论如何都需要文档的，即使这些文档或许不会看，但至少会给他们的老板汇报，给上级看，所以很多情况下文档成了是不是完成工作的标准了。我并不排斥文档，但中国的外包项目很少有时间去写文档，但如果真的有时间，完善这些文档还是很有好处的。整理了一些软件开发中常用的模板, 以后自己也可以参考。如果客户有自己的模板，当然也可以用客户的模板，下面这些模板都比较具备中国特色，特别适合给上级老板汇报，如果有这方面需求的，可以参考下:<br /><br /><img src="http://www.yihaomen.com/images/download.gif" alt="下载文件" />&nbsp;<a href="http://www.yihaomen.com/attachments/month_1402/a201421120529.doc" target="_blank"><span>开发进度月报编写规范.doc</span></a><br /><br /><img src="http://www.yihaomen.com/images/download.gif" alt="下载文件" />&nbsp;<a href="http://www.yihaomen.com/attachments/month_1402/r2014211205235.doc" target="_blank"><span>测试分析报告编写规范.doc</span></a><br /><br /><img src="http://www.yihaomen.com/images/download.gif" alt="下载文件" />&nbsp;<a href="http://www.yihaomen.com/attachments/month_1402/32014211205251.doc" target="_blank">测试计划文档编写规范.doc</a><br /><br /><img src="http://www.yihaomen.com/images/download.gif" alt="下载文件" />&nbsp;<a href="http://www.yihaomen.com/attachments/month_1402/92014211205312.doc" target="_blank">概要设计说明书编写规范.doc</a><br /><br /><img src="http://www.yihaomen.com/images/download.gif" alt="下载文件" />&nbsp;<a href="http://www.yihaomen.com/attachments/month_1402/b2014211205327.doc" target="_blank">开发进度月报编写规范.doc件</a><br /><br /><img src="http://www.yihaomen.com/images/download.gif" alt="下载文件" />&nbsp;<a href="http://www.yihaomen.com/attachments/month_1402/w2014211205342.doc" target="_blank">模块开发卷宗编写规范.doc</a><br /><br /><img src="http://www.yihaomen.com/images/download.gif" alt="下载文件" />&nbsp;<a href="http://www.yihaomen.com/attachments/month_1402/w201421120540.doc" target="_blank">软件配置管理计划编写规范.doc</a><br /><br /><img src="http://www.yihaomen.com/images/download.gif" alt="下载文件" />&nbsp;<a href="http://www.yihaomen.com/attachments/month_1402/w2014211205420.doc" target="_blank">软件需求说明书编写规范.doc</a><br /><br /><img src="http://www.yihaomen.com/images/download.gif" alt="下载文件" />&nbsp;<a href="http://www.yihaomen.com/attachments/month_1402/l2014211205440.doc" target="_blank">软件质量保证计划编写规范.doc</a><br /><br /><img src="http://www.yihaomen.com/images/download.gif" alt="下载文件" />&nbsp;<a href="http://www.yihaomen.com/attachments/month_1402/d201421120558.doc" target="_blank">数据库设计说明书编写规范.doc</a><br /><br /><img src="http://www.yihaomen.com/images/download.gif" alt="下载文件" />&nbsp;<a href="http://www.yihaomen.com/attachments/month_1402/a2014211205527.doc" target="_blank">数据要求说明书编写规范.doc</a><br /><br /><img src="http://www.yihaomen.com/images/download.gif" alt="下载文件" />&nbsp;<a href="http://www.yihaomen.com/attachments/month_1402/k2014211205542.doc" target="_blank">详细设计说明书编写规范.doc</a><br /><br /><img src="http://www.yihaomen.com/images/download.gif" alt="下载文件" />&nbsp;<a href="http://www.yihaomen.com/attachments/month_1402/e201421120561.doc" target="_blank">项目开发总结报告编写规范.doc</a><br /><br /><img src="http://www.yihaomen.com/images/download.gif" alt="下载文件" />&nbsp;<a href="http://www.yihaomen.com/attachments/month_1402/h2014211205617.doc" target="_blank">用户手册编写规范.doc</a><br /><br />以上这些文档模板应该比较全面了,&nbsp;&nbsp;在国内的项目开发中完全可以套用，如果是国外的项目或许有些不同，毕竟是不同的文化背景。<img src ="http://www.blogjava.net/paulwong/aggbug/418988.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2014-10-24 09:44 <a href="http://www.blogjava.net/paulwong/archive/2014/10/24/418988.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>40 款很有用的项目管理工具</title><link>http://www.blogjava.net/paulwong/archive/2014/09/09/417764.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Tue, 09 Sep 2014 02:16:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2014/09/09/417764.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/417764.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2014/09/09/417764.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/417764.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/417764.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Chili ProjectOmnigroupPaymoSpringloopsComindworkWebprojectorSoloOpen AtriumCaseboxRedboothAgilezenProducteevRedmineApollohqCentral DesktopRationalplanTeamworkTeamlabFastdueFreedcampHuddleIssue BurnerN...&nbsp;&nbsp;<a href='http://www.blogjava.net/paulwong/archive/2014/09/09/417764.html'>阅读全文</a><img src ="http://www.blogjava.net/paulwong/aggbug/417764.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2014-09-09 10:16 <a href="http://www.blogjava.net/paulwong/archive/2014/09/09/417764.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>基于开源的研发管理平台</title><link>http://www.blogjava.net/paulwong/archive/2014/06/04/414386.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Wed, 04 Jun 2014 07:04:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2014/06/04/414386.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/414386.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2014/06/04/414386.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/414386.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/414386.html</trackback:ping><description><![CDATA[<ul style="line-height: 19.049999237060547px; list-style-type: square; margin: 0.3em 0px 0px 2em; padding: 0px; list-style-image: url(http://www.ossxp.com/m/monobook/css/bullet.gif); font-family: sans-serif; font-size: 13px;"><li style="margin-bottom: 0.1em;"><p style="margin: 0.25em 0px; line-height: 1.5em;">《团队致胜之道 &#8212;&#8212; 尽在群英汇》</p><ul style="line-height: 1.5em; list-style-type: square; margin: 0.3em 0px 0px 2em; padding: 0px; list-style-image: url(http://www.ossxp.com/m/monobook/css/bullet.gif);"><li style="margin-bottom: 0.1em; list-style-type: none; list-style-image: none;"><p style="margin: 0.25em 0px; line-height: 1.5em;">群英汇公司及产品介绍</p></li><li style="margin-bottom: 0.1em;"><p style="margin: 0.25em 0px; line-height: 1.5em;">公司介绍：<a href="http://www.ossxp.com/doc/ossxp/ossxp.pdf" style="color: #5a3696; border: 0px; text-decoration: none; background-image: none; background-position: initial initial; background-repeat: initial initial;">PDF 格式</a>&nbsp;(v110224)</p></li><li style="margin-bottom: 0.1em;"><p style="margin: 0.25em 0px; line-height: 1.5em;">产品及服务介绍：<a href="http://www.ossxp.com/doc/ossxp/ossxp-services.pdf" style="color: #5a3696; border: 0px; text-decoration: none; background-image: none; background-position: initial initial; background-repeat: initial initial;">PDF 格式</a>,&nbsp;<a href="http://www.ossxp.com/doc/ossxp/ossxp-services.key" style="color: #5a3696; border: 0px; text-decoration: none; background-image: none; background-position: initial initial; background-repeat: initial initial;">Keynote 格式</a>&nbsp;(v120502)</p></li></ul></li></ul><p style="margin: 0.4em 0em 0.5em; line-height: 19.049999237060547px; font-family: sans-serif; font-size: 13px;"></p><ul style="line-height: 19.049999237060547px; list-style-type: square; margin: 0.3em 0px 0px 2em; padding: 0px; list-style-image: url(http://www.ossxp.com/m/monobook/css/bullet.gif); font-family: sans-serif; font-size: 13px;"><li style="margin-bottom: 0.1em; list-style-type: none; list-style-image: none;"><p style="margin: 0.25em 0px; line-height: 1.5em;"></p></li><li style="margin-bottom: 0.1em;"><p style="margin: 0.25em 0px; line-height: 1.5em;">《Git权威指南》官方网站</p><ul style="line-height: 1.5em; list-style-type: square; margin: 0.3em 0px 0px 2em; padding: 0px; list-style-image: url(http://www.ossxp.com/m/monobook/css/bullet.gif);"><li style="margin-bottom: 0.1em; list-style-type: none; list-style-image: none;"><p style="margin: 0.25em 0px; line-height: 1.5em;"><a href="http://gotgit.github.com/gotgit/" style="color: #5a3696; border: 0px; text-decoration: none; background-image: none; background-position: initial initial; background-repeat: initial initial;">http://gotgit.github.com/gotgit/</a></p></li></ul><p style="margin: 0.25em 0px; line-height: 1.5em;"></p></li><li style="margin-bottom: 0.1em;"><p style="margin: 0.25em 0px; line-height: 1.5em;">《服务指南：开源速递&#183;Subversion 版本控制系统》</p><ul style="line-height: 1.5em; list-style-type: square; margin: 0.3em 0px 0px 2em; padding: 0px; list-style-image: url(http://www.ossxp.com/m/monobook/css/bullet.gif);"><li style="margin-bottom: 0.1em; list-style-type: none; list-style-image: none;"><p style="margin: 0.25em 0px; line-height: 1.5em;">群英汇教您玩转版本控制系统： Git, Subversion, CVS, ...</p></li><li style="margin-bottom: 0.1em;"><p style="margin: 0.25em 0px; line-height: 1.5em;">下载：<a href="http://www.ossxp.com/ossxp.files/OssxpDocuments/attachments/svn_services.pdf" title="SVN_Services, r090513" style="color: #5a3696; border: 0px; text-decoration: none; background-image: none; background-position: initial initial; background-repeat: initial initial;">SVN_Services, r090513</a></p></li></ul><p style="margin: 0.25em 0px; line-height: 1.5em;"></p></li><li style="margin-bottom: 0.1em;"><p style="margin: 0.25em 0px; line-height: 1.5em;">《服务指南：开源速递&#183;知识管理系统》</p><ul style="line-height: 1.5em; list-style-type: square; margin: 0.3em 0px 0px 2em; padding: 0px; list-style-image: url(http://www.ossxp.com/m/monobook/css/bullet.gif);"><li style="margin-bottom: 0.1em; list-style-type: none; list-style-image: none;"><p style="margin: 0.25em 0px; line-height: 1.5em;">基于&nbsp;<tt>MoinMoin</tt>&nbsp;Wiki 的知识管理平台解决之道...</p></li><li style="margin-bottom: 0.1em;"><p style="margin: 0.25em 0px; line-height: 1.5em;">下载：<a href="http://www.ossxp.com/ossxp.files/OssxpDocuments/attachments/wiki_services.pdf" title="Wiki_Services, r080707" style="color: #5a3696; border: 0px; text-decoration: none; background-image: none; background-position: initial initial; background-repeat: initial initial;">Wiki_Services, r080707</a></p></li></ul><p style="margin: 0.25em 0px; line-height: 1.5em;"></p></li><li style="margin-bottom: 0.1em;"><p style="margin: 0.25em 0px; line-height: 1.5em;">《服务指南：开源速递&#183;项目管理系统》</p><ul style="line-height: 1.5em; list-style-type: square; margin: 0.3em 0px 0px 2em; padding: 0px; list-style-image: url(http://www.ossxp.com/m/monobook/css/bullet.gif);"><li style="margin-bottom: 0.1em; list-style-type: none; list-style-image: none;"><p style="margin: 0.25em 0px; line-height: 1.5em;">基于&nbsp;<tt>Redmine</tt>&nbsp;的项目管理解决之道...</p></li><li style="margin-bottom: 0.1em;"><p style="margin: 0.25em 0px; line-height: 1.5em;">下载：<a href="http://www.ossxp.com/ossxp.files/OssxpDocuments/attachments/redmine_services.pdf" title="Redmine_Services, r100706" style="color: #5a3696; border: 0px; text-decoration: none; background-image: none; background-position: initial initial; background-repeat: initial initial;">Redmine_Services, r100706</a></p></li></ul><p style="margin: 0.25em 0px; line-height: 1.5em;"></p></li><li style="margin-bottom: 0.1em;"><p style="margin: 0.25em 0px; line-height: 1.5em;">《服务指南：开源速递&#183;沟通系统》</p><ul style="line-height: 1.5em; list-style-type: square; margin: 0.3em 0px 0px 2em; padding: 0px; list-style-image: url(http://www.ossxp.com/m/monobook/css/bullet.gif);"><li style="margin-bottom: 0.1em; list-style-type: none; list-style-image: none;"><p style="margin: 0.25em 0px; line-height: 1.5em;">基于&nbsp;<tt>Mailman</tt>&nbsp;邮件列表的沟通系统，是沟通管理和知识管理的解决之道...</p></li><li style="margin-bottom: 0.1em;"><p style="margin: 0.25em 0px; line-height: 1.5em;">下载：<a href="http://www.ossxp.com/ossxp.files/OssxpDocuments/attachments/mlm_services.pdf" title="MLM_Services, r080707" style="color: #5a3696; border: 0px; text-decoration: none; background-image: none; background-position: initial initial; background-repeat: initial initial;">MLM_Services, r080707</a></p></li></ul><p style="margin: 0.25em 0px; line-height: 1.5em;"></p></li><li style="margin-bottom: 0.1em;"><p style="margin: 0.25em 0px; line-height: 1.5em;"><a href="http://www.worldhello.net/doc/agile_python/" style="color: #5a3696; border: 0px; text-decoration: none; background-image: none; background-position: initial initial; background-repeat: initial initial;">《敏捷 Web 开发实践 &#8212;&#8212; pySvnManager 项目实战》</a></p><ul style="line-height: 1.5em; list-style-type: square; margin: 0.3em 0px 0px 2em; padding: 0px; list-style-image: url(http://www.ossxp.com/m/monobook/css/bullet.gif);"><li style="margin-bottom: 0.1em; list-style-type: none; list-style-image: none;"><p style="margin: 0.25em 0px; line-height: 1.5em;"><big><strong>敏捷</strong></big>&nbsp;也许就是保障项目成功的&#8220;银弹&#8221;。与您分享我们在 敏捷 Web开发上的经验。</p></li><li style="margin-bottom: 0.1em;"><p style="margin: 0.25em 0px; line-height: 1.5em;">参见：<a href="http://www.worldhello.net/wiki/AgilePython" style="color: #5a3696; border: 0px; text-decoration: none; background-image: none; background-position: initial initial; background-repeat: initial initial;">http://www.worldhello.net/wiki/AgilePython</a></p></li></ul><p style="margin: 0.25em 0px; line-height: 1.5em;"></p></li><li style="margin-bottom: 0.1em;"><p style="margin: 0.25em 0px; line-height: 1.5em;"><a href="http://www.ossxp.com/doc/" style="color: #5a3696; border: 0px; text-decoration: none; background-image: none; background-position: initial initial; background-repeat: initial initial;">其他产品手册</a></p><ul style="line-height: 1.5em; list-style-type: square; margin: 0.3em 0px 0px 2em; padding: 0px; list-style-image: url(http://www.ossxp.com/m/monobook/css/bullet.gif);"><li style="margin-bottom: 0.1em; list-style-type: none; list-style-image: none;"><p style="margin: 0.25em 0px; line-height: 1.5em;">包括：用户手册(user-guide) 和管理员手册(admin-guide)</p></li><li style="margin-bottom: 0.1em;"><p style="margin: 0.25em 0px; line-height: 1.5em;">参见：<a href="http://www.ossxp.com/doc/" style="color: #5a3696; border: 0px; text-decoration: none; background-image: none; background-position: initial initial; background-repeat: initial initial;">http://www.ossxp.com/doc/</a></p></li></ul></li></ul><p style="margin: 0.4em 0em 0.5em; line-height: 19.049999237060547px; font-family: sans-serif; font-size: 13px;"></p><p style="margin: 0.4em 0em 0.5em; line-height: 19.049999237060547px; font-family: sans-serif; font-size: 13px;"></p><p style="margin: 0.4em 0em 0.5em; line-height: 19.049999237060547px; font-family: sans-serif; font-size: 13px;"></p><p style="margin: 0.4em 0em 0.5em; line-height: 19.049999237060547px; font-family: sans-serif; font-size: 13px;"></p><ul style="line-height: 19.049999237060547px; list-style-type: square; margin: 0.3em 0px 0px 2em; padding: 0px; list-style-image: url(http://www.ossxp.com/m/monobook/css/bullet.gif); font-family: sans-serif; font-size: 13px;"><li style="margin-bottom: 0.1em;"><p style="margin: 0.25em 0px; line-height: 1.5em;"><a href="http://www.ossxp.com/HelpCenter" style="color: #5a3696; border: 0px; text-decoration: none; background-image: none; background-position: initial initial; background-repeat: initial initial;"><img alt="{i}" height="16" src="http://www.ossxp.com/m/monobook/img/icon-info.png" title="{i}" width="16" style="border: none; vertical-align: middle; margin: 0px;" />&nbsp;群英汇帮助中心</a></p></li></ul><img src ="http://www.blogjava.net/paulwong/aggbug/414386.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2014-06-04 15:04 <a href="http://www.blogjava.net/paulwong/archive/2014/06/04/414386.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Project management</title><link>http://www.blogjava.net/paulwong/archive/2013/03/10/396257.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Sun, 10 Mar 2013 10:16:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2013/03/10/396257.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/396257.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2013/03/10/396257.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/396257.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/396257.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>  <p><strong><u><span style="font-size:16.0pt;line-height: 115%;">Exercise 1 &nbsp;Web site Development </span></u></strong></p>  <p><strong><u><span style="font-size:16.0pt;line-height: 115%;">Using Microsoft Project &nbsp;2007 (can be downloaded from internet) </span></u></strong></p>  <p>A nonprofit organization would like to lead a website development project. The organization has internet access that includes space on a web server, but no experience in developing websites. In addition to creating its website, the organization would like you to train two people on its staff to do simple web page updates. The website should include the following information, as a minimum: description of the organization (mission, history, and recent events), list of services, and contact information. the organization wants the website to include graphics( photographs and other images) and have an attractive, easy way to use layout.</p>  <p><strong><u>&nbsp;</u></strong></p>  <p><strong><u>1- Project Scope Management</u></strong>: create a WBS for this project and enter the tasks in project 2007. Create milestones and summary tasks. Assume that some of the project management tasks are similar to tasks from the project tracking database project. some of the specific anaylsis, design, and implementation tasks will do: </p>  <p>a) collect information on the organization in hardcopy and digital form( brochures, reports, organization charts) </p>  <p>b) research web site of similar organization </p>  <p>c) collect detailed information about customer's design preferences</p>  <p>d) develop a template for the customer to review (background color of pages, layout of text)</p>  <p>e) create a site map or hierarchy chart showing the flow of website</p>  <p><strong><u>2- Project Time Management: </u></strong></p>  <p>a) enter realistic duration for each task, and then link the tasks </p>  <p>b) do Gantt Chart view and Network Diagram View&nbsp; for the project</p>  <p>c) do schedule table to see key dates and slack times for each task. </p>  <p><strong><u>&nbsp;</u></strong></p>  <p><strong><u>&nbsp;</u></strong></p>  <p><strong><u>&nbsp;</u></strong></p>  <p><strong><u>&nbsp;</u></strong></p>  <p><strong><u>3- Project Cost Management</u></strong></p>  <p>a) assume you have three people working on project and each of them would charge $20 per hour. Enter this information in the Resource Sheet.</p>  <p>b) estimate that each person will spend an average of about five hours per week for the four month period. Assign resources to the tasks, and try to make the final cost in line with this estimate</p>  <p>c) do a budget report for your project </p>  <p><strong><u>4- Project Human Resource Management</u></strong></p>  <p>a) assume that one project team member will be unavailable due to vacation for two weeks in the middle of the project. Make adjustments to accommodate this vacation so that the schedule does not slip and the costs do not change. Document the changes from the original plan and the new plan. </p>  <p>b) use the Resource Usage view to see each person's work each month. Print a copy of the Resource Usage view.</p>  <p><strong><u>5- Project Communications Management </u></strong></p>  <p>a) do a Gantt chart for this project. use a time scale that enables that chart to fit on one page. and the copy and paste it to PowerPoint </p>  <p>b) do a TO DO LIST report for each team member</p>  <p>c) Create a WHO DOES WHAT REPORT </p>  <p>&nbsp;</p>  <p>&nbsp;</p>  <p><strong><span style="font-size:14.0pt;line-height: 115%;">** Write a two page single spaced paper summarizing what do you think about Microsoft Project. What do you like and What do you dislike about it. Do you think it would be useful for managing all project or just some and which ones. </span></strong></p>  <p>&nbsp;</p>  <p>&nbsp;</p><img src ="http://www.blogjava.net/paulwong/aggbug/396257.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2013-03-10 18:16 <a href="http://www.blogjava.net/paulwong/archive/2013/03/10/396257.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>职场上做人做事做管理</title><link>http://www.blogjava.net/paulwong/archive/2013/02/24/395669.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Sun, 24 Feb 2013 08:53:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2013/02/24/395669.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/395669.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2013/02/24/395669.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/395669.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/395669.html</trackback:ping><description><![CDATA[作者：何云隆<br />网易上斩建通写的很好的文章分享下<br /><br /><br />大道至简，越是根源和基本的问题，道理实际上越简单。关于如何做人、做事、做管理的书很多，我看得不多，但是我觉得这些书更多是侧重技术和实现细节上的，而很少从人的思想和观念去讲。实际上，从根本上去说，如何做人做事是世界观的问题，也是一个哲学话题。很多人和我一样，已经到了快30的年纪，是需要去思考一下应该如何做人如何做事的，也需要一套简单、有效、完整的体系来指导自己，而这套体系将是让自己安身立命于这个世界的基石。<br /><br /><br />职场上如何做人<br /><br />关于在职场上如何做人，我只谨记两个字－－服务。你要把自己当成一个品牌去爱惜，当成一家公司去经营，你要牢牢记住你之所以能在一家公司立足，靳建通是因为公司需要你的服务。我们经常会抱怨某某银行的工作人员服务态度不好、某某商品的售后服务不好，但从来不去思考自己对公司的服务好不好？公司的任务有没有如期完成，是不是没有哪个任务是提前完成的，几乎所有任务都拖到&#8220;最后期限&#8221;？工作完成的够不够彻底，是不是答复已经完成了，结果日后又出状况？完成后有没有向上级反馈，是不是等到上级问你完成了没有，你才去报告进度？拖延的任务有没有持续跟进，是不是上级不追了这个任务最后就不了了之了？上面这些问题我都是反复遇见的，其实根本原因就是没有意识到你其实在做一项服务，你在公司的发展前景，全都取决你对公司的服务够不够好。设想一下，如果交给你的每件事情都可以迎刃而解、化险为夷，让人感觉稳妥、放心、踏实，你自然会收到更多更重要的&#8220;订单&#8221;。当你的单多到你忙不过来的时候怎么办？招下属啊，呵呵，恭喜你，你已经是领导了。反之，如果给你一件事情你要拖延，给你一件事情你办不好，给你一件事情就没了下文了，让人不放心，久而久之你就&#8220;无单可做&#8221;了，那么公司重新请一个人就可以了，干嘛非要用你呢？<br /><br /><br />服务不光是对于自己供职的公司，对于公司的客户也是一样的。每一次去客户那里出差前，我总是再三叮嘱自己，我此次之行是为客户做服务的，是去为客户解决问题的。这个心态非常重要，我们做软件系统的，去见客户除了做演示、做培训，很多时候就是处理现场问题，难免遇到客户对系统的投诉，比如系统速度慢、bug多等问题。当你有了这样的心态，你就会谦虚地接受客户的批评，细致地记录客户提出的问题，然后一项项地去思考如何解决，并且应该给客户一份详尽的解决方案。有了这样的心态，你会不自觉地、自然而然地与客户站在一边，让他感到你是在为他着想，帮助他去解决问题的。在你面对客户时，应该有这样一个虔诚的信念：我是去为客户服务的，为他解决他所解决不了的问题的。如果你没有这样的心态，面对投诉很可能就会产生厌烦，而且容易为自己的问题进行辩解。这种做法给客户的感觉就是你竭力在证明你是对的他是错的，这样你就站在客户的对面了。<br /><br /><br />在客户面前的表现对你的职场发展也是非常有好处的，尤其是接触到一些跨国企业时，你优良的职业素养会为你赢来客户的认同与尊敬。这样当你哪天希望寻找更高的平台，只要放个口风出去，立即就会有Offer了。所以认真服务好客户只赚不赔。<br /><br /><br />职场上如何做事<br /><br />关于如何做事，也有很多的理论，比如要事第一，把事情分为紧急、重要等等，这些我都不讨论了，我只就我自己的经验来谈一谈。<br /><br /><br />对于如何做事，我也恪守一个信条：不焦不燥，把心沉下去，将注意力集中于要解决的问题上。<br /><br /><br />我看过这样一个故事，是说从前有一户人家，家里的菜园中有一块大石头，经常会有人不小心撞到；儿子就问：为什么不把他挖走呢？他的爸爸说：这个石头爷爷的时代就有了，就是因为它那么大，不好挖才一直在那里；又过了一代人，家里的一个媳妇实在受不了，就扛着锄头去挖了，她已经做好了心理准备要挖几天的时间，结果一天就挖完了... ...原来那个石头的中间是空的。<br /><br /><br />我们遇到的很多事情也是一样的，看似棘手、难以解决，实际上只要你认真地去分析、去思考，然后放手去做，往往并没有想象中的那么困难。你需要克服心中的顽石。我发现一些人遇到问题后，很轻易地就会说：这个我做不了，这个实现不了，这个我也没办法。其实就好像看到这块大石头一样，被它的&#8220;外表&#8221;吓住了，而放弃了应有的行动。<br /><br /><br />而且我发现了一个有趣的现象，不管多么困难的问题，只要你沉下心去思考如何解决，就好像在冥冥之中上苍在看着你一样，当你拼到最后就要打算认输的时候，往往会出现新的契机和方法。<br /><br /><br />另外，我发现有些人遇到问题的时候，他想的是这件事如何困难如何难以完成，这样的思维方式是有问题的，是一种保守且退缩的思维；遇到问题的时候，想的应该是如何才能够完成。我一般采取这样几个步骤：1、列出所有的可能性；2、分析各种可能性；3、选择一种实现起来最简单、快速的可能性；4、去实现。<br /><br /><br />除此以外，我发现一些人在做事的时候，会以&#8220;这样做很麻烦&#8221;来作为不采纳方案的理由，而不是&#8220;这样是否必要&#8221;或者&#8220;这样是否更好&#8221;来作为标准，实际上&#8220;麻烦&#8221;应该是排在&#8220;是否必要&#8221;、&#8220;是否更好&#8221;后面进行考虑的。如果一种实现方式，虽然麻烦，但是很有必要，且对客户来说更好，那么就算麻烦也要去做。但是程序员往往关心的是会不会很麻烦，是不是要修改很多地方，是不是给自己带来很多工作量... ...告诉你，你关心的这些不是最重要的。<br /><br /><br />职场上如何做管理<br /><br />和上面一样，做管理也有很多的细节，我也都不谈了，因为这些都是一本书一本书的讲，而我觉得要简单、有效、好操作，所以我也只说三点。<br />我觉得做好一个技术经理，只要下面的三点就好了：<br /><br /><br />1、德行<br /><br />德行其实就是品德，简单地讲就是要善良、诚恳。最重要的，你做事的出发点要是好的，对别人是没有坏心的。为什么说出发点一定要是好的呢？我们还是以服务客户的例子来说，在为客户解决问题的时候，如果我们的出发点是好的，是站在客户一边尽心尽力去为客户解决问题的，那么即便由于方法、能力、条件等各方面的原因，事情搞砸了或者没有做好，也很容易获得客户的理解和原谅。很可能的情形是，你就算做失败了也一样赢得客户；相反，如果你的出发点是&#8220;省麻烦&#8221;，&#8220;赶紧交差了事&#8221;，&#8220;完成任务&#8221;，如果事情做成了也就算了，一旦失败了，你看看客户会怎么样？告诉你，好的客户会批评你、投诉你，因为他对你还有期望；更多的客户是什么话也不说，直接换个供应商就是了，才懒得理你。记住永远不要把客户当成傻瓜，你是如何做事情的，客户是很容易感受得到的。所以，面对和服务客户没有那么多的技巧，你不需要有多好的口才和魅力，也用不着忽悠和夸大其词(我发现很多销售人员都是这样，你可以骗客户一次，但就没有第二次了)，你只需要放下身段，兢兢业业地为客户着想，设身处地地解决他的问题就可以。对待下属也是一样的，你对他的奖励也好，惩罚也好，出发点一定要是好的。我对待下属遵循的原则就是：我是在帮助你，帮你把工作做的更好，帮你获得更大的提高，而不是说找你茬儿，跟你过意不去，或者是挤兑你压迫你。德行是基本的，有一个好的德行，至少可以保证你的下属不会讨厌你。<br /><br /><br />2、敬业<br /><br />如果有人问我，下属和经理的区别是什么。我会告诉他：下属等着别人交代事情做，经理想着还有哪些事情可以做。这其实是一个积极心态的问题，作为一个中层干部，你需要将公司的事情当成自己家的事情来处理，当你有这样的心态，你就是再怎么加班都不会有怨言的，即便分文不取... （有谁见过给自己家装修叫苦不迭的？）如果你可以长期保持这样的状态，你的这种献身精神和敬业精神，会很轻易地感染你的下属和你的同事，你会感觉到在公司左右逢源，而且你也会更有话语权，大家会更重视你的意见，同事和下属也会对你报以更多的信任。当这种情况出现时，管理起下属还会困难吗？但需要注意的是，你的敬业精神不是说体现在无休止的加班上，工作异常繁忙、经常性加班其实是工作没有做好的表现之一，加班只应该出现在紧急情况发生的时候，而不应该是一种常态。<br /><br /><br />3、技术<br /><br />如果有人问我，技术人员和其他人员最大的区别是什么。靳建通我会告诉他：技术人员个个自以为是，认为别人的技术都不如自己。呵呵，可能大家不爱听，但我观察到的现象就是这样的。很少有人愿意去读别人的代码，彼此都觉得写得好烂。所以，如果想赢得技术人员的钦佩，你需要有压倒性的技术能力。这个压倒性的优势，不是下属70分，你80分，而是下属70分，你要做到100分；下属100分，你要做到150分。所以，缺乏技术能力的人去管理技术人员往往是吃力不讨好的，可能下属表面上服从你，心里根本不当你一回事儿，这样管理起来就存在障碍了。当然，如果你的德行非常好，也非常敬业，技术就显得不那么重要了；而如果你已经满足了前面两条，同时技术也很精湛，那自然是锦上添花了。<img src ="http://www.blogjava.net/paulwong/aggbug/395669.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2013-02-24 16:53 <a href="http://www.blogjava.net/paulwong/archive/2013/02/24/395669.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我做的一个的项目，如何才能顺利的交付(转)</title><link>http://www.blogjava.net/paulwong/archive/2013/02/23/395638.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Sat, 23 Feb 2013 15:12:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2013/02/23/395638.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/395638.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2013/02/23/395638.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/395638.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/395638.html</trackback:ping><description><![CDATA[先把项目背景简单说一下，项目A可以认为是在原有业务系统的基础上衍生出来的新需求（派生的新业务），原有业务系统是一个比较大的系统，在公司也是一个拳头产品，卖了几十套，目前也有好几个人在上面维护+二次开发+缺陷修复等（人力资源紧张）。早期公司高层只是说肯定要做这个项目，但由于人力资源的问题迟迟没有决定要开工（还有一个重要原因是领导希望能够签下1-2个典型客户再启动项目A的开发），而仅仅是上销售去那几十家客户那里兜售新业务，吹的天花乱坠的，比较市场有些竞争，需要先拉单子。这些事情是年中的事情。 <br /><br />等到下半年的时候，市场对这个新的业务反应比较强烈，已经有客户说要看原型再签合同，原因是竞争对手已经出原型了。而此刻，公司以为高层决定要即刻启动项目开发，说先把原型做出来，限期一个月。而中层领导还是由于人手紧张，就随便抽调了4个开发人员，一半是1年工作经验以内的新手，就这样匆忙上阵。由于人手有限、时间紧迫、业务需求虽然已经明确，但很多业务细节这4个开发人员都不清楚，只有一个懂业务的但也谈不上精通。 <br /><br />项目计划就定了一个月，基本上按天把计划排好了，1个月后系统原型出来了。但比较粗糙，缺陷也比较多，设计基本没有做，代码质量也比较差。拿去客户那里安装后，客户认为这个系统太粗糙了，【到客户那里，客户就不会认为这是个原型系统了】 <br /><br />至此，按常规项目管理的做法，应该重新梳理真实的客户需求、业务流程和功能设计、架构设计、概要设计。。。。 <br />但事情的发展却不是这样进行的。由于客户迫切系统以周为单位看到项目的进展，于是领导决定就在原型系统上扩展和修改，其结果就是计划制定后很难执行，变成了按周来排计划，主要就是按客户的需求来改。 <br /><br />好不容易在年底前把版本基本上稳定了，但只是业务流程和功能比较温度，缺陷开始收敛了。 <br /><br />但元旦后到客户现场安装测试版本，客户对此版本又提了很多需求变更和新模块。此刻麻烦就比较大了，因为系统的架构灵活性比较差，改起来对原有代码影响比较大，改动范围大。于是又是时间紧张，又是工作量，刚把功能实现，客户就开始催啥时候测试。缺陷一直居高不小，于是决定花2周时间专门修改缺陷。 <br /><br />到现在为止，开发基本完成了。但问题也比较突出： <br />系统的性能存在问题（有些模块客户的意见很大，但这个从技术上讲，改动会比较大，不是1周能解决的） <br />系统的稳定性（与1相关） <br />功能的可用性（有些功能早期按照开发人员的思维来设计的，到客户那里客户提出新的想法，开发时把这种体验需求压住了，但在后续还是要改） <br />马上要启动二期的需求开发，这个更麻烦 <br /><br />--------------------- <br />至此，整个项目风险还是比较大的，我总结有以下几个原因： <br /><br />1. 项目的目标、业务流程、大体需求是很明确的，但细节需求在项目中前期，整个项目组都是一知半解的，造成后续返工较大，客户和开发人员包括公司领导对质量的意见都较大； <br /><br />2. 项目从开始到现在领导和项目经理的分工不明确；由于人是凑起来的，大家之前没有合作过不了解； <br /><br />3. 原型系统出来后，项目经理大部分时间都去解决客户的需求沟通和售前支持了，少部分时间在真正项目开发上； <br /><br />4. 一直对项目的总体计划和推进情况估计不足，造成项目计划形同虚设，完全是开发人员做到哪算哪； <br /><br />5. 中前期领导对这个项目不重视，等到元旦后发现问题比较严重，就临时抽调人手进来协助，而刚进来的人一方面不是项目经理想要的人（仍然是新手），另外一方面由于系统的业务性比较强，新手加进来后1-2周内根本不起作用； <br /><br />6. 测试工程师，派过来的2名测试工程师是后期加进来的，业务都不熟悉，培养的2周后才慢慢熟悉，而且在客户现场，测试工程师根本应付不了客户的问题，即客户讲的需求测试工程师根本不懂或不熟悉； <br /><br />大致就这些吧。&nbsp;<img src ="http://www.blogjava.net/paulwong/aggbug/395638.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2013-02-23 23:12 <a href="http://www.blogjava.net/paulwong/archive/2013/02/23/395638.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PM成长日记第三话-那些年我们一起做过的项目(转)</title><link>http://www.blogjava.net/paulwong/archive/2013/02/22/395562.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Fri, 22 Feb 2013 03:20:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2013/02/22/395562.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/395562.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2013/02/22/395562.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/395562.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/395562.html</trackback:ping><description><![CDATA[第三话按照原计划是要写写平常心的，因为飞跃计划要交作业，所以就改为写自己对项目管理的一些经验总结，刚好前一段时间那些年我们一起追过的女孩很是流行，这一话的名字就叫做那些年我们一起做过的项目。<br /><br />我的第一个项目是在2005年，那是一家市场占有率前三的本地化翻译公司，公司的信息部门只有两个人：老大和我，我们一起开发公司内部的协同办公系统。要解决的问题很简单：由于公司发展迅速，以前单纯依靠纸质单据和邮件分派和追踪任务已经越来越让项目经理和财务不堪重负，迫切需要将这些工作给自动化。系统的技术架构也很简单：<br /><br /> jsp+javabean+mysql。没有专门的开发计划，基本开发流程是这样的：每周一我们访谈一个业务部门经理，了解他的需求，周中开发，开发中有任何问题都可以直接找业务经理，周五的时候系统上测试环境，再和业务经理坐到一起看一下是否满足了他的需求。系统就一直这样不紧不慢的开发着，老板办公室就在我们身后，一有时间老板就会和我们一起使用该系统。整个开发过程只有一个细节让我印象深刻，就是对任务估算工作量时，不管我估算多少，老大都会给我乘以3，一次要给业务表单增加一个字段，老大问我需要多长时间，我说不就是增加数据库字段吗10分钟，结果老大给了我半天时间，老大说，增加字段确实只需要几分钟，但打开编辑器需要时间吧，集中注意力需要时间吧，改完了启动系统测试需要时间吧，测试完了和业务经理确认需求需要时间吧，我们估算的是完成整个事情的时间而不仅仅是编码的时间。<br /><br />这个项目完成时获得了公司上下的一致好评，从公司老板到业务经理，每个人都非常满意，而让我感到唯一遗憾的却是身为IT人员竟然从来都没有加过班。<br /><br />回想起来，这个项目之所以成功固然是因为技术简单和系统不复杂（我们甚至都不需要 SVN，完全依靠脚本同步代码），但最重要的还是持续交付和持续的用户反馈，老板和业务经理每周都能看到新功能的上线，这增强了他们的信心，同时反馈几乎每天都在进行，并且他们很快都能看到这是否是他们想要的。<br /><br />第二个项目在2006年，这一年我换工作了，因为当时我认为不加班的程序员不是好程序员。新公司在上地，是一家做协同办公业务平台的公司，最开始去的是项目部，一开始很为业务平台这个概念着迷，因为当写程序时最先不是写代码而是用代码生成器生成代码，并且生成完的代码马上可以运行！第一个项目是丰田公司的销售管理系统，我们创新的使用了当时最热的Ajax技术，我们完全是用技术热情加上周末时间完成对原有功能的 Ajax增强，这个项目获得了用户极高的评价，因为当大多数web系统还在使用点击 /刷新的方式进行交互时，我们却可以直接拖拽完成操作了。如果在当时，我会认为是技术的创新让项目获得了成功，但是现在，我会用渐进式增强这个词，即只有在完成用户所需要的核心功能（什么叫核心功能，即缺少这个功能系统不能工作）后才开始对系统用户体验、性能进行渐进式优化。<br /><br />第三个项目是在公司的平台部，这里部门经理正准备对原有的业务平台进行重写，原先业务平台的技术框架是：jsp+struts+ojb+sqlserver，新的技术框架定义为： ajax+freemarker+webwork+spring+hibernate。这让我兴奋，因为新的技术框架几乎是当时最流行的技术。加部门经理共有三个开发人员（所以沟通一直不是问题），老大使用project来管理项目，每个人负责一个模块，估算以周为单位，最初计划是 5个月交付，功能直接就是老平台的翻版换的只是技术实现，但是 5个月后进行测试和项目试用时却发现了大量缺陷，最后几乎用了半年时间才将缺陷收敛，产品发布计划延期半年。回顾这个项目，需求没有进行详细的分解和评审导致实现与需求不一致 似乎是项目延期最重要的问题，然而更深的思考却是我们需不需因为技术原因开始新产品的开发，在不影响用户使用的情况下对原业务平台进行渐进式增强是否更加合适。即我们在启动项目时更多关注的应该是用户价值（只有有用户价值用户才会买单公司才有收益）。<br /><br />第四个项目是我负责的，这个项目几乎是上一个项目的翻版，重写公司的工作流产品：支持更多的工作流模式，更易集成的api和管理界面，唯一不同的是这个项目采用了很多敏捷里的实践：持续集成、单元测试、站会、迭代，但这些实践均不影响这个项目最终的失败。同样是该不该重写这个项目的问题，在公司资金链紧张、时间要求紧、新产品相比竞品没有突出特性的情况下，这个项目从一开始就决定了失败。如果没有特别充足的理由就不要重写产品，这几乎成为我目前最重要的一条原则，尤其要从公司全局的角度看待产品不能局限在技术。现在，只要谁一说到要重写产品，而给出的仅仅是技术原因，我就会两股加紧，冷汗直流。在对项目完全负责的情况下，我另一点深刻感受就是人的重要性，对团队中的每个人员，作为leader 你都需要知道他的需求是什么，没有人愿意做机器人，在一次对某一技术方案简单粗暴拍板后，一个核心技术人员流失了，这成了压垮这个项目的最后一根稻草。<br /><br />08年底去了一家新公司，新公司采用敏捷实践。第一个项目很成功，几乎是敏捷项目的一个成功范例，需求分析、迭代、持续集成、结对、客户 showcase、持续交付，项目甚至提前半个月完成。唯一美中不足的是项目二期时新团队由于一期文档很少带来了很多困扰。突出的感受是：团队人员有了角色、有了分工也就有了流程。现在，到了一个新的部门或中心，第一件事情往往就是梳理项目开发流程，定义出每个人的角色，职责不清是互相埋怨之源。<br /><br />第二个项目是咨询项目，略去不表。第三个项目是分布式团队，一部分团队在国外，一部分团队在国内，最开始一切顺利，但在上线前一个月遇到了严重的性能问题，陷入了一片混乱当中，所有人都不知道我们离上线还有多远，还有哪些工作需要完成，优先级都是什么，项目经理甚至自己都失去对整个项目的把控，她不知道项目上线究竟需要满足什么条件，于是一次次在等待国外团队优化后的测试结果，于是一次次的测试结果不满意，于是项目在一次次的下周二上线的空头承诺中成了整个公司的笑柄。这个项目回顾起来就是团队遇到挫折时放弃了计划，迭代没有了，故事墙没有了，所有人都在等待，而项目经理为了不让开发人员被公司收回还不得不想一些优先级不高的任务给团队完成装着我们很忙。教训就是，任何情况下都不能放弃计划，计划是项目之本。其他包括团队能不分布式就不要分布式，如果必须分布式那么一定要从架构开发任务上进行隔离，尽量减少两个团队之间的交互（很多项目经理进入到部门之后推进项目制，其实也是同样的原则，团队大了就要拆解，产品代码多了也要模块化，尽量减少团队之间、模块之间的交互，做到能够各自独立演进和发布）。尽早进行实际环境的测试，越早越好。测试越早进行越好，测试环境越贴近产品环境越好，这一原则什么时候强调都不过分（我们上线前的测试才发现严重的性能问题）。<br /><br />第三个项目是幸运的，因为他们有钱，能够等待，在多等待了大半年后系统终于上线。而第四个项目就没有这么走运了，这个项目是一个在线 saas CRM系统的重写，而且有着强时间约束（如果半年不能交付，将错过该系统客户每年做预算的窗口期），看吧，又是重写，又是时间约束，这几乎总预示着它厄运难逃。表面上看项目是在一次中期的架构重写中崩溃了，重写耗去了团队太多的时间，而由于对未知领域知识的不正确估算（需要学习）再次令项目雪上加霜，项目目标又不能变化，要在六个月后上线，但更深层的原因还是项目开始之前没有决策正确，真的要重写产品吗？老产品确实界面很丑、一些功能没有，但这些不能渐进式增强进行吗，一定要重新开始吗？重写使用新团队，他们对该业务领域并没有经验，过去系统遇到的坑他们不清楚，他们的计划因为少考虑了一些情况是否显得过于乐观？这个项目的其他问题包括项目计划一直没有发生变化，尽管所有人都认为在规定日期到来之前不可能交付，但这个日期却没有发生变化。最后不得不说这是一个技术强大的团队，一切都做到了自动化，甚至部署产品环境也是一键完成，但是这些在项目目标失败的情况下显得黯然失色。而客户贷款做这个项目则让很多团队成员良心不安。<br /><br />来到腾讯，来到soso，最重要的收获是对运维有了新的认识，以前曾经认为devops就是自动化部署，全功能团队，现在发现它关乎架构：一条搜索的badcase是否能够很快找出错误的原因？是抓取失败，是索引时丢失，还是相关性排序不好？关乎监控和报警，我们能否很快从监控中定位出原因？关乎组织结构，前台开发，后台架构，基础架构，运维测试团队都是分离的，如何协作才能使团队合作的成本最低而整体利益最大化？<br /><br />回顾往事，保尔柯察金说：如何才能不虚度光阴，只有为共产主义奋斗终身；柯景腾说：唯有沈佳宜让我怀念；而我想说的是：<br />做任何项目之前一定要想清楚为什么要做这个项目，一定要想清楚这个项目的价值是对用户和公司的（尤其需要跳出站到一个比较高的层次看项目），一定要想清楚项目的约束（时间约束、人员约束）,不仅是项目开始之前要想，过程中要不断回顾；；<br />项目任何时候都必须有计划，对所有干系人透明；<br />项目一定是持续交付和持续反馈的，不允许黑盒出现；<br />测试和运维一定要尽早介入；<br />从每个团队成员的角度出发关注所有人的利益实现共赢。<img src ="http://www.blogjava.net/paulwong/aggbug/395562.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2013-02-22 11:20 <a href="http://www.blogjava.net/paulwong/archive/2013/02/22/395562.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>大计划有大未来</title><link>http://www.blogjava.net/paulwong/archive/2013/02/20/395434.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Tue, 19 Feb 2013 16:12:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2013/02/20/395434.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/395434.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2013/02/20/395434.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/395434.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/395434.html</trackback:ping><description><![CDATA[年轻时，不犹豫，年长时，不后悔。年轻时要尽早的给自己定位，是鸟就飞的更高，是鱼就游得更快。<br /><br />发挥自己的特长，有所专一，不能什么都会。根据别人的经验为自己找方法。<br /><br />趁自己还年轻，把想干的事都干了，只要对自己能力有提升的，别犹豫。不能等到年长时后悔当年<br /><br />自己没有干什么事，不能等到年老时再聊发少年狂。<br /><br />年轻时，努力的探索自己，发掘自己，积极的上进，努力的学习，积攒技能，学习人事。<br /><br />要努力学习，以开放积极的心态来面对困难与挑战。<br /><br />三十岁时，让自己能够独当一面，能够为人所用。跟着一群优秀的人合作共赢，积攒人脉，让自己<br />变得更优秀。<br /><br />四十岁时，让优秀的人为自己工作，五十岁时，让优秀的人变得更加优秀。<br /> <br />年轻时，积累自己的耐心，价值，能力，知识，创造，付出，原则<br /><br />年轻时，靠的是努力。重点是学习如何成为一员有专业素养的精兵，找到立身之本的根。<br /><br />年轻时，最困难在于要在最耐不住寂寞的年纪做耐得住寂寞的事。<br /><br />或许某些努力看上去是无望的，但是不要放弃，坚持不懈怠，有傻&#215;一样的努力才有牛叉一样的结果。<br /> <br />三十岁，靠的是实力。重点是学习如何成为一名有管理能力的猛将，要能独挡一面。<br />这时，要将专业的深度，人格的成熟度，人情的练达度拧成自己的综合实力。<br /> <br />四十岁，靠资历。重点是学习如何成为一位有经营水平的名帅，建设枝繁叶茂的系统。<br />这时，你的经验，资格，见识，荣誉都要上得了台面。<br /> <br />五十岁，靠势力。重点是学习如何成为一位成就组织的王者，培育众木成林的势力生态。<br />桃李满天下，知交遍天下，关系满天下。成为培育组织，保护组织，成长组织的人。<br />依靠以前铺好的轨迹走自己的路。<br /> <br />年轻时跟优秀的人工作，三十岁跟优秀的人合作，四十岁找优秀的人为你工作，五十岁<br />努力是别人成为更加优秀的人。<br /> <br />年轻时可教，三十岁可用，四十岁有资格可捧，五十岁可敬。<br /> <br />五十岁的功德是自己成就的，是自己人生经验财富的积累。<img src ="http://www.blogjava.net/paulwong/aggbug/395434.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2013-02-20 00:12 <a href="http://www.blogjava.net/paulwong/archive/2013/02/20/395434.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>三个人的2012-工作篇</title><link>http://www.blogjava.net/paulwong/archive/2013/02/20/395433.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Tue, 19 Feb 2013 16:07:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2013/02/20/395433.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/395433.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2013/02/20/395433.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/395433.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/395433.html</trackback:ping><description><![CDATA[作者：邹振文<br />初六的早晨，刚从老家回来，坐在出租屋的阳台上，阳光灿烂，竟然是北京难得的好天气。距离上次写年终总结已经过去好久，打开博客，发现上次写年终总结已经是四年前的事情。上次写总结的时候还是在东直门温暖的办公室里，随着年龄的增长，觉得时间过得越来越快，四年时间，发生了太多太多的事情：有小孩了，换工作了，最重要的，是三十了。三十，意味着很多事情，古人说，三十而立，对我来说，更重要的是有了更多的责任，不仅仅是家庭，工作也如是。<br /> <br />年初负责的第一个项目是配置管理组的运维自动化项目，简单的说就是将之前手工管理的20多台机器使用puppet管理起来。想一想，命运真是讽刺，就在一年前，在上一家公司，自己还对持续集成工具不太感冒，不愿去学，甚至认为有些太难：机器环境的管理、构建工具、jenkins、puppet/chef、shell，觉得这些东西太琐碎，一心只想写代码。换了工作，阴差阳错，先到配置管理组工作一段时间，必须学习这些东西，过程就不多说了，只有一个感悟：很多时候，你觉得太难，只是因为你不了解它。用了两周时间，将整个puppet环境搭建起来，一切皆SVN，一切皆代码。<br /> <br />接下来的第二个项目是负责调研搜索新架构的自动化发布方案，这是跨部门的合作项目，大大小小跨越20多个项目组，这其中还包括了运维同事、测试同事和云计算基础服务的同事，调研一礼拜，实际上事前准备了很长时间，仅仅那一周的调研计划就修改了四版，系统整理了整个新架构的架构方式，和对方领导达成一致，取得他们的支持，了解大家的期望：开发同事希望能够更快更有效率的发布代码，测试同事希望测试的代码与发布的代码同源，运维同事希望发布过程能够遵从规范可控，当大家对共同的目标达成一致时，方案就顺理成章了：持续集成服务器负责一键编译测试打包上传到包服务器，包服务器保存所有的预发布包，预发布包经过测试后才转为发布包，发布包透过发布系统一键推送到Torca集群调度系统，Torca完成最终集群的发布调度。相比老架构，感觉新架构最明显的提升是：下载、索引和检索三大模块被分离成各自独立的服务，独立演进；统一的数据管理平台，以前追踪badcase很难判定是哪个模块处理数据出了问题，现在透过数据管理平台，数据处理过程被可视化可追踪；统一的脚本执行系统，所有脚本以及执行过程透明可视化；云计算平台，XFS文件系统、Xcube数据库、Torca集群调度、mapreduce并行计算，这些服务大大简化了上层应用的开发。越来越体会到架构的本质：随着系统的演进，我们需要不断进行系统的分解，做到服务的独立演化。当然当时也有困惑：当所有的希望都被压在新架构身上，毕其功于一役，现网老架构停止开发运营时，项目的风险可想而知。做完这个项目，感悟有两个：一是机会只青睐有准备的人；二是跨部门沟通一定要找到共同的利益点，一定要多换位思考。<br /> <br />4月份，准备调回项目管理组，去云计算基础架构部做项目经理。在配置管理组的最后一个项目是Jenkins的报表系统，只有一周半时间，最开始准备使用scala，考虑到后续维护最后使用了java，好久没有编码了，找回久违的感觉：打印出IDE的快捷键，搭建开发环境、测试环境和产品环境，jenkins一键自动部署，数据库版本管理，TDD，一周半的时间就上线第一个版本，最后还不得不赞一下jenkins的rest api。感悟是：感谢一期开发时间只有一周半，这使得我们不断思考到底我们要做些什么，哪些是我们最紧急最需要的，哪些是锦上添花的，一期上线后，唯一也是最大的好处就是：我们再也不用手动统计和发送构建周报了，每个礼拜一再也不用那么忙碌了。时间盒，很重要。<br /> <br />终于转回了项目经理，去云计算，牛人聚集的地方。首先仍旧是补课：计算机原理、Linux系统编程、C++ primer，一个都不能少。去了没多久，出现了一起事故：搜索模块对云计算SDK的依赖是源代码依赖，云计算有5个产品，但是一个产品单独发布时与之前的SDK不兼容，一发布就直接导致了大量搜索模块的无法编译。正好由我负责来推动解决这个问题，立了一个发布流程规范化项目：通过规范化发布流程、增加自动化集成测试，减少云计算平台的发布风险。所有SDK统一打基线发布，发布前必须进行自动化集成测试，server发布时也要与所有SDK版本进行兼容性测试。随着项目的进行，逐渐融入了这个部门：这是一个工程师文化非常强烈的部门，所有人都在技术上追求卓越，加班到10点以后是非常常见的事情，单元测试覆盖率令人惊讶的全部达到85%，但是很多同事一听到规范和流程就头疼，项目计划也是比较随意，延期比较常见，另外因为之前发布版本升级比较随意，也会经常受到上游兄弟部门的投诉，有很多次出现问题，兄弟部门抱怨云计算平台不稳定，而仔细检查后发现很多时候是使用的方式不对，比如查找文件时使用了遍历。逐渐意识到，部门最大的问题其实是缺少产品运营，大家的关注点全部集中在产品本身上（吞吐量、最大存放文件数、强一致性），或多或少的忽略了用户。5月下旬，风神项目启动，项目目标是搭建台风统一的监控平台和自动化部署框架，打造一站式的台风服务。开始在项目中引入项目管理的实践，WBS是最基本的了，迭代计划找到开发节奏、回顾、每个迭代结束后都努力向线上发布版本，实现持续交付，工程上则将开发环境与线上环境进行了隔离。效果都还不错，但思考更多的还是，我们还应该做些什么。产品发布规范化，必须通过自动兼容性测试和周知用户；集群环境的修改必须可被审计，暂时不能自动化，那么先必须周知部门内同事或结对操作；监控有风神项目，但集群运营、用户数据、可用率日报也需要发送；开发、测试和线上环境互相隔离；定期和用户进行主动沟通，了解他们的问题。这段经历的感悟很简单：产品的核心在于运营，作为服务部门，我们交付的一定是用户满意度而不是产品。<br /> <br />紧跟着，新架构还未上线，组织结构调整来了，喜欢ls的直率：我现在的任务很简单，就是看到哪里有山头就把它给平了，所有人都必须听我的，所有人的思路必须一致。<br /> <br />在敏捷中国大会发表了演讲《百年历史看管理》，这个session足足准备了2个月时间，重新思考了流程、组织结构和人之间的关系。从20世纪初到40年代，管理科学完成了从无到有的第一个阶段发展，这个阶段最重要的成就就是将管理作为一门科学建立起来，发现了管理的三要素：工作流程、组织结构和人，并振聋发聩的告诉所有人：管理是可以学习的。我们可以看到，所谓管理，都不过是在流程、组织结构和人这三者之中进行权衡调节，管理没有固定模式，只有不同企业根据不同情况在这三者间权衡裁剪罢了。如果说管理科学的第一个阶段是在探讨如何正确的做事，如何提高工作的效率，那么50到60年代这二十年管理科学的第二个阶段则是在探讨如何做正确的事：以顾客为中心、做事之前一定要想清楚做事的目的。管理至此也终于有了一个完整的定义：做正确的事、正确的做事。从70年代开始，管理科学进入第三个发展阶段，在这个阶段，首先提出的思想就是没有银弹，管理是一门艺术需要柔性，接下来就是流程的内涵开始延伸，不再是单纯的工作流程，而是面向顾客，强调端到端满足顾客需求的整个过程，这个过程在全球化背景下越来越强调企业之间的协调、强调整个面向交付生态系统的协调，业务流程的概念被提出。进入新世纪，不管是更合理组织结构的思考（扁平化），还是对人的推崇（乔布斯、创新）抑或是业务流程效率的竞争（供应链），都明白无误的告诉我们：管理只有恒久的问题，没有终结的答案。<br /> <br />9月份调整到新的部门：搜搜问问。先负责的是后台组的项目管理。新团队，老人只有一个，士气低下，缺少文档，上百个服务，光维护就非常困难，重写计划。从回顾会议开始，持续改进。这段时间的感悟是：提升团队士气的最好方式就是帮助大家成功，任何一点成绩都值得鼓励。我们引入了持续集成和自动化发布，鼓励同事做总结和分享；引入了自动化测试，鼓励同事做汇报，帮助review ppt；积极的让大家做有态度的程序员，对产品进行思考和反馈，把团队精神传递到部门经理，让部门经理进行鼓励。可以自豪的说，后台组是现在问问最有战斗力的团队。还有一点最重要的感悟是：一定是团队leader决定团队是否给力，幸运的是，我们有一个非常优秀的leader。<br /> <br />12月份开始负责部门的社区化运营项目。这和今年工作的感悟是一致的，产品的核心在于运营，这正是我想做的。项目立项一定要有一个NB的名字，我们就叫黑暗骑士。这个项目同样面对很多的挑战，目前最大的挑战还是在于人，团队的信心目前还没有建立，年后可能还会有人提出离职，而招人又是如此的困难，所以，上班第二天的第一件事是回顾会议。团队年前第一个版本发的很有挫折感，需求反复修改，开发人员都心灰意冷，所以，感悟是：一份优秀的需求文档是一切合理计划的起点。<br /> <br />1月份组织了技术中心的部门年会节目，我们原创的小品《非问勿扰》获得了二等奖。把新人都变为主角，这也算团队建设的一部分。<br /> <br />依然在不停思考，对问问来说，我们还应该做些什么。传统问答模式作为搜索引擎的补充是否已经走到了尽头？SNS的问答模式是否值得探索？与微博是否有更深的整合方式，或者，它们本身就是一种产品的两种展现方式？新浪微什么的探索是否还不够大胆？在移动端，独立的app没有前景，如何和微信更有力的结合。<br /> <br />终于到了可以结尾的段落，还有一件事情似乎忘了总结，那就是我们写了长达四年的那本书《流程的永恒之道-一个工作流和BPM项目的实战》，什么也不说了，一个例子来说明为什么值得期待：当我们把房管局及各委办局的数据和流程用BPM全部打通后，客户却依旧坚持要手动盖章走人工流程，BPM实施技术根本就不是瓶颈，瓶颈依旧是人啊。今年上半年一定出版。之所以写了四年，是因为写着写着总觉得知道的越来越不够，不断读书和补充内容，真是，那时年少，无知者无畏，唉。<br /> <br />2013，黑暗骑士崛起！<br />本文为转载：原创地址http://www.software8.co/wzjs/cxyyg/2953.html<img src ="http://www.blogjava.net/paulwong/aggbug/395433.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2013-02-20 00:07 <a href="http://www.blogjava.net/paulwong/archive/2013/02/20/395433.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>从程序员到技术总监，分享10年开发经验</title><link>http://www.blogjava.net/paulwong/archive/2012/12/09/392685.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Sun, 09 Dec 2012 09:26:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2012/12/09/392685.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/392685.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2012/12/09/392685.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/392685.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/392685.html</trackback:ping><description><![CDATA[在中国有很多人都认为IT行为是吃青春饭的，如果过了30岁就很难有机会再发展下去！其实现实并不是这样子的，在下从事.NET及JAVA方面的开发的也有10年的时间了，在这里在下想凭借自己的亲身经历，与大家一起探讨一下。<br />
明确入行的目的<br />
<br />
很多人干IT这一行都冲着&#8220;收入高&#8221;这一点的，因为只要学会一点HTML, DIV+CSS，要做一个页面开发人员并不是一件难事，而且做一个页面开发人员更容易找到工作，收入比普通的工作还要高一些，所以成为了很多高校毕业生的选择。如果您只是抱着这样一个心态来入行的话，那阁下可真的要小心了。因为干IT这一行竞争本来就比较激烈，特别是页面设计这方面，能够开发的人很多，所以为了节省成本，大部分公司都会在需要的时候才招聘这类人员；在没有订单的时候，一些小公司还可能找各类的借口或者以降薪的手段去开除这类员工。而在招聘信息上常常会看到&#8220;招聘页面设计师，条件：30岁以下&#8230;&#8230;欢迎应届毕业生前来应聘&#8221;这样一条，因为这一类工员对技术上的要求并不高，找应届生可以节约成本。所以在下觉得&#8220;IT行业是吃青春饭的&#8221;这句话只是对着以上这类人所说的，如果阁下缺乏&#8220;进取之心&#8221;，而只抱着&#8220;收入高，容易找工作&#8221;这样的态度而入行，那&#8220;IT行业是吃青春饭&#8221;将会应验了。 <br />
<br />
选择合适的工具<br />
<br />
JAVA、C#、PHP、C++、VB&#8230;&#8230;10多种热门的开发语言，哪一种最有发展潜力呢？其实开发语言只不过是一个工具，&#8220;与其分散进攻，不如全力一击&#8221;，无论是哪一种开发语言，只要您全力地去学习，到有了一定的熟悉程度的时候，要学习另一种的语言也是轻而易举的事情。开发语言主要分为三大类：<br />
<br />
1. 网络开发 <br />
<br />
现在网络已经成为世界通讯的一座桥梁，好像Javascript、PHP、Ruby这几类开发语言大部分是用作网络开发方面。<br />
<br />
2. 企业软件开发<br />
<br />
JAVA、C#、VB这几类开发语言都实现了面向对象开发的目标，更多时候用于企业系统的开发。<br />
<br />
3. 系统软件<br />
<br />
C语言、C++、Objective-C这些软件更多是用在系统软件开发，嵌入式开发的方面。<br />
<br />
当然，这分类不是绝对，像JAVA、C#、VB很多时候也用于动态网站的开发。在很开发项目都会使用集成开发的方式，同一个项目里面使用多种开发语言，各展所长，同步开发。但所以在刚入门的时候，建议您先为自己选择一种合适的开发工具，&#8220;专注地投入学习，全力一击&#8221;。<br />
<br />
明确发展方向<br />
<br />
当您对某种开发语言已经有了一定的了解，开始觉得自己如同&#8220;行尸走肉&#8221;，成为一个开发工具的时候，那您就应该要明确一下自己的发展方向了。<br />
<br />
平常在公司，您可以看到做UI层的开发人员大多数都有20多岁，他们充满干劲，而且没有家庭负担，在两年前ASP.NET MVC 、Silverlight等刚出现的时候，他们可以在晚上回家的时候买几本书或者直接上网看看，研究三五个星期以后，对需要用到的技术就已经有一定的了解了。而年过30的人多数是已经成家了，他们每天9：00点上班唯一的希望就是快些到6：00点，能回家吃饭。吃完饭只想陪孩子玩一下，看看孩子的功课，对新增的技术缺乏了学习的欲望。所以很多接近30岁的程序员都有着一种逼迫感（包括30岁时候的我自己），再过几年应该怎么办？这时候，您就更应该明确一下目标，努力向自己的发展方向前进了。归纳一下，可从下面几项里选择适合自己的一条道路：<br />
<br />
1. 从技术向业务过渡<br />
<br />
在国外，很多发达国家都很重视人才，一个高级的程序员与一个Project Manager收入相差一般不超过15%。但中国是世界上人口最多的国家，国内人才众多，所以人才滥用的情况经常可以看到。一个小公司的开发部里面经常会见到新面孔，但PM却不会常换。因为做老板的对技术是一窍不通，依他们看来只到拉住PM的心，那技术方面方面就能搞得定，至于技术部要换人，他们根本不需要费力气去管。所以从一个技术员过渡到一个PM是向前发展的一个选择，但开发人员也需要知道，要成为一个PM不单单是使用技术，而更重要的是对管理方面的认识。一个PM主要的工作是组织团队，控制成本，管理业务，控制项目进度，与客户进行沟通，协调工作，定期进行工作报告等。所以要成为一个成功的PM更要重视组织能力，PM必须能提高团队的积极性，发挥团队所长，在有限的开发资源前提下为公司得到最大程度上的利润。成为一个PM后，通常不需要直接接触技术开发，而着重管理的是业务发展，但PM对技术也需要有一定的了解（在下曾经为PM对技术了解的必要性写过一篇文章，得到很多支持但也惹来不少的争议）。在这里我还是要强调自己的观点：要成为一个成功的PM最重视的是管理能力，但对技术也应该有足够的了解，因为这是与团队成员沟通的桥梁，只有这样才能与整个团队的成员有着紧密的结合，让团队成员感觉到他们自己存在的意义，从而调动团队的积极性，而不是漠视技术人员的存在。技术并非成为一个成功PM的充分条件但却是必要条件！<br />
<br />
2. 从程序员向技术管理发展<br />
<br />
其实一个Team Leader的职责与Project Manager相像，但Team Leader更着重于技术开发方面，通常一个大型项目都会有一两个开发团队由Team Leader带领，负责开发核心部分，而其它部分分派给不同开发小组或者分派给外包公司。在网上常看到几句话，贴切地形容了PM与TL的区别：&#8220;技术人员乐于被领导；但他们不喜欢被管理，不喜欢像牛一样被驱赶或指挥。管理者强迫人们服从他们的命令，而领导者则会带领他们一起工作。管理是客观的，没有个人感情因素，它假定被管理者没有思想和感受，被告知要做什么和该如何做。领导是引领、引导，它激励人们达成目标。领导力是带有强烈个人感情色彩的，它不是你能命令的，也不是你能测量评估和测试的。&#8221;<br />
<br />
无论是PM与TL，对业务与技术都要有深入的了解，只是PM更侧重于业务的管理，盈利的多少，风险的大小等等，而TL则侧重于项目的成本，开发的难度，软件的架构等技术方面的问题。在某些人眼中，技术与管理就像鱼与熊掌，不可兼得，但依在下看来，两者却是秤不离砣，密不可分。只要及时提升自己对技术与管理的认识，不断地向深一层发展，要从程序员提升到技术管理人员只是时间的问题。打个比方，一个普通的.NET程序员，开始可能限制于ASP.NET的页面开发，但一旦他有了发展之心，他自然会对ASP.NET MVC、Silverlight、WinForm、WPF这些UI的开发手法感到兴趣，学习不需要多少时间，他可能就会认识这些UI开发只不过是一些工具，其实在开发原理上没什么区别。接着他就会向深一层的通讯模式进行了解，认识TCP/IP、Web Service、WCF、Remoting这些常用到的通讯方式，这时候他可能已经感觉到自己对开发技术有了进一步的了解。进而向工作流、设计模式、面向对象设计、领域驱动设计、面向服务开发等高层次进发，最后成为技术的领导者。上面只是一个比喻，但要注意的是，在学习的时期必须注意的是与同事之间沟通，很多的开发人员喜欢独来独往，开发的项目总想一个人搞定，不受外界的干扰。但要明白，就算你有天大的本事，一项大型的项目也不可能由你一个人全扛着。所以团队的合作性与同事间的沟通是必要的，这也是成功一个TL的必要条件。<br />
<br />
3. 单方面向技术发展<br />
<br />
能成功进行技术开发的尖端人才，这是在下最向往的工作，却也没本事登上这个位置。很多从事开发的人都会认为，业务总会带着&#8220;金钱的味道&#8221;，老板从来不管开发是否合符开发原则，是否经过必要测试，他们只会在客户面前无尽地吹嘘，项目到期能成功交货，只要不出什么大问题那这个项目就算成功了。其实我们也要明白：开发项目最终目标是为了赚钱，在开发过程中对项目成本的限制和效率的控制这也是必须，所以这才需要管理人员对项目进行管理。但开发人员也很想避开这&#8220;金钱的尘嚣&#8221;，全心投入到技术的世界当中。所以对技术有着浓厚兴趣的人，往往会深入地研究某一项技术，成为技术上的精英。但在这里说一句令人心淡的话：中国已经属于是世界上第二大经济体同盟国，但国民生产总值主要来源于第三方加工产业方面。中国可以说是人才济济，但却在高新产业上却比发达国家落后。这几年的确看到我们国家在高新科技上有着质的飞跃，但跟欧美发达国家还有着一段距离。所以想在中国成为尖端技术的人才，无可否定比在国外要难。依在下看来，要想成为尖端的开发者，必须对C、C++、汇编语言、嵌入式开发、Windows API、Linux API这些底层技术有着深入的了解。要知道解JAVA、.NET&#8230;&#8230;等这些之所以称为高级开发语言，并不是指它们比C、C++、汇编语言更高级，而是指它们封装了C、C++等等的功能，更适合用于企业软件的开发，使开发变得简单。但如果要开发一些底层的软件，大型的系统的时候，就必须用到C、C++、汇编等开发语言，这是成功尖端人才的一个条件。<br />
<br />
确定未来的目标<br />
<br />
人是从历练中成长的，古人云：三十而立，形容的不是一个人的社会地位，经济来源，而是形容一个人对未来的目标，对人生的意向。要成为一个成功人，就应该早日为自己定下长期的发展目标，作为一个开发者也当如此。随着人的性格，取向各有不同，大家为自己所选择的路也有不同：<br />
<br />
1. 自立门户，勇敢创业<br />
<br />
快30岁了，很多人会认为要想真正赚得了钱，就应该自立门户，为自己创业建立一个基础。像北京、上海、广州这些一级城市，要买房子，一手楼基本要在2万~4万元/平方米左右，而在一家普通的IT公司当上一个项目经理，基本收入一般都在1.5万~3万之间（除非在大型的跨国企业内工作，那另当别论），要买一间100平方米左右的房子，就算不吃不喝也几乎要10年的年薪，所以选择自主创业，是很多IT开发人员的一个未来目标，想要达到这个目标，就应该更多地把业务作为重点。不可否认的一件事，在中国社会里很多时候讲的是&#8220;关系&#8221;，即使这30年的改革开放使中国的经济蓬勃地发展起来，但几千年来留下的歪风还是不能完全的磨灭。所以想要创业的人事建议你要多跟客户打好关系，与合作伙伴保持互利互动的模式，这将有利于日后事业的发展。<br />
<br />
2. 急流勇退，退居二线<br />
<br />
这也是不少人的选择。很多人在有了家庭以后，感觉到压力太大，人的一生并非只有事业，他们想把更多时间用于对亲人的照顾，对孩子的关心上。所以很多人会选择一份像系统分析、系统维护、高校教师、专业学院讲师这一类的工作。收入稳定，而且往往没有一线开发人员那么大的压力。<br />
<br />
3. 不懈努力，更进一步<br />
<br />
无论你是一个Project Manager或者是Team Leader，如果你想继续晋升一级，那还是会两极分化的。从一个PM到一间公司的管理层，那所面对的事件会有很多变化。一个公司的总经理，要管理的不再是一到两个项目的成本，而是整个部门的运作，整间公司的业务流程，所以要肩负的任务会更重。在下曾经有一位上司彭博士，他是企业的最高领导人，年薪超过三百万，而且在报纸杂志上也曾经亮过相。平常只会在某些会议上轻轻地亮下相，说两句讲词，平常的公司运作与业务管理都不需要他直接执行。这并不是说一个作为管理层很清闲，因为他们要面对的是更多的社会关系，与公司合作企业的联系上。这跟一个PM的工作有很大的区别，所以要从一个PM晋升到管理层，那可是要付出更多的努力与汗水。<br />
<br />
如果要从Team Leader上升为一个技术总监，那工作的方向也有所改变。像之前所说：一个TL可能更重视的是技术层面，讲求与团队之间的互动合作性，更注重的是开发的完善。而一个技术总监就无需要直接参加某个项目的开发，而注意的是开发的效率与成果，如何合理使用有限的开发资源，控制开发的风险和可能带来的效果。<br />
<br />
发展感受<br />
<br />
经历了8年多时间，在下从一个程序员到一个项目经理，之间经过很多的曲折，但因为每一个人的际遇都有所不同，所走的路也有不同，正所谓条条大路通罗马，成功的路不止一条，在下也不想令各位误解，而只想为大家说一下我的发展方向。如果您是一位开发人员，&#8220;程序员-&gt;架构师-&gt;Team Leader（Project Manager）-&gt;技术总监&#8221;是一条不错路，这也是在下选择的路。在我国，想要进一步提升自己，无论你想是以技术为重点还是以业务为重点，都离不开管理二字。在一些大型的企业，一个团队往往会配备一个PM与一个架构师，尽管两个人负责的任务各有不同，但你会看到一个架构师的收入往往不如一个PM，PM往往是这个团队的核心领导者，是关键人物。因为公司能否赚钱，PM有着重要的作用。PM与TL并没有绝对的区别，而且在一些中小型企业，一个开发团队只有3~5人，一个TL往往会兼备业务处理、成本控件、架构设计、开发管理等多项任务。所以在下会把Team Leader与Project Manager定于同一层次，一个公司的老板往往不会知道团队的架构师、程序员是何人，而只会向PM询问项目的进度，所以只有晋升到这个层次，才有机会进一步提升管理能力，让自己有上升的空间。至于要成为一个技术总监，那要求就不再单单是对单个项目的管理，而应该更则重于新兴技术的引用，开发资源的合理利用，对开发项目敏捷性的处理等等，对此在下也在试探当中，未敢多言。<br />
<br />
与编程牵手 和代码共眠 从程序员到技术总监<br />
<br />
从业IT十年,从程序员成为技术总监,现在回头看一看,这条路也伴随国内的IT一起风雨兼程10年,对IT技术由其是IT的纯软件开发这一块,向即将要从事软件技术研发的朋友谈一谈我的看法:<br />
<br />
一.认清当前IT形势,选择合适的技术方向和技术起点<br />
<br />
估计大家都多多少少知道,这个IT行业知识的更新很快,竞争很急烈.<br />
<br />
如果你对自己以后发展的方向在从业前有一个清析的计划或认识,相信你会比别人走得更好,走得更远,赚的钱也更多...呵呵<br />
<br />
IT软件从业的方向,一般都会有这些机会:产品售前(市场,业务),产品开发(编码,设计,测试),产品售后(支持,实施),产品管理(项目管理等)<br />
<br />
A.产品售前(市场,业务)<br />
<br />
要从事这一块的工作,主要是在软件开发的前期(无产品),或者合同签订前期(有产品).<br />
一般要求对相关的业务和技术都要求很高,这可不仅仅是要求人际关系,交际能力.<br />
要想别人买你的产品,你得以专业的产品品质为后台,以专业的谈吐,专业的技术和专业的业务理解能力来取胜.<br />
<br />
从业者要求:<br />
要求从业者要有一定的社会经验,技术经验或业务经历,或一定的社会圈子和交际能力.<br />
<br />
建议:<br />
刚刚从学校毕业的朋友或不符合上面条件的朋友最好要考虑清楚了.当然这世上没有什么绝对的东西,就看你自己了.<br />
<br />
现实情况:<br />
据我所了解的,作这一块的都会是公司一些高层(有关系,有经验)和业务专家或特殊背景的人员等.<br />
<br />
B.产品开发(编码,设计,测试)<br />
<br />
这一块的工作,当然是IT从业大军的主力了,但也得要考虑清楚.<br />
如果你要作设计师,或测试,最好先作一段时间的编码,<br />
一个好的设计师是不可能不精通相关技术平台的!<br />
国外好的测试人员也几乎是从开发人员中选出来的,基至是软件开发高手.<br />
<br />
a.代码编写<br />
在这一个职业选择范围内最好是从代码编写开始.当然你也可以先作测试,看看人家是怎么写代码的是如何来作这个软件的,<br />
借用人家的测试经验也可以,以后有机会再来编一段时间的代码也行.<br />
有时自己去写一个软件也可以,所以作编码和测试都是一个双向交互的.而不是编码在前测试在后的.<br />
<br />
作代码的编写最好自己先看看别人的软件,或由一些高手带着指导一下,现在技术的学习都不成问题,关健是要连成一条线来学习和思考就会有一定的局限了.<br />
所以要熟悉整个的项目流程或业务流程不是靠个人编码或在培训班学一下就能解决的,个人的技术学习和培训班大部分只能解决技术的学习问题,但作软件不仅是要技术呀<br />
三分技术七分业务说得不为过,业务的学习也是一个开发人员所要必备的,如果你在不熟悉业务细节之前建议你不要急着去写代码,那样肯定会是对以后软件的影响很大.先要熟悉一下业务.<br />
<br />
所以软件开发人员掌握一门技术平台和语言是必备条件但同时也必须要有一定的业务知识,这样才是一个合格的软件开发人员.当然精通软件编码,懂设计,熟悉业务,熟悉软件项目开发流程的软件开发人员是优秀的,那是高级研发人员的必备条件.<br />
<br />
如果你才入门或转行或刚毕业,建议从基础的代码编写开始,跟着高手或找一些成熟的项目多学习,<br />
<br />
b.软件设计<br />
当然这个职业要求行业的经验,技术经验都要有一定的基础,薪水一般也会高很多,所以也是一些开发人员热烈追逐的目标.但一个好的设计师不是一二年所能练就的,精通编码,熟练设计模式和公司所采用的技术平台,熟练一些设计理论并实际多运用,熟练公司业务,其实这个层面的压力也最大,一个好的软件在设计上的比重几乎要占到七成.<br />
<br />
建议刚毕业的朋友或软件初学者不要在这一块来凑热闹,即使你作成了设计师,但在我眼中看来你也不是一个合格的设计师...当然你有这个能力来作设计师就要恭喜你了.<br />
<br />
<br />
<br />
c.软件测试<br />
<br />
熟练软件测试的各种理论或实际运用,也要熟悉编码技术及相关的技术平台,熟练掌握业务.<br />
软件测试中一般都会有:<br />
单元测试,要求你熟练开发技术进行跟踪调试,也就是白盒测试了<br />
集成测试,对整个项目流程的测试,要求掌握业务知识,对设计的软件能作功能上的测试或压力测试等 ,属黑盒测试<br />
确认测试,对业务要很熟悉,测试软件是否完全满足了客户的业务需求.<br />
<br />
总体建议:<br />
1.熟练一种技术平台,熟悉一种业务<br />
刚入门的朋友很容易犯的一个毛病是,熟练:VB,VC,.NET,JAVA,C++,C,Dephi,PB,几乎市场上要用的他全部会,唉,如果我看到他的简历上有这么一句话,这个人肯定不会在我考虑的范围了.<br />
现在全球用得最广最多的技术平台体系也就三大体系:<br />
<br />
sun的J2EE技术体系(JAVA):在高安全性,高性能上更胜一步,中高端市场上用得多<br />
<br />
微软件的技术体系(C++,.NET,c#,VB):在中,低端市场占绝对优势,也是全球个人电脑操作平台用户最多的.<br />
<br />
CORBA技术体系统(一种分布式技术体系和标准),<br />
全称:Common Object Request Broker Architecture：公共对象请求代理结构,可以用不同的编程语言写成，运行在不同的操作系统上，存在于不同的机器上。<br />
一般介于底层和上层管理软件之间,<br />
<br />
<br />
其他的还会包括底层开发:C,汇编,属纯底层的开发,当然要求技术的起点和业务背景更强,最好是学的专业:电子电气,嵌入式行业,机械制造,数据采集等...<br />
<br />
<br />
看中你想要从事的技术体系,选好一门语言工具,好好上路吧...:)<br />
永远要记住:你什么都想学,你什么都学不精<br />
<br />
<br />
2.从基础入手,不要好高鹜远,眼高手低,要与实际结合<br />
<br />
<br />
B.产品售后(支持,实施)<br />
这一块对于开发技术的要求来讲不是那么明显,主要工作会在软件开发后的工作,跟客户打交道多,但更多要求体现在对业务的把握和客户的交际上.<br />
有些软件产品业务比较成熟,如果参与这一阶段的工作,可以快速学习很多的业务知识,积累客户交往的经验<br />
<br />
建议:刚入门或刚毕业的朋友,可以在这个工作上多选择,等待时机成熟,立马杀入软件的开发或设计阶段,当然,这一块的工作作得好也不容易,如果适合你作,<br />
工作环境或工资都不错你就大可不必多想了...<br />
<br />
<br />
<br />
C.产品管理(项目管理等)<br />
<br />
这一块的工作主要体现在管理上,当然适合有一定经验或管理能力的人员来担当,<br />
<br />
最后的技术从业方向总结： <br />
<br />
技术型:先选择好一种技术平台,熟练一种开发语言和数据库...专业专注的搞几年再说 <br />
<br />
技术+管理型:如果你有一定的技术经验了,并且人际交往,管理能力不错,你就可以向这个方向发展 <br />
<br />
技术+业务型:精通一种技术平台,精通一种业务,好好搞,这种人才最受欢迎... <br />
<br />
管理型: 如果你有一定的社会经验,从业经验,如果人际交往,管理能力还可以,老板也喜欢,就搞这个 <br />
<br />
业务型(市场):如果你对业务很感兴趣,跟客户的交往等也不错,你可以选择了,有适合的专业技术就更能锦上添花了 <br />
<br />
技术+市场+管理:老大的位置....:)&nbsp;<img src ="http://www.blogjava.net/paulwong/aggbug/392685.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2012-12-09 17:26 <a href="http://www.blogjava.net/paulwong/archive/2012/12/09/392685.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>面试软件设计人员的方法，附面试题(转)</title><link>http://www.blogjava.net/paulwong/archive/2012/11/07/390989.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Wed, 07 Nov 2012 13:50:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2012/11/07/390989.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/390989.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2012/11/07/390989.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/390989.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/390989.html</trackback:ping><description><![CDATA[<div class="BlogTitle" style="padding-top: 5px; padding-bottom: 5px; margin: 0px 0px 20px; font-family: Verdana, sans-serif, 宋体; font-size: 13px; line-height: normal; text-align: left; background-color: #ffffff; ">
<h1 style="padding: 0px; margin: 0px 0px 10px; font-size: 20pt; "><span style="font-size: 10.5pt; padding: 0px; margin: 0px; color: #006600; ">前段时间招聘。因为我一直在我的部门推行一些有效却被绝大多数中国公司忽视的开发理念，比如平级人事结构、测试驱动开发、制度化绩效、设计先行、迭代开发等等，所以招软件设计师非常困难。最终问题还算解决了吧。以下是我的面试总结。</span><span style="font-size: 10.5pt; ">&nbsp;</span></h1>
</div>
<div class="BlogContent" style="margin: 0px; font-size: 10.5pt; overflow: hidden; font-family: Verdana, sans-serif, 宋体; line-height: normal; text-align: left; background-color: #ffffff; "><br style="padding: 0px; margin: 0px; " />
<br style="padding: 0px; margin: 0px; " />
<span style="padding: 0px; margin: 0px; color: #003399; ">　　一般来说，作为迎接面试的人，我会借着询问路况、接引进会议室或者索要简历，来表达出自己的礼貌，让对方有一定紧张感。这样我认为有利于对方表现出自然状态的思路。</span>&nbsp;<br style="padding: 0px; margin: 0px; " />
<br style="padding: 0px; margin: 0px; " />
<span style="padding: 0px; margin: 0px; color: #003399; ">　　然后我会根据简历，大概咨询下对方工作中所做过的设计工作。因为我在招软件设计师，所以只问设计，看看他对设计的理解是什么样子。通过这种询问，可以考察对方的简历是否作假，如果作假那么无法明确讲述其过往工作。还需要看对方的表达能力，即主动展现自己思路的能力。按照我这一批面试的人看，大多数人会讲述其项目经历的业务或者架构。只有一个人能够把软件设计和架构设计、软件开发分离出来。</span>&nbsp;<br style="padding: 0px; margin: 0px; " />
<span style="padding: 0px; margin: 0px; color: #003399; "><br style="padding: 0px; margin: 0px; " />
<span style="padding: 0px; margin: 0px; color: #9933e5; ">　　然后就会开始做面试题了。面试题附在下边。我会先让其看第一大题，设计能力，请ta选择一道题目作答。看题之</span><span style="padding: 0px; margin: 0px; color: #9933e5; ">后，对方一般会陷入思考沉默。那么根据对方眼神不再在题目间扫动，表示对方已经针对某一个题目思考。当然，如果是沟通能力好的人，这这之前会主动告诉我，ta准备作答哪道题目。此时需要打断沉默，对对方说，希望对方谈一谈想法，任何一点想法都可以说出来。这个时候如果对方能够针对题目问一些具体没表示明白的细节，或者自行设定细节，都表明此人沟通能力极好，否则应该认为其沟通能力打折扣。</span></span>&nbsp;<br style="padding: 0px; margin: 0px; " />
<span style="padding: 0px; margin: 0px; color: #003399; "><br style="padding: 0px; margin: 0px; " />
<span style="padding: 0px; margin: 0px; color: #9933e5; ">　　当对方陆陆续续讲述自己的设计时，作为面试的人，需要指出其没有思考到的地方，或者赞扬对方想的很合理。一般来说，面试的人在经历了之前的客套和紧张之后，不太容易沉下心来仔细思考。凡是这时候依然能保持有序高效的思考能力，说明这个人抗压能力极强，至少是心理调节能力极好。通过这时的回答，就可以看出此人对设计是否了解，设计能力怎么样。</span></span>&nbsp;<br style="padding: 0px; margin: 0px; " />
<span style="padding: 0px; margin: 0px; color: #003399; "><br style="padding: 0px; margin: 0px; " />
<span style="padding: 0px; margin: 0px; color: #9933e5; ">　　以 1.1 为例，我随便说几个要点。比如说，我们应该抽象出牌局状态这么一个类，作为传输给每一个玩家的内容。比</span><span style="padding: 0px; margin: 0px; color: #9933e5; ">如说，我们可以抽象出一张牌这么一类，作为出牌的玩家上报的内容。比如说，此场景应该有一个短连接请求处理类，还应该有一个房间控制类；房间控制类里边维护一个个开通的房间；当每一个进入房间的请求来临时，都应该通过房间控制类，将连接转移到这个对应的房间编号；那么房间编号可以由客户端通过参数传递上来。比如说，每一个房间能够维护一组长连接，这可以开一个线程来处理；线程由一个单例的线程维护器对象来启动。比如说，房间在新线程中执行的代码，应该是轮询每个长连接看谁发来了&#8220;牌&#8221;，然后调用数据计算模块，通过牌和原有牌局（保存在房间对象里），得到新牌局，发送给每一个连接。当然了，如果能对断链识别什么的做出设计就更好了。不过控制此题时间不要超过 10 分钟，所以一般不可能讲述出太多内容。</span></span>&nbsp;<br style="padding: 0px; margin: 0px; " />
<span style="padding: 0px; margin: 0px; color: #003399; "><br style="padding: 0px; margin: 0px; " />
<span style="padding: 0px; margin: 0px; color: #9933e5; ">　　接下来，要根据刚才设计方面的能力，中转到 2 或者 3 。如果设计能力不错，则应该转移到 3 ；如果设计能力不好，则应该转移到 2 。这个设计能力的好不好，是根据面试者觉得达标不达标，够用不够用来说的。</span></span>&nbsp;<br style="padding: 0px; margin: 0px; " />
<br style="padding: 0px; margin: 0px; " />
<span style="padding: 0px; margin: 0px; color: #4c33e5; ">　　先来说说转到 2 编程能力测试的情况。首先，应让其在 2.1 和 2.2 中选一道作答。2.1 的要点，是建立合适的数据结构。最佳的是 money 与 id 双排序的基础对象构建的 TreeSet ，通过 NavigableSet 提供的子树功能，以 size() 获取名次。自己前后几位可通过正反向迭代器取得。当然，也可以使用链表和散列集合的二重结构。这要慢不少，但是也还算在可接受范围内能实现功能。</span>&nbsp;<br style="padding: 0px; margin: 0px; " />
<br style="padding: 0px; margin: 0px; " />
<span style="padding: 0px; margin: 0px; color: #4c33e5; ">　　此题非常多的面试者会联想到 SQL 的 order by 子句。问题是这些人应该设计不出合适的二维表结构，配合 SQL 实现想要的功能。如果面试者能够实现，那也至少算能够做出来一种实现，不应苛求。</span>&nbsp;<br style="padding: 0px; margin: 0px; " />
<span style="padding: 0px; margin: 0px; color: #003399; "><br style="padding: 0px; margin: 0px; " />
<span style="padding: 0px; margin: 0px; color: #4c33e5; ">　　2.2 我认为用二维表传统关系型数据库很合适。应该有二个表，一个是历史表，一个是实际操作记录表。每次受影响</span><span style="padding: 0px; margin: 0px; color: #4c33e5; ">玩家登录，都会激活从实际操作记录表到历史记录表的总结过程；这是一种最小型的数据挖掘。受试者能够正确写出总结过程，能够正确写出读取历史表的合并过程，则是满分。</span></span>&nbsp;<br style="padding: 0px; margin: 0px; " />
<span style="padding: 0px; margin: 0px; color: #003399; "><br style="padding: 0px; margin: 0px; " />
<span style="padding: 0px; margin: 0px; color: #4c33e5; ">　　编程过程测试，可以随时提供设计思路指导。旨在督促受试者利用短暂的面试时间，认真思考，发挥出最强的思维能力，以检测其通过自己思考解决问题的水平。如果能在不断的设计方案提示下，指出语句写法，则应该认为设计能力为零，但编程基本功很扎实。如果算法也需要提示，则认为编写程序的技能本身不好，但语言知识尚可。</span></span>&nbsp;<br style="padding: 0px; margin: 0px; " />
<span style="padding: 0px; margin: 0px; color: #003399; "><br style="padding: 0px; margin: 0px; " />
<span style="padding: 0px; margin: 0px; color: #4c33e5; ">　　做完 2.1 和 2.2 其中一题，应准备查资料的条件，也就是连接互联网的浏览器，让其做第 3 题。如果其对 Java5.0 多</span><span style="padding: 0px; margin: 0px; color: #4c33e5; ">线程类库非常了解，则认为此人关注技术新闻，有很强的技术敏感性和学习能力。否则则应通过观察其查资料选用关键词的方式、查看内容的耐心敏感度，来判断此人的学习能力和心性。至此，您应该对面试的人有了较全面的认识。推荐记录下来，以便比较不同的面试者，谁综合看来更适用。</span></span>&nbsp;<br style="padding: 0px; margin: 0px; " />
<br style="padding: 0px; margin: 0px; " />
<span style="padding: 0px; margin: 0px; color: #337fe5; ">　　我们再来说说直接从 1 题转移到 3 题的情况。同样是 3.1 和 3.2 选做一题，来测试受试者的架构能力。以和设计能力测评同样的节奏进入互动，然后探寻受试者思路。架构的核心，在于指派分布，即指派哪些逻辑运行在什么地方，以及这些&#8220;地方&#8221;的布局方式。非常多的受试者无法分清软件设计和架构设计的区别。每当这个时候，面试官就应该主动给受试者讲述架构的含义，同时记录受试者不具备可用的架构工作经验，但应根据接下来的思路表现，来判断其架构见识、思路以及资质。</span>&nbsp;<br style="padding: 0px; margin: 0px; " />
<br style="padding: 0px; margin: 0px; " />
<span style="padding: 0px; margin: 0px; color: #337fe5; ">　　3.1 的要点在于网络存档应该与应用服务分离。应用服务做负载均衡的话，应制作单独的数据服务以支持网络存档。这样可以保证无论是运营后台还是玩家都能够看到全部的数据。如果受试者无法摆脱分区的概念，则应指出，运营后台页面，能够选择分区，每次选择，程序能够连接到不同区的数据服务。</span>&nbsp;<br style="padding: 0px; margin: 0px; " />
<span style="padding: 0px; margin: 0px; color: #003399; "><br style="padding: 0px; margin: 0px; " />
<span style="padding: 0px; margin: 0px; color: #337fe5; ">　　3.2 首先这种全球性质或者打地理范围的系统，肯定要使用地域分流的域名服务（DNS）负载均衡。那么也需要建立</span><span style="padding: 0px; margin: 0px; color: #337fe5; ">专门的用户数据传输机制，以保证用户大范围移动物理位置之时，能够在对应区域取得自己的数据。为此，也就需要设置统一的数据中心，以登记不同区域的位置关系以及服务器地址。考虑到系统不可能一次性完成，使用能够自动加载的云基础结构，应该会是一个最合理的选择。</span></span>&nbsp;<br style="padding: 0px; margin: 0px; " />
<span style="padding: 0px; margin: 0px; color: #003399; "><br style="padding: 0px; margin: 0px; " />
<span style="padding: 0px; margin: 0px; color: #337fe5; ">　　通过架构测评，如果受试者能够展现出关于自由软件的很多知识，则说明此人在技术进步上有较高追求。架构这边如果用时很短，也就是受试者表示出了对架构的恐惧和放弃，应该认为受试者面对困难问题的解决决心坚韧程度打折扣。这时应将其引导至 2.3 题，以考察其通过查资料解决问题的水平和心性。面试完毕之后，您应该记录面试情况，以便比较不同的面试者，谁综合看来更适用。</span></span>&nbsp;<br style="padding: 0px; margin: 0px; " />
<br style="padding: 0px; margin: 0px; " />
<span style="padding: 0px; margin: 0px; color: #003399; ">　　最后我想说一句。很多面试官都相信自己对受试者的感觉。其实面试流程的目的，就是通过流程，让受试者更多地表现自己，以丰富面试官的感觉，以防以偏概全、认识不足等情况发生。</span>&nbsp;<br style="padding: 0px; margin: 0px; " />
<br style="padding: 0px; margin: 0px; " />
<br style="padding: 0px; margin: 0px; " />
<br style="padding: 0px; margin: 0px; " />
下边附面试题目&nbsp;<br style="padding: 0px; margin: 0px; " />
<br style="padding: 0px; margin: 0px; " />
<br style="padding: 0px; margin: 0px; " />
1 设计能力（选做其一）&nbsp;<br style="padding: 0px; margin: 0px; " />
---------- ---------- ---------- ----------&nbsp;<br style="padding: 0px; margin: 0px; " />
1.1 现有多人卡牌游戏，由用户根据场上情况出牌。玩家出的牌可被其它玩家看到。每一种游戏牌将会对场上局面造成某些影响。请设计本游戏服务器端关于数据传输部分；其它部分如需指明，也可以指出。&nbsp;<br style="padding: 0px; margin: 0px; " />
<br style="padding: 0px; margin: 0px; " />
1.2 现有某军事对战型网络游戏。架构设计安排在战斗发起之前，通过短连接方式进行信息处理。对战为一对一，对战开始之后，进行长连接，传输双方对军队控制的操作。请设计本游戏开始建立长连接以及传输操作数据部分的服务器程序。&nbsp;<br style="padding: 0px; margin: 0px; " />
<br style="padding: 0px; margin: 0px; " />
<br style="padding: 0px; margin: 0px; " />
2 编程能力（2.1 和 2.2 选作其一）&nbsp;<br style="padding: 0px; margin: 0px; " />
---------- ---------- ---------- ----------&nbsp;<br style="padding: 0px; margin: 0px; " />
2.1 数据结构&nbsp;<br style="padding: 0px; margin: 0px; " />
有一种数据，结构是&nbsp;<br style="padding: 0px; margin: 0px; " />
{&nbsp;<br style="padding: 0px; margin: 0px; " />
&nbsp;&nbsp;&nbsp; id: 38,&nbsp;<br style="padding: 0px; margin: 0px; " />
&nbsp;&nbsp;&nbsp; name: "Shane",&nbsp;<br style="padding: 0px; margin: 0px; " />
&nbsp;&nbsp;&nbsp; money: 3010.50&nbsp;<br style="padding: 0px; margin: 0px; " />
}&nbsp;<br style="padding: 0px; margin: 0px; " />
数据量大概有 100 0000 份。&nbsp;<br style="padding: 0px; margin: 0px; " />
请你设计一种方式，能够支持以下要求。&nbsp;<br style="padding: 0px; margin: 0px; " />
<br style="padding: 0px; margin: 0px; " />
首先，需要能往已有数据集里边追加数据。如果 id 重复，则为修改。&nbsp;<br style="padding: 0px; margin: 0px; " />
其次，需要得到某指定 id 对应的人，全部数据按照 money 排序，其所在的名次。此过程不能太慢。&nbsp;<br style="padding: 0px; margin: 0px; " />
最后，能得到这个 id 对应的人，全部数据按照 money 排序，其名次的前、后几名的 name 。此过程不能太慢。&nbsp;<br style="padding: 0px; margin: 0px; " />
<br style="padding: 0px; margin: 0px; " />
2.2 逻辑&nbsp;<br style="padding: 0px; margin: 0px; " />
一个社交游戏，玩家可以互相访问，并在访问时对对方进行某些操作。被访问的人在登录时统一接收上次登录到这次登录之间被访问的报告。&nbsp;<br style="padding: 0px; margin: 0px; " />
获取记录通过 InteractSysRecord.INST.getRecord(int userId) 方法，获得一个 List&lt;ActRecord&gt; 。&nbsp;<br style="padding: 0px; margin: 0px; " />
ActRecord 具有如下属性&nbsp;<br style="padding: 0px; margin: 0px; " />
int fromUserId&nbsp;<br style="padding: 0px; margin: 0px; " />
int toUserId&nbsp;<br style="padding: 0px; margin: 0px; " />
Kind actKind&nbsp;<br style="padding: 0px; margin: 0px; " />
int actEffect&nbsp;<br style="padding: 0px; margin: 0px; " />
其中 Kind 是一个枚举，包括一些类型，比如&#8220;赠送礼金&#8221;、&#8220;伤害&#8221;、&#8220;偷钱&#8221;等。&nbsp;<br style="padding: 0px; margin: 0px; " />
<br style="padding: 0px; margin: 0px; " />
玩家获取的记录，需要按人整理。也就是说，在一个玩家登录之时，与其上次登录之间，某一另外玩家多次访问此玩家生成的多个 ActRecord ，应该合成一条。&nbsp;<br style="padding: 0px; margin: 0px; " />
<br style="padding: 0px; margin: 0px; " />
请编程完成记录整理。允许设计合理的 InteractSysRecord 结构。&nbsp;<br style="padding: 0px; margin: 0px; " />
<br style="padding: 0px; margin: 0px; " />
2.3 多线程（允许查资料，希望观点能独特、精辟、有实效）&nbsp;<br style="padding: 0px; margin: 0px; " />
请简述 Java5.0 多线程框架的机制和要点&nbsp;<br style="padding: 0px; margin: 0px; " />
<br style="padding: 0px; margin: 0px; " />
<br style="padding: 0px; margin: 0px; " />
3 架构能力（选做其一）&nbsp;<br style="padding: 0px; margin: 0px; " />
---------- ---------- ---------- ----------&nbsp;<br style="padding: 0px; margin: 0px; " />
3.1 请为如下功能需求设计架构。文字或图示都行。&nbsp;<br style="padding: 0px; margin: 0px; " />
现有某多客户端弱联网网络游戏，需要实现网络存档。请简述网络游戏存档的架构方案。注意，后台操作人员应该能任意查看、修改任何人的存档。要求说明设计理由。&nbsp;<br style="padding: 0px; margin: 0px; " />
<br style="padding: 0px; margin: 0px; " />
3.2 现有基于位置的移动网络游戏。在游戏界面中，当玩家离开自己实际位置之时，就会在游戏中受到一个吸引力，吸引游戏中的角色回到玩家现实中的位置。此吸引力随着距离增加而增加。所有的玩家在统一的世界地图上进行对战。请设计此网络游戏的架构方案。并说明设计理由。&nbsp;</div>
@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);<img src ="http://www.blogjava.net/paulwong/aggbug/390989.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2012-11-07 21:50 <a href="http://www.blogjava.net/paulwong/archive/2012/11/07/390989.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>软件工程文档编写标准包括哪些内容</title><link>http://www.blogjava.net/paulwong/archive/2012/08/22/386068.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Wed, 22 Aug 2012 13:27:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2012/08/22/386068.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/386068.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2012/08/22/386068.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/386068.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/386068.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在项目开发过程中，应该按要求编写好十三种文档，文档编制要求具有针对性、精确性、清晰性、完整性、灵活性、可追溯性。 <br>&nbsp;&nbsp;<a href='http://www.blogjava.net/paulwong/archive/2012/08/22/386068.html'>阅读全文</a><img src ="http://www.blogjava.net/paulwong/aggbug/386068.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2012-08-22 21:27 <a href="http://www.blogjava.net/paulwong/archive/2012/08/22/386068.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>产品经理在整个产品生命周期中的职责</title><link>http://www.blogjava.net/paulwong/archive/2012/07/20/383621.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Fri, 20 Jul 2012 13:00:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2012/07/20/383621.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/383621.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2012/07/20/383621.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/383621.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/383621.html</trackback:ping><description><![CDATA[
 
在一个开发团队中，产品经理、设计、开发、市场以及运营通力合作才能让一个产品走向成功。<br />而在产品从稚嫩到成熟的这个过程中，产品经理至始至终都有着自己的职责。而通过对这部分的职责的认识就有助于在产品开发过程中更好的为自己定位，让工作更有效率的完成。<br /><br />在不久前有这么一个段子：<br /><br />产品经理有30%的时间到处溜达，打开所有网上正在内测、封测、公测、正式发布的SNS、微博、问答、客户端产品；20%的时间在QQ、MSN、微博上扯谈、求码；30%的时间永无休止的立项、用研、交互评审、UI评审、测试、发布、运营会议；20%的时间写BRD、PRD、MRD、DEMO、运营方案。<br /><br />虽然在这个段子里我们看到的是一个轻松诙谐的产品经理介绍。不过在实际工作中，一个产品经理的在整个产品的生命周期中有着需要严谨履行的职责。<br />一：产品概念阶段<br /><br />1：在公司内外寻找产品创意。组织进行论证和充实。<br />2：组织所辖产品线的市场细分选择，并制定产品线初始业务/路标计划（需求规格/RoadMap）。<br />3：根据市场变化进行定期和不定期的计划调整工作。<br />4：参与产品战略和产品平台规划工作。<br /><br />二：产品需求阶段<br /><br />1：组织所辖产品的需求采集。<br />2：组织收集/分析宏观环境，技术趋势，竞争对手，内外部客户的信息。<br />4：组织对于产品相关的各种战略，计划，策略的审计工作。<br />5：研究市场动态，提交市场研究报告，选择细分市场，确定产品定位。<br />6：收集各个部门第产品初始业务/路标的意见。<br /><br />三：产品设计阶段<br /><br />1：组织完成从产品创意到产品设计，形成完整的产品业务需求。<br />2：组织对产品设计的测试工作。<br />3：提交完成的产品业务需求，协调相关资源。<br />4：提交产品开发任务书，获得授权，督导产品开发工作。<br /><br />四：产品开发阶段<br /><br />1：监督产品开发计划，产品业务需求的完成情况。<br />2：组织产品的市场调研工作，收集产品信息，根据需要调整产品业务需求和产品开发计划。<br />3：组织或者参与研发开发阶段评审。<br />4：协调资源对产品开发过程中的中间交付件进行测试。<br />5：指导产品开发过程。<br /><br />五：产品测试阶段<br /><br />1：组织产品的测试工作。<br />2：制定产品的上市计划，为产品上市做培训，文档等前期准备工作。<br /><br />六：产品发布阶段<br /><br />1：负责产品的市场发布工作。<br />2：指导并监督产品的运营和销售工作。<br />3：协同财务/市场部门监控产品的盈利情况，提出新的营销策略。<br />4：根据市场反馈，提出产品的改进意见/监督执行。<img src ="http://www.blogjava.net/paulwong/aggbug/383621.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2012-07-20 21:00 <a href="http://www.blogjava.net/paulwong/archive/2012/07/20/383621.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>员工为什么离开</title><link>http://www.blogjava.net/paulwong/archive/2012/04/16/374779.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Mon, 16 Apr 2012 14:34:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2012/04/16/374779.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/374779.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2012/04/16/374779.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/374779.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/374779.html</trackback:ping><description><![CDATA[导读：如今，很多优秀员工不顾企业的挽留，翩然而去;潜力员工不顾企业的期待，悄然远去;甚至重点培养的员工，也不顾企业的重托，撒手而去，留给领导者无尽的懊恼和叹息。让领导者百思不得其解的是，似乎总是该走的没有走，不该走的却走了;平凡的没有走，优秀的却走了。于是，也总能听到领导者一遍又一遍无奈的歌谣：我拿什么来留住你?我的员工! <br /><br />　　咱们先从一个故事开始说起： <br /><br />　　楚国有个好吃懒做的人，他整天想着怎样不出力气，或者少出点儿力就可以拣到大便宜的窍门。他想，养蜜蜂的人能得到蜂蜜，养鱼鹰的人能得到鱼，我为什么不养些猴子呢?猴子会采果子呵! <br /><br />　　于是，他买了一群猴子，把它们关在一所空房子里，又买了很多装果子用的篓子，教猴子扛篓子。他手拿皮鞭，严加训练。然后又买了许多果子教猴子装篓子，哪个猴子毛手毛脚地吃上一口果子，或者把果子碰伤了，他便举起皮鞭，乱抽一顿。没多久，便把猴子整治得服服帖帖，说一不二了。这时，他才把猴子放到山里，去给他采果子。 <br /><br />　　不错，猴子们挺驯服，每天早出晚归，背驮肩扛地给他采来各种各样的鲜果。他只要把这些鲜果拿到集市上卖出去就行了。从此他的日子过得宽宽松松，逍遥自在。 <br /><br />　　这个不劳而获的人很苛刻，他每天早上把猴子赶上山去采果子，不管采下多少果子，每只猴子只发给一个。猴子们劳累一天，一个果子怎么能吃饱肚子呢? <br /><br />　　猴子们对主人的苛刻虐待很反感，但谁也不敢吭声，因为它们很知道皮鞭的味道。 <br /><br />　　这天，猴子们照常上山去采果子，虽然肚子空空的，但受过训练，采下果子来，只往篓子里装，不敢往嘴里放。他们饿极了，主人又不在面前，有一个大胆点儿的，便吃起果子来，其它的猴子看见了，都一直咽口水。后来，实在耐不住了，也学着它的样子吃起来了。 <br /><br />　　一个野生老猴子看见它们这般模样，不禁大笑起来：&#8220;猴儿们，这都是野生野长的果子，放心大胆地吃吧，看你们被人整治得没点儿猴性了，吃吧，吃吧。&#8221; <br /><br />　　猴子们互相看看，也七嘴八舌地吱哇起来：&#8220;这果子不是主人的，谁都可以采，谁都可以吃。&#8221;&#8220;主人懒得上山来，他又看不见，咱们放开肚子吃呗。&#8221; <br /><br />　　它们边吃边议论：&#8220;敢情在这山上采果子的权利，不单是只有主人才有呀!&#8221;&#8220;我原来还以为是主人养活咱们呢，现在才弄明白是咱们养活他呀!&#8221;&#8220;山是大自然的山，谁都可以上山来，果是野生的果，谁都可以摘，他懒得劳动，鞭打咱们给他干活，咱们何必受他那样折磨呢?&#8221;&#8220;可不是吗?我们是自找苦吃!&#8221; <br /><br />　　猴子们长时间挨饿，吃饱后一个个东倒西歪地睡着了。一觉醒来，太阳已快落山了，篓子里还没有装满呢。 <br /><br />　　一个小猴子说：&#8220;今天回去，保准得吃皮鞭，哼!就是吃皮鞭，我也不给他干活了，我要和他讲理!&#8221;另一个小猴子说：&#8220;主人从来不讲理，咱们要不给他干活，他会把咱们再卖掉!&#8221;大伙抓耳挠腮，扑闪着眼睛，一时不晓得该怎样是好。 <br /><br />　　还是老一点的猴子精灵，它说：&#8220;干吗要回去呢?这大山没有头，森林没有边，到哪里没有我们吃的果子?生活的路子就在我们脚下，我们应该当机立断，立刻离开这里!&#8221;那个野生的老猴儿又插话了：&#8220;这就对了，走，一块走哇!&#8221; <br /><br />　　大伙儿一个个扔掉手里的篓子，欢跳着，嘻笑着，钻进那无边无际的山林里去了。 <br /><br />　　那个主人到了晚上，左等右等不见猴子们回来，到山上一看，除了横躺竖倒的篓子以外，一个猴儿也不见了。 <br /><br />　　他气坏了，但仍旧好吃懒做。后来，他终于饿死在自己的床上了。 <br /><br />　　点睛： <br /><br />　　现在不少领导者普遍反映人难管，最根本的原因是&#8220;领导者与员工的关系&#8221;没有摆正关系造成的。究竟员工在领导者心里，是一种达成目的的工具，还是具有个人特色的个体?过去的员工毫无条件地信任公司，将他的一生奉献给公司，唯一微薄的希望，就是当公司赚钱时，能够分一些给员工。可是这家公司遇到困难时，毫不犹豫就抛弃这些员工，有些更恶劣的居然不是先告知，早上员工上班时才通知&#8220;今天是最后一天&#8221;!现在的员工总算让还活在机器时代的公司吃到苦头，员工不再是呼之即来挥之即去的零件，使用一大堆的命令和规章，即使能约束员工上班时间，一到下班时间，员工很自然的收好文件离开，员工没有必要对企业忠诚，因为企业先不尊重员工，员工只好自己先尊重自己，只顾自己不顾公司了。 <br /><br />　　我们许多领导者在分配给下属工作时，把下属当一台机器一样看待。只告诉下属要做什么，其余的什么都不说，导致下属不知工作份量的轻重，结果不知自己到底做得怎么样，根本谈不上有任何成就感。因此对工作也失去了干劲。 <br /><br />　　员工不是成本，而是公司的资本，是公司的核心资源。员工是活生生的人，不是机器，应该受到尊重。不能用按钮随意控制。毫无疑问，人是会受外界刺激影响的，但绝对是不可以控制的。只有自己才能改变自己。 <br /><br />　　现如今，很多优秀员工不顾企业的挽留，翩然而去;潜力员工不顾企业的期待，悄然远去;甚至重点培养的员工，也不顾企业的重托，撒手而去，留给领导者无尽的懊恼和叹息。让领导者百思不得其解的是，似乎总是该走的没有走，不该走的却走了;平凡的没有走，优秀的却走了。于是，也总能听到领导者一遍又一遍无奈的歌谣：我拿什么来留住你?我的员工! <br /><br />　　领导者必须从&#8220;员工靠老板&#8221;的思想转变为&#8220;老板靠员工&#8221;。没有员工，就没有老板，从内心深处想通这个问题。否则就容易产生碰撞和矛盾。其实员工只要求在一个和谐、轻松、公正、公平、进取、团结的团队里工作，他就开心，就精神舒畅。但很多企业的企业文化缺乏人性化，企业领导的管理风格强硬化、观念僵硬化、都和现代企业要求的以人为本作为管理的核心，事事尊重人的需求，处处调动人的积极性，实现人的自我价值为中心的管理原则相背离。 <img src ="http://www.blogjava.net/paulwong/aggbug/374779.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2012-04-16 22:34 <a href="http://www.blogjava.net/paulwong/archive/2012/04/16/374779.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>项目管理资源</title><link>http://www.blogjava.net/paulwong/archive/2012/04/16/374695.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Sun, 15 Apr 2012 16:57:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2012/04/16/374695.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/374695.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2012/04/16/374695.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/374695.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/374695.html</trackback:ping><description><![CDATA[<a href="http://www.cnblogs.com/ldcsaa/category/353927.html">http://www.cnblogs.com/ldcsaa/category/353927.html</a><br /><br /><img src ="http://www.blogjava.net/paulwong/aggbug/374695.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2012-04-16 00:57 <a href="http://www.blogjava.net/paulwong/archive/2012/04/16/374695.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>项目经理攻略</title><link>http://www.blogjava.net/paulwong/archive/2012/02/20/370354.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Mon, 20 Feb 2012 08:45:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2012/02/20/370354.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/370354.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2012/02/20/370354.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/370354.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/370354.html</trackback:ping><description><![CDATA[每个人都期待职位的提升和别人的认可<br /><br />在国内，项目经理应该是大多数程序员比较想要的职位<br /><br />这篇文章将会告诉你，要成为项目经理的一些技巧。或者说，从另外的一个角度来看项目经理这个职位。<br /><br /><strong>项目经理要懂技术</strong><br /><br />这个问题，在iteye上被讨论了很久。各有各的观点，我在这边不做评论。<br /><br />技术做为一个人可以掌握的技能，当然是越多越好，所以从技能方面说，懂点技术当然比啥都不懂要好<br /><br />另外一方面，项目经理要和技术人员沟通，而技术人员的难以沟通是出了名的。如果脱离一些基本层面的术语，沟通到一些具体的解决方案的时候，往往和技术人员的沟通有更好的效果。而这里就会用到很多技术。<br /><br />所以，从这方面说，项目经理掌握一些技术，可以说是必须的。。。<br /><br />当然，类似外资公司的项目经理，完全只考虑项目进度的，那就另外说。。。<br /><br /> <strong>项目经理要有口才</strong><br /><br />项目经理需要在团队士气低迷的时候，鼓舞士气<br /><br />项目经理需要在客户沟通的时候，保持不卑不亢的气势<br /><br />项目经理需要说服客户和领导给予更多的资源<br /><br /><strong>项目经理要有谋略</strong><br /><br />办公室政治我就不在这边罗嗦了<br /><br />我想要说的是，作为项目经理，你经常面临很多办公室政治的挑战。<br /><br />你至少要做到团结可以团结的力量。包括你的领导，你的下属，你的战友，销售，客户等等<br /><br />你可以把你的泡妞经历和技术人员分享，来换取他们的支持<br /><br />你也可以把你赚钱的股票和他们分享<br /><br />你甚至什么都不用付出，只要时不时的体现一下你对他们的关心。<br /><br />光说不练，这边整个练习题<br /><br />做项目的人经常碰到的，客户要在10天之内，完成一个功能模块，在技术人员开看基本上是不可能完成的任务<br /><br />那做为项目经理，需要怎么样处理这件事？？<br /><br />我们都知道处理结果，要么增加周期，把10天换成20天，要么删减功能。那我们采取什么样的手段来实现这个结果？？一方面不能得罪甲方，另外一方面要实现我们的预期。<br /><br />方法：把技术人员和客户负责人叫到一起沟通，名义上解决一些gap，实际上是让有冲突的双方直接面对。作为甲方，你是不能得罪的，做为技术人员，你可以站在甲方的立场和技术人员争吵。这个时候，你要把甲方的负责人凉在一边，让他看你们争吵，你们在争吵的过程中最好要用到解决方案的具体细节，让他听不懂。然后时不时的回过神来，用甲方的口气和技术人员说，这个时间已经决定了的。你和技术人员可以事先沟通好，要尽量顶，甚至发火。然后你们的争吵就会让负责人很尴尬，退也不是不退也不是。<br />结果：一般1-2个小时以后，负责人就会让步，一般是延长周期，如果周期他决定不了，那一般是删减功能。<br />思考：我们没有得罪甲方，但是甲方顺利让步。但是我们得罪了技术人员，所以在事后，一定要诚恳道歉，除非你们已经很娴熟<br /><br /> 另外，这个方法是考虑到如下因素<br /><br />很可能这边提出的10天，不是最终的时间点，而是那个负责人为了自己的performance提出的，如果技术人员反对很严重，这个防线肯定会崩溃<br /><br />还有可能是负责人不清楚最终的实现，时间也不是他定的，他也需要和上级沟通。如果他看到技术人员如此抵制，考虑到这个功能计算在自己的performance下面，他会帮你争取更多的资源。这个时候，让负责人和他的领导去谈，会取得更好的效果。<br /><br />上面都是一些基本素质，如果具备下面的几点，会事半功倍哦！！！<br /><br />幽默感：团队粘合剂，也是化解尴尬的最好的东西<br /><br />真诚：如果你做不到欺骗一辈子，那你就坦率点<br /><br />尝试用对方的角度思考：让你发现自己的问题，发现别人的弱点。<br /><br /> 最后，留下一个问题，如果一个团队成功的做完了一个项目，各方面评价都很好，你猜测一下，谁在这个成功的项目中，获利最大？<br /><br /><div><a href="http://www.iteye.com/topic/1120697" target="_blank">http://www.iteye.com/topic/1120697</a></div><img src ="http://www.blogjava.net/paulwong/aggbug/370354.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2012-02-20 16:45 <a href="http://www.blogjava.net/paulwong/archive/2012/02/20/370354.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>工作心得之二 业务</title><link>http://www.blogjava.net/paulwong/archive/2012/02/13/369899.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Mon, 13 Feb 2012 15:15:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2012/02/13/369899.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/369899.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2012/02/13/369899.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/369899.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/369899.html</trackback:ping><description><![CDATA[说到业务是个让人又爱又恨的东西，客户、领导把它看的很重，不少&#8220;技术控&#8221;却瞧不起它，认为它是&#8220;低智商&#8221;的代名词。当然了，这些看法都很偏激。技术仅仅是一个工具，因&#8220;业务&#8221;的需求而诞生至使用，小说里常常写到，当一个人学会了屠龙之术，却发现天地之间没有龙给他&#8220;屠&#8221;，这个是最悲惨的事情了，这里的&#8220;龙&#8221;就是业务，&#8220;屠龙之术&#8221;就是技术，离开了业务的技术是没有意义的。<br />业务本身是个抽象的集合，真正把它搞懂了其实也能锻炼人的抽象能力。<br />说来说去&#8220;业务&#8221;是个什么东西，似乎没有明确的定义，我觉得&#8220;业务&#8221;就是个&#8220;标准&#8221;，程序员完成的系统必须满足这个&#8220;标准&#8221;，不同行业，不同硬件环境都会有自己的合适的标准，某项技术都有其对应的&#8220;标准&#8221;。<br />比如一直讨论很久的问题，C++和Java到底谁快，为此也有衍生出了很多讨论，技术控也是乐此不疲，但是或多或少都脱离具体环境。<br />计算机语言发展了这么多年，都会相互学习优点，不过总有些本质的区别，比如C++的优势是和硬件结合紧密，Java的优势是屏蔽了硬件限制，两者在诞生的时候发展的方向就有不同，比如通信系统的交换机等各类硬件的程序非C/C++莫属，Java在这里难有使用的地方，但是在异构硬件集群中，现在很火的&#8220;云&#8221;系统，Java的优势就很明显，现在常用的服务器系统大多都是Java。当然也有人说Java免费，所以比C++更容易推广，的确没错，但是这也属于&#8220;业务&#8221;的范畴。<br />说完了业务的大范围，下面说说具体行业的业务。我最熟悉的是电信的业务。相比金融、电商系统，从网上的信息来看似乎电信的系统是最没技术含量的，其实电信的数据量远大于金融、电商，只是大量的数据是后台处理，可以异步展现，所以给的要求并不高，总体来说电信系统是入门的技术低，做好了很不容易。<br /><br />我和不少电信的程序员人聊过，他们纷纷吐槽是，工作就是配置各种业务参数，体力活。但是说到具体的业务模型时，却说不清楚。<br /><br />我总结的电信系统分2两大部分，业务模型（CRM）和工作流（IOM）。CRM和IOM是比较老的名词了，新的我也不太清楚。<br />模型如下：<br /><br />主产品+子产品+产品规则+动作<br /><br />解释如下：<br />主产品，和硬件挂钩。现在的电信产品有手机（移动，联通，电信分属不同网段）、固话、ADSL、光纤、2B+D、30B+D等。<br />子产品，依赖于主产品。比如移动电话的各种优惠包，宽带的互联星空等。<br />产品规则，这里是最让人抓狂的。产品规则分3类、<br />1、主产品规则，主产品之间是没有任何关系的，比如一家人可以装两条宽带，用多个手机。<br />2、子产品规则，基于不同主产品的子产品之间没有任何关系，基于同一主产品的子产品之间有各种规则，比如手机的资费包开通了一个就不能开通另一个，这类为互斥。不同的优惠可以共同作用，这类为叠加。由于各种子产品的数量繁多，所以这些规则的校验和实现是个很庞大的数字。<br />3、运营商制定的规则，比如，从硬件角度来说，装宽带、装电话、开通手机是互不相干的，但是运营商制定了各种套餐，&#8220;强迫&#8221;统一办理。这个无论是对程序员还是消费者都是是很讨厌的&#8230;&#8230;<br />动作，装、拆，（改=装+拆）<br /><br />分析完了以后可以发现真正麻烦的地方是业务规则这块，一个电信客户系统的质量高低很大程度上就由这个&#8220;业务规则引擎&#8221;决定，如果只是闷头往这个引擎里加参数的确无聊，但是这正了解这个引擎的工作步骤还是很有趣的，个人认为理解一个系统的运行是很容易提高能力的。<br /><br />下面说说&#8220;工作流&#8221;，消费者的任何一个请求在电信系统中都会转变一个流程，某些特殊的业务流程会很长，比如装高清宽带，需要人上门施工，并测试宽带质量等，这些都成功了才会触发其它的步骤。消费者的业务请求在后端实现往往是&#8220;事务&#8221;型的，比如原来是套餐A，改成套餐B的会有3个步骤，不熟悉电信业务的人可以想下&#8220;神州行&#8221;改&#8220;全球通&#8221;。当步骤1和2施工成功后，步骤3发现现有条件不满足时（这里的判断不在当前系统中，或者说当前系统无法判断，必须将数据发送到另一个平台之后由那个平台来判断，这种情况在电信系统里很常见，比如当前系统没有客户资料，所以无法判断），也就意味着不能办理套餐B，这样得回复成套餐A，这样需要对步骤1和2得进行反向施工，也就是&#8220;事务回滚&#8221;。先后这就是&#8220;工作流&#8221;的任务。<br />工作流在电信系统中是很重要的角色，相比于是电商和金融系统，电信系统的工作流最强大。<br />简单解释下工作流，工作流有两个最基本单元(节点)，逻辑节点和工作节点(不同的系统中叫法也不同，但是作用都一样)。<br />逻辑节点，就是if判断。<br />工作节点，就是一个具体的施工环节，一般关联一个平台。<br />一般工作流的具体配置都由这两种节点组成。<br /><br />工作流定义的关系有，串行和并行(电信里的叫法是同进同退，一般直接定义成事务)。 <br />于一个系统来说，业务层的调优效果优于代码层的调优效果(代码错误引起的宕机问题不属于调优范围)。比如，一个业务的判断规则精简了，比你优化几个计算语句强的多。比如之前说的例子，在步骤1、2、3中，因为3出了问题，导致1、2得反向施工，所以实际有5步操作，1、2、3、2反向、1反向。所以如果3最容易出问题，那么应该调整顺序应该是3、1、2，把最容易出问题的放在最开始，这样可以避免不必要的步骤。其实在系统上线后运行一段时间，就可以统计出那些平台的出错率高，调整顺序几乎是0修改，但是带来的效率提升是明显的，但是没有几个地方有这么做的。<br /><br />说了这么多，我觉得把整个系统的框架搞明白还是很能提高个人能力，抽象逻辑对于程序员来说必不可少。所以现在每次抱怨工作无聊时，我都会想想，真的就不能挖出点东西么？<img src ="http://www.blogjava.net/paulwong/aggbug/369899.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2012-02-13 23:15 <a href="http://www.blogjava.net/paulwong/archive/2012/02/13/369899.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>工作心得之一 团队</title><link>http://www.blogjava.net/paulwong/archive/2012/02/13/369897.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Mon, 13 Feb 2012 15:08:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2012/02/13/369897.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/369897.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2012/02/13/369897.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/369897.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/369897.html</trackback:ping><description><![CDATA[转眼又是一年，也是我工作的第五个年头。一直想抽时间写点这几年的工作心得，但一直没时间，今天难得空闲，可以写点。这几年下来，我担任过很过角色，码农，组长，设计/架构等都有涉及，所以总结也分3部分：团队、业务、技术。今天先说说团队，估计有很多人也有想法，欢迎大家讨论。<br /><br />俗话说，双全难敌四手，一个人再牛也比不了一个团队。<br /><br />我在3家公司呆过，有国企也有外企，也和很多朋友聊天谈到不同的企业团队，发现不同企业的团队质量上的差距是很明显的。首先声明，这里仅仅是我对我所知的环境做个比较，并不针对哪些公司，更没有贬低谁的意思。<br /><br />对于一个人来说，有一个好的团队就好象在社会里有个&#8220;家&#8221;，如果是一个坏的团队，那么就是一个&#8220;坑&#8221;。<br />为了提高开发效率，现在有越来越多的开发模式被提出来了，但是经常有人抱怨说采用敏捷开发模式，效率没一点上升，反而因为制定各种规则导致效率下降很多，提出这种模式的人只会扯淡。我想有这种抱怨的&#8220;管理者&#8221;应该很多吧，当然更多人都知道开发模式其实是很有效的手段，只是不知道怎么或者什么时候用它。其实老外在这方面觉得挺好，他们的工作流程是这样的，接到某个任务后，会分配到若干人员头上，那么这些人员就成了一个&#8220;临时&#8221;的团队，如果在大型公司里，这样是很常见的，网上有个词叫&#8220;内部外包&#8221;制，他们按照&#8220;敏捷&#8221;的模型/步骤完成任务。这样的团队有个特点是，团队中的人相互不熟悉，但是齐心，采用某些开发模式或者流程可以弥补因为陌生带来的问题，合理的安排每个人都任务，所以起到很好的效果。说到这里我觉得就够了，抱怨&#8220;开发模式&#8221;无用的团队的特点是，成员之间很熟悉，但是心不齐，这种情况什么模式都没用。不知道多少人有同感。<br />但是团队怎样才能真正的团结是个问题。这里就把一个团队可以分成底层的员工和上层的领导。<br />员工是每个人都起点，所以先从员工说起（当然有名爹的除外）。<br />作为员工，需要什么？<br />员工所需要的很简单，待遇 、发展平台 和 环境。前两者很好理解。<br />待遇，很多人明确就是有钱就干，没钱就滚蛋，的确钱很重要，但这个真不是全部，后面细说。<br />平台，关系到市场等等因素，比较明显，也没什么好说的。<br />至于环境这个就很抽象了，环境这里也分很多因素，最关键的一个是来自于领导，举个例子来说明，某个项目出了个问题，客户大发雷霆，公司领导屁颠屁颠跑来赔罪，然后很潇洒的在大酒店请客户吃了顿，摆平客户后回头很潇洒的把当事人骂一顿，当事人第二天潇洒的离职，然后就能看见很多人骂街&#8230;&#8230;，估计很多人都有过这样或者看见过这样的场景。这是我觉得中国很多团队的最大问题，领导眼里一切都是&#8220;客户&#8221;至上，或许有些道理，但是如果把员工放轻了就很是问题。如果把客户看成&#8220;金矿&#8221;，那么员工就是&#8220;矿工&#8221;，诚然，客户是给钱的，但是这个过程得通过员工来完成，客户和员工对于&#8220;领导&#8221;来说应该是同等重要的，公司给客户的形象完全来自员工，绝不是领导请的那几顿饭。再说明白点，就是领导要给予员工起码的尊重，而不是使唤完了就结束，这样才能换来员工的忠诚。<br /><br />下面说说&#8220;钱&#8221;的问题，我想说的是，钱不代表一切，钱只能解决一时的问题，但不可能长久，光是提高待遇的结果就是，员工越来越&#8220;贪&#8221;。<br />还是举个例子，美国做过实验，让一个人在独立的房间里，和外界无法联系，实验者在里面每呆一天就能获得很多报酬，我想这个实验大家都知道，结果是，没人撑得了1星期。把这个实验抽象一下，把你放在一个团队里，团队里的每个人都看不起你，鄙视你，无论给你多少钱，你也呆不久，当然毅力惊人的财迷除外&#8230;&#8230;<br />对于一个团队来说，需要给员工一种感觉，&#8220;归属感&#8221;。说起来很抽象，那么还是举例子，想下我们大学毕业吃散伙饭那会，多少人哭的昏天黑地？那种感觉算是归属感。一起翘课，一起挂科，一起出丑等等等等，才让我们有了归属感。那么回到社会里来，怎么让一个团队有个归属感呢？这里得看&#8220;公司&#8221;和&#8220;领导&#8221;的本事了。<br /><br />先从公司说起吧，这里得说个看似不相干的事。<br />中国古代有很多团队，比如戏班子，建筑队等，新加入的菜鸟都会有个专门的&#8220;师傅&#8221;带，这时，师傅不仅仅是传授技艺，还会在思想和情感上教育徒弟，所以古时有&#8220;一日为师，终身为父&#8221;的说法，这不仅仅是出于师长的尊重，很多时候&#8220;师傅&#8221;完全承担了&#8220;父亲&#8221;的角色。现在时代不同了，职场中很难找到推心置腹的人，逐渐演变成了干一份活拿一份钱。没错，看起来很公平，也是从资本主义那里学来的（但是只学了皮毛而已），造成结果就是让员工觉得自己仅仅是个机器，需要的时候租一下，不需要的时候随时给T掉。<br />其实在任何大企业里，员工在入职时都有员工培训，定期举行teambuilding，workshop，outing（我只在外企里享受过这些活动，具体解释也说不大清楚，简单来说就是游玩组织活动之类的）等，不少企业为了省钱，都免了，其实这些真的很重要。先说说国外的吧（是国外，不是外企在中国的分公司），最常见的方式有， 老板和大家一起喝啤酒，打桌球/高尔夫等。这样就可以创造一个员工相互交流的平台和时间，老板有更多时间来和员工交流，<br />现在在回想下我们的团队，一年都见不着老板几次面，也没几次聚会，动不动还扣点钱，这样的公司下面肯定是没好团队的，人员流动肯定大。部分大企业有各种活动，但是有的做的不好，比如年会就是包个大场地，大饭店，来几个表演，抽奖，大多数都是这样了吧，我也和同事聊过，感觉就是领导来自娱自乐一把，完全没员工的事，吃饱走人就行（抽奖？恩抽到最好，我是比较背的那种）。有多少领导真的是放下身价真的和员工进行互动？<br />估计&#8220;员工仅仅是个工具，和服务器这类机械没本质区别。&#8221;是那些老板的真实想法。<br /><br />如果公司在大环境下创造不好，下面的团队很难发展好。<br /><br />说完公司大环境就说说关系到自己的的团队。<br />任何一个团队都有个&#8220;老大&#8221;，我是一直这么称呼的，有点黑社会的味道，为什么呢？因为要做好一个领导，还真得和&#8220;古惑仔&#8221;电影中的&#8220;老大&#8221;学习。<br />1、尊重下属。真正的&#8220;尊重&#8221;才能换来他们的忠诚，当然他们会有不同理由离开团队，但是离开后还能是好朋友（有多少离职后是老死不通音信的？）。在中国（国外不清楚），大多数人（不是全部）都有&#8220;土皇帝&#8221;的情节，总觉得下属就是自己的&#8220;奴隶&#8221;，做什么都是应该的。到最后肯定是光杆司令。当然，员工之间也应该相互尊重，但员工间的矛盾对于团队来说是小问题。<br /><br />2、公平。对于员工来说，公平分两层，一个是在员工之间，有些人和领导熟，承担的任务轻，反之则重，这个就不多说了，都清楚。另一层的公平是在员工和客户之间，有的时候明显是客户的错误，但是为了&#8220;效益&#8221;硬说成是员工的，或许这样的行为可以换来一时的利益，但是换个位置想想，一个人在你面前只会谄媚，脏水都往自己身上泼，你会瞧的起他么？时间长了客户不把你当人，员工也不把你当人，不知道你自己把自己当什么&#8230;&#8230;<br /><br />3、合理地护短，直接说清楚比较难，还得举个例子。当客户无论提出什么要求，如果领导都一字不落的转发，对于员工来说，有没有这个领导是没区别的，自然不理你。换个角度，当客户的任务过重时，如果领导能和客户交涉，为员工争取些权益，员工就会有一种&#8220;保护伞&#8221;的感觉，自然也就会依靠你。当然凡事得适当。<br /><br />到这里是不是很像黑社会的老大？以上三点对于任何行业的团队都适用。<br /><br />4、合理的薪资，这个又是焦点话题，老外定义的合理的薪资是基本工资够员工在当前城市生活，但是一定要有合理的奖励体系，有出色表现的时候要按时奖励，这个薪资体系是和销售的薪资构成很像（但细节和落实程度就有很大差别）。奖励体系是国外工资里很重要的一部分，国内虽然有各种绩效考核，结果到头来总是有什么预算不够，人员太多等等废话成了一纸空文。甚至演变成&#8220;拼爹&#8221;，反正在垄断行业里，出来问题，就T来T去，没爹的孩子就成了临时工。<br /><br />在老外眼里奖励措施是很重要的，比惩罚措施更重要(中国做法只有责任落实到个人，出了问题一定得找个零时工出来&#8230;&#8230;)，为什么说奖励措施很重要呢？再举例子，在众多抱怨中，最多的是&#8220;我干了XXX事，他们不管，一时犯困就被罚&#8221;或者类似的。不可否认有对丑事选择性遗忘的的因素，但是领导对下属出色表现视而不见，但对错误严厉惩罚的做法是团队最大的&#8220;伤害&#8221;，这样给员工的感觉就是&#8220;干得好和干得一般&#8221;没区别，但是&#8220;犯错了就肯定会追究&#8221;，这样是最消磨员工的积极性和创造性的，所以很多人是做一天和尚撞一天钟。我和两个老外聊过，他们那里如果这个月干得好了，最高奖金是工资的4倍(最高，不是平均，他们所在的公司也是很不错的公司，那里也不是所有企业有这么好的奖励)，所以人人会主动找事干，每周一次的聚会都会找老板展露自己的&#8220;成果&#8221;。国内企业也有奖励制度，但首先那种奖励程度实在不值一提，其次，员工有方便的通道来告诉领导么，领导知道了会重视么？<br /><br />提高产品的效率、质量必须从团队开始。我见过的最好团队，6个人合作了4年，5个员工+1老大。每次任务下来后，&#8220;老大&#8221;不需要多废话话，每个人就知道自己负责哪块，老大只需要和客户扯皮，也基本不需要担心哪个人跳槽，员工郁闷了就喊老大去喝啤酒。这个团队也没什么开发模式，更没什么规章制度。<br /><br />最后，希望大家在新年里都能找到自己的团队。<img src ="http://www.blogjava.net/paulwong/aggbug/369897.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2012-02-13 23:08 <a href="http://www.blogjava.net/paulwong/archive/2012/02/13/369897.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>管理随笔</title><link>http://www.blogjava.net/paulwong/archive/2012/02/13/369894.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Mon, 13 Feb 2012 14:25:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2012/02/13/369894.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/369894.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2012/02/13/369894.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/369894.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/369894.html</trackback:ping><description><![CDATA[项目管理说到底就是人的管理，这是我在项目管理中意识到的几个关注点。 <br /><br />1. 规则制定。 没有规矩，不成方圆，军队没有纪律就是一盘散沙，做项目亦如此。各个公司甚至项目都有自己不同的规则，规则的存在是为了约束成员的行为，鼓励对团队发展有利的行为，减少对团队发展有害的行为。同时规则的制定需要人性化。这里举个例子，我公司并不要求员工按时上班，也无上班打卡。于是项目经理在上班时间在办公室看不到几个人，有些事情想当面跟某成员说都要先跟成员预约时间。项目进度不紧，任务也不重，做的按部就班，并无大的出错。因为很多人不来，经常来的几个人也开始来的少了，这样的规则有无问题？ <br /><br />这样的规则就造成了一个现象：办公室里一个人都没了。同时由于沟通的时间越来越少，项目本来可以做得更好的但是现在只是没有出大的差错而已。懒人更懒，积极上进的人积极性也大受打击，热情降低。本来可以集中办公的，现在变成虚拟团队了。 <br /><br />规则的制定既需要限制成员的自由，又要给成员最大的自由，所有的规则制定的出发点只有一个：团队发展。第一条，对团队发展有坏的影响的规则都不是好规则。然后才是第二条，规则需要人性化。第三，规则的合理有效性。 <br /><br />上面的例子，如果改为： 上班不打卡，但是员工需要每天到公司上班，如果某天因为有事来不了在不影响项目的前提下需要提前一天通知项目经理，一个月不来的次数不能超过5次。早上上班时间可以定为10:00,10点还迟到的次数一个月不能超过10次。不过这需要增加有一个人来记录。 <br /><br /><br /><br />2. 赏罚分明。不论是好规则还是坏规则，有规则就要执行，就会有人经常违反，有人经常遵守，就会有赏有罚。赏罚分明的好处，就是要让大家知道，干得好和干得坏的待遇不一样。比如上面的新的上班规则，如果有人违反了，怎么办？如果是你的得力下属违反了，怎么办？甚至于如果是你自己违反了，怎么办？如果因为你跟某个成员私交很好，就酌情处理，那你的后门以后会被踏平，大家都会来努力跟你搞好关系，项目没人做了。如果拉不下面子，不妨自己故意违反一次，然后按规定处罚自己。 <br /><br />当然，罚只能是一种手段，罚不能常用，应该常用的是赏。项目经理一定要有能力拿到经费，哪怕很少。赏不能自己掏腰包对吧？ 总之，做好做坏一定要不一样，而且最好马上就能不一样，而不是体现到年终的绩效考核上，那太远了。 <br /><br /><br />那上面的规则就可以进一步变成： 一个月迟到10次口头警告，团队里面通报。天天天迟到（20次）则通告上级经理，扣季度奖金xxx。一个月不来次数超过5次，口头警告，团队里面通报。一个月不来次数超过10次，则通告上级经理，劝退xxx。一个月无迟到，无缺勤则拿全勤奖，xxxx。 <br /><br />如果有人下午四点钟来，五点钟走，怎么办？呵呵，这样的人很少吧？有也是奇葩，那你就再修订规则吧。 <br /><br />3. 沟通和社交风格，迎合能力。 <br />沟通是个大话题，项目中项目经理75%以上的时间用于沟通。。。 <img src ="http://www.blogjava.net/paulwong/aggbug/369894.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2012-02-13 22:25 <a href="http://www.blogjava.net/paulwong/archive/2012/02/13/369894.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>工期估算那点事</title><link>http://www.blogjava.net/paulwong/archive/2011/12/12/366108.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Sun, 11 Dec 2011 17:10:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2011/12/12/366108.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/366108.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2011/12/12/366108.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/366108.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/366108.html</trackback:ping><description><![CDATA[周末听了项目管理的课程，很有感触，有很多记忆深刻的点，比如不要揣摩要提问，要先管理后产品，胜者先胜而后战，败者先战而求胜。然而，让我印象最深的是估算工时这点事，不禁让我想起自己的经历来。 <br />最开始刚参加工作时是在一家翻译公司做它内部的协同系统，两个程序员，老大和我，老大是30岁的老程序员，安排工作很随性，每天早上，点点系统，然后想想接下来要做什么，然后，叫上我，说，把这棵树实现一下吧，然后，再说，需要多长时间？我想一会儿，不就是一棵树吗，说，1小时。老大点点头，说，好，1天。再一天，老大又交给我一项任务，这次任务量大一些，要实现一个完整的模块，我同样是想了想，说3天，老大点点头，说，好，9天。老大总是这样，只要是我作出的估算，他总要乘以3，对此我是不以为然的，这也太保守了。不过好消息是，一年下来我们从未加过班，几乎所有的工作都按计划完成了，日子过得轻松而又悠闲，经常有些时间写点自己喜欢的其他代码，一点也不像程序员。<br /><br />第二份工作就是IT公司了，做企业应用开发。老大使用干特图来进行工期管理，项目开始之前，老大已经分好大的模块了，这些模块比我第一家公司所谓的模块要大的多，需要以周来估算。这天，老大叫上我，问，这个门户的模块需要几周完成？我想一想，门户以前没有接触过，学习需要一周，开发需要两周，再留一周测试，说，四周。老大点点头，说，好，我再给你加一周学习时间，于是用鼠标在project上拖出一条长长的蓝线来。几个程序员每个都拖出一条蓝线来，三个程序员，八个模块，蓝线短的就再估算一个模块，这样，一条一条蓝线拼起来，最长的那条就成了关键路径，也决定了交付日期，交付日期定在五个月以后。于是就开始开发，那时年轻，无知者无畏，还是单身，加班就不是问题，三个人周六都在公司，吭嗤吭嗤，还真在五个月后给吭嗤完了。于是开始请测试妹妹测试，这一测试问题就来了，很多模块根本就是不可用，只是能够增删改查，很多功能点都没有考虑到，易用性就更别谈了，也难怪，系统设计、实现、测试都被一个只会写代码的程序员包了，既当运动员又当裁判员，能想清楚才怪，于是继续吭嗤，这不吭嗤还好，一吭嗤不得了，又吭嗤出五个月来，再看看jira，几百个bug，每个人都很绝望，老大手一挥，说，哪个软件没有bug，停止开发，修复最重要的bug，然后发布。<br /><br />第二个项目做完，开始反思，为什么延期这么长估算这么不准，想了很久，觉得是因为估算的粒度太大，时间超过一周，对估算的开发量实际就失去计算了，只剩下一个大概的印象，而为了不成为关键路径不在老大面前丢脸，拍胸脯的情况也发生了，没事，加几个班就搞定了。同时，缺少系统需求说明，这样，在一个错误时间内完成一个不可能完成的任务，质量可想而知，赶进度献礼工程不仅政府在做，程序员同样在做。<br /><br />这样，到了第三年，自己开始负责一个项目了，吸取了教训，开发估算时，估算的工作量不能超过1周，一旦超过就需要继续分解再进行估算。估算下来，这个项目需要四个月完成，又想起第一个老大的乘三法则，心里颤了一下，难道需要12个月？不能这样，这样这个项目就被取消了。自己带了侥幸的心理，团队的成员都很强，事后也证明这个团队的个人能力都很强，因为有两个人现在在知名外企，一个在淘宝，一个在腾讯，小公司组成这样豪华的阵容是很难得的，唯一不幸的是，我是那个项目经理。我把交付时间定在了四个月之后，开发进度整体还是顺利的，稍微有延期，每周需要延一到两天，这样，我把时间又延长了一个月。天知道，意外发生了，因为我的一句批评，一个成员离职了！我痛哭的发现，项目又要延一个月了，于是，接下来，我就流涕了，六个月时间，公司没有那么多钱投入了！我开始加班，要求其他人也加一些班，意外接着发生，有人生病了，有人有急事要请假了，到最后，终于发现，按估算完成是完全不可能的。最后，项目就被取消了，悲催的项目经理。<br /><br />继续反思，为什么估算不准，这次我自以为原因很清楚，就是没有考虑项目风险，没有考虑到人会离职，没有考虑到人会请假，没有考虑到人会生病，甚至，没有考虑到人一天工作的产出不是八小时。我太乐观了。我再一次想起来我的第一个老大。<br /><br />新的公司，新的估算方式，不再一个人估算而是一伙人估算，特性不估算，故事点再估算，没有需求不估算，不一次性估算，迭代估算。这次似乎没有问题了，但客户总是需要一个大的时间点的，于是每个迭代都会排定故事优先级，确保交付前交付的是最有价值的，此外，还有专职的业务分析和漂亮的测试美眉，一切看起来都很好。新公司第一个项目也确实轻松的，但第三个和第四个却都失败了，第三个项目在遇到一个很难解决的性能问题时陷入了一片混乱当中，迭代经理甚至自己都失去对整个项目的可视化了，她不知道项目上线究竟需要满足什么条件，于是项目在一次次的下周二上线的空头承诺中成了整个公司的笑柄。幸福的项目总是相似，不幸的项目各有各的不幸。第四个项目在一次项目中期的架构重写中崩溃了，重写耗去了团队太多的时间，而由于对未知领域知识的不正确估算再次令项目雪上加霜，而更加致命的是，项目目标直到最后一刻也没有发生变化，依旧是要在六个月后上线，于是，程序员们就内存溢出了。<br /><br />乐观、管理混乱、领域知识不熟，这些都导致了项目延期，工时等于工期吗？不等于，工期永远是假的，工时估计的准确，混乱的管理同样会毁掉它。更严重的不是项目延期，而是项目本来就是老板拍脑袋的结果，想想某个项目，如果不说我们能快速交付就根本得不到它，而得到它后怎么办，那只能拜春哥了！<img src ="http://www.blogjava.net/paulwong/aggbug/366108.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2011-12-12 01:10 <a href="http://www.blogjava.net/paulwong/archive/2011/12/12/366108.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>管理的原理之三－工具理论</title><link>http://www.blogjava.net/paulwong/archive/2011/05/22/350758.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Sun, 22 May 2011 02:53:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2011/05/22/350758.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/350758.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2011/05/22/350758.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/350758.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/350758.html</trackback:ping><description><![CDATA[昨天一天的时间，和父亲在旧院里安装了两截水管。<br /><br />安装水管的工序大致为， 刨开地层土，找到水管主线，然后切开，焊接PE三通，及铺设相关的PE软管、水表等。<br /><br />刨开地层土为体力活，而焊接三通等为技术活。当然我在其中主要承担了刨开地层土的工作。<br /><br />我和父亲艰难的用铁锹刨开地表，以寻找水管主线。在坚硬的地表向下，埋设了一层厚厚的碳渣来减轻胡同里雨时的泥泞。这也给刨土增加了很多的难度，老父亲虽然年迈，但是似乎比我刨的熟练，速度比我更快。但我的铁锹在用力时就会稍微弯曲变形，力被减弱，一会儿，额头上便冒出了细细的汗珠。<br /><br />父亲对我说：你用的那把铁锹是铁板的，而我用的这把铁锹则是钢板的。并且你的那把锹鼻处已经有裂缝，所以会变形弯曲，无法用力。<br /><br />当我们找到主水管，并且清理用以为焊接容身的方坑时，父亲在一旁休息，我顺手提过父亲用的那把铁锹进行清理。我感觉父亲的那把铁锹非常顺手，硬度很大，几乎不用太大的力锹印便陷入泥土，在一撬的同时稳稳地端出一锹土来。当换了一把铁锹的时候，我才发现，工作进行的如此快速，如此有效率。<br /><br />当方坑被清理完之后，我们开始了三通的焊接工作，焊接工具是一个称之为&#8220;热熔器&#8221;的设备，非常简单易用，我们第一次用，很快便掌握了其用法。<br /><br />三通和PE管分别被套在热熔器上面，一会儿时间，拔出，快速将三通和PE管套接在一块，两者完美的融合，形成一个整体，我再一次赞叹一个合适的工具竟会如此提高我们的工作效率。<br /><br />接下来开始焊接PE管的时候，我们又遇到了一些困难，是因为我们采用钢锯条来切割PE管，这样由于操作不熟练和不专业，每每导致PE管的横切面毛毛糙糙的，并且带有明显的斜茬，这对焊接后的效果产生一定的影响，一位围观的二叔对我们说：我家有专业的切割工具，剪PE管或PPR管的专业切割剪刀。二叔拿来后，做了一个简单的示范，将PE管放在剪刀口上面，一下一下握剪刀柄，一会的功夫便切割完毕，接过一看，横切面光滑如新，并且非常的整齐，没有一点斜茬的存在。<br /><br />一天的工作结束了，我们如愿完成了前院和后院水管的安装工作。在傍晚的薄暮里，我慨叹时光的短暂，更加认同于好的工具使我们的工作时间缩短，才使我们用一天的时间完成这项工作。<br /><br />如同采用合适的或专业的工具完成我们的工作一样，我们在管理中，也应当借助专业的人士来完成我们的目标。在完成目标的过程中，人其实也是工具，在遇到不合适、不顺手、不专业的工具时，你最好换掉他，因为他有可能使我们的工作时间无限的延长到又一个明天。 <img src ="http://www.blogjava.net/paulwong/aggbug/350758.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2011-05-22 10:53 <a href="http://www.blogjava.net/paulwong/archive/2011/05/22/350758.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>管理的原理之二－保姆理论 </title><link>http://www.blogjava.net/paulwong/archive/2011/05/22/350757.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Sun, 22 May 2011 02:50:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2011/05/22/350757.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/350757.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2011/05/22/350757.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/350757.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/350757.html</trackback:ping><description><![CDATA[宝宝1.4岁，路走的不扎实，通常都由她奶奶来带，爷爷次之，妈妈又次之，其中我带孩子时间是最少的。<br /><br />宝宝刚学会走路时，虽然我还孩子的时间最少，但在我手里宝宝摔倒的次数最多，因此遭到了严厉的批评。<br /><br />我承认我和他们一样用心来爱宝宝，宝宝的喜乐和哭闹深深地系着我的喜怒和哀乐。但宝宝摔倒的事实如此，我不得而知原因何在。<br /><br />宝宝奶奶一语道破其中的&#8220;玄机&#8221;，曰：只因你把宝宝当成大孩子来看待。&nbsp; 一语道过之后，我忽然明朗了。<br /><br />是的，我始终认为宝宝已经会走，因此应该给她更大的空间，放手她去探索去磨炼。 只因为我的放手，她才一次次在不断地尝试中摔倒。<br /><br />我应当手不离其左右，配合着她，保护着她，她才能够在摔倒时有支撑或依靠，至少不会造成身体上的伤害。<br /><br />那么在公司的人员管理中，新人又何尝不是刚学走路的孩童，需要我们管理者无微不至的照顾和指导，在他们不断尝试、不断探索和磨炼的过程中，我们不能等待着他们跌倒后进行自我总结教训，也不能任凭在他们跌倒后自顾着心疼，更不能在他们跌倒后声色俱厉的批评他们做事的方式和方法，因为他们还是个孩童。而管理者，是他们的第一任老师，需要手不离其左右，配合他，保护他，指导他，直到他由走而跑，健步飞。直到那时，才能放手。 <img src ="http://www.blogjava.net/paulwong/aggbug/350757.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2011-05-22 10:50 <a href="http://www.blogjava.net/paulwong/archive/2011/05/22/350757.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>管理的原理之一－放羊理论 </title><link>http://www.blogjava.net/paulwong/archive/2011/05/22/350756.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Sun, 22 May 2011 02:47:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2011/05/22/350756.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/350756.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2011/05/22/350756.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/350756.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/350756.html</trackback:ping><description><![CDATA[一大早，羊群慵懒地卧着，牧羊人要去放羊了，拿根木根在羊圈顶上轻轻敲几下，吆喝几声&#8220;起来了！起来了&#8221;，羊陆续地爬起来，从开着的羊圈门口鱼贯而出。牧羊人提着羊鞭，在后面驱赶着、催促着、约束着在狭窄的乡间小路上去往放牧的目的地。中间偶尔有行人或自行车通过，牧羊人会提前紧走几步，将羊赶往路的一边，好腾出一块路使行人通过。<br /><br />目的地到了，牧羊人将羊群赶往沟渠，任羊群沿着沟沿食草，才悠然点上一支烟，烟雾缭绕升上半空。 蓦然，领头羊踅出沟渠，向麦田飞奔，羊群紧随其后，牧羊人赶忙扔掉烟卷，飞奔出去，赶在领头羊前面，抡动羊鞭，将羊重新又赶回沟渠。在一天中，这样类似的驱赶可能要重复好多好多次，直到黄昏夕阳西下，牧羊人又在后面抡动羊鞭，驱赶着贪吃的羊群回到羊圈。<br /><br />年复一年，日复一年，牧羊人始终如此，羊群是他最亲密的伙伴。<br /><br />这个故事提示管理的本质不在于制定完善的制度然后坐享其成。 纸面上的条文只是管理的标准，领导者的行动力和执行力才能真正使制度发生作用。<br /><img src ="http://www.blogjava.net/paulwong/aggbug/350756.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2011-05-22 10:47 <a href="http://www.blogjava.net/paulwong/archive/2011/05/22/350756.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>