Do do XP

2009年11月28日 由 花非花 2 条评论 »
agile software development

agile software development

在文章 Don’t do XP 里, Tobias Mayer 建议人们不要去搞极限编程(XP)。 我和Tobias相知已久,我想他这个问题上错了。 我不知道他在跟谁争论,但他们的有些争论就是“嚼舌根”。我想如果他曾经试过一次XP,那他的言论会更有说服力。 XP并不是一个万能的解决方案,但它确实是一种方案,而且我们知道如何使用它。

作为一个临时的XP支持者,我并不抱怨 “在软件工业中Scrum没有提供很好的开发原则”,我只抱怨这个产业。 如果我们能在这个产业里有效率的工作,那我们也就不会有这场关于方法论的战争了,因为我们的目地就是出产品。 如今当人们把Scrum概念应用到这个产业时,Scrum也不幸被人们使用的混乱不堪。 另一方面,责备XP阻碍了实施方法的进步显然有些牵强。

» 阅读全文:Do do XP

Don’t do XP

2009年11月24日 由 花非花 没有评论 »

ScrumLargeLabelled

Steve Freeman 写了一篇 blog Do do XP 来反驳我的这篇文章。

我开始厌倦了和那些坚持认为Scrum离开了极限编程就不再有价值的人的无休止的论战。 Scrum 很好用 — 但前提是实施者必须从基础上理解它的价值所在和实施原则。 你应用Scrum所处的环境条件决定了你在实施过程中应该采取哪些措施。 比如,在教堂里实施Scrum和在软件开发中实施Scrum有着不同的一套实施策略。而这两种情况下的实施措施又和传统的Scrum有不同之处。

极限编程的拥护者动不动就抱怨在软件工业中Scrum没有提供很好的开发原则。 但就目前极限编程被业界采纳的缓慢进度来看,真正应该受责备应是XP的缺少实践措施的问题,XP应该为这种状况负责。

» 阅读全文:Don’t do XP

程序员101:如何自学编程

2009年11月18日 由 花非花 没有评论 »

你也许曾经想过要学习如何开发软件—或只是想临时的写出一个脚本—但不知道如何入手。 幸运的是,现在的互联网上到处都有丰富的学习资源让你能在短时间里成为一个程序员。

因为互联网的出现,使程序员们可以通过它讨论软件开发技术,发布学习指导,以及共享代码实例让其他人可以在线学习。 如果你感兴趣如何才能成为一个程序员,从网上这些大量的优秀的培训资料、学习向导入手将会是个不错的开始。 » 阅读全文:程序员101:如何自学编程

活在过去,还是放眼未来?

2009年11月16日 由 花非花 没有评论 »

活在过去,还是放眼未来?

本周在欧洲举行的TheServerSide Java研讨会上,ThoughtWorks的架构师和著名讲演人Neal Ford 指出那些只静止的依赖于一种专门的技术的人会在几年之内被淘汰出局。 他谈到了19世纪的马蹄铁匠,那时候干这种工作看起来是稳定而且有前景的职业,直到有一天科技进步(汽车的出现)导致了整个行业被淘汰。

我对Neal的这些话颇有感受。 当我还是大学教师、教授面向对象编程的时候,我有一个成年学生是个真正的C语言编程高手。 事实上,他的专长是使用Borland Turbo C 3.0。 当他很费力的去领悟C++和Smalltalk和这类语言后面所代表的含义时,他竟然会把这种语言程序加载到Turbo C编辑器里,认为或者是希望Turbo能够对这些不同的语言也能读懂一部分。 » 阅读全文:活在过去,还是放眼未来?

关于敏捷开发的26个心得

2009年11月13日 由 花非花 没有评论 »

关于敏捷开发的26个心得

我收集各式各样的至理名言。最近我一直在研究敏捷软件开发;有收获吗?下面就是能够指导敏捷软件开发团队的26条核心原则。

  • 用例一完全能够运行后再开发用例二。厨房里有一种说法正好可以印证这个问题:“做好一盘菜后你再做下一盘”. 对于软件开发来说一个最大的问题就是人们喜欢并行开发多个任务。因为不可避免的,我们设计的功能中总会有一部分会被放弃砍掉,如果提前开发,很可能做无用功。 一次只开发一个用例(或很少几个用例,这根据你的开发团队的大小而定); 让这个用例功能完整; 让相应的测试用例都能通过; 相应的文稳都补齐; 只有在当前的用例完全开发完成后,才做为一个整体提交到版本库,才进行下一个用例。
  • 避免提交一个半成品。 这一点大家似乎都知道,但这条原则必须列入任何一个开发指导里。 能够听取这些忠告进行开发测试然后提交代码的程序员一定不会发生代码提交到版本库使整个项目无法编译码通过情况。 如果系统编译失败,那一定是有人抄近道到了。
  • 不要在还没有任何使用案例的情况下设计通用模块。 只有在你知道有具体用例的情况下,你才可以实现一个具体的类,而且你在该类中只应该实现当前该用例需要的方法。 你也许会想到将来这个类会有其它的用途,你可以用注释的方式记录一下,但不要去实现它,只有在有了具体用例后你才可以实现它。
  • 一定不要在没有使用例的情况下往类里添加成员方法。 这跟上面一条极其相似,除了这里针对的是数据成员。 开发人员很容易想到:一个‘客户记录’里应该有‘送货地址’的信息,但一定不要在没有任何用例要求这个属性的时候实现这个属性。 » 阅读全文:关于敏捷开发的26个心得

介绍几款优秀的手机浏览器

2009年11月11日 由 花非花 没有评论 »

手机浏览器之间存在很大的差别,主要是因为它们对各种手机操作系统的支持有别,提供的各种功能也有很大差异。 最好的浏览器可以正常的浏览大部分的网站,提供页面缩放和键盘快捷键功能,而其它的一些只能浏览针对移动设备优化过的网站。

同时,很多手机并没有提供你多少选择浏览器的能力,但现在的很多新手机使用了像windows mobile之类的操作系统,它已经内置了好几种浏览器. 如果你的手机是使用symbian s60,那你还可以选择安装自己喜的浏览器.

Opera Mobile

2610-opera-mobile-browser

  • 主要特征: 多标签页, 自由缩放。
  • 操作系统: Windows Mobile, Symbian
  • 价格: 免费

» 阅读全文:介绍几款优秀的手机浏览器

最臭的臭弹(Biggest Stinkers)

2009年11月4日 由 花非花 没有评论 »

logo_smlSDTConf 2009 论坛上,Corey Haines 和我共同主持了一个叫做“最臭的臭弹”的研讨会。会议上,我们试图去寻找下面两个(不同的)问题的答案:

  • 作为一个经验丰富的开发人员,回顾往事,最臭的让你最受折磨的代码是什么样的?也就是说,请指出一种代码,如果你能根除掉这种很臭的代码,那么在你的程序中的大部分设计问题都会迎刃而解
  • 我们有如此多的不同的原则和指导来帮助我们去实现好的设计。对于一个新手来说,他应该从哪里开始?哪种代码风味(code smell)或原则,对于一个新手来说,可以最大程度的帮助他们做出好的设计(节省好几年去总结经验)?

尽管字面上这两个问题很相似,但我认为这第二个问题更具有广泛的意义,跟第一个有很大的不同。

不管怎样,这次研讨会都能称得上是一个热闹的会议。我们有不少很厉害的辩手来批判所谓的最臭的代码的味道(最臭的臭弹): » 阅读全文:最臭的臭弹(Biggest Stinkers)

为什么压力测试会耗费我们如此多的时间

2009年10月29日 由 花非花 没有评论 »

为什么压力测试会耗费我们如此多的时间我遇到很多客户做过压力测试 – 有大规模的,也有小规模的 – 有用开源工具的,也有用商业软件的。 压力测试本身变得越来越容易,越来越可以支付的起——因为出现了很多很好用的压力测试工具。还有一些公司提供在线压力测试服务。尽管做压力测试越来越容易、越来越有效率、而能花很小的代价产生很大的压强,但是我的所有客户都遇到了同样一个问题:压力测试并不会报告是什么导致了问题。它只会报告这有了问题,例如:查询页面在并发50个用户使用时变慢下来,但它不会显示什么导致了变慢。捕获到的性能统计数据例如CPU和内存使用量只是强调了潜在的问题区域,但并不会指出实际的根源在应用程序的什么地方。
» 阅读全文:为什么压力测试会耗费我们如此多的时间

谷歌展望它的千万台服务器

2009年10月28日 由 花非花 没有评论 »

谷歌展望它的千万台服务器

Google 从来都没对人说过在他们的数据中心究竟有多少台机器在同时运行。但在最近在一个 Google 工程师的报告中显示Google计划将会运营多达千万台的服务器。

在关于大规模技术系统的 ACM 研讨会 上Google的创始人 Jeff Dean 是主发言人之一,他讨论了关于公司强大的基础架构上一些技术细节问题,这个基础架构是通过若干个遍布全球的数据中心构成的。

» 阅读全文:谷歌展望它的千万台服务器

编码混乱是技术上的债务吗?

2009年10月25日 由 花非花 没有评论 »

artima-logo“技术债务(technical debt)”这个词是由Ward Cunningham 发明的,用来描述为了在最后期限前实现某个项目任务而让开发团队做某种技术上的妥协。

这里有两篇博客文章,Uncle Bob 和 Martin Fowler 分别在里面描述了几乎所有项目都可能会遇到的各种技术债务。

» 阅读全文:编码混乱是技术上的债务吗?