﻿<?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-delvin-文章分类-工具</title><link>http://www.blogjava.net/devin/category/45573.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 16 Jul 2010 07:40:09 GMT</lastBuildDate><pubDate>Fri, 16 Jul 2010 07:40:09 GMT</pubDate><ttl>60</ttl><item><title>重新认识工具-开发人员工具箱乱象分析篇</title><link>http://www.blogjava.net/devin/articles/325948.html</link><dc:creator>delvin</dc:creator><author>delvin</author><pubDate>Tue, 13 Jul 2010 05:35:00 GMT</pubDate><guid>http://www.blogjava.net/devin/articles/325948.html</guid><wfw:comment>http://www.blogjava.net/devin/comments/325948.html</wfw:comment><comments>http://www.blogjava.net/devin/articles/325948.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/devin/comments/commentRss/325948.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/devin/services/trackbacks/325948.html</trackback:ping><description><![CDATA[<p><strong>按</strong>: 这篇博文只是观察我所在公司的情况，稍加总结写的，定有不当之处，请留意。<br />
<span style="color: red">注</span>：原因分析部分有待补充，欢迎你提出好的建议。<br />
<br />
<strong>引言</strong><br />
我相信，每个开发人员，都会有自己的一些常用和不常用的工具。有时候，我们还给别人推荐工具，当然别人也给我们推荐工具。<br />
<br />
如果把开发人员比喻成战士，把开发工作比喻成打仗，那么开发工具就是我们的武器，工具箱就是我们的武器库。工具对我们开发人员既然如此重要，按理说，平时可要好好注意自己的武器库（工具箱），不能出现北洋海军那样，到打仗（开发项目）才发现，炮弹是假的（不能用，不会用）。<br />
<br />
那么在实际情况，我们的工具箱到底怎么样呢？我们的工具箱中的工具是不是好用，适用，够用，能配合起来用？我们平时有没有对自己的工具箱进行盘点，淘汰，补充呢？<br />
<br />
<strong>不合理现象描述</strong><br />
虽然工具和工具箱对我们开发人员极其重要，但是在实际开发中，我们关注的并不够，或者更合理的提法是我们并不知道如何关注，现实不容我们乐观，至少在我所在的公司中是这样。<br />
<br />
工具箱混乱，不一致，使用不够深入等这些现象层出不穷。具体来说有以下几种情况：<br />
1）工具箱混乱</p>
<p>工具箱混乱表现：<br />
&nbsp;&nbsp; a）不同开发部门有不同的工具<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 有的部门倾向于使用复杂的商业工具（正版，或破解版），有的部门倾向使用开源软件。<br />
&nbsp;&nbsp; b）同一部门中不同项目组也有不同的工具，即使同一工具，使用的方式和深度也不一样。<br />
&nbsp;&nbsp; &nbsp;c）同一项目组，不同开发人员，也在使用不同开发工具。</p>
<p>也许，这样的现象在中国开发公司中过于常见，人们已经熟识无睹。偶尔有一个两人提出来，也只是得到一些零星的附和和讽刺。就这样，本来不该出现的现象，还在继续出现，像太阳一样照常升起。就这样我们的开发人员慢慢也不在试图去解决这个问题，并且在日益提高工具的不一致性上出力。<br />
<br />
2）缺乏训练<br />
3）使用不深入<br />
4）喜欢新工具<br />
</p>
<p><strong>现象分析</strong><br />
上文列举了种种不合理现象，我们不得不问自己一个问题，为什么会出现这种现象呢，而且还没有丝毫在改变迹象呢？<br />
为什么一个从管理层到程序员都认为重要的东西，但在具体实践中，却没有给予足够和合理的重视呢？</p>
<p>也许，我们无法找到这个问题的真正答案或完整答案。但作为一个有想法的开发人员，我们不能不问这个问题？ 说实话，我一直被这个问题困扰，它时不时光临我那不够聪明的脑袋，并且慢慢影响了我，使我对某些观念和做法产生了深深的怀疑。比如，对那些总是试图通过引入新工具来解决新问题的人，我总是在想这样的问题。我们真的遇到了已有工具瓶颈吗？ 我们真的需要引入新工具吗？引入新工具真的能解决此新问题吗？若要引入新工具，如何引入呢？我们能驾驭这样的新工具吗？<br />
有时候，我一想到这些问题，我对别人介绍的新工具就会冷眼旁观。但若要真能回答这些问题，我会毫不犹豫地引入这种新工具。<br />
闲话就此打住，让我们回到探讨这个现象出现的原因上来。<br />
正如主席所言，这个世界没有无缘无故的爱，也没有无缘无故的恨。出现这种现象，一定是有原因的。只是这种原因也许比较隐蔽，也许在这个看似简单的问题下，隐藏着那不为人知的秘密。<br />
就像要真正反腐，必须要改变某些制度一样，只是我们不愿承认罢了，所以我们在反腐上一直原地踏步，自欺欺人，再加上劳命伤财。那么我们也会面临这样的困境吗？若要改变这个问题，必须要先改变一些某些人认为死也不能改的东西呢？但愿我们有好运气,不会遇到这个的问题。</p>
<p><br />
原因：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.软件行业特殊性(工具易获取,盗版易) <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.没有合适的人才(对工具认识还很浅) <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.责任和能力不匹配(有选择工具责任的人,没有能力,有选择工具能力的人,没有责任和权利)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.其他原因</p>
<p>先让我们来听下，人们是如何给这种现象辩解或解释的。这些解释代表了一部分人的真实想法，但也可能是为了某种原因而杜撰的，也就是所谓的潜规则。为了分析的更具体，我们举一个例子吧。<br />
<br />
如何解决呢？ <br />
这个问题留到下篇博文。</p>
 <img src ="http://www.blogjava.net/devin/aggbug/325948.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/devin/" target="_blank">delvin</a> 2010-07-13 13:35 <a href="http://www.blogjava.net/devin/articles/325948.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>重新认识工具-我们对待工具的态度</title><link>http://www.blogjava.net/devin/articles/325945.html</link><dc:creator>delvin</dc:creator><author>delvin</author><pubDate>Tue, 13 Jul 2010 05:19:00 GMT</pubDate><guid>http://www.blogjava.net/devin/articles/325945.html</guid><wfw:comment>http://www.blogjava.net/devin/comments/325945.html</wfw:comment><comments>http://www.blogjava.net/devin/articles/325945.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/devin/comments/commentRss/325945.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/devin/services/trackbacks/325945.html</trackback:ping><description><![CDATA[<strong>我们的观点</strong><br />
<br />
1.工具是重要的，但如何选择合适的工具和合理使用工具更重要<br />
在日常工作中，我们有时会听到有些自认为是高手的人说，工具不重要，思想才重要。我们强烈反对这种论调，不论你水平多高，工具都是重要的。也许你可以说某些具体工作，对工具的依赖性弱点，对思想或理论要求高点，但笼统的说，工具不重要是极其错误的。大家都知道，没有武器，你有孙子兵法也没有多大用。遇到这种论调的人，估计思想也高不到哪里去，基本也就停留在口头层面，估计他说的思想自己也不是太明白。以后遇到这样的人，你就要他做给你看，不要只听他说。真有想法的人，他一定也会做。毕竟咱都是程序员出身的人，做才是硬道理。<br />
<br />
2.选择某项工具，不是因为它存在在那儿，而是因为我们需要它<br />
<br />
在新人中，最容易犯的一个错误，就是特喜欢选择新工具，新技术，而不管是否适合。评价一个项目，喜欢从使用了哪些新技术和新工具角度来说，而忘记了项目成功的基本要素。<br />
慢慢的，他们发现，新工具给了他们欢乐，但更多的是痛苦。经过一段时间，他们发现，我们选择某项工具不是因为它新，而是因为我们需要它，能解决我们的问题。 我们经常说需求是第一位，但为什么到了自己就忘了呢？ 经过失败的项目，我们又一次发现被别人已经无数次的发现的道理，选择需要的工具，选择你能驾驭了的工具。这也应证了一句老话，真正的新道理是不多的，只是我们不断在发现别人已经发现的东西罢了。<br />
<br />
3.老工具优先于新工具<br />
<br />
4.把陌生工具熟悉化，熟悉工具陌生化
  <img src ="http://www.blogjava.net/devin/aggbug/325945.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/devin/" target="_blank">delvin</a> 2010-07-13 13:19 <a href="http://www.blogjava.net/devin/articles/325945.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>重新认识工具-把熟悉工具陌生化-理论篇</title><link>http://www.blogjava.net/devin/articles/325941.html</link><dc:creator>delvin</dc:creator><author>delvin</author><pubDate>Tue, 13 Jul 2010 04:41:00 GMT</pubDate><guid>http://www.blogjava.net/devin/articles/325941.html</guid><wfw:comment>http://www.blogjava.net/devin/comments/325941.html</wfw:comment><comments>http://www.blogjava.net/devin/articles/325941.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/devin/comments/commentRss/325941.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/devin/services/trackbacks/325941.html</trackback:ping><description><![CDATA[<br />
<strong>按：</strong>这篇博文是受一个时尚设计师说的一句话而启发的。那个设计师具体怎么说，记不清楚，大体意思是把熟悉的东西谋生化，找到新的发现。<br />
而当时我正在思考有关开发工具的问题，我就想对待开发工具是不是也可以这样去思考。<br />
<br />
<strong><br />
1.把熟悉工具陌生化的涵义<br />
</strong><br />
&nbsp;把我们熟悉的，习以为常的工具，使用到其他地方。熟悉的是我们知道的常规用法，陌生的就是新的用法，用到新的领域。<br />
这个提法，本身就包涵了要我们不要被那些常见的用法束缚住，甚至也不要被那些发明工具的人束缚住。<br />
<br />
举一个日常例子：<br />
&nbsp;&nbsp;&nbsp;&nbsp; 菜刀：<br />
&nbsp;&nbsp;&nbsp;&nbsp;常规用法：切菜，削水果 . . .(发明者或创造者本意) <br />
&nbsp;&nbsp;&nbsp; 次常规用法：砍人...（某些使用者用法）<br />
&nbsp;&nbsp;&nbsp;&nbsp; 陌生用法：艺术品摆设，敲击成音乐...（艺术家，或那些具有创造力的人想出的用法）<br />
<br />
再举一个软件开发邻域的例子：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bugzilla:<br />
&nbsp;&nbsp;&nbsp; &nbsp;常规用法：&nbsp;管理和跟踪bug (发明者或创造者本意) <br />
&nbsp;&nbsp;&nbsp;&nbsp; 次常规用法：管理和跟踪特性，需求（某些使用者用法，开源社区的用法）<br />
&nbsp;&nbsp;&nbsp;&nbsp; 陌生用法：计划和任务管理（某些开源项目在探索）<br />
<br />
2.<strong>常规用法，次常规用法和陌生用法的关系</strong><br />
<br />
&nbsp;常规用法，次常规用法和陌生用法之间是有关系的，可以相互转化的。当然，更多的是陌生用法转化为常规用法。<br />
比如：Bugzilla刚发明出来就是为了Bug管理，慢慢的有的项目组用来管理特性和需求，随着这种用法的传播，渐渐的变成了一个常规用法。<br />
<br />
所以我们说一个用法是常规用法或陌生用法，是相对的，在不同的时间点，对不同的人，可能是不同。比如，对一个武功高手而言，树叶可以作为武器，那个这种用法对他而言就是常规用法，对其他人就是陌生的。<br />
<br />
3.<strong>陌生用法的取得<br />
</strong>有些陌生用法，是某人或某些人无意中发现的。 在科学发展史上，这样的例子层出不穷。还有某些陌生用法是某些人有意探寻的结果。当然，我们主要是关注后一种情况。<br />
<br />
4<strong> 要想探寻陌生用法需要具备的素养<br />
</strong>&nbsp;具有打破常规的勇气，不受常规约束，具有创造性思维。当然要想最终找到成功的陌生用法还需要科学的方法。<br />
<br />
<br />
  <img src ="http://www.blogjava.net/devin/aggbug/325941.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/devin/" target="_blank">delvin</a> 2010-07-13 12:41 <a href="http://www.blogjava.net/devin/articles/325941.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>