<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Behind the Code &#187; scrum</title>
	<atom:link href="http://yinwm.com/tag/scrum/feed/" rel="self" type="application/rss+xml" />
	<link>http://yinwm.com</link>
	<description>Thinking in Techique</description>
	<lastBuildDate>Fri, 06 Aug 2010 02:38:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>一个人的项目&#8212;-第二天</title>
		<link>http://yinwm.com/2008/09/%e4%b8%80%e4%b8%aa%e4%ba%ba%e7%9a%84%e9%a1%b9%e7%9b%ae-%e7%ac%ac%e4%ba%8c%e5%a4%a9/</link>
		<comments>http://yinwm.com/2008/09/%e4%b8%80%e4%b8%aa%e4%ba%ba%e7%9a%84%e9%a1%b9%e7%9b%ae-%e7%ac%ac%e4%ba%8c%e5%a4%a9/#comments</comments>
		<pubDate>Wed, 03 Sep 2008 03:49:46 +0000</pubDate>
		<dc:creator>yinwm</dc:creator>
				<category><![CDATA[程序设计]]></category>
		<category><![CDATA[项目管理]]></category>
		<category><![CDATA[scrum]]></category>
		<category><![CDATA[TDD]]></category>

		<guid isPermaLink="false">http://yinwm.cn/wordpress/?p=49</guid>
		<description><![CDATA[今天继续很早睡了，凌晨4点，够早吧。 完成了第一版的几乎所有功能，当然仅仅是完成了功能。在使用ScrumWorks进行自我管理的时候还是可以的，但是自己一个人就有一个大问题，就是基本上想到了什么任务就做什么任务，而没有从最初就设定一系列的任务然后自我分配，这就是项目管理的最大的问题。我想也许是因为一个人的缘故吧。但是这里面存在的一个问题就是，这样干到哪想到哪的方式，是很混乱的，几乎就是没有管理嘛。要非说有，也是存在于一个自己脑子里面的一时干不完的TODO list。 为了改变这个龌龊的做法，我对自己进行了如下的要求。 设定最终完成要达到的状态，也就是做的这个东西要满足什么需求 根据这些需求拆分功能和组件 设定Milestone，每一个Milestone要完成什么东西 根据情况设定工作时长，每一个Milestone的完成时间（这个可以酌情） 使用一个工具记录下来这些 Just Do It 这里面的几个难点 针对上面的要求1，很多时候我们是做不到的，也就是我们在做一个东西的时候，大多的时候只有一个笼统的想法，和最后我要把这个东西做成一个什么样子。但是具体的是什么，也许我们并说不清楚。这个东西越大，越说不清楚。所以，我要求自己停下来，好好的想，我到底要一个什么东西，我要干什么，要实现什么功能，要满足我什么需求，这个一定要想清楚。 针对上面的要求2，我们大多时候，是不能非常好的进行拆分的，我们缺乏的是经验，没办法，多做吧。 针对上面的5，一定要用一个工具记录下来，因为你不记录下来，没有监督，那不就是自我安慰了么。现在的工具很多，Trac，Redmine，很多很多的。最不济的，记事本你总有吧，纸笔你总有吧。 在这个为期两天的一个土鳖小项目里面，我发现工具的重要性，我现在是Bug，REF，什么的都放在Trac上面，但是我的Task，时间管理都是使用ScrumWorks（而且这个还是一个试用版）。我没有找到一个能够把他们都管理起来并且很容易结合的东西。对了，Trac 还不支持bzr。 看来没办法，只能自己写了。现在正在缓慢的进行一个项目，就是做一个完整的 Ticket，代码，时间管理的工具，最好天然的支持Scrum。]]></description>
			<content:encoded><![CDATA[<p>今天继续很早睡了，凌晨4点，够早吧。</p>
<p>完成了第一版的几乎所有功能，当然仅仅是完成了功能。在使用ScrumWorks进行自我管理的时候还是可以的，但是自己一个人就有一个大问题，就是基本上想到了什么任务就做什么任务，而没有从最初就设定一系列的任务然后自我分配，这就是项目管理的最大的问题。我想也许是因为一个人的缘故吧。<br />但是这里面存在的一个问题就是，这样干到哪想到哪的方式，是很混乱的，几乎就是没有管理嘛。要非说有，也是存在于一个自己脑子里面的一时干不完的TODO list。</p>
<p>为了改变这个龌龊的做法，我对自己进行了如下的要求。
<ol>
<li>设定最终完成要达到的状态，也就是做的这个东西要满足什么需求</li>
<li>根据这些需求拆分功能和组件</li>
<li>设定Milestone，每一个Milestone要完成什么东西</li>
<li>根据情况设定工作时长，每一个Milestone的完成时间（这个可以酌情）</li>
<li>使用一个工具记录下来这些</li>
<li>Just Do It</li>
</ol>
<p>这里面的几个难点
<ol>
<li>针对上面的要求1，很多时候我们是做不到的，也就是我们在做一个东西的时候，大多的时候只有一个笼统的想法，和最后我要把这个东西做成一个什么样子。但是具体的是什么，也许我们并说不清楚。这个东西越大，越说不清楚。<br />所以，我要求自己停下来，好好的想，我到底要一个什么东西，我要干什么，要实现什么功能，要满足我什么需求，这个一定要想清楚。</li>
<li>针对上面的要求2，我们大多时候，是不能非常好的进行拆分的，我们缺乏的是经验，没办法，多做吧。</li>
<li>针对上面的5，一定要用一个工具记录下来，因为你不记录下来，没有监督，那不就是自我安慰了么。现在的工具很多，Trac，Redmine，很多很多的。最不济的，记事本你总有吧，纸笔你总有吧。</li>
</ol>
<p>在这个为期两天的一个土鳖小项目里面，我发现工具的重要性，我现在是Bug，REF，什么的都放在Trac上面，但是我的Task，时间管理都是使用ScrumWorks（而且这个还是一个试用版）。我没有找到一个能够把他们都管理起来并且很容易结合的东西。对了，Trac 还不支持bzr。</p>
<p>看来没办法，只能自己写了。<br />现在正在缓慢的进行一个项目，就是做一个完整的 Ticket，代码，时间管理的工具，最好天然的支持Scrum。</p>
<p></p>
]]></content:encoded>
			<wfw:commentRss>http://yinwm.com/2008/09/%e4%b8%80%e4%b8%aa%e4%ba%ba%e7%9a%84%e9%a1%b9%e7%9b%ae-%e7%ac%ac%e4%ba%8c%e5%a4%a9/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>一个人的项目&#8212;-第一天</title>
		<link>http://yinwm.com/2008/09/%e4%b8%80%e4%b8%aa%e4%ba%ba%e7%9a%84%e9%a1%b9%e7%9b%ae-%e7%ac%ac%e4%b8%80%e5%a4%a9/</link>
		<comments>http://yinwm.com/2008/09/%e4%b8%80%e4%b8%aa%e4%ba%ba%e7%9a%84%e9%a1%b9%e7%9b%ae-%e7%ac%ac%e4%b8%80%e5%a4%a9/#comments</comments>
		<pubDate>Mon, 01 Sep 2008 23:13:36 +0000</pubDate>
		<dc:creator>yinwm</dc:creator>
				<category><![CDATA[程序设计]]></category>
		<category><![CDATA[项目管理]]></category>
		<category><![CDATA[scrum]]></category>
		<category><![CDATA[TDD]]></category>

		<guid isPermaLink="false">http://yinwm.cn/wordpress/?p=48</guid>
		<description><![CDATA[现在在给一个自己的网站 http://www.yes7080.com 写一个类似于百度贴吧的功能。当前合作者出去和老婆Happy了，暂时项目只有我自己一个人。想想，也不能瞎写，就使用一些东西把自己管理起来吧。 刚刚看完Scrum，发现和我平常期望的，理想的，使用的方法很像很像（看来我有慧根）。所以打算自己一个人试试看。并结合TDD等方法，把自己管起来。 毕竟，刚刚入门，而且一个人，难免有东施效颦，丢三落四的情况出现。 第一天，也就是今天凌晨1，项目初创开始新项目，使用bzr开启一个新的repository，开工。采用TDD，构建一个最简单的，最土鳖的测试用例，不要求很完整，只是一个对大多数常用功能的简单使用，目的是为了尽快的搭建出项目原型和框架。遵照Uncle Bob的谆谆教诲，在完成一个土鳖测试用例之后，成功的让Eclipse画出来一坨坨的小红线（编译不过嘛）。然后撰写真正的Interface，还有Abstract Class，真不错，终于编译成功。 收获：这个过程并不是一个浪费时间的过程，而是结合了思考，设计，具体请参见我的《初涉敏捷编程》。这过程中出现了很多的对API的推敲，对类的职能的思考。而且，在写真正的接口的时候，可以不用过多的考虑用不到的方法，也就是我总说的，关注一个类的职能。Duty Oriented. 2，开始功能实现有了用例和接口，就可以写实现了。因为项目的特性，一个只读的数据存储结构是最合适的。但是无奈项目时间紧迫，所以我没有这么充裕的时间去选型，甚至设计实现一个适合这个场景的存储结构。所以我把实现分成了多个部分，第一部分，也就是使用传统的数据库作为存储，这样可以最快的实现功能，并且满足现在访问量并不大的情况。以后随着访问量的增加以及时间的充裕，可以继续完善甚至更改存储体系。 醒目的目录结构是这样的./src./src/com/yes7080/saybar （存放所有的接口，并且这是使用时候的统一入口）./src/com/yes7080/saybar/impl （存放实现）./src/com/yes7080/saybar/impl/datamodel （存放使用datamodel，亦即使用数据库的实现）./test./test/src./test/src/com/yes7080/test/saybar （测试代码）实现使用了二级目录结构，也就是使用impl/datamodel，这样的目的就是因为以后可能出现其他的存储方式。而且，正因为这样从目录解耦，就可以更好的进行设计了（具体的设计思想，我以后会撰文解说的）。 很爽的写了很多，很土鳖的没有采用任何的项目管理。工具使用Trac，但是更多的是一个用于文档和Ticket跟踪。所以我决定对自己采用Scrum进行管理。也对自己有一个监控。 最开始，实话实说，我真的忘记了Scrum具体应该怎么开始了，但是非常简单，用户故事（是这样么说么）只有一个，就是实现一个用数据库的存储。我给自己两天的时间，也就是后天天亮之前完成，大约是还有10-16小时的工作时间。然后在看情况进行修改吧。嘿嘿~暂时给自己定一个时间，然后，继续工作鸟~~]]></description>
			<content:encoded><![CDATA[<p>现在在给一个自己的网站 <a href="http://www.yes7080.com/" target="_blank">http://www.yes7080.com</a> 写一个类似于百度贴吧的功能。当前合作者出去和老婆Happy了，暂时项目只有我自己一个人。想想，也不能瞎写，就使用一些东西把自己管理起来吧。</p>
<p>刚刚看完Scrum，发现和我平常期望的，理想的，使用的方法很像很像（看来我有慧根）。所以打算自己一个人试试看。并结合TDD等方法，把自己管起来。</p>
<p>毕竟，刚刚入门，而且一个人，难免有东施效颦，丢三落四的情况出现。</p>
<p>第一天，也就是今天凌晨<br />1，项目初创<br />开始新项目，使用bzr开启一个新的repository，开工。<br />采用TDD，构建一个最简单的，最土鳖的测试用例，不要求很完整，只是一个对大多数常用功能的简单使用，目的是为了尽快的搭建出项目原型和框架。<br />遵照Uncle Bob的谆谆教诲，在完成一个土鳖测试用例之后，成功的让Eclipse画出来一坨坨的小红线（编译不过嘛）。然后撰写真正的Interface，还有Abstract Class，真不错，终于编译成功。</p>
<p>收获：这个过程并不是一个浪费时间的过程，而是结合了思考，设计，具体请参见我的《<a href="http://yinwm.cn/blog/2008/04/agile-programming-on-first-touch.html" target="_blank">初涉敏捷编程</a>》。这过程中出现了很多的对API的推敲，对类的职能的思考。<br />而且，在写真正的接口的时候，可以不用过多的考虑用不到的方法，也就是我总说的，关注一个类的职能。Duty Oriented.</p>
<p>2，开始功能实现<br />有了用例和接口，就可以写实现了。因为项目的特性，一个只读的数据存储结构是最合适的。但是无奈项目时间紧迫，所以我没有这么充裕的时间去选型，甚至设计实现一个适合这个场景的存储结构。所以我把实现分成了多个部分，第一部分，也就是使用传统的数据库作为存储，这样可以最快的实现功能，并且满足现在访问量并不大的情况。以后随着访问量的增加以及时间的充裕，可以继续完善甚至更改存储体系。</p>
<p>醒目的目录结构是这样的<br />./src<br />./src/com/yes7080/saybar （存放所有的接口，并且这是使用时候的统一入口）<br />./src/com/yes7080/saybar/impl （存放实现）<br />./src/com/yes7080/saybar/impl/datamodel （存放使用datamodel，亦即使用数据库的实现）<br />./test<br />./test/src<br />./test/src/com/yes7080/test/saybar （测试代码）<br />实现使用了二级目录结构，也就是使用impl/datamodel，这样的目的就是因为以后可能出现其他的存储方式。而且，正因为这样从目录解耦，就可以更好的进行设计了（具体的设计思想，我以后会撰文解说的）。</p>
<p>很爽的写了很多，很土鳖的没有采用任何的项目管理。工具使用Trac，但是更多的是一个用于文档和Ticket跟踪。<br />所以我决定对自己采用Scrum进行管理。也对自己有一个监控。</p>
<p>最开始，实话实说，我真的忘记了Scrum具体应该怎么开始了，但是非常简单，用户故事（是这样么说么）只有一个，就是实现一个用数据库的存储。我给自己两天的时间，也就是后天天亮之前完成，大约是还有10-16小时的工作时间。然后在看情况进行修改吧。嘿嘿~<br />暂时给自己定一个时间，然后，继续工作鸟~~</p>
]]></content:encoded>
			<wfw:commentRss>http://yinwm.com/2008/09/%e4%b8%80%e4%b8%aa%e4%ba%ba%e7%9a%84%e9%a1%b9%e7%9b%ae-%e7%ac%ac%e4%b8%80%e5%a4%a9/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
