Archive for the 'Programming' Category
Windows Live Wave 3 Beta
微软于日前正式提供了Windows Live Wave 3 Beta的套件的下载站点。http://download.live.com. 包括:
- Live Call
- Live Mail
- Live Messenger
- Live Movie Maker
- Live Photo Gallery
- Live Write
关于新特性和变化, 建议上 http://livesino.net/ 和 http://www.liveside.net/ 获得更多信息.
No Personal Backlog!
Naturally, we will assign tasks to team member and mark as owner. We will give a good naming of this action: Resource management. Within traditional project management, one of the things we most focus on is the resource management and tracing. Yes, I agree. The resource is really important, and we definitely should concern the ROI. But we need to consider the granularity of resource. Otherwise, we will be lost. Although you know every resource usage, that doesn’t mean you ship your feature in time. And if you focus on resource management too much, believe me, it’s easy to be failed in software development. Because you would be easily ignore “Technical Debt”, “Team Building”, “Delivery”, although you still have good reasons to business and management team in that time. So what? Reasons and reports do not mean working software.
Scrum, is the agile methodology I experienced most. It defines three roles, PO, Scrum Master, Scrum Team. And actually the three roles are one, because if one fails, then all 3 roles fail. The self-managing Scrum team is always the goal we fight for.
That’s why we always emphasize team rather than individual team member in Scrum. So “No Personal Backlog”! Personal backlog is good for management team to know every resource’s status. But it’s too bad for the team! Member will say, “At least I finished my items.” Yes, you had a bad member, and you lost a potential good team.
And that’s why I do not like some commercial/free Scrum project management software. Because it does do the personal backlog.
From Henrik Kniberg’s slides on Agile Conf 2008, you also can consider following list as bad practices to team:
• Fixed roles
• Personal backlogs
• Not helping each other
• Personal incentive models
• Implementing all stories in parallell
• Management interference
Anyway, I believe good management team will focus on “Delivery”, “Quality”, “Team/Assets” rather than focusing on resource management too much. ROI always the first rule to business, but it is not short term!
推荐: Scrum XP from the Trenches (Chinese Version)
曾经推荐过这本书,然后现在有了中文版。http://www.infoq.com/cn/minibooks/scrum-xp-from-the-trenches
非常值得阅读. ![]()
StyleCop on MSDN
看来我也许有点那么out of date……一个月后才发现它原来已经在MSDN上了。绝对好的工具。
Get it: http://code.msdn.microsoft.com/sourceanalysis
Blog: http://blogs.msdn.com/sourceanalysis/ (StyleCop Group里的人遍布全球)
PHP, Phalanger, DLR, Silverlight
Phalanger在上个月发布过一个新版本, 新特性除了自身的增强以外主要包括
- VS 2008 (支持VS shell方式) 集成
- Win Form designer
- Silverlight 1.1 Support (Although it’s Silverlight 2.0 Beta now.)
其实某种程度上来说VS 2008的集成和Winform designer都不是太特别. 因为开发VS 2008的package要比以前容易不少. 但Silverlight需要DLR的支持. 所以要实现PHP的DLR. 不过目前Phalanger中的PHP DLR并不能使PHP与其他DLR语言协作, 也就是PHP并不能和JS一起工作完成同一个Silverlight应用. 其实一月份的Lang.Net中Thomas已经Demo过了.
我个人还是挺不习惯PHP这种写代码的方式.
Technorati Tags: php phalanger .net silverlight
Scrum with XP (eXtreme Programming) Style
From my perspective, Scrum is a methodology of management and it’s quite loose, but the XP is a methodology of development and it’s quite specific. So Scrum is like a framework, you could develop your concrete process. In Scrum, the approach you apply in the development is quite free. It depends on your team’s ability and tradition. So naturally, we will consider bringing some stuffs from XP into Scrum.
1. Split Sprint into small iteration
Normally, 1 sprint is 1 month within same length. But sometime, it’s still too long to control and commit. So we could split it into small iterations, like 1 week per iteration. But we still will have the Sprint planning meeting to pick up and definite the scopes of next sprint, then separate the sprint backlog items into iterations according to the priority. Meanwhile the iteration planning meeting will happen in every beginning of iteration. With small iteration, it’s easy to get the velocity more accurately.
2. User story and Spike in planning
Since the product/sprint backlog could be very simple, no information very detailed and deep, it’s difficult to estimate them sometime, especially when you are not sitting together with customers/users. So a good user story would be really helpful to understand the requirement and to estimate it. The communication is still needed, certainly.
The commitment is the target of the team, so it’s tough to estimate features when we get uncertain things within it. The spike supplies the practice guidance of this situation. We could do a spike before estimate the real work and to produce the possible solutions to PO. Then we could give the correct estimation when PO confirms the solution.
3. TDD and Refactory
No methodology guideline for how to code and test in Scrum. So normally we will apply TDD and Refactory into the development. Modern IDEs (Visual Studio for .Net, Eclipse for Java, Zend for PHP …) all provide these two functions.
4. Pair Programming
It’s difficult to involve Pair Working into scrum (I will detail this in following entry). But Pair programming is the best way to share knowledge and assure the quality.
5. Continuous Integration & BVT
CI could help us to find questions at the very beginning. BVT could ensure the major functionalities of the product won’t be broken. (Cruise Control is a good tool.)
6. Acceptance Tests
Acceptance is the guideline of the test cases. We also could create automation tests base on acceptance criteria.
7. Combined style of daily scrum and daily stand-up
In daily Scrum, team members will focus on 3 questions:
a. What I’ve done from last daily Scrum
b. What I will do in next
c. Any obstacles
Via these 3 questions, we could easily know the status. But it’s hard to know other team members’ ideas or comments. So we could plus another question:
d. Any feedbacks?
Although we plus this, we still need to focus and control the meeting time. If the feedback would be long, it should be discussed after the daily scrum.


