<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" 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/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Oren Ellenbogen's Blog</title>
    <link>http://lnbogen.com/</link>
    <description>Striving for agile development</description>
    <language>en-us</language>
    <copyright>Oren Ellenbogen</copyright>
    <lastBuildDate>Sat, 31 Jul 2010 09:48:22 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.2.8279.16125</generator>
    <managingEditor>oren.ellenbogen@gmail.com</managingEditor>
    <webMaster>oren.ellenbogen@gmail.com</webMaster>
    <item>
      <trackback:ping>http://lnbogen.com/Trackback.aspx?guid=a7c49f04-385d-4649-9314-536ff747e7ad</trackback:ping>
      <pingback:server>http://lnbogen.com/pingback.aspx</pingback:server>
      <pingback:target>http://lnbogen.com/PermaLink,guid,a7c49f04-385d-4649-9314-536ff747e7ad.aspx</pingback:target>
      <dc:creator>Oren Ellenbogen</dc:creator>
      <wfw:comment>http://lnbogen.com/CommentView,guid,a7c49f04-385d-4649-9314-536ff747e7ad.aspx</wfw:comment>
      <wfw:commentRss>http://lnbogen.com/SyndicationService.asmx/GetEntryCommentsRss?guid=a7c49f04-385d-4649-9314-536ff747e7ad</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
In almost every <strong>management tool </strong>out there, there is a sophisticated
roles and permissions system that allows you to pick what your developers / product
manager / project manager can or cannot do with the system. “You can move a Feature
to In Progress only if your Team Leader authorize it”, “Only product manager can create
new Feature”, “Only Project Manager can start a new Sprint”. I see it happen sometimes
also in <strong>source control </strong>tools “You can commit only after your Team
Leader checked the ‘code review done’ checkbox” or “Only Team Leader can commit code”.
</p>
        <p>
Again, this is an internal system being used inside the organization!
</p>
        <p>
I think it’s a destructive and counterproductive approach. People will stop using
tools that are making them less efficient. If I know that only my Team Leader can
commit <b>my</b> code, I’ll probably commit once a week or once a month as I cannot
sit and wait for him every 10-60 minutes that I normally commit. Same goes for management
tools. People will not use the tool to its full potential, if they’ll need to send
emails such “can you please create this feature for me?” or “can you please approve
this feature so I could start working on it?” What’s the point? I can create tasks
in my OneNote or excel file and keep moving from there. 
</p>
        <p>
This way, data becomes less relevant, less honest, less up to date. You should trust
your people to act smart and train them to utilize tools better.
</p>
        <h4>How do I recover from disasters?
</h4>
        <p>
two words - <b>backup system</b>. Usually it’s really simply to backup your data every
X hours (or minutes) and rollback if disaster occurred. Your people will get better
as they’ll practice more often, get feedback from you and adjust. This will prevent
disasters from happening to begin with. Backup system should allow your teammates
to practice often, this is their safety net. Don’t use roles and permissions to create
virtual trust or avoid personal headaches. At the end of the day, it will cost you
more.
</p>
        <img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=a7c49f04-385d-4649-9314-536ff747e7ad" />
      </body>
      <title>Why using roles and permissions internally? Trust died?</title>
      <guid isPermaLink="false">http://lnbogen.com/PermaLink,guid,a7c49f04-385d-4649-9314-536ff747e7ad.aspx</guid>
      <link>http://lnbogen.com/2010/07/31/WhyUsingRolesAndPermissionsInternallyTrustDied.aspx</link>
      <pubDate>Sat, 31 Jul 2010 09:48:22 GMT</pubDate>
      <description>&lt;p&gt;
In almost every &lt;strong&gt;management tool &lt;/strong&gt;out there, there is a sophisticated
roles and permissions system that allows you to pick what your developers / product
manager / project manager can or cannot do with the system. “You can move a Feature
to In Progress only if your Team Leader authorize it”, “Only product manager can create
new Feature”, “Only Project Manager can start a new Sprint”. I see it happen sometimes
also in &lt;strong&gt;source control &lt;/strong&gt;tools “You can commit only after your Team
Leader checked the ‘code review done’ checkbox” or “Only Team Leader can commit code”.
&lt;/p&gt;
&lt;p&gt;
Again, this is an internal system being used inside the organization!
&lt;/p&gt;
&lt;p&gt;
I think it’s a destructive and counterproductive approach. People will stop using
tools that are making them less efficient. If I know that only my Team Leader can
commit &lt;b&gt;my&lt;/b&gt; code, I’ll probably commit once a week or once a month as I cannot
sit and wait for him every 10-60 minutes that I normally commit. Same goes for management
tools. People will not use the tool to its full potential, if they’ll need to send
emails such “can you please create this feature for me?” or “can you please approve
this feature so I could start working on it?” What’s the point? I can create tasks
in my OneNote or excel file and keep moving from there. 
&lt;/p&gt;
&lt;p&gt;
This way, data becomes less relevant, less honest, less up to date. You should trust
your people to act smart and train them to utilize tools better.
&lt;/p&gt;
&lt;h4&gt;How do I recover from disasters?
&lt;/h4&gt;
&lt;p&gt;
two words - &lt;b&gt;backup system&lt;/b&gt;. Usually it’s really simply to backup your data every
X hours (or minutes) and rollback if disaster occurred. Your people will get better
as they’ll practice more often, get feedback from you and adjust. This will prevent
disasters from happening to begin with. Backup system should allow your teammates
to practice often, this is their safety net. Don’t use roles and permissions to create
virtual trust or avoid personal headaches. At the end of the day, it will cost you
more.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=a7c49f04-385d-4649-9314-536ff747e7ad" /&gt;</description>
      <comments>http://lnbogen.com/CommentView,guid,a7c49f04-385d-4649-9314-536ff747e7ad.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://lnbogen.com/Trackback.aspx?guid=4a66106d-2824-42c7-a0c1-d268b87742d4</trackback:ping>
      <pingback:server>http://lnbogen.com/pingback.aspx</pingback:server>
      <pingback:target>http://lnbogen.com/PermaLink,guid,4a66106d-2824-42c7-a0c1-d268b87742d4.aspx</pingback:target>
      <dc:creator>Oren Ellenbogen</dc:creator>
      <wfw:comment>http://lnbogen.com/CommentView,guid,4a66106d-2824-42c7-a0c1-d268b87742d4.aspx</wfw:comment>
      <wfw:commentRss>http://lnbogen.com/SyndicationService.asmx/GetEntryCommentsRss?guid=4a66106d-2824-42c7-a0c1-d268b87742d4</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Should you start with planning your sprints and then see how it fits your versions?
Maybe start with versions and understand how your sprints look like? Maybe planning
versions by themselves is enough? How do you start?
</p>
        <h4>Decouple external planning from internal planning
</h4>
        <p>
External value (features your customers will enjoy) moves the organization. It is
why you get paid. No one will pay for “let these kids develop for fun only”, this
is why open source projects were born, for developers to write some code that may
or may not be used by others. Versions are communicated out to your customers, named
in a language your customers can understand “in version 1.0 we will allow our customers
to upload their profile image” rather “we will integrate jQuery and develop highly
scalable upload mechanism over Amazon Cloud”.
</p>
        <p>
Internal value (features your organization will enjoy) keeps the organization fully
operational, doing its best <b>over time</b>. It is usually not communicated out (your
customers don’t really care if you’re using C# 4.0 or C# 3.0) and not named in customer’s
lingo. 
</p>
        <h4>Versions are more tangible
</h4>
        <p>
Most of us stick to planning versions and our sprints actually look the same as our
versions. We’re results oriented and we want to please our customers. Moreover, no
external power is actively pushing us toward internal value.
</p>
        <h4>Sometimes internal value &gt; external value
</h4>
        <p>
If you’re strictly results oriented, you might produce great results but only for
short, unpredictable periods. Sometimes you’ll need to delay customer’s value to handle
broken “machine” in your factory. Your customers won’t like this delay, but they will
understand it if you’ll offer tradeoffs and communicate “we are fixing internal machine
to keep our high level of production steady”. They will prefer stable producing rather
than insane, poor quality or unpredictable results.
</p>
        <h4>Use Sprints to prioritize internal value with external value
</h4>
        <p>
Maybe you can devote 5% of the sprint to maintain your ability to produce fast? Maybe
10%? Maybe 1%? It’s really up to you to figure out what you want to push every sprint.
Be careful of dismissing internal value, it’s your role to actively push for it. 
</p>
        <h4>How do I start? 
</h4>
        <p>
I prefer to set some goals for my sprint first: (a) is there an internal value I want
to push? (b) Are there people in my team that I want to push by leading features?
(c) What is my team availability for this sprint? 
</p>
        <p>
          <img src="http://lnbogen.com/content/binary/sprintversusversion.png" />
        </p>
        <p>
With this in mind, I’m starting to plan my versions for the sprint and next one, making
sure I understand perfectly what should enter the sprint and when. <b>This is the
first time I validate my plans.</b> If the planned versions fully occupying my sprint
(or even more than that), I raise a flag and trying to figure out if something can
be shifted without causing damage. If not, and I have some “buffer”, it leaves me
with understanding how much of my internal value I can push inside the sprint, alongside
external value. <b>This is the second time I validate my plans</b>. Did I manage to
push my goals to the sprint while producing external value? If I notice there is a
big need for internal value that cannot wait, I will try to understand alternatives
with our product team and supply tradeoffs. 
</p>
        <p>
Then, all is left is to organize when should each feature start/end and making sure
external value (versions) are released on time while internal value is keep moving.
Keep your head above the water, plan to last.
</p>
        <img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=4a66106d-2824-42c7-a0c1-d268b87742d4" />
      </body>
      <title>Sprint Planning versus Version Planning</title>
      <guid isPermaLink="false">http://lnbogen.com/PermaLink,guid,4a66106d-2824-42c7-a0c1-d268b87742d4.aspx</guid>
      <link>http://lnbogen.com/2010/07/31/SprintPlanningVersusVersionPlanning.aspx</link>
      <pubDate>Sat, 31 Jul 2010 09:08:30 GMT</pubDate>
      <description>&lt;p&gt;
Should you start with planning your sprints and then see how it fits your versions?
Maybe start with versions and understand how your sprints look like? Maybe planning
versions by themselves is enough? How do you start?
&lt;/p&gt;
&lt;h4&gt;Decouple external planning from internal planning
&lt;/h4&gt;
&lt;p&gt;
External value (features your customers will enjoy) moves the organization. It is
why you get paid. No one will pay for “let these kids develop for fun only”, this
is why open source projects were born, for developers to write some code that may
or may not be used by others. Versions are communicated out to your customers, named
in a language your customers can understand “in version 1.0 we will allow our customers
to upload their profile image” rather “we will integrate jQuery and develop highly
scalable upload mechanism over Amazon Cloud”.
&lt;/p&gt;
&lt;p&gt;
Internal value (features your organization will enjoy) keeps the organization fully
operational, doing its best &lt;b&gt;over time&lt;/b&gt;. It is usually not communicated out (your
customers don’t really care if you’re using C# 4.0 or C# 3.0) and not named in customer’s
lingo. 
&lt;/p&gt;
&lt;h4&gt;Versions are more tangible
&lt;/h4&gt;
&lt;p&gt;
Most of us stick to planning versions and our sprints actually look the same as our
versions. We’re results oriented and we want to please our customers. Moreover, no
external power is actively pushing us toward internal value.
&lt;/p&gt;
&lt;h4&gt;Sometimes internal value &amp;gt; external value
&lt;/h4&gt;
&lt;p&gt;
If you’re strictly results oriented, you might produce great results but only for
short, unpredictable periods. Sometimes you’ll need to delay customer’s value to handle
broken “machine” in your factory. Your customers won’t like this delay, but they will
understand it if you’ll offer tradeoffs and communicate “we are fixing internal machine
to keep our high level of production steady”. They will prefer stable producing rather
than insane, poor quality or unpredictable results.
&lt;/p&gt;
&lt;h4&gt;Use Sprints to prioritize internal value with external value
&lt;/h4&gt;
&lt;p&gt;
Maybe you can devote 5% of the sprint to maintain your ability to produce fast? Maybe
10%? Maybe 1%? It’s really up to you to figure out what you want to push every sprint.
Be careful of dismissing internal value, it’s your role to actively push for it. 
&lt;/p&gt;
&lt;h4&gt;How do I start? 
&lt;/h4&gt;
&lt;p&gt;
I prefer to set some goals for my sprint first: (a) is there an internal value I want
to push? (b) Are there people in my team that I want to push by leading features?
(c) What is my team availability for this sprint? 
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://lnbogen.com/content/binary/sprintversusversion.png" /&gt;
&lt;/p&gt;
&lt;p&gt;
With this in mind, I’m starting to plan my versions for the sprint and next one, making
sure I understand perfectly what should enter the sprint and when. &lt;b&gt;This is the
first time I validate my plans.&lt;/b&gt; If the planned versions fully occupying my sprint
(or even more than that), I raise a flag and trying to figure out if something can
be shifted without causing damage. If not, and I have some “buffer”, it leaves me
with understanding how much of my internal value I can push inside the sprint, alongside
external value. &lt;b&gt;This is the second time I validate my plans&lt;/b&gt;. Did I manage to
push my goals to the sprint while producing external value? If I notice there is a
big need for internal value that cannot wait, I will try to understand alternatives
with our product team and supply tradeoffs. 
&lt;/p&gt;
&lt;p&gt;
Then, all is left is to organize when should each feature start/end and making sure
external value (versions) are released on time while internal value is keep moving.
Keep your head above the water, plan to last.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=4a66106d-2824-42c7-a0c1-d268b87742d4" /&gt;</description>
      <comments>http://lnbogen.com/CommentView,guid,4a66106d-2824-42c7-a0c1-d268b87742d4.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://lnbogen.com/Trackback.aspx?guid=5dddb82a-da88-4f8c-9fd0-067d0aa96dd1</trackback:ping>
      <pingback:server>http://lnbogen.com/pingback.aspx</pingback:server>
      <pingback:target>http://lnbogen.com/PermaLink,guid,5dddb82a-da88-4f8c-9fd0-067d0aa96dd1.aspx</pingback:target>
      <dc:creator>Oren Ellenbogen</dc:creator>
      <wfw:comment>http://lnbogen.com/CommentView,guid,5dddb82a-da88-4f8c-9fd0-067d0aa96dd1.aspx</wfw:comment>
      <wfw:commentRss>http://lnbogen.com/SyndicationService.asmx/GetEntryCommentsRss?guid=5dddb82a-da88-4f8c-9fd0-067d0aa96dd1</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <u>
            <a href="http://lnbogen.com/2010/07/08/SprintPlanJustEnoughDoItReflect.aspx">Sprint
is a planning unit</a>
          </u>, keeping it stable during that time allows a pretended
piece of mind for the developers from marketing/product ever-changing demands. So
it feels anyway. We developers signed up a virtual contract with our product teams
saying “we will be Agile enough to allow you to change your mind every 1-3 weeks,
but don’t disturb us during that time! We want to work, not wasting our time on talks!”. 
</p>
        <p>
Does it make sense to you? Is this the true notion behind Agile? Would it be acceptable
for a great business?
</p>
        <p>
Well, it makes sense only if you think that waste is more valuable than your attention. <b>Delaying
smart decisions or cutting off bad ones after 2 weeks, 2 days or even 2 minutes is
simply counterproductive</b>. If you know that a feature selected for the sprint became
a waste due to priority change, why should you move forward with it? why throwing
the problem to the other side of the fence: “well, my product team should have been
wiser with their priorities. We’ll do it anyway just to teach them a lesson so they
won’t do it for next sprint!”
</p>
        <p>
Priorities tend to change. It happens constantly. Don’t panic, be open-minded and
make sure your team leaders can handle priority shift. It’s perfectly okay to say
no, but make sure it’s a “reasonable no”. If you see it does make sense to move out
some features and move in some others, do it with care, offer tradeoffs (“this change
might mean we won’t be able to release the version on time, let’s delay it in 2 days”)
and make sure motivation passes to your team. Your teammates need to realize that
providing <b>organized waste</b> is plain dumb; they also need to trust you doing
these changes with full attention, clarifying tradeoffs and setting expectations.
Practice your agility!
</p>
        <img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=5dddb82a-da88-4f8c-9fd0-067d0aa96dd1" />
      </body>
      <title>Should you allow changes during Sprint?</title>
      <guid isPermaLink="false">http://lnbogen.com/PermaLink,guid,5dddb82a-da88-4f8c-9fd0-067d0aa96dd1.aspx</guid>
      <link>http://lnbogen.com/2010/07/23/ShouldYouAllowChangesDuringSprint.aspx</link>
      <pubDate>Fri, 23 Jul 2010 22:26:50 GMT</pubDate>
      <description>&lt;p&gt;
&lt;u&gt;&lt;a href="http://lnbogen.com/2010/07/08/SprintPlanJustEnoughDoItReflect.aspx"&gt;Sprint
is a planning unit&lt;/a&gt;&lt;/u&gt;, keeping it stable during that time allows a pretended
piece of mind for the developers from marketing/product ever-changing demands. So
it feels anyway. We developers signed up a virtual contract with our product teams
saying “we will be Agile enough to allow you to change your mind every 1-3 weeks,
but don’t disturb us during that time! We want to work, not wasting our time on talks!”. 
&lt;/p&gt;
&lt;p&gt;
Does it make sense to you? Is this the true notion behind Agile? Would it be acceptable
for a great business?
&lt;/p&gt;
&lt;p&gt;
Well, it makes sense only if you think that waste is more valuable than your attention. &lt;b&gt;Delaying
smart decisions or cutting off bad ones after 2 weeks, 2 days or even 2 minutes is
simply counterproductive&lt;/b&gt;. If you know that a feature selected for the sprint became
a waste due to priority change, why should you move forward with it? why throwing
the problem to the other side of the fence: “well, my product team should have been
wiser with their priorities. We’ll do it anyway just to teach them a lesson so they
won’t do it for next sprint!”
&lt;/p&gt;
&lt;p&gt;
Priorities tend to change. It happens constantly. Don’t panic, be open-minded and
make sure your team leaders can handle priority shift. It’s perfectly okay to say
no, but make sure it’s a “reasonable no”. If you see it does make sense to move out
some features and move in some others, do it with care, offer tradeoffs (“this change
might mean we won’t be able to release the version on time, let’s delay it in 2 days”)
and make sure motivation passes to your team. Your teammates need to realize that
providing &lt;b&gt;organized waste&lt;/b&gt; is plain dumb; they also need to trust you doing
these changes with full attention, clarifying tradeoffs and setting expectations.
Practice your agility!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=5dddb82a-da88-4f8c-9fd0-067d0aa96dd1" /&gt;</description>
      <comments>http://lnbogen.com/CommentView,guid,5dddb82a-da88-4f8c-9fd0-067d0aa96dd1.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://lnbogen.com/Trackback.aspx?guid=38b97dfd-106d-4c30-9e70-8c7ef509a81c</trackback:ping>
      <pingback:server>http://lnbogen.com/pingback.aspx</pingback:server>
      <pingback:target>http://lnbogen.com/PermaLink,guid,38b97dfd-106d-4c30-9e70-8c7ef509a81c.aspx</pingback:target>
      <dc:creator>Oren Ellenbogen</dc:creator>
      <wfw:comment>http://lnbogen.com/CommentView,guid,38b97dfd-106d-4c30-9e70-8c7ef509a81c.aspx</wfw:comment>
      <wfw:commentRss>http://lnbogen.com/SyndicationService.asmx/GetEntryCommentsRss?guid=38b97dfd-106d-4c30-9e70-8c7ef509a81c</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
After bashing prediction systems, <u><a href="http://lnbogen.com/2010/07/21/ExperimentersBiasKillsSoftwarePredication.aspx">claiming
that measuring performance of your teammates to predict release dates or personal
behavior is inherently wrong</a></u>, you might deduce that I meant “measuring Actual
Hours is pointless”. 
</p>
        <p>
On the contrary my friend, I believe that tracking Actual Hours is imperative for
better planning and cutting off waste. 
</p>
        <h4>Translate internal units (Story Points / Ideal Days) to external units (Calendar)
</h4>
        <p>
How can you translate a 3 Story Points or a 3 Ideal Days to “it will be ready next
Tuesday?” 
<br />
Using Actual Hours, you could actually see a correlation between Story Points size
(internal to the organization) to total amount of Actual Hours Range (external as
you can put it on calendar). For example, you might notice after a few sprints that
3 Story Points (based on <em>latest</em> 5 features), are usually taking 23-28 Actual
Hours to complete. Assuming you pick a number, say 6, as the amount of Actual Hours
in 1 day a developer can do, such features will translate to around 4-5 working days.
Story Points can be translated quickly, <strong>based on empirical knowledge</strong>,
to a range of working days. This will make release dates predication much easier,
assisting your Project Manager and your Marketing team to communicate it in their
roadmap or create plans accordingly.
</p>
        <h5>
        </h5>
        <h4>Actual Hours help to quickly balance effort in a Sprint
</h4>
        <p>
You’re on the first day of the Sprint and you’ve got seven Features (/ User Stories)
in “Not Started”. You also made sure that people availability (Joe got 50 hours this
sprint) is updated as some have vacations and some got exams during the sprint. Even
more, you already decided who is the owner of each Feature. How can you balance the
tasks effort, in hours, between your teammates? how can you decide if some features
will be developed by multiple developers and still see that your plan is feasible?  
<br />
With Actual Hours history, from the example above, you can see that 3 Story Points
translate to 23-28 hours. You can immediately add to all features worth 3 Story Points
one task called TBD with 25 hours (~avg) and assign it to the owner. You move to each
one of your features, checking their Story Points -&gt; Actual Hours range, adding
the task. Next, you slowly break this big TBD task, in each feature, into multiple
TBD tasks, each with different owner and estimation, until you see that the effort
is balanced between all of your teammates.
</p>
        <p>
          <b>2 flows for example:</b>
        </p>
        <p>
a. 3 Story Points (range: 23-28 hours) -&gt; 1 task worth 25h for Joe -&gt; 1 task
worth 10 for Joe, 1 task worth 5 for Jim and 1 task worth 10 for Annie.
</p>
        <p>
b. 2 Story Points (range: 10-18 hours) -&gt; 1 task worth 14h for Jim -&gt; 1 task
worth 10 for Jim and 1 task worth 4 for Annie.
</p>
        <p>
c. [ … until all work effort are balanced by availability and optimal ownership …
] 
<br />
d. Make sure that your breakdown makes sense in terms of people availability. Make
changes if needed.
</p>
        <h4>Summary
</h4>
Actual Hours are imperative as they (1) provide a way to translate internal work units
to external work units and (2) allowing fast effort breakdown. The key is to set expectations
right with your teammates, explaining why their performance measurements are so crucial
and how they will be used. They need to understand so they will be able to honest,
to have an incentive to help you. Don’t break their trust.<img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=38b97dfd-106d-4c30-9e70-8c7ef509a81c" /></body>
      <title>Why tracking Actual Hours is so imperative?</title>
      <guid isPermaLink="false">http://lnbogen.com/PermaLink,guid,38b97dfd-106d-4c30-9e70-8c7ef509a81c.aspx</guid>
      <link>http://lnbogen.com/2010/07/23/WhyTrackingActualHoursIsSoImperative.aspx</link>
      <pubDate>Fri, 23 Jul 2010 21:55:49 GMT</pubDate>
      <description>&lt;p&gt;
After bashing prediction systems, &lt;u&gt;&lt;a href="http://lnbogen.com/2010/07/21/ExperimentersBiasKillsSoftwarePredication.aspx"&gt;claiming
that measuring performance of your teammates to predict release dates or personal
behavior is inherently wrong&lt;/a&gt;&lt;/u&gt;, you might deduce that I meant “measuring Actual
Hours is pointless”. 
&lt;/p&gt;
&lt;p&gt;
On the contrary my friend, I believe that tracking Actual Hours is imperative for
better planning and cutting off waste. 
&lt;/p&gt;
&lt;h4&gt;Translate internal units (Story Points / Ideal Days) to external units (Calendar)
&lt;/h4&gt;
&lt;p&gt;
How can you translate a 3 Story Points or a 3 Ideal Days to “it will be ready next
Tuesday?” 
&lt;br /&gt;
Using Actual Hours, you could actually see a correlation between Story Points size
(internal to the organization) to total amount of Actual Hours Range (external as
you can put it on calendar). For example, you might notice after a few sprints that
3 Story Points (based on &lt;em&gt;latest&lt;/em&gt; 5 features), are usually taking 23-28 Actual
Hours to complete. Assuming you pick a number, say 6, as the amount of Actual Hours
in 1 day a developer can do, such features will translate to around 4-5 working days.
Story Points can be translated quickly, &lt;strong&gt;based on empirical knowledge&lt;/strong&gt;,
to a range of working days. This will make release dates predication much easier,
assisting your Project Manager and your Marketing team to communicate it in their
roadmap or create plans accordingly.
&lt;/p&gt;
&lt;h5&gt;
&lt;/h5&gt;
&lt;h4&gt;Actual Hours help to quickly balance effort in a Sprint
&lt;/h4&gt;
&lt;p&gt;
You’re on the first day of the Sprint and you’ve got seven Features (/ User Stories)
in “Not Started”. You also made sure that people availability (Joe got 50 hours this
sprint) is updated as some have vacations and some got exams during the sprint. Even
more, you already decided who is the owner of each Feature. How can you balance the
tasks effort, in hours, between your teammates? how can you decide if some features
will be developed by multiple developers and still see that your plan is feasible?&amp;#160; 
&lt;br /&gt;
With Actual Hours history, from the example above, you can see that 3 Story Points
translate to 23-28 hours. You can immediately add to all features worth 3 Story Points
one task called TBD with 25 hours (~avg) and assign it to the owner. You move to each
one of your features, checking their Story Points -&amp;gt; Actual Hours range, adding
the task. Next, you slowly break this big TBD task, in each feature, into multiple
TBD tasks, each with different owner and estimation, until you see that the effort
is balanced between all of your teammates.
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;2 flows for example:&lt;/b&gt;
&lt;/p&gt;
&lt;p&gt;
a. 3 Story Points (range: 23-28 hours) -&amp;gt; 1 task worth 25h for Joe -&amp;gt; 1 task
worth 10 for Joe, 1 task worth 5 for Jim and 1 task worth 10 for Annie.
&lt;/p&gt;
&lt;p&gt;
b. 2 Story Points (range: 10-18 hours) -&amp;gt; 1 task worth 14h for Jim -&amp;gt; 1 task
worth 10 for Jim and 1 task worth 4 for Annie.
&lt;/p&gt;
&lt;p&gt;
c. [ … until all work effort are balanced by availability and optimal ownership …
] 
&lt;br /&gt;
d. Make sure that your breakdown makes sense in terms of people availability. Make
changes if needed.
&lt;/p&gt;
&lt;h4&gt;Summary
&lt;/h4&gt;
Actual Hours are imperative as they (1) provide a way to translate internal work units
to external work units and (2) allowing fast effort breakdown. The key is to set expectations
right with your teammates, explaining why their performance measurements are so crucial
and how they will be used. They need to understand so they will be able to honest,
to have an incentive to help you. Don’t break their trust.&lt;img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=38b97dfd-106d-4c30-9e70-8c7ef509a81c" /&gt;</description>
      <comments>http://lnbogen.com/CommentView,guid,38b97dfd-106d-4c30-9e70-8c7ef509a81c.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://lnbogen.com/Trackback.aspx?guid=d4a0b0ba-1b47-483f-a998-a76ede467445</trackback:ping>
      <pingback:server>http://lnbogen.com/pingback.aspx</pingback:server>
      <pingback:target>http://lnbogen.com/PermaLink,guid,d4a0b0ba-1b47-483f-a998-a76ede467445.aspx</pingback:target>
      <dc:creator>Oren Ellenbogen</dc:creator>
      <wfw:comment>http://lnbogen.com/CommentView,guid,d4a0b0ba-1b47-483f-a998-a76ede467445.aspx</wfw:comment>
      <wfw:commentRss>http://lnbogen.com/SyndicationService.asmx/GetEntryCommentsRss?guid=d4a0b0ba-1b47-483f-a998-a76ede467445</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Many teams going into Scrum, have internal debates around whether or not moving to
Story Points or sticking with Ideal Days. It seems that there is a lot of personal
feelings involved.
</p>
        <h4>Ideal Days – what is it all about?
</h4>
        <p>
Just imagine a work day <i>without</i> any meetings, phone calls or people bothering
you. It’s a full day of making things done, full day working solely on your tasks,
whatever that means.
</p>
        <h4>Story Points – what is it all about?
</h4>
        <p>
Story Points are a bit more abstract notion. It includes 3 parts: <b>Work Effort</b> (how
much effort the work will take), <b>Complexity</b> (implementing known yet complex
code) and <b>Risk </b>(3<sup>rd</sup> party integration, POC required etc). It inherently
abstracts away the “who” to allow you to consider the “what”. 
</p>
        <h4>Estimation is expensive
</h4>
        <p>
          <u>
            <a href="http://lnbogen.com/2010/07/19/EstimatingFeaturesOptionsContextAndGod.aspx">I’ve
said it before - estimation is expensive.</a>
          </u> You should find ways to make your
estimation faster, unless you were specifically required to execute the Feature or
bringing a super detailed estimation. If it’s not the case, and you were asked for
numbers to determine Product Roadmap or feasibility of features, stick to fast gut
feelings, may it be private hunch or collaborative hunch.
</p>
        <h4>Fibonacci size – what is it all about?
</h4>
        <p>
To make estimation faster, it’s easier to have smaller list of options to pick from.
For example, instead of picking a size from 1-100, you should pick from a smaller
numbers range, like Fibonacci: 1,2,3,5,8,13 and then go to 20, 40, 70, 100. <b>Why
the jumps</b>? Because the bigger the estimation, the bigger likelihood of being wrong
or wasting too much time discussing how wrong. So instead of arguing on whether it’s
6 working days or 7, you just pick 8 or 5, depending on the specifics (effort, complexity,
risk). The purpose is to estimate fast, not to be 100% precise.
</p>
        <h4>Using Anchors
</h4>
        <p>
Usually, the idea is to price Features (or User Stories) against <b>other</b> Features
*like* them. “This feature is around the same effort as that feature so it will be
3 Story Points as well”. After picking a few Features as “baseline”, it’s easier to
estimate faster others features against them.
</p>
        <h4>Ideal Days baggage
</h4>
        <p>
I personally believe that Ideal Days <b>brings too much baggage</b> into the discussion
(making estimation slower):
</p>
        <p>
1. <b>Who’s Ideal Day? How long is one Ideal Day?</b> Each member will consider her/his
Ideal Day. Instead of focusing on fast estimation, everyone passing in their head
“well, Joe is new in the team, it will take it twice as much! Let’s price it as twice
as much then”. Story Points “don’t care” who is implementing the Feature. This is
exactly how it should be done as you never really know who will actually be the implementor
until you start working on it.
</p>
        <p>
2. <b>Ideal Days are not strongly correlated with estimating Complexity and Risks</b>:
People have in mind, when using Ideal Days, mostly effort involved. Story Points,
due to its abstraction level, allows better focus on Complexity and Risk.
</p>
        <h4>Matter of flavor, I guess
</h4>
        <p>
Anyway, I feel that it’s not really important whether you’re using Story Points on
Ideal Days, as long as you (1) remember to price Complexity and Risk as well; as long
as (2) you understand that estimation is expensive. I feel that Story Points offer
better abstraction which allows faster estimation, but it’s really matter of “whatever
works”. 
</p>
        <h4>Write down Estimation Reasoning!
</h4>
Make sure you keep your estimation reason. “We said its 5 Story Points because it’s
~3 Story Points for effort and ~1-2 for Complexity and Risk. We felt good enough with
5 Story Points.” <b>Why</b>? If you would like to use this estimation as an anchor
in the future, while trying to estimate a new feature, you should remember what the
original 5 Story Points meant for you: “Was it 5 Story Points only because of effort?”<img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=d4a0b0ba-1b47-483f-a998-a76ede467445" /></body>
      <title>Story Points over Ideal Days?</title>
      <guid isPermaLink="false">http://lnbogen.com/PermaLink,guid,d4a0b0ba-1b47-483f-a998-a76ede467445.aspx</guid>
      <link>http://lnbogen.com/2010/07/22/StoryPointsOverIdealDays.aspx</link>
      <pubDate>Thu, 22 Jul 2010 12:10:48 GMT</pubDate>
      <description>&lt;p&gt;
Many teams going into Scrum, have internal debates around whether or not moving to
Story Points or sticking with Ideal Days. It seems that there is a lot of personal
feelings involved.
&lt;/p&gt;
&lt;h4&gt;Ideal Days – what is it all about?
&lt;/h4&gt;
&lt;p&gt;
Just imagine a work day &lt;i&gt;without&lt;/i&gt; any meetings, phone calls or people bothering
you. It’s a full day of making things done, full day working solely on your tasks,
whatever that means.
&lt;/p&gt;
&lt;h4&gt;Story Points – what is it all about?
&lt;/h4&gt;
&lt;p&gt;
Story Points are a bit more abstract notion. It includes 3 parts: &lt;b&gt;Work Effort&lt;/b&gt; (how
much effort the work will take), &lt;b&gt;Complexity&lt;/b&gt; (implementing known yet complex
code) and &lt;b&gt;Risk &lt;/b&gt;(3&lt;sup&gt;rd&lt;/sup&gt; party integration, POC required etc). It inherently
abstracts away the “who” to allow you to consider the “what”. 
&lt;/p&gt;
&lt;h4&gt;Estimation is expensive
&lt;/h4&gt;
&lt;p&gt;
&lt;u&gt;&lt;a href="http://lnbogen.com/2010/07/19/EstimatingFeaturesOptionsContextAndGod.aspx"&gt;I’ve
said it before - estimation is expensive.&lt;/a&gt;&lt;/u&gt; You should find ways to make your
estimation faster, unless you were specifically required to execute the Feature or
bringing a super detailed estimation. If it’s not the case, and you were asked for
numbers to determine Product Roadmap or feasibility of features, stick to fast gut
feelings, may it be private hunch or collaborative hunch.
&lt;/p&gt;
&lt;h4&gt;Fibonacci size – what is it all about?
&lt;/h4&gt;
&lt;p&gt;
To make estimation faster, it’s easier to have smaller list of options to pick from.
For example, instead of picking a size from 1-100, you should pick from a smaller
numbers range, like Fibonacci: 1,2,3,5,8,13 and then go to 20, 40, 70, 100. &lt;b&gt;Why
the jumps&lt;/b&gt;? Because the bigger the estimation, the bigger likelihood of being wrong
or wasting too much time discussing how wrong. So instead of arguing on whether it’s
6 working days or 7, you just pick 8 or 5, depending on the specifics (effort, complexity,
risk). The purpose is to estimate fast, not to be 100% precise.
&lt;/p&gt;
&lt;h4&gt;Using Anchors
&lt;/h4&gt;
&lt;p&gt;
Usually, the idea is to price Features (or User Stories) against &lt;b&gt;other&lt;/b&gt; Features
*like* them. “This feature is around the same effort as that feature so it will be
3 Story Points as well”. After picking a few Features as “baseline”, it’s easier to
estimate faster others features against them.
&lt;/p&gt;
&lt;h4&gt;Ideal Days baggage
&lt;/h4&gt;
&lt;p&gt;
I personally believe that Ideal Days &lt;b&gt;brings too much baggage&lt;/b&gt; into the discussion
(making estimation slower):
&lt;/p&gt;
&lt;p&gt;
1. &lt;b&gt;Who’s Ideal Day? How long is one Ideal Day?&lt;/b&gt; Each member will consider her/his
Ideal Day. Instead of focusing on fast estimation, everyone passing in their head
“well, Joe is new in the team, it will take it twice as much! Let’s price it as twice
as much then”. Story Points “don’t care” who is implementing the Feature. This is
exactly how it should be done as you never really know who will actually be the implementor
until you start working on it.
&lt;/p&gt;
&lt;p&gt;
2. &lt;b&gt;Ideal Days are not strongly correlated with estimating Complexity and Risks&lt;/b&gt;:
People have in mind, when using Ideal Days, mostly effort involved. Story Points,
due to its abstraction level, allows better focus on Complexity and Risk.
&lt;/p&gt;
&lt;h4&gt;Matter of flavor, I guess
&lt;/h4&gt;
&lt;p&gt;
Anyway, I feel that it’s not really important whether you’re using Story Points on
Ideal Days, as long as you (1) remember to price Complexity and Risk as well; as long
as (2) you understand that estimation is expensive. I feel that Story Points offer
better abstraction which allows faster estimation, but it’s really matter of “whatever
works”. 
&lt;/p&gt;
&lt;h4&gt;Write down Estimation Reasoning!
&lt;/h4&gt;
Make sure you keep your estimation reason. “We said its 5 Story Points because it’s
~3 Story Points for effort and ~1-2 for Complexity and Risk. We felt good enough with
5 Story Points.” &lt;b&gt;Why&lt;/b&gt;? If you would like to use this estimation as an anchor
in the future, while trying to estimate a new feature, you should remember what the
original 5 Story Points meant for you: “Was it 5 Story Points only because of effort?”&lt;img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=d4a0b0ba-1b47-483f-a998-a76ede467445" /&gt;</description>
      <comments>http://lnbogen.com/CommentView,guid,d4a0b0ba-1b47-483f-a998-a76ede467445.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://lnbogen.com/Trackback.aspx?guid=febb5f04-91c3-4918-a239-7b2a7c3d5843</trackback:ping>
      <pingback:server>http://lnbogen.com/pingback.aspx</pingback:server>
      <pingback:target>http://lnbogen.com/PermaLink,guid,febb5f04-91c3-4918-a239-7b2a7c3d5843.aspx</pingback:target>
      <dc:creator>Oren Ellenbogen</dc:creator>
      <wfw:comment>http://lnbogen.com/CommentView,guid,febb5f04-91c3-4918-a239-7b2a7c3d5843.aspx</wfw:comment>
      <wfw:commentRss>http://lnbogen.com/SyndicationService.asmx/GetEntryCommentsRss?guid=febb5f04-91c3-4918-a239-7b2a7c3d5843</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
“In experimental science, experimenter's bias is bias towards a result expected by
the human experimenter.” – <u><a href="http://en.wikipedia.org/wiki/Experimenter's_bias">Experimenter's
bias, Wikipedia</a></u>.
</p>
        <p>
Almost every management tool out there attempts to provide estimation regarding when
the feature / user story / version / release will be ready. <u><a href="http://www.fogcreek.com/fogbugz/">Fogbugz</a></u> took
it to extreme with their <u><a href="http://www.joelonsoftware.com/items/2007/10/26.html">Evidencing
Based Scheduling</a></u>, others such <a href="http://www.versionone.com/">VersionOne</a><u></u> and <u><a href="http://www.thoughtworks-studios.com/mingle-agile-project-management">Mingle</a></u> use
pretty graphs or other visuals to achieve the same. 
</p>
        <p>
“Computer, when it will be done?!”
</p>
        <p>
I think there is an <b>inherent</b><b>paradox</b> with such prediction - it depends
on developer’s honesty. You must ask yourself what is the developer’s <b>incentive</b> to
fill the information as it is? why should she or he be honest? The way I see it, developers
are staying in their safe zone, pricing things in high enough granularity (around
8h or more per task) and fill the actual or remained hours so they won’t look bad
or good. <b>They just want to be right</b>. Why? So they won’t appear as too optimistic
or too pessimistic to the prediction system their boss is using to plan the next few
releases. It actually makes sense; the predication system caused the results to behave
as expected by driving developers to “safely” play with the numbers. The actual, somehow,
always equals to the estimation! How nice!
</p>
        <p>
The second you’re telling your developers that their estimated and actual hours are
being used directly to predict the future, don’t be surprised that it will be the
future <b>they want you to see</b>. This is why I’m not convinced about using Actual
Hours for readiness prediction or judging if a teammate is over optimistic/pessimistic. 
</p>
        <p>
As a team leader, you should care that your teammates will learn to estimate better,
to allow themselves to be wrong, without everyone to see it on their prediction tools.
They need to make mistakes and get personal feedback. <strong><a href="http://dev2ops.org/blog/2010/2/23/people-over-process-over-tools.html">People
over Tools !</a></strong></p>
        <p>
          <b>Why should you still use Actual Hours then? 
<br /></b>More on it to follow…
</p>
        <img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=febb5f04-91c3-4918-a239-7b2a7c3d5843" />
      </body>
      <title>Experimenter's bias kills software predication</title>
      <guid isPermaLink="false">http://lnbogen.com/PermaLink,guid,febb5f04-91c3-4918-a239-7b2a7c3d5843.aspx</guid>
      <link>http://lnbogen.com/2010/07/21/ExperimentersBiasKillsSoftwarePredication.aspx</link>
      <pubDate>Wed, 21 Jul 2010 21:58:13 GMT</pubDate>
      <description>&lt;p&gt;
“In experimental science, experimenter's bias is bias towards a result expected by
the human experimenter.” – &lt;u&gt;&lt;a href="http://en.wikipedia.org/wiki/Experimenter's_bias"&gt;Experimenter's
bias, Wikipedia&lt;/a&gt;&lt;/u&gt;.
&lt;/p&gt;
&lt;p&gt;
Almost every management tool out there attempts to provide estimation regarding when
the feature / user story / version / release will be ready. &lt;u&gt;&lt;a href="http://www.fogcreek.com/fogbugz/"&gt;Fogbugz&lt;/a&gt;&lt;/u&gt; took
it to extreme with their &lt;u&gt;&lt;a href="http://www.joelonsoftware.com/items/2007/10/26.html"&gt;Evidencing
Based Scheduling&lt;/a&gt;&lt;/u&gt;, others such &lt;a href="http://www.versionone.com/"&gt;VersionOne&lt;/a&gt;&lt;u&gt;&lt;/u&gt; and &lt;u&gt;&lt;a href="http://www.thoughtworks-studios.com/mingle-agile-project-management"&gt;Mingle&lt;/a&gt;&lt;/u&gt; use
pretty graphs or other visuals to achieve the same. 
&lt;/p&gt;
&lt;p&gt;
“Computer, when it will be done?!”
&lt;/p&gt;
&lt;p&gt;
I think there is an &lt;b&gt;inherent&lt;/b&gt; &lt;b&gt;paradox&lt;/b&gt; with such prediction - it depends
on developer’s honesty. You must ask yourself what is the developer’s &lt;b&gt;incentive&lt;/b&gt; to
fill the information as it is? why should she or he be honest? The way I see it, developers
are staying in their safe zone, pricing things in high enough granularity (around
8h or more per task) and fill the actual or remained hours so they won’t look bad
or good. &lt;b&gt;They just want to be right&lt;/b&gt;. Why? So they won’t appear as too optimistic
or too pessimistic to the prediction system their boss is using to plan the next few
releases. It actually makes sense; the predication system caused the results to behave
as expected by driving developers to “safely” play with the numbers. The actual, somehow,
always equals to the estimation! How nice!
&lt;/p&gt;
&lt;p&gt;
The second you’re telling your developers that their estimated and actual hours are
being used directly to predict the future, don’t be surprised that it will be the
future &lt;b&gt;they want you to see&lt;/b&gt;. This is why I’m not convinced about using Actual
Hours for readiness prediction or judging if a teammate is over optimistic/pessimistic. 
&lt;/p&gt;
&lt;p&gt;
As a team leader, you should care that your teammates will learn to estimate better,
to allow themselves to be wrong, without everyone to see it on their prediction tools.
They need to make mistakes and get personal feedback. &lt;strong&gt;&lt;a href="http://dev2ops.org/blog/2010/2/23/people-over-process-over-tools.html"&gt;People
over Tools !&lt;/a&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;Why should you still use Actual Hours then? 
&lt;br /&gt;
&lt;/b&gt;More on it to follow…
&lt;/p&gt;
&lt;img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=febb5f04-91c3-4918-a239-7b2a7c3d5843" /&gt;</description>
      <comments>http://lnbogen.com/CommentView,guid,febb5f04-91c3-4918-a239-7b2a7c3d5843.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://lnbogen.com/Trackback.aspx?guid=85d3c980-99ae-4429-8d93-e8b6116e3aa2</trackback:ping>
      <pingback:server>http://lnbogen.com/pingback.aspx</pingback:server>
      <pingback:target>http://lnbogen.com/PermaLink,guid,85d3c980-99ae-4429-8d93-e8b6116e3aa2.aspx</pingback:target>
      <dc:creator>Oren Ellenbogen</dc:creator>
      <wfw:comment>http://lnbogen.com/CommentView,guid,85d3c980-99ae-4429-8d93-e8b6116e3aa2.aspx</wfw:comment>
      <wfw:commentRss>http://lnbogen.com/SyndicationService.asmx/GetEntryCommentsRss?guid=85d3c980-99ae-4429-8d93-e8b6116e3aa2</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
If <u><a href="http://lnbogen.com/2010/07/08/SprintPlanJustEnoughDoItReflect.aspx">Sprints
are not execution unit</a></u>, what is the rush of moving Features to done as soon
as possible during a sprint? Why should you care about it if you’re not limited by
end of sprint deadline?
</p>
        <p>
Other than the fact that done is fun ™ (obvious sense of accomplishment), striving
for done features will push the entire team to excel. I’ll try to cover it from two
angles, manager and developer.
</p>
        <h4>Nothing new, you commit to version instead of Sprint
</h4>
        <p>
The only difference of <u><a href="http://lnbogen.com/2010/07/08/VersionExtractReleasesFromSprints.aspx">introducing
versions to decouple execution from sprints</a></u>, is that you commit to version
rather than sprint. So far, no big change, you need to release on time to allow fast
feedback by your customers. It’s the same “Agile attitude”, the same fuzzy feeling
in your tummy.
</p>
        <h4>From Developer’s point of view
</h4>
        <p>
1. <b>Prefer small amount of WIP</b> (Work In Progress) - we are poor with multi-tasking
and we hate to get back to things we thought we already finished. If you aim to move
Features to done, you can be more confident moving forward without leaving some concerns
behind you. 
</p>
        <p>
2. <b>Practice Growth</b> – the more features you’re estimating, breaking (into tasks)
and leading, the more you’ll improve your communication and leadership skills. Because
all of the above is so hard to get right, you need to practice as much as you can
to feel comfortable leading bigger features over time and later on, if desired, leading
your own team. Great leaders not only know how to push features but they also can
explain to others how to get better at it, to share feedback. For that, you’ll need
to practice enough, to reflect enough, until you really grasp the complexity behind
it.
</p>
        <h4>From Team Leader’s point of view
</h4>
        <p>
1. <b>Prefer small amount of WIP</b> – you should prefer 7 features done from 9 planned
rather than 15 features in progress from 20 planned. You cannot deploy half-baked
features thus 15 features in progress means zero value to your customers.
</p>
        <p>
2. <b>Create predictability by making Velocity graph stable </b>- If you want to <u><a href="http://lnbogen.com/2010/07/19/PlanningYourSprint.aspx">plan
your sprint</a></u> faster and with more confidence, you’ll need to understand how
many Story Points / Ideal Days you’re able to do each sprint. For that, you’ll want
your Velocity graph to avoid spikes every sprint (example: 30 SP, 2 SP, 87 SP, 40
SP) but rather have a “stable” Velocity graph (example: 30 SP, 27 SP, 34SP, 29SP).
Constant spikes mean that you won’t be able to say how many Features (by Story Points)
you’re able to perform. Less confidence =&gt; more time spent on planning.
</p>
        <p>
3. <b>Create predictability by making Features Size Completion stable – </b>again,
if you want to plan your sprint faster, you’ll need to know how many big / medium
/ small features you’re able to pull off every sprint or every version. Try to strive
for known throughput per feature size to increase confidence.
</p>
        <p>
Planning Sprint, just like estimating features, might be very expensive and hard to
nail down. The trick is to create solid picture that strengthen your gut feeling about
what you can actually do. With this in hands, you’ll spend less time breaking everything
to little pieces or worry about the quality of your plan; instead, you’ll have solid
empirical history behind you to back you up. More time for you to get some tan!
</p>
        <img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=85d3c980-99ae-4429-8d93-e8b6116e3aa2" />
      </body>
      <title>Why should you strive for moving Features to done?</title>
      <guid isPermaLink="false">http://lnbogen.com/PermaLink,guid,85d3c980-99ae-4429-8d93-e8b6116e3aa2.aspx</guid>
      <link>http://lnbogen.com/2010/07/20/WhyShouldYouStriveForMovingFeaturesToDone.aspx</link>
      <pubDate>Tue, 20 Jul 2010 09:36:20 GMT</pubDate>
      <description>&lt;p&gt;
If &lt;u&gt;&lt;a href="http://lnbogen.com/2010/07/08/SprintPlanJustEnoughDoItReflect.aspx"&gt;Sprints
are not execution unit&lt;/a&gt;&lt;/u&gt;, what is the rush of moving Features to done as soon
as possible during a sprint? Why should you care about it if you’re not limited by
end of sprint deadline?
&lt;/p&gt;
&lt;p&gt;
Other than the fact that done is fun ™ (obvious sense of accomplishment), striving
for done features will push the entire team to excel. I’ll try to cover it from two
angles, manager and developer.
&lt;/p&gt;
&lt;h4&gt;Nothing new, you commit to version instead of Sprint
&lt;/h4&gt;
&lt;p&gt;
The only difference of &lt;u&gt;&lt;a href="http://lnbogen.com/2010/07/08/VersionExtractReleasesFromSprints.aspx"&gt;introducing
versions to decouple execution from sprints&lt;/a&gt;&lt;/u&gt;, is that you commit to version
rather than sprint. So far, no big change, you need to release on time to allow fast
feedback by your customers. It’s the same “Agile attitude”, the same fuzzy feeling
in your tummy.
&lt;/p&gt;
&lt;h4&gt;From Developer’s point of view
&lt;/h4&gt;
&lt;p&gt;
1. &lt;b&gt;Prefer small amount of WIP&lt;/b&gt; (Work In Progress) - we are poor with multi-tasking
and we hate to get back to things we thought we already finished. If you aim to move
Features to done, you can be more confident moving forward without leaving some concerns
behind you. 
&lt;/p&gt;
&lt;p&gt;
2. &lt;b&gt;Practice Growth&lt;/b&gt; – the more features you’re estimating, breaking (into tasks)
and leading, the more you’ll improve your communication and leadership skills. Because
all of the above is so hard to get right, you need to practice as much as you can
to feel comfortable leading bigger features over time and later on, if desired, leading
your own team. Great leaders not only know how to push features but they also can
explain to others how to get better at it, to share feedback. For that, you’ll need
to practice enough, to reflect enough, until you really grasp the complexity behind
it.
&lt;/p&gt;
&lt;h4&gt;From Team Leader’s point of view
&lt;/h4&gt;
&lt;p&gt;
1. &lt;b&gt;Prefer small amount of WIP&lt;/b&gt; – you should prefer 7 features done from 9 planned
rather than 15 features in progress from 20 planned. You cannot deploy half-baked
features thus 15 features in progress means zero value to your customers.
&lt;/p&gt;
&lt;p&gt;
2. &lt;b&gt;Create predictability by making Velocity graph stable &lt;/b&gt;- If you want to &lt;u&gt;&lt;a href="http://lnbogen.com/2010/07/19/PlanningYourSprint.aspx"&gt;plan
your sprint&lt;/a&gt;&lt;/u&gt; faster and with more confidence, you’ll need to understand how
many Story Points / Ideal Days you’re able to do each sprint. For that, you’ll want
your Velocity graph to avoid spikes every sprint (example: 30 SP, 2 SP, 87 SP, 40
SP) but rather have a “stable” Velocity graph (example: 30 SP, 27 SP, 34SP, 29SP).
Constant spikes mean that you won’t be able to say how many Features (by Story Points)
you’re able to perform. Less confidence =&amp;gt; more time spent on planning.
&lt;/p&gt;
&lt;p&gt;
3. &lt;b&gt;Create predictability by making Features Size Completion stable – &lt;/b&gt;again,
if you want to plan your sprint faster, you’ll need to know how many big / medium
/ small features you’re able to pull off every sprint or every version. Try to strive
for known throughput per feature size to increase confidence.
&lt;/p&gt;
&lt;p&gt;
Planning Sprint, just like estimating features, might be very expensive and hard to
nail down. The trick is to create solid picture that strengthen your gut feeling about
what you can actually do. With this in hands, you’ll spend less time breaking everything
to little pieces or worry about the quality of your plan; instead, you’ll have solid
empirical history behind you to back you up. More time for you to get some tan!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=85d3c980-99ae-4429-8d93-e8b6116e3aa2" /&gt;</description>
      <comments>http://lnbogen.com/CommentView,guid,85d3c980-99ae-4429-8d93-e8b6116e3aa2.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://lnbogen.com/Trackback.aspx?guid=2da7c0ea-d987-4343-a2ba-6d6d6b194cbf</trackback:ping>
      <pingback:server>http://lnbogen.com/pingback.aspx</pingback:server>
      <pingback:target>http://lnbogen.com/PermaLink,guid,2da7c0ea-d987-4343-a2ba-6d6d6b194cbf.aspx</pingback:target>
      <dc:creator>Oren Ellenbogen</dc:creator>
      <wfw:comment>http://lnbogen.com/CommentView,guid,2da7c0ea-d987-4343-a2ba-6d6d6b194cbf.aspx</wfw:comment>
      <wfw:commentRss>http://lnbogen.com/SyndicationService.asmx/GetEntryCommentsRss?guid=2da7c0ea-d987-4343-a2ba-6d6d6b194cbf</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
“We need to support registration in the application. Here are some details, how many
days to develop?” -- Where should you start from? Should you simply throw a number?
Maybe read it first and use your gut feeling, your experience? Is there a trap here?
Although there are no recipes for estimating successfully™, I want to elaborate on
the options in front of us, before we dig into the details. 
</p>
        <h5>
        </h5>
        <h4>Guesstimate everything months in advance by 20 seconds of thought
</h4>
        <p>
If you are able to read a Feature specification and give estimation based on “whatever
works for you”, you win! For small features this should probably be as simple as pie,
but <b>what about the big ones?</b> Still easy?
</p>
        <h5>
        </h5>
        <h4>“We have someone who can do it with some sort of dark magic ball !”
</h4>
        <p>
I call him (or her) God. If you have God in your company, you win!
</p>
        <h5>
        </h5>
        <h4>(1) Estimate by detailed breakdown
</h4>
        <p>
Giving proper estimation without feeling bad about it 10 seconds later is not cheap.
I don’t care how much experience you have. So, <strong>are you ready to invest</strong>?
You should not only consider coding effort, but also organization time - testing,
deployment, monitoring, bug fixing etc. After you have this in mind, did you consider
risks? What about 3<sup>rd</sup> party integration? What about inexperienced developer
who might work on this feature? 
</p>
        <p>
One way to provide detailed estimation is by actually doing the Design (of the solution)
and bring one to the table; This means doing a Design Review with your peers, break
the feature into tasks, estimate hours needed per task and give very solid numbers.
You can do it by yourself, you can do it with others; the price is not 20 seconds,
but this is highly useful for solid estimation.
</p>
        <h4>Wait, Context is king!
</h4>
        <p>
Before you start throwing numbers into the air or diving into an expensive design
to come up with estimation, what is expected of you? 
</p>
        <p>
1. <b>Purpose </b>– how your estimation is going to be used? To determine roadmap?
To understand feasibility? For prioritization between 2 Features? Each might require
different “estimation plan”
</p>
        <p>
2. <b>Size</b> - is it good enough to say “it’s a big feature” or maybe “it’s around
20-40 days” or maybe “it’s 24 hours”? 
</p>
        <h4>Back to your options list
</h4>
        <p>
Well, you could estimate by detailed breakdown, if you really need low granularity.
Sometimes, rough estimations might be enough. What now?
</p>
        <h4>(2) Estimate by personal hunch
</h4>
        <p>
You can obviously estimate based on your personal hunch, taking into consideration
organization time, risks and what not. In many cases, assuming you’ve got enough “gut
feeling” built by your sheer experience, this should suffice to build roadmap or understand
feasibility. If this is the expectation, it’s probably the cheapest way to provide
numbers.
</p>
        <h4>(3) Estimate by collective hunch
</h4>
        <p>
You can improve (or at least feel more confident) granularity by adding one or more
experienced teammates into the mix, double-checking your hunches and forming a collective
hunch.
</p>
        <h4>(4) Estimate by team hunch
</h4>
        <p>
Again, more people involved might mean better estimation, due to larger feedback.
There is the obvious risk of “2 people, 3 opinions”, but at least you’ll have some
other, non imaginary, voices of sense.
</p>
        <h4>What does it all mean?
</h4>
Each method offers some advantages and suffers from some inner faults. Understand
the context and pick wisely. Accept the fact that things change and features might
be thrown away - do not waste time on estimation more than is really required. More
about features estimation to follow… <img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=2da7c0ea-d987-4343-a2ba-6d6d6b194cbf" /></body>
      <title>Estimating Features: options, context and God</title>
      <guid isPermaLink="false">http://lnbogen.com/PermaLink,guid,2da7c0ea-d987-4343-a2ba-6d6d6b194cbf.aspx</guid>
      <link>http://lnbogen.com/2010/07/19/EstimatingFeaturesOptionsContextAndGod.aspx</link>
      <pubDate>Mon, 19 Jul 2010 22:09:30 GMT</pubDate>
      <description>&lt;p&gt;
“We need to support registration in the application. Here are some details, how many
days to develop?” -- Where should you start from? Should you simply throw a number?
Maybe read it first and use your gut feeling, your experience? Is there a trap here?
Although there are no recipes for estimating successfully™, I want to elaborate on
the options in front of us, before we dig into the details. 
&lt;/p&gt;
&lt;h5&gt;
&lt;/h5&gt;
&lt;h4&gt;Guesstimate everything months in advance by 20 seconds of thought
&lt;/h4&gt;
&lt;p&gt;
If you are able to read a Feature specification and give estimation based on “whatever
works for you”, you win! For small features this should probably be as simple as pie,
but &lt;b&gt;what about the big ones?&lt;/b&gt; Still easy?
&lt;/p&gt;
&lt;h5&gt;
&lt;/h5&gt;
&lt;h4&gt;“We have someone who can do it with some sort of dark magic ball !”
&lt;/h4&gt;
&lt;p&gt;
I call him (or her) God. If you have God in your company, you win!
&lt;/p&gt;
&lt;h5&gt;
&lt;/h5&gt;
&lt;h4&gt;(1) Estimate by detailed breakdown
&lt;/h4&gt;
&lt;p&gt;
Giving proper estimation without feeling bad about it 10 seconds later is not cheap.
I don’t care how much experience you have. So, &lt;strong&gt;are you ready to invest&lt;/strong&gt;?
You should not only consider coding effort, but also organization time - testing,
deployment, monitoring, bug fixing etc. After you have this in mind, did you consider
risks? What about 3&lt;sup&gt;rd&lt;/sup&gt; party integration? What about inexperienced developer
who might work on this feature? 
&lt;/p&gt;
&lt;p&gt;
One way to provide detailed estimation is by actually doing the Design (of the solution)
and bring one to the table; This means doing a Design Review with your peers, break
the feature into tasks, estimate hours needed per task and give very solid numbers.
You can do it by yourself, you can do it with others; the price is not 20 seconds,
but this is highly useful for solid estimation.
&lt;/p&gt;
&lt;h4&gt;Wait, Context is king!
&lt;/h4&gt;
&lt;p&gt;
Before you start throwing numbers into the air or diving into an expensive design
to come up with estimation, what is expected of you? 
&lt;/p&gt;
&lt;p&gt;
1. &lt;b&gt;Purpose &lt;/b&gt;– how your estimation is going to be used? To determine roadmap?
To understand feasibility? For prioritization between 2 Features? Each might require
different “estimation plan”
&lt;/p&gt;
&lt;p&gt;
2. &lt;b&gt;Size&lt;/b&gt; - is it good enough to say “it’s a big feature” or maybe “it’s around
20-40 days” or maybe “it’s 24 hours”? 
&lt;/p&gt;
&lt;h4&gt;Back to your options list
&lt;/h4&gt;
&lt;p&gt;
Well, you could estimate by detailed breakdown, if you really need low granularity.
Sometimes, rough estimations might be enough. What now?
&lt;/p&gt;
&lt;h4&gt;(2) Estimate by personal hunch
&lt;/h4&gt;
&lt;p&gt;
You can obviously estimate based on your personal hunch, taking into consideration
organization time, risks and what not. In many cases, assuming you’ve got enough “gut
feeling” built by your sheer experience, this should suffice to build roadmap or understand
feasibility. If this is the expectation, it’s probably the cheapest way to provide
numbers.
&lt;/p&gt;
&lt;h4&gt;(3) Estimate by collective hunch
&lt;/h4&gt;
&lt;p&gt;
You can improve (or at least feel more confident) granularity by adding one or more
experienced teammates into the mix, double-checking your hunches and forming a collective
hunch.
&lt;/p&gt;
&lt;h4&gt;(4) Estimate by team hunch
&lt;/h4&gt;
&lt;p&gt;
Again, more people involved might mean better estimation, due to larger feedback.
There is the obvious risk of “2 people, 3 opinions”, but at least you’ll have some
other, non imaginary, voices of sense.
&lt;/p&gt;
&lt;h4&gt;What does it all mean?
&lt;/h4&gt;
Each method offers some advantages and suffers from some inner faults. Understand
the context and pick wisely. Accept the fact that things change and features might
be thrown away - do not waste time on estimation more than is really required. More
about features estimation to follow… &lt;img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=2da7c0ea-d987-4343-a2ba-6d6d6b194cbf" /&gt;</description>
      <comments>http://lnbogen.com/CommentView,guid,2da7c0ea-d987-4343-a2ba-6d6d6b194cbf.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://lnbogen.com/Trackback.aspx?guid=68336630-dd3c-48f0-912d-413f469937a6</trackback:ping>
      <pingback:server>http://lnbogen.com/pingback.aspx</pingback:server>
      <pingback:target>http://lnbogen.com/PermaLink,guid,68336630-dd3c-48f0-912d-413f469937a6.aspx</pingback:target>
      <dc:creator>Oren Ellenbogen</dc:creator>
      <wfw:comment>http://lnbogen.com/CommentView,guid,68336630-dd3c-48f0-912d-413f469937a6.aspx</wfw:comment>
      <wfw:commentRss>http://lnbogen.com/SyndicationService.asmx/GetEntryCommentsRss?guid=68336630-dd3c-48f0-912d-413f469937a6</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
With a given time window and people, how much can you pull off?
</p>
        <p>
Many managers are requested to offer a plan. Knowing how much you can actually deliver
is one of the toughest question managers need to face with. It’s too elusive to measure
it correctly, and there are many moving parts. You need to please your customers and
your teammates, creating a plan to deliver external and <a href="http://lnbogen.com/2010/07/12/TechnicalFeaturesInYourBacklog.aspx">internal
value</a>, picking wisely what is really feasible. 
</p>
        <p>
I tried to come up with a few tips to make this process a bit more structured, making
it less elusive, less daunting and less “we’ll see as we go”:
</p>
        <p>
1. <b>Pick by External Priority – </b>what<b></b>will make your customers happy?
Make sure you have the right priority from product / business teams and give it high
consideration in your planning. At the end of the day, you are here to provide value
to your customers.
</p>
        <p>
2. <b>Pick by Internal Priority</b> – making sure you are <a href="http://lnbogen.com/2010/07/10/ConfidenceBuildingMakeItPartOfYourSprint.aspx">building
confidence as part of your Sprint.</a> You want to excel over time, you must devote
the time to allow it.
</p>
        <p>
3. <b>Pick by Features Size –</b> try to see how many features of each size you can
deliver in a Sprint. For example, after 2-3 Sprints, you might notice that you’re
usually able to do X big features, Y medium features and Z small features. Usually
there is a connection between feature size and QA effort or deployment effort, thus
making this size estimation very useful. 
</p>
        <p>
4. <b>Pick by Velocity –</b> if you know you’re able to complete X Story Points (or
Ideal Days) every sprint, based on your last 2-3 Sprints, use this information to
pick Features to fit this number give or take. I always believe that you should aim
for ~120%, to allow positive pressure which encourages self-improvement ideas, but
don’t aim for failure or naïve success. There is nothing to gain there.
</p>
        <p>
5. <b>Pick by Personal Growth – </b>you might pick some features to allow inner growth
in your team. For example, you might notice a need to strengthen one of your teammate’s
leadership skills by allowing her/him to lead bigger features. It doesn’t mean you
should act naively; organization needs is more important than personal whims, but <b>the
organization will never actively push toward personal growth as a goal</b>. It’s up
to you to make time for it.
</p>
        <img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=68336630-dd3c-48f0-912d-413f469937a6" />
      </body>
      <title>Planning your Sprint</title>
      <guid isPermaLink="false">http://lnbogen.com/PermaLink,guid,68336630-dd3c-48f0-912d-413f469937a6.aspx</guid>
      <link>http://lnbogen.com/2010/07/19/PlanningYourSprint.aspx</link>
      <pubDate>Mon, 19 Jul 2010 14:17:56 GMT</pubDate>
      <description>&lt;p&gt;
With a given time window and people, how much can you pull off?
&lt;/p&gt;
&lt;p&gt;
Many managers are requested to offer a plan. Knowing how much you can actually deliver
is one of the toughest question managers need to face with. It’s too elusive to measure
it correctly, and there are many moving parts. You need to please your customers and
your teammates, creating a plan to deliver external and &lt;a href="http://lnbogen.com/2010/07/12/TechnicalFeaturesInYourBacklog.aspx"&gt;internal
value&lt;/a&gt;, picking wisely what is really feasible. 
&lt;/p&gt;
&lt;p&gt;
I tried to come up with a few tips to make this process a bit more structured, making
it less elusive, less daunting and less “we’ll see as we go”:
&lt;/p&gt;
&lt;p&gt;
1. &lt;b&gt;Pick by External Priority – &lt;/b&gt;what&lt;b&gt; &lt;/b&gt;will make your customers happy?
Make sure you have the right priority from product / business teams and give it high
consideration in your planning. At the end of the day, you are here to provide value
to your customers.
&lt;/p&gt;
&lt;p&gt;
2. &lt;b&gt;Pick by Internal Priority&lt;/b&gt; – making sure you are &lt;a href="http://lnbogen.com/2010/07/10/ConfidenceBuildingMakeItPartOfYourSprint.aspx"&gt;building
confidence as part of your Sprint.&lt;/a&gt; You want to excel over time, you must devote
the time to allow it.
&lt;/p&gt;
&lt;p&gt;
3. &lt;b&gt;Pick by Features Size –&lt;/b&gt; try to see how many features of each size you can
deliver in a Sprint. For example, after 2-3 Sprints, you might notice that you’re
usually able to do X big features, Y medium features and Z small features. Usually
there is a connection between feature size and QA effort or deployment effort, thus
making this size estimation very useful. 
&lt;/p&gt;
&lt;p&gt;
4. &lt;b&gt;Pick by Velocity –&lt;/b&gt; if you know you’re able to complete X Story Points (or
Ideal Days) every sprint, based on your last 2-3 Sprints, use this information to
pick Features to fit this number give or take. I always believe that you should aim
for ~120%, to allow positive pressure which encourages self-improvement ideas, but
don’t aim for failure or naïve success. There is nothing to gain there.
&lt;/p&gt;
&lt;p&gt;
5. &lt;b&gt;Pick by Personal Growth – &lt;/b&gt;you might pick some features to allow inner growth
in your team. For example, you might notice a need to strengthen one of your teammate’s
leadership skills by allowing her/him to lead bigger features. It doesn’t mean you
should act naively; organization needs is more important than personal whims, but &lt;b&gt;the
organization will never actively push toward personal growth as a goal&lt;/b&gt;. It’s up
to you to make time for it.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=68336630-dd3c-48f0-912d-413f469937a6" /&gt;</description>
      <comments>http://lnbogen.com/CommentView,guid,68336630-dd3c-48f0-912d-413f469937a6.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://lnbogen.com/Trackback.aspx?guid=eced51d2-fe62-4a69-b9a7-36d4be683349</trackback:ping>
      <pingback:server>http://lnbogen.com/pingback.aspx</pingback:server>
      <pingback:target>http://lnbogen.com/PermaLink,guid,eced51d2-fe62-4a69-b9a7-36d4be683349.aspx</pingback:target>
      <dc:creator>Oren Ellenbogen</dc:creator>
      <wfw:comment>http://lnbogen.com/CommentView,guid,eced51d2-fe62-4a69-b9a7-36d4be683349.aspx</wfw:comment>
      <wfw:commentRss>http://lnbogen.com/SyndicationService.asmx/GetEntryCommentsRss?guid=eced51d2-fe62-4a69-b9a7-36d4be683349</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
You probably meant to write <b>mail</b> but the keyboard fooled you; but hey! you
can read about leadership, development and coding instead of reading your emails!
What a win!
</p>
        <p>
(I’m curious to see if you reached my blog because of this post, if you did - please
“Like” this post. Viva la <a href="http://www.google.com">Google</a> ;))
</p>
        <img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=eced51d2-fe62-4a69-b9a7-36d4be683349" />
      </body>
      <title>צשןך</title>
      <guid isPermaLink="false">http://lnbogen.com/PermaLink,guid,eced51d2-fe62-4a69-b9a7-36d4be683349.aspx</guid>
      <link>http://lnbogen.com/2010/07/19/%d7%a6%d7%a9%d7%9f%d7%9a.aspx</link>
      <pubDate>Mon, 19 Jul 2010 12:49:09 GMT</pubDate>
      <description>&lt;p&gt;
You probably meant to write &lt;b&gt;mail&lt;/b&gt; but the keyboard fooled you; but hey! you
can read about leadership, development and coding instead of reading your emails!
What a win!
&lt;/p&gt;
&lt;p&gt;
(I’m curious to see if you reached my blog because of this post, if you did - please
“Like” this post. Viva la &lt;a href="http://www.google.com"&gt;Google&lt;/a&gt; ;))
&lt;/p&gt;
&lt;img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=eced51d2-fe62-4a69-b9a7-36d4be683349" /&gt;</description>
      <comments>http://lnbogen.com/CommentView,guid,eced51d2-fe62-4a69-b9a7-36d4be683349.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://lnbogen.com/Trackback.aspx?guid=bde22e9b-5a3e-46c7-876a-e489ea1d671e</trackback:ping>
      <pingback:server>http://lnbogen.com/pingback.aspx</pingback:server>
      <pingback:target>http://lnbogen.com/PermaLink,guid,bde22e9b-5a3e-46c7-876a-e489ea1d671e.aspx</pingback:target>
      <dc:creator>Oren Ellenbogen</dc:creator>
      <wfw:comment>http://lnbogen.com/CommentView,guid,bde22e9b-5a3e-46c7-876a-e489ea1d671e.aspx</wfw:comment>
      <wfw:commentRss>http://lnbogen.com/SyndicationService.asmx/GetEntryCommentsRss?guid=bde22e9b-5a3e-46c7-876a-e489ea1d671e</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
After talking quite a bit about <u><a href="http://lnbogen.com/2010/07/12/HowToBreakFeatureIntoTasks.aspx">how
to break a Feature into tasks</a></u> and <u><a href="http://lnbogen.com/2010/07/13/HowToBreakFeatureIntoTasksNoLeftovers.aspx">avoiding
leftovers</a></u>, I would like to address the natural habit of what I call “blindly
moving forward”. How often do you find yourself after 3 days of coding, still unclear
of how many days are left or whether or not you’re closer to the end? How often you
tend to forget what exactly you originally meant by “the end”? How often you find
yourself feeling <b>too invested</b> to stop and figure out what the hack is going
on? 
</p>
        <p>
We are, naturally, very outcome oriented. “I need this Feature done until tomorrow”
or “I need to see your plans for next Sprint until end of day” keep pushing us during
our daily effort. We are driven to supply outcomes, losing the ability to track the
big picture because of vast, ever growing demand for results. Just like multi-threading
coding, it’s not enough to throw some languages, tools or IDE with cool debugging
options to the mix; <b>we need to change the way we think and act</b>, to supply visibility
rather than mere progress. 
</p>
        <p>
When breaking a Feature, ask yourself these questions:
</p>
        <ol>
          <li>
Do you fully understand the Feature business value?</li>
          <li>
Do you have Risks mapping (what can go wrong and what to do on such case)?</li>
          <li>
Do you have the right people in-sync? (QA, Operations or other relevant team members)</li>
          <li>
Do you <u><a href="http://lnbogen.com/2010/07/12/HowToBreakFeatureIntoTasks.aspx">break
the Features by layers or by verticals</a></u>? Are you OK with that?</li>
          <li>
Do you have low granularity of tasks (up to 3-4 hours)? Enough to make you feel good
about “no surprises”? Enough to allow others to join you?</li>
          <li>
Do you know when you’ll be code-ready? Can you commit to a date?</li>
        </ol>
        <p>
As a Team leader, you should ask for visibility from your teammates. They should <u>earn
your confidence</u> by offering a complete plan, knowing what the expected outcome
is and communicate their status during the development time. If you ask me, I will
always prefer better understanding of current status over naïve “I managed to progress
today”. 
</p>
        <p>
As a developer, you should aspire for complete visibility to make sure you’re moving
in the right path. This will allow others to give you honest feedback, join you if
you’re a bit behind schedule and practice leadership in a way that is building confidence
in your organization: people will feel that you know what you’re doing and will trust
your good judgment and commitments. <b>They will feel more confident when you’re behind
the wheel</b>.
</p>
        <p>
If you feel that this is an overhead, you probably in a misconception of the time
it will take you versus the time it will save you. Answering the above shouldn’t take
5 days; it should take couple of hours. This will ease your mind regarding “did I
miss something?”, saving you hours of juggling between <b>building confidence</b> with
your manager(“Can you update your progress?”, “Where are you standing?”) and actually <strong>building
the software</strong>.
</p>
        <img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=bde22e9b-5a3e-46c7-876a-e489ea1d671e" />
      </body>
      <title>Visibility over Progress</title>
      <guid isPermaLink="false">http://lnbogen.com/PermaLink,guid,bde22e9b-5a3e-46c7-876a-e489ea1d671e.aspx</guid>
      <link>http://lnbogen.com/2010/07/19/VisibilityOverProgress.aspx</link>
      <pubDate>Mon, 19 Jul 2010 12:34:17 GMT</pubDate>
      <description>&lt;p&gt;
After talking quite a bit about &lt;u&gt;&lt;a href="http://lnbogen.com/2010/07/12/HowToBreakFeatureIntoTasks.aspx"&gt;how
to break a Feature into tasks&lt;/a&gt;&lt;/u&gt; and &lt;u&gt;&lt;a href="http://lnbogen.com/2010/07/13/HowToBreakFeatureIntoTasksNoLeftovers.aspx"&gt;avoiding
leftovers&lt;/a&gt;&lt;/u&gt;, I would like to address the natural habit of what I call “blindly
moving forward”. How often do you find yourself after 3 days of coding, still unclear
of how many days are left or whether or not you’re closer to the end? How often you
tend to forget what exactly you originally meant by “the end”? How often you find
yourself feeling &lt;b&gt;too invested&lt;/b&gt; to stop and figure out what the hack is going
on? 
&lt;/p&gt;
&lt;p&gt;
We are, naturally, very outcome oriented. “I need this Feature done until tomorrow”
or “I need to see your plans for next Sprint until end of day” keep pushing us during
our daily effort. We are driven to supply outcomes, losing the ability to track the
big picture because of vast, ever growing demand for results. Just like multi-threading
coding, it’s not enough to throw some languages, tools or IDE with cool debugging
options to the mix; &lt;b&gt;we need to change the way we think and act&lt;/b&gt;, to supply visibility
rather than mere progress. 
&lt;/p&gt;
&lt;p&gt;
When breaking a Feature, ask yourself these questions:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Do you fully understand the Feature business value?&lt;/li&gt;
&lt;li&gt;
Do you have Risks mapping (what can go wrong and what to do on such case)?&lt;/li&gt;
&lt;li&gt;
Do you have the right people in-sync? (QA, Operations or other relevant team members)&lt;/li&gt;
&lt;li&gt;
Do you &lt;u&gt;&lt;a href="http://lnbogen.com/2010/07/12/HowToBreakFeatureIntoTasks.aspx"&gt;break
the Features by layers or by verticals&lt;/a&gt;&lt;/u&gt;? Are you OK with that?&lt;/li&gt;
&lt;li&gt;
Do you have low granularity of tasks (up to 3-4 hours)? Enough to make you feel good
about “no surprises”? Enough to allow others to join you?&lt;/li&gt;
&lt;li&gt;
Do you know when you’ll be code-ready? Can you commit to a date?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
As a Team leader, you should ask for visibility from your teammates. They should &lt;u&gt;earn
your confidence&lt;/u&gt; by offering a complete plan, knowing what the expected outcome
is and communicate their status during the development time. If you ask me, I will
always prefer better understanding of current status over naïve “I managed to progress
today”. 
&lt;/p&gt;
&lt;p&gt;
As a developer, you should aspire for complete visibility to make sure you’re moving
in the right path. This will allow others to give you honest feedback, join you if
you’re a bit behind schedule and practice leadership in a way that is building confidence
in your organization: people will feel that you know what you’re doing and will trust
your good judgment and commitments. &lt;b&gt;They will feel more confident when you’re behind
the wheel&lt;/b&gt;.
&lt;/p&gt;
&lt;p&gt;
If you feel that this is an overhead, you probably in a misconception of the time
it will take you versus the time it will save you. Answering the above shouldn’t take
5 days; it should take couple of hours. This will ease your mind regarding “did I
miss something?”, saving you hours of juggling between &lt;b&gt;building confidence&lt;/b&gt; with
your manager(“Can you update your progress?”, “Where are you standing?”) and actually &lt;strong&gt;building
the software&lt;/strong&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=bde22e9b-5a3e-46c7-876a-e489ea1d671e" /&gt;</description>
      <comments>http://lnbogen.com/CommentView,guid,bde22e9b-5a3e-46c7-876a-e489ea1d671e.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://lnbogen.com/Trackback.aspx?guid=37face7d-4baf-43d0-8a61-15020c29894c</trackback:ping>
      <pingback:server>http://lnbogen.com/pingback.aspx</pingback:server>
      <pingback:target>http://lnbogen.com/PermaLink,guid,37face7d-4baf-43d0-8a61-15020c29894c.aspx</pingback:target>
      <dc:creator>Oren Ellenbogen</dc:creator>
      <wfw:comment>http://lnbogen.com/CommentView,guid,37face7d-4baf-43d0-8a61-15020c29894c.aspx</wfw:comment>
      <wfw:commentRss>http://lnbogen.com/SyndicationService.asmx/GetEntryCommentsRss?guid=37face7d-4baf-43d0-8a61-15020c29894c</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Leaving a comment is considered a bigger commitment than just voting “Like” or “Recommend”
on a post you feel is useful. I believe that such information, which posts you find
interesting, is <strong>also</strong> useful to other readers. With this information,
others can find more recommended posts, even though they don’t necessarily contain
50 comments. 
</p>
        <p>
This is why I added <a href="http://developers.facebook.com/docs/reference/plugins/like">“Facebook
Like Button”</a> to my blog. 
<br />
If you Like it, let me know :)
</p>
        <img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=37face7d-4baf-43d0-8a61-15020c29894c" />
      </body>
      <title>Lnbogen meets Facebook Like</title>
      <guid isPermaLink="false">http://lnbogen.com/PermaLink,guid,37face7d-4baf-43d0-8a61-15020c29894c.aspx</guid>
      <link>http://lnbogen.com/2010/07/15/LnbogenMeetsFacebookLike.aspx</link>
      <pubDate>Thu, 15 Jul 2010 12:58:52 GMT</pubDate>
      <description>&lt;p&gt;
Leaving a comment is considered a bigger commitment than just voting “Like” or “Recommend”
on a post you feel is useful. I believe that such information, which posts you find
interesting, is &lt;strong&gt;also&lt;/strong&gt; useful to other readers. With this information,
others can find more recommended posts, even though they don’t necessarily contain
50 comments. 
&lt;/p&gt;
&lt;p&gt;
This is why I added &lt;a href="http://developers.facebook.com/docs/reference/plugins/like"&gt;“Facebook
Like Button”&lt;/a&gt; to my blog. 
&lt;br /&gt;
If you Like it, let me know :)
&lt;/p&gt;
&lt;img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=37face7d-4baf-43d0-8a61-15020c29894c" /&gt;</description>
      <comments>http://lnbogen.com/CommentView,guid,37face7d-4baf-43d0-8a61-15020c29894c.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://lnbogen.com/Trackback.aspx?guid=1639e3a1-39f8-4ca3-b456-271c50e43f78</trackback:ping>
      <pingback:server>http://lnbogen.com/pingback.aspx</pingback:server>
      <pingback:target>http://lnbogen.com/PermaLink,guid,1639e3a1-39f8-4ca3-b456-271c50e43f78.aspx</pingback:target>
      <dc:creator>Oren Ellenbogen</dc:creator>
      <wfw:comment>http://lnbogen.com/CommentView,guid,1639e3a1-39f8-4ca3-b456-271c50e43f78.aspx</wfw:comment>
      <wfw:commentRss>http://lnbogen.com/SyndicationService.asmx/GetEntryCommentsRss?guid=1639e3a1-39f8-4ca3-b456-271c50e43f78</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Many times when picking Features as execution unit, it’s hard to fit a big Feature
into Sprint. This always cause the feeling of Features is too big as an execution
units, leading some organization to prefer User Stories over Features, <u><a href="http://lnbogen.com/2010/07/10/UserStoriesDoNotReplaceFeatures.aspx">wrongfully
neglecting Features</a></u> over time. User Stories as execution unit are not the
optimal way to go as they don’t provide enough value by themselves - you need to have
“enough” Story Points to release a valuable version to your customers. They are also
too abstract to understand the big picture, missing the overall why behind them. I
believe that <u><a href="http://lnbogen.com/2010/07/12/HowToBreakFeatureIntoTasks.aspx">Feature
broken into Tasks</a></u> is a better approach and better execution unit. Obviously,
there are multiple approaches to deal with big Features. You should pick the right
tool according to requirements and people involved.
</p>
        <h4>Breaking Big Feature, some options:
</h4>
        <p>
1. <b>Extract design from execution:</b> You can complete the design of a big Feature
in Sprint 1 and implement it on Sprint 2. This way, instead of having a very big design
effort and implementation effort on the same Sprint, you can use the first Sprint
to understand effort and risks and use the second sprint to implement and deliver
the goods, after understanding ROI better.
</p>
        <p>
2. <b>Extract framework from client:</b> User Stories, just like Scrum in a way, introduce
too many <a href="http://blog.assembla.com/assemblablog/tabid/12618/bid/5543/Do-s-and-Don-ts-for-User-Stories-Use-Cases-Scenarios.aspx">“Do’s
and Don’ts”</a>. For example, it’s considered a <u><a href="http://blog.agilebuddy.com/2010/01/technical-stories---are-they-included-on-the-backlog.html">“bad
practice” to have Technical User Stories</a></u>. I believe that if the framework
has specific needs (raised by the Feature) and it’s easy to break it out from the
Feature itself (user behavior), it’s perfectly okay. It’s actually another step in
the right way to <u><a href="http://lnbogen.com/2010/07/10/ConfidenceBuildingMakeItPartOfYourSprint.aspx">build
confidence as part of your Sprint</a></u>!
</p>
        <p>
3. <b>Break big value to multiple smaller values (*caution*):</b> Features, by nature,
bring a value to your customers. It is possible though, to break the value into multiple
Features, each carries only part of the value, without damaging the overall behavior.
Instead of creating a “Search Engine” feature, it’s perfectly fine to define “People
Search” and “Articles Search” as different features, each bringing different value.
It’s even better to define sub Features inside “People Search” to enrich user experience
over time, according to feedback by your customers. <em>Caution</em>: you need to
do it carefully, sometimes breaking a Feature into multiple Features is silly as each
doesn’t bring enough value by itself, until all of the pieces come together. Still,
this is a powerful question to use: “Can we deliver real value to our customers by
breaking this into multiple parts?”. 
</p>
        <p>
Most of the time, your <a href="http://lnbogen.com/2010/07/08/SprintPlanJustEnoughDoItReflect.aspx">Features
should be small enough to fit a Sprint</a>. It’s that simple - if the features are
usually estimated in 2 weeks, don’t have a 1 week sprint. That being said, you should
have the right (or at least some) tools to handle big Features. <strong>If it wasn’t
obvious so far, don’t be afraid to “twist and mix Agile”</strong>. You owe it to yourself
to understand why you’re doing things and adjust it if needed, even if it’s written
in some book that it’s a “bad practice”. It might be bad for them, but it might be
perfectly fine for you.
</p>
        <img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=1639e3a1-39f8-4ca3-b456-271c50e43f78" />
      </body>
      <title>Adjusting big Features to Sprints</title>
      <guid isPermaLink="false">http://lnbogen.com/PermaLink,guid,1639e3a1-39f8-4ca3-b456-271c50e43f78.aspx</guid>
      <link>http://lnbogen.com/2010/07/13/AdjustingBigFeaturesToSprints.aspx</link>
      <pubDate>Tue, 13 Jul 2010 12:46:33 GMT</pubDate>
      <description>&lt;p&gt;
Many times when picking Features as execution unit, it’s hard to fit a big Feature
into Sprint. This always cause the feeling of Features is too big as an execution
units, leading some organization to prefer User Stories over Features, &lt;u&gt;&lt;a href="http://lnbogen.com/2010/07/10/UserStoriesDoNotReplaceFeatures.aspx"&gt;wrongfully
neglecting Features&lt;/a&gt;&lt;/u&gt; over time. User Stories as execution unit are not the
optimal way to go as they don’t provide enough value by themselves - you need to have
“enough” Story Points to release a valuable version to your customers. They are also
too abstract to understand the big picture, missing the overall why behind them. I
believe that &lt;u&gt;&lt;a href="http://lnbogen.com/2010/07/12/HowToBreakFeatureIntoTasks.aspx"&gt;Feature
broken into Tasks&lt;/a&gt;&lt;/u&gt; is a better approach and better execution unit. Obviously,
there are multiple approaches to deal with big Features. You should pick the right
tool according to requirements and people involved.
&lt;/p&gt;
&lt;h4&gt;Breaking Big Feature, some options:
&lt;/h4&gt;
&lt;p&gt;
1. &lt;b&gt;Extract design from execution:&lt;/b&gt; You can complete the design of a big Feature
in Sprint 1 and implement it on Sprint 2. This way, instead of having a very big design
effort and implementation effort on the same Sprint, you can use the first Sprint
to understand effort and risks and use the second sprint to implement and deliver
the goods, after understanding ROI better.
&lt;/p&gt;
&lt;p&gt;
2. &lt;b&gt;Extract framework from client:&lt;/b&gt; User Stories, just like Scrum in a way, introduce
too many &lt;a href="http://blog.assembla.com/assemblablog/tabid/12618/bid/5543/Do-s-and-Don-ts-for-User-Stories-Use-Cases-Scenarios.aspx"&gt;“Do’s
and Don’ts”&lt;/a&gt;. For example, it’s considered a &lt;u&gt;&lt;a href="http://blog.agilebuddy.com/2010/01/technical-stories---are-they-included-on-the-backlog.html"&gt;“bad
practice” to have Technical User Stories&lt;/a&gt;&lt;/u&gt;. I believe that if the framework
has specific needs (raised by the Feature) and it’s easy to break it out from the
Feature itself (user behavior), it’s perfectly okay. It’s actually another step in
the right way to &lt;u&gt;&lt;a href="http://lnbogen.com/2010/07/10/ConfidenceBuildingMakeItPartOfYourSprint.aspx"&gt;build
confidence as part of your Sprint&lt;/a&gt;&lt;/u&gt;!
&lt;/p&gt;
&lt;p&gt;
3. &lt;b&gt;Break big value to multiple smaller values (*caution*):&lt;/b&gt; Features, by nature,
bring a value to your customers. It is possible though, to break the value into multiple
Features, each carries only part of the value, without damaging the overall behavior.
Instead of creating a “Search Engine” feature, it’s perfectly fine to define “People
Search” and “Articles Search” as different features, each bringing different value.
It’s even better to define sub Features inside “People Search” to enrich user experience
over time, according to feedback by your customers. &lt;em&gt;Caution&lt;/em&gt;: you need to
do it carefully, sometimes breaking a Feature into multiple Features is silly as each
doesn’t bring enough value by itself, until all of the pieces come together. Still,
this is a powerful question to use: “Can we deliver real value to our customers by
breaking this into multiple parts?”. 
&lt;/p&gt;
&lt;p&gt;
Most of the time, your &lt;a href="http://lnbogen.com/2010/07/08/SprintPlanJustEnoughDoItReflect.aspx"&gt;Features
should be small enough to fit a Sprint&lt;/a&gt;. It’s that simple - if the features are
usually estimated in 2 weeks, don’t have a 1 week sprint. That being said, you should
have the right (or at least some) tools to handle big Features. &lt;strong&gt;If it wasn’t
obvious so far, don’t be afraid to “twist and mix Agile”&lt;/strong&gt;. You owe it to yourself
to understand why you’re doing things and adjust it if needed, even if it’s written
in some book that it’s a “bad practice”. It might be bad for them, but it might be
perfectly fine for you.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=1639e3a1-39f8-4ca3-b456-271c50e43f78" /&gt;</description>
      <comments>http://lnbogen.com/CommentView,guid,1639e3a1-39f8-4ca3-b456-271c50e43f78.aspx</comments>
      <category>Agile</category>
      <category>Management</category>
      <category>Scrum</category>
    </item>
    <item>
      <trackback:ping>http://lnbogen.com/Trackback.aspx?guid=bf30d2e5-88d5-47b5-b865-41eaba32c01e</trackback:ping>
      <pingback:server>http://lnbogen.com/pingback.aspx</pingback:server>
      <pingback:target>http://lnbogen.com/PermaLink,guid,bf30d2e5-88d5-47b5-b865-41eaba32c01e.aspx</pingback:target>
      <dc:creator>Oren Ellenbogen</dc:creator>
      <wfw:comment>http://lnbogen.com/CommentView,guid,bf30d2e5-88d5-47b5-b865-41eaba32c01e.aspx</wfw:comment>
      <wfw:commentRss>http://lnbogen.com/SyndicationService.asmx/GetEntryCommentsRss?guid=bf30d2e5-88d5-47b5-b865-41eaba32c01e</wfw:commentRss>
      <title>Beautiful Code?</title>
      <guid isPermaLink="false">http://lnbogen.com/PermaLink,guid,bf30d2e5-88d5-47b5-b865-41eaba32c01e.aspx</guid>
      <link>http://lnbogen.com/2010/07/13/BeautifulCode.aspx</link>
      <pubDate>Tue, 13 Jul 2010 09:44:27 GMT</pubDate>
      <description>&lt;p&gt;
I remember enjoying &lt;a href="http://www.codinghorror.com/blog/"&gt;Jeff Atwood’s&lt;/a&gt; (aka
Coding Horror) post about &lt;u&gt;&lt;a href="http://www.codinghorror.com/blog/2008/02/code-isnt-beautiful.html"&gt;“code
isn’t beautiful”&lt;/a&gt;&lt;/u&gt;. It took me a while explaining to myself why people are chasing
after “beautiful code” so much. Why people are so passionate finding or forming beautiful
code? Should great painters talk about beautiful colors or beautiful paintbrushes?
I always thought they appreciate the entire painting, created and driven from emotions,
dreams, ideas, styles and yes - colors &amp; paintbrushes. They appreciate &lt;strong&gt;“the
all” &lt;/strong&gt;more then the exact technicalities. Why are we trying to figure out
the best paintbrush to use or the best color? Why not trying to figure out the "best
all", the best experience, the best value, the best process?
&lt;/p&gt;
&lt;p&gt;
I would define Beautiful Software as a surface to allow three magic abilities to emerge:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
It should be easy to add new Features.&lt;/li&gt;
&lt;li&gt;
It should be easy to change existing Features.&lt;/li&gt;
&lt;li&gt;
It should be easy for new teammate to become productive almost immediately.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
If you’re able to have these abilities in your painting, your software, then you’re
probably doing something beautiful; you probably figured out the correct paintbrushes,
the right colors and most important - how to use them wisely to introduce true beauty. 
&lt;/p&gt;
&lt;p&gt;
I am not mentioning pseudo-code, language specific or whether or not testing is worthy.
There are many ways to paint beautifully, it is up to you to figure out &lt;b&gt;what makes
software beautiful to you&lt;/b&gt; and figure out the right tools and process to achieve
it. Don’t hang to tight to the “perfect algorithm” or “perfect Design Pattern”. There
is nothing neither perfect nor beautiful about color or paintbrush by itself.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=bf30d2e5-88d5-47b5-b865-41eaba32c01e" /&gt;</description>
      <comments>http://lnbogen.com/CommentView,guid,bf30d2e5-88d5-47b5-b865-41eaba32c01e.aspx</comments>
      <category>Agile</category>
      <category>Management</category>
    </item>
    <item>
      <trackback:ping>http://lnbogen.com/Trackback.aspx?guid=790ea949-9791-47f3-823f-0e0f36e01828</trackback:ping>
      <pingback:server>http://lnbogen.com/pingback.aspx</pingback:server>
      <pingback:target>http://lnbogen.com/PermaLink,guid,790ea949-9791-47f3-823f-0e0f36e01828.aspx</pingback:target>
      <dc:creator>Oren Ellenbogen</dc:creator>
      <wfw:comment>http://lnbogen.com/CommentView,guid,790ea949-9791-47f3-823f-0e0f36e01828.aspx</wfw:comment>
      <wfw:commentRss>http://lnbogen.com/SyndicationService.asmx/GetEntryCommentsRss?guid=790ea949-9791-47f3-823f-0e0f36e01828</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Once you decide <u><a href="http://lnbogen.com/2010/07/12/HowToBreakFeatureIntoTasks.aspx">how
to break a feature into tasks</a></u>, it’s crucial to make sure you don’t leave any
leftovers as part of the breakdown. Feature breakdown must include each and every
task to make it a <b>complete unit</b> you can deploy as part of a <u><a href="http://lnbogen.com/2010/07/08/VersionExtractReleasesFromSprints.aspx">version</a></u>.
Completeness means that not only a Feature is deployable and it can be monitored,
it’s also with great external quality (no major bugs left behind) and great internal
quality (design-review, QA test-cases review, code-review, UI review).
</p>
        <p>
You want to price a Feature by the gross organization time; this is the only way to
understand how much a Feature really costs. Knowing that, you can correctly price
future roadmap without needing “Bugs Elimination Sprint” or “Big Refactoring Sprint”
to introduce quality <strong>after</strong> things were delivered to your customers.
</p>
        <h4>No leftovers:
</h4>
        <p>
1. <b>Design review</b> – may it be over emails or formal meeting, the design should
be solid and well thought
</p>
        <p>
2. <b>QA test-cases review</b> – making sure QA will test the right things or add
more test cases for relevant edge-cases.
</p>
        <p>
3. <b>Testing time</b> - writing tests (unit + integration) should be priced as part
of the Feature, not after, not next sprint.
</p>
        <p>
4. <b>Code review</b> – for knowledge sharing and internal quality validation.
</p>
        <p>
5. <b>UI review</b> – making sure the UI look &amp; feel just like Product team wanted
it to be.
</p>
        <p>
6. <strong>Bug fixing + validation buffer</strong> – fixing major bugs should be priced
as well! if you’re not sure how much time to spend, start with 5-10% of the total
estimated effort, and learn from your experience (by Feature size, complexity etc)
</p>
        <p>
You can add more to this list, if the team/organization needs it. The idea is to make
sure that once a Feature is complete, you’re feeling great about it and got confidence
it won’t be fired back to the kitchen, to cook from scratch. You should have the same
confidence about changing an existing feature; it should be easy, voodoo-less and
highly testable to do so, with low chances of breaking other flows in the system.
</p>
        <img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=790ea949-9791-47f3-823f-0e0f36e01828" />
      </body>
      <title>How to break Feature into Tasks: no leftovers!</title>
      <guid isPermaLink="false">http://lnbogen.com/PermaLink,guid,790ea949-9791-47f3-823f-0e0f36e01828.aspx</guid>
      <link>http://lnbogen.com/2010/07/13/HowToBreakFeatureIntoTasksNoLeftovers.aspx</link>
      <pubDate>Tue, 13 Jul 2010 08:44:19 GMT</pubDate>
      <description>&lt;p&gt;
Once you decide &lt;u&gt;&lt;a href="http://lnbogen.com/2010/07/12/HowToBreakFeatureIntoTasks.aspx"&gt;how
to break a feature into tasks&lt;/a&gt;&lt;/u&gt;, it’s crucial to make sure you don’t leave any
leftovers as part of the breakdown. Feature breakdown must include each and every
task to make it a &lt;b&gt;complete unit&lt;/b&gt; you can deploy as part of a &lt;u&gt;&lt;a href="http://lnbogen.com/2010/07/08/VersionExtractReleasesFromSprints.aspx"&gt;version&lt;/a&gt;&lt;/u&gt;.
Completeness means that not only a Feature is deployable and it can be monitored,
it’s also with great external quality (no major bugs left behind) and great internal
quality (design-review, QA test-cases review, code-review, UI review).
&lt;/p&gt;
&lt;p&gt;
You want to price a Feature by the gross organization time; this is the only way to
understand how much a Feature really costs. Knowing that, you can correctly price
future roadmap without needing “Bugs Elimination Sprint” or “Big Refactoring Sprint”
to introduce quality &lt;strong&gt;after&lt;/strong&gt; things were delivered to your customers.
&lt;/p&gt;
&lt;h4&gt;No leftovers:
&lt;/h4&gt;
&lt;p&gt;
1. &lt;b&gt;Design review&lt;/b&gt; – may it be over emails or formal meeting, the design should
be solid and well thought
&lt;/p&gt;
&lt;p&gt;
2. &lt;b&gt;QA test-cases review&lt;/b&gt; – making sure QA will test the right things or add
more test cases for relevant edge-cases.
&lt;/p&gt;
&lt;p&gt;
3. &lt;b&gt;Testing time&lt;/b&gt; - writing tests (unit + integration) should be priced as part
of the Feature, not after, not next sprint.
&lt;/p&gt;
&lt;p&gt;
4. &lt;b&gt;Code review&lt;/b&gt; – for knowledge sharing and internal quality validation.
&lt;/p&gt;
&lt;p&gt;
5. &lt;b&gt;UI review&lt;/b&gt; – making sure the UI look &amp;amp; feel just like Product team wanted
it to be.
&lt;/p&gt;
&lt;p&gt;
6. &lt;strong&gt;Bug fixing + validation buffer&lt;/strong&gt; – fixing major bugs should be priced
as well! if you’re not sure how much time to spend, start with 5-10% of the total
estimated effort, and learn from your experience (by Feature size, complexity etc)
&lt;/p&gt;
&lt;p&gt;
You can add more to this list, if the team/organization needs it. The idea is to make
sure that once a Feature is complete, you’re feeling great about it and got confidence
it won’t be fired back to the kitchen, to cook from scratch. You should have the same
confidence about changing an existing feature; it should be easy, voodoo-less and
highly testable to do so, with low chances of breaking other flows in the system.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=790ea949-9791-47f3-823f-0e0f36e01828" /&gt;</description>
      <comments>http://lnbogen.com/CommentView,guid,790ea949-9791-47f3-823f-0e0f36e01828.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://lnbogen.com/Trackback.aspx?guid=63520ab9-8ca2-486e-a60a-3c00bedec43d</trackback:ping>
      <pingback:server>http://lnbogen.com/pingback.aspx</pingback:server>
      <pingback:target>http://lnbogen.com/PermaLink,guid,63520ab9-8ca2-486e-a60a-3c00bedec43d.aspx</pingback:target>
      <dc:creator>Oren Ellenbogen</dc:creator>
      <wfw:comment>http://lnbogen.com/CommentView,guid,63520ab9-8ca2-486e-a60a-3c00bedec43d.aspx</wfw:comment>
      <wfw:commentRss>http://lnbogen.com/SyndicationService.asmx/GetEntryCommentsRss?guid=63520ab9-8ca2-486e-a60a-3c00bedec43d</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
One of your responsibilities as a developer or team leader is to make sure <u><a href="http://lnbogen.com/2010/07/10/ConfidenceBuildingMakeItPartOfYourSprint.aspx">you’ll
be able to shine over time by constantly building confidence</a></u>. This is why
I strongly believe in maintaining a list of technical Features as part of your backlog.
These are Features you believe will make the application more robust, provide better
monitoring or make the team more productive (&amp; happier) on their day-to-day work. 
</p>
        <h4>Have it to pass the message “we leave nothing as technical debt”
</h4>
        <p>
When someone in your team says “we really need to refactor this! it way too buggy
and we cannot write tests for it”, don’t make it a technical debt that is written
as a comment in the code or as a note on someone’s inbox. Make it a Feature, make
it part of your backlog, pass the message that even though we cannot fix everything
now, we will give it the right attention.
</p>
        <h4>Have it to build confidence
</h4>
        <p>
Pick a few technical Features at each Sprint and make them a reality. This will make
sure your team will be able to continue to produce fast and with great quality. Plan
how much effort, from the entire Sprint, you would like to use to reduce waste - 1%?
5%? 10%? More? It’s really up to you. You need to <strong>balance</strong> it with
thoughts of producing value to your customers while producing value to your team.
</p>
        <h4>Have it for rough times
</h4>
        <p>
Having technical backlog is very useful when you need to re-plan the next few <u>versions</u> due
to priority shift by the product teams, while your teammates are waiting for work.
You can reduce pressure by letting them kill waste while you make certainty in the
plans.
</p>
        <img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=63520ab9-8ca2-486e-a60a-3c00bedec43d" />
      </body>
      <title>Technical Features (in your) backlog</title>
      <guid isPermaLink="false">http://lnbogen.com/PermaLink,guid,63520ab9-8ca2-486e-a60a-3c00bedec43d.aspx</guid>
      <link>http://lnbogen.com/2010/07/12/TechnicalFeaturesInYourBacklog.aspx</link>
      <pubDate>Mon, 12 Jul 2010 11:20:28 GMT</pubDate>
      <description>&lt;p&gt;
One of your responsibilities as a developer or team leader is to make sure &lt;u&gt;&lt;a href="http://lnbogen.com/2010/07/10/ConfidenceBuildingMakeItPartOfYourSprint.aspx"&gt;you’ll
be able to shine over time by constantly building confidence&lt;/a&gt;&lt;/u&gt;. This is why
I strongly believe in maintaining a list of technical Features as part of your backlog.
These are Features you believe will make the application more robust, provide better
monitoring or make the team more productive (&amp;amp; happier) on their day-to-day work. 
&lt;/p&gt;
&lt;h4&gt;Have it to pass the message “we leave nothing as technical debt”
&lt;/h4&gt;
&lt;p&gt;
When someone in your team says “we really need to refactor this! it way too buggy
and we cannot write tests for it”, don’t make it a technical debt that is written
as a comment in the code or as a note on someone’s inbox. Make it a Feature, make
it part of your backlog, pass the message that even though we cannot fix everything
now, we will give it the right attention.
&lt;/p&gt;
&lt;h4&gt;Have it to build confidence
&lt;/h4&gt;
&lt;p&gt;
Pick a few technical Features at each Sprint and make them a reality. This will make
sure your team will be able to continue to produce fast and with great quality. Plan
how much effort, from the entire Sprint, you would like to use to reduce waste - 1%?
5%? 10%? More? It’s really up to you. You need to &lt;strong&gt;balance&lt;/strong&gt; it with
thoughts of producing value to your customers while producing value to your team.
&lt;/p&gt;
&lt;h4&gt;Have it for rough times
&lt;/h4&gt;
&lt;p&gt;
Having technical backlog is very useful when you need to re-plan the next few &lt;u&gt;versions&lt;/u&gt; due
to priority shift by the product teams, while your teammates are waiting for work.
You can reduce pressure by letting them kill waste while you make certainty in the
plans.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=63520ab9-8ca2-486e-a60a-3c00bedec43d" /&gt;</description>
      <comments>http://lnbogen.com/CommentView,guid,63520ab9-8ca2-486e-a60a-3c00bedec43d.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://lnbogen.com/Trackback.aspx?guid=a7854639-4fd3-4ad6-81c1-95e6eadafb57</trackback:ping>
      <pingback:server>http://lnbogen.com/pingback.aspx</pingback:server>
      <pingback:target>http://lnbogen.com/PermaLink,guid,a7854639-4fd3-4ad6-81c1-95e6eadafb57.aspx</pingback:target>
      <dc:creator>Oren Ellenbogen</dc:creator>
      <wfw:comment>http://lnbogen.com/CommentView,guid,a7854639-4fd3-4ad6-81c1-95e6eadafb57.aspx</wfw:comment>
      <wfw:commentRss>http://lnbogen.com/SyndicationService.asmx/GetEntryCommentsRss?guid=a7854639-4fd3-4ad6-81c1-95e6eadafb57</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
There are many ways to take a <u><a href="http://lnbogen.com/2010/07/10/FeatureUserStoryAndTask.aspx">Feature</a></u> and
break it into workable unit of <u><a href="http://lnbogen.com/2010/07/10/FeatureUserStoryAndTask.aspx">Tasks</a></u>.
Measuring “breakdown quality” is being ignored most of the time, as it’s very elusive
to define “good breakdown”. The ability to break something into smaller pieces is
one of the biggest signs of an experienced craftsman, so you should definitely challenge
yourself by asking: am I known for predicting work effort well? detecting edge-cases
early? Communicate progress to my boss clearly? being able to work with others on
the same thing smoothly?
</p>
        <h5>
        </h5>
        <h4>Introducing a Feature
</h4>
        <p>
Before we can play with breaking Feature into tasks, we need to have an example of
a Feature in front of us. Let’s pretend that our desired Feature is “Signup and Sign-in”
where to goal is to allow users to register and sign-in to the system. Next, here
are the flows: 
<br />
1. User can enter the signup page, if she’s not currently signed-in (else - redirect
to homepage). 
<br />
2. User can enter his details and signup. 
<br />
3. User details will be validated, by [rules]. If failed - user will be asked to fix
and re-send. 
<br />
4. User will need to confirm her signup via email, before signing-in. 
<br />
5. User can sign-in only after confirming her signup, if pending – show message. 
<br />
6. User can sign-in in case she’s not signed-in already, using her credentials. 
<br />
7. User can sign-out, only if she’s currently signed-in. 
<br />
8. Page header needs to show relevant links, according to whether or not the user
is currently signed-in. 
<br />
9. If user fails to login multiple times (configurable), deny login for X minutes 
<br />
… 
<br />
[a few mockups here, a few technical/business notes there regarding URL structure,
SEO to have in mind, analytics requirements, etc]
</p>
        <h5>
        </h5>
        <h4>Breaking by Layers, the common way
</h4>
        <p>
A very common way is to break Feature by “application layers”: 
<br />
1. Adjust database schema. 
<br />
2. Create Data Access code to allow persistence of user (details, credentials encrypted
etc) and retrieval of information. 
<br />
3. Create Business Layer logic to validate credentials, confirm signup, perform sign-in. 
<br />
4. Add signup and sign-in pages, alter header according to user state. 
<br />
5. Add relevant validation on client side via javascript.
</p>
        <p>
You can imagine that each task here will be a priced as 10-15 hours or even more,
according to the implementer and the exact details. If the implementer founds an edge-case,
it might mean that the every one of the layers here will be affected by it, making
the estimation even less reliable.
</p>
        <h4>Breaking by Verticals 
</h4>
        <p>
A different approach will be using the flows above to form the tasks: 
<br />
* create readConfiguration helper method 
<br />
* create validateUserDetails method for server side 
<br />
* create generateConfirmationNumber(userDetails) method 
<br />
* create(/use) email sender provider 
<br />
* create validateUserDetails for client-side 
<br />
* create signup(userDetails) - schema to store user details, Data Access and Business
to validate information and activate generateConfirmationNumber for sending confirmation
email. 
<br />
* create signup page (using validateUserDetails, signup method) 
<br />
* create signin(credentials) method – schema to store number of login attempts, Data
Access and Business to validate information, blocking user due to multiple attempts. 
<br />
* create confirmUser method - Data Access and Bussiness to validate confirmation 
<br />
* create signup confirmation page. 
<br />
* create signin page 
<br />
* create isLoggedIn method 
<br />
* change header links according to status (via isLoggedIn) 
<br />
* redirect user on entering signup page when currently signed-in (via isLoggedIn)
</p>
        <p>
It’s not a 1:1 match between Task and flow, sometimes one flow will require multiple
Tasks, but the <b>flows drive the breakdown</b>. No doubt, all of the tasks here are
much smaller, each will take around 1-4 hours and very self-explanatory.
</p>
        <h4>Why should you prefer Verticals breaking?
</h4>
        <p>
          <b>Confidence in achieving progress</b>: if you strive for small tasks (up to 3-4
hours), it means that you’ll need to understand <strong>exactly</strong> what is needed
to be done before committing to it. Every time you’ll finish a task, you’ll feel better
that you’re moving on the right path. Because tasks are small, you will enjoy this
feeling a few times during a day, which is important. You need to run away from “I
wrote some code today, but I’m not sure if I’m on track”, poor planning will make
you feel unproductive for long time. 
</p>
        <p>
          <b>Provide complete context to allow sharing workload</b>: what happens if you need
someone else to assist you? If you work by layers, it’s hard to understand “what is
done”. The context is the entire Feature, which is too big to share easily. By working
on vertical tasks, the context is much smaller as flows are smaller unit of execution.
If you’re stuck, you can raise the flag and ask someone to assist you by taking a
few vertical tasks and make them happen. They’ll have no trouble understanding what
needs to be done.
</p>
        <img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=a7854639-4fd3-4ad6-81c1-95e6eadafb57" />
      </body>
      <title>How to break Feature into Tasks</title>
      <guid isPermaLink="false">http://lnbogen.com/PermaLink,guid,a7854639-4fd3-4ad6-81c1-95e6eadafb57.aspx</guid>
      <link>http://lnbogen.com/2010/07/12/HowToBreakFeatureIntoTasks.aspx</link>
      <pubDate>Mon, 12 Jul 2010 09:41:50 GMT</pubDate>
      <description>&lt;p&gt;
There are many ways to take a &lt;u&gt;&lt;a href="http://lnbogen.com/2010/07/10/FeatureUserStoryAndTask.aspx"&gt;Feature&lt;/a&gt;&lt;/u&gt; and
break it into workable unit of &lt;u&gt;&lt;a href="http://lnbogen.com/2010/07/10/FeatureUserStoryAndTask.aspx"&gt;Tasks&lt;/a&gt;&lt;/u&gt;.
Measuring “breakdown quality” is being ignored most of the time, as it’s very elusive
to define “good breakdown”. The ability to break something into smaller pieces is
one of the biggest signs of an experienced craftsman, so you should definitely challenge
yourself by asking: am I known for predicting work effort well? detecting edge-cases
early? Communicate progress to my boss clearly? being able to work with others on
the same thing smoothly?
&lt;/p&gt;
&lt;h5&gt;
&lt;/h5&gt;
&lt;h4&gt;Introducing a Feature
&lt;/h4&gt;
&lt;p&gt;
Before we can play with breaking Feature into tasks, we need to have an example of
a Feature in front of us. Let’s pretend that our desired Feature is “Signup and Sign-in”
where to goal is to allow users to register and sign-in to the system. Next, here
are the flows: 
&lt;br /&gt;
1. User can enter the signup page, if she’s not currently signed-in (else - redirect
to homepage). 
&lt;br /&gt;
2. User can enter his details and signup. 
&lt;br /&gt;
3. User details will be validated, by [rules]. If failed - user will be asked to fix
and re-send. 
&lt;br /&gt;
4. User will need to confirm her signup via email, before signing-in. 
&lt;br /&gt;
5. User can sign-in only after confirming her signup, if pending – show message. 
&lt;br /&gt;
6. User can sign-in in case she’s not signed-in already, using her credentials. 
&lt;br /&gt;
7. User can sign-out, only if she’s currently signed-in. 
&lt;br /&gt;
8. Page header needs to show relevant links, according to whether or not the user
is currently signed-in. 
&lt;br /&gt;
9. If user fails to login multiple times (configurable), deny login for X minutes 
&lt;br /&gt;
… 
&lt;br /&gt;
[a few mockups here, a few technical/business notes there regarding URL structure,
SEO to have in mind, analytics requirements, etc]
&lt;/p&gt;
&lt;h5&gt;
&lt;/h5&gt;
&lt;h4&gt;Breaking by Layers, the common way
&lt;/h4&gt;
&lt;p&gt;
A very common way is to break Feature by “application layers”: 
&lt;br /&gt;
1. Adjust database schema. 
&lt;br /&gt;
2. Create Data Access code to allow persistence of user (details, credentials encrypted
etc) and retrieval of information. 
&lt;br /&gt;
3. Create Business Layer logic to validate credentials, confirm signup, perform sign-in. 
&lt;br /&gt;
4. Add signup and sign-in pages, alter header according to user state. 
&lt;br /&gt;
5. Add relevant validation on client side via javascript.
&lt;/p&gt;
&lt;p&gt;
You can imagine that each task here will be a priced as 10-15 hours or even more,
according to the implementer and the exact details. If the implementer founds an edge-case,
it might mean that the every one of the layers here will be affected by it, making
the estimation even less reliable.
&lt;/p&gt;
&lt;h4&gt;Breaking by Verticals 
&lt;/h4&gt;
&lt;p&gt;
A different approach will be using the flows above to form the tasks: 
&lt;br /&gt;
* create readConfiguration helper method 
&lt;br /&gt;
* create validateUserDetails method for server side 
&lt;br /&gt;
* create generateConfirmationNumber(userDetails) method 
&lt;br /&gt;
* create(/use) email sender provider 
&lt;br /&gt;
* create validateUserDetails for client-side 
&lt;br /&gt;
* create signup(userDetails) - schema to store user details, Data Access and Business
to validate information and activate generateConfirmationNumber for sending confirmation
email. 
&lt;br /&gt;
* create signup page (using validateUserDetails, signup method) 
&lt;br /&gt;
* create signin(credentials) method – schema to store number of login attempts, Data
Access and Business to validate information, blocking user due to multiple attempts. 
&lt;br /&gt;
* create confirmUser method - Data Access and Bussiness to validate confirmation 
&lt;br /&gt;
* create signup confirmation page. 
&lt;br /&gt;
* create signin page 
&lt;br /&gt;
* create isLoggedIn method 
&lt;br /&gt;
* change header links according to status (via isLoggedIn) 
&lt;br /&gt;
* redirect user on entering signup page when currently signed-in (via isLoggedIn)
&lt;/p&gt;
&lt;p&gt;
It’s not a 1:1 match between Task and flow, sometimes one flow will require multiple
Tasks, but the &lt;b&gt;flows drive the breakdown&lt;/b&gt;. No doubt, all of the tasks here are
much smaller, each will take around 1-4 hours and very self-explanatory.
&lt;/p&gt;
&lt;h4&gt;Why should you prefer Verticals breaking?
&lt;/h4&gt;
&lt;p&gt;
&lt;b&gt;Confidence in achieving progress&lt;/b&gt;: if you strive for small tasks (up to 3-4
hours), it means that you’ll need to understand &lt;strong&gt;exactly&lt;/strong&gt; what is needed
to be done before committing to it. Every time you’ll finish a task, you’ll feel better
that you’re moving on the right path. Because tasks are small, you will enjoy this
feeling a few times during a day, which is important. You need to run away from “I
wrote some code today, but I’m not sure if I’m on track”, poor planning will make
you feel unproductive for long time. 
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;Provide complete context to allow sharing workload&lt;/b&gt;: what happens if you need
someone else to assist you? If you work by layers, it’s hard to understand “what is
done”. The context is the entire Feature, which is too big to share easily. By working
on vertical tasks, the context is much smaller as flows are smaller unit of execution.
If you’re stuck, you can raise the flag and ask someone to assist you by taking a
few vertical tasks and make them happen. They’ll have no trouble understanding what
needs to be done.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=a7854639-4fd3-4ad6-81c1-95e6eadafb57" /&gt;</description>
      <comments>http://lnbogen.com/CommentView,guid,a7854639-4fd3-4ad6-81c1-95e6eadafb57.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://lnbogen.com/Trackback.aspx?guid=a774f67d-f82b-486e-b3b9-408d4fa4f8b4</trackback:ping>
      <pingback:server>http://lnbogen.com/pingback.aspx</pingback:server>
      <pingback:target>http://lnbogen.com/PermaLink,guid,a774f67d-f82b-486e-b3b9-408d4fa4f8b4.aspx</pingback:target>
      <dc:creator>Oren Ellenbogen</dc:creator>
      <wfw:comment>http://lnbogen.com/CommentView,guid,a774f67d-f82b-486e-b3b9-408d4fa4f8b4.aspx</wfw:comment>
      <wfw:commentRss>http://lnbogen.com/SyndicationService.asmx/GetEntryCommentsRss?guid=a774f67d-f82b-486e-b3b9-408d4fa4f8b4</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
One of the responsibilities of a great execution team is to make sure they will deliver
in great speed and great quality, over time. “It’s a marathon, not a sprint” might
be a confusing statement if you’re actually using Sprints in your development process
;)
</p>
        <p>
What do I mean by “confidence building” and how does it affect you? Well, I believe
that you need to earn others confidence over time, making sure your customers, internal
and external, are happy with your results. For that you’ll need to make sure you understand
what’s expected from you, to reach deadlines on time, to raise the Red Flag early
and offer alternatives, to deliver product with great quality and to produce estimation
that prove themselves as meaningful. Your job is to keep the execution machine at
full speed and building the confidence as you go.
</p>
        <p>
My recommendation is to make sure your Sprints will contain some internal maintainability
time so you could stay on track rather than “have a good Sprint once in a while”.
Here are a few thoughts:
</p>
        <ol>
          <li>
Bugs elimination – making sure the backlog is not overwhelming. Pick wisely, based
on ROI given by product and technical teams. 
</li>
          <li>
Provide rough estimation on the Features in the roadmap, review previous estimations
and see if you were close. 
</li>
          <li>
Push small POC for risky features to come. 
</li>
          <li>
Create technical design for big/risky features you plan to address next sprint. 
</li>
          <li>
Eliminating technical waste – small refactoring to enhance team productivity. 
</li>
        </ol>
        <p>
You can either treat them as features, or simply buffer some availability of the team
to handle this. 
</p>
        <p>
No matter what, do not burnout the trust people have in you; your boss hired you because
s/he trusted you to do well, it doesn’t mean you don’t have to work hard and <strong>continue
to earn</strong> her/his confidence in you. It is a marathon, after all.
</p>
        <img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=a774f67d-f82b-486e-b3b9-408d4fa4f8b4" />
      </body>
      <title>Confidence building: make it part of your Sprint</title>
      <guid isPermaLink="false">http://lnbogen.com/PermaLink,guid,a774f67d-f82b-486e-b3b9-408d4fa4f8b4.aspx</guid>
      <link>http://lnbogen.com/2010/07/10/ConfidenceBuildingMakeItPartOfYourSprint.aspx</link>
      <pubDate>Sat, 10 Jul 2010 22:55:55 GMT</pubDate>
      <description>&lt;p&gt;
One of the responsibilities of a great execution team is to make sure they will deliver
in great speed and great quality, over time. “It’s a marathon, not a sprint” might
be a confusing statement if you’re actually using Sprints in your development process
;)
&lt;/p&gt;
&lt;p&gt;
What do I mean by “confidence building” and how does it affect you? Well, I believe
that you need to earn others confidence over time, making sure your customers, internal
and external, are happy with your results. For that you’ll need to make sure you understand
what’s expected from you, to reach deadlines on time, to raise the Red Flag early
and offer alternatives, to deliver product with great quality and to produce estimation
that prove themselves as meaningful. Your job is to keep the execution machine at
full speed and building the confidence as you go.
&lt;/p&gt;
&lt;p&gt;
My recommendation is to make sure your Sprints will contain some internal maintainability
time so you could stay on track rather than “have a good Sprint once in a while”.
Here are a few thoughts:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Bugs elimination – making sure the backlog is not overwhelming. Pick wisely, based
on ROI given by product and technical teams. 
&lt;/li&gt;
&lt;li&gt;
Provide rough estimation on the Features in the roadmap, review previous estimations
and see if you were close. 
&lt;/li&gt;
&lt;li&gt;
Push small POC for risky features to come. 
&lt;/li&gt;
&lt;li&gt;
Create technical design for big/risky features you plan to address next sprint. 
&lt;/li&gt;
&lt;li&gt;
Eliminating technical waste – small refactoring to enhance team productivity. 
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
You can either treat them as features, or simply buffer some availability of the team
to handle this. 
&lt;/p&gt;
&lt;p&gt;
No matter what, do not burnout the trust people have in you; your boss hired you because
s/he trusted you to do well, it doesn’t mean you don’t have to work hard and &lt;strong&gt;continue
to earn&lt;/strong&gt; her/his confidence in you. It is a marathon, after all.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=a774f67d-f82b-486e-b3b9-408d4fa4f8b4" /&gt;</description>
      <comments>http://lnbogen.com/CommentView,guid,a774f67d-f82b-486e-b3b9-408d4fa4f8b4.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://lnbogen.com/Trackback.aspx?guid=11c18e74-7bf5-4531-b413-44e278a42ff0</trackback:ping>
      <pingback:server>http://lnbogen.com/pingback.aspx</pingback:server>
      <pingback:target>http://lnbogen.com/PermaLink,guid,11c18e74-7bf5-4531-b413-44e278a42ff0.aspx</pingback:target>
      <dc:creator>Oren Ellenbogen</dc:creator>
      <wfw:comment>http://lnbogen.com/CommentView,guid,11c18e74-7bf5-4531-b413-44e278a42ff0.aspx</wfw:comment>
      <wfw:commentRss>http://lnbogen.com/SyndicationService.asmx/GetEntryCommentsRss?guid=11c18e74-7bf5-4531-b413-44e278a42ff0</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://lnbogen.com/2010/07/10/FeatureUserStoryAndTask.aspx">User Stories</a> became
very trendy when Scrum became popular <a href="http://lnbogen.com/2010/07/10/HowUserStoriesWereBorn.aspx">due
to its smaller abstraction level</a><u>;</u> this made it possible to break big Feature
and adjust its pieces into a single Sprint. I think this was taken too far, where
User Stories sometimes completely replace Features. Not only I believe that <a href="http://lnbogen.com/2010/07/08/VersionExtractReleasesFromSprints.aspx">Sprint
should not be a release unit</a>, I also believe that User Stories are not the correct
work unit in a release or a Sprint: 
</p>
        <p>
1. <b>Losing the why</b> –User Stories by themselves are incomplete: they are missing
the *why* - why do we think it is wise to develop this all experience? User Story
describes only a small portion of a full experience. If we want to have real discussion
on the value of a new capability, we must understand the full picture. The value always
lies in the forest, not in the trees.
</p>
        <p>
2. <b>User Stories are usually not valuable to the customers by themselves</b> - If
you break a Feature into 20 User Stories, how many completed User Stories are enough
to release the Feature? You cannot give your customer the Story of “A user can enter
his password, the system will validate it by [rules]” without actually letting him
register to the system. Your customer might enjoy <em>tracking</em> the Feature as
you develop it this way, but you probably cannot release a version with 2 User Stories
out of the 20 needed. 
</p>
        <p>
3. <b>Maintaining another abstraction is expensive – </b>what happens if a Feature
changes? If you’re holding your User Stories separately, you’ll need to update them.
Sometimes, as mistakes being made and it’s hard to sync papers, you’ll update one
and not the other. So your business team, as an example, will work with the Feature
paper but your QA team with the User Stories. Abstraction is smart only if it is beneficial
over time.
</p>
        <p>
I believe that User Stories are too pricey to be used as planning and execution units;
they abstract a lot of the significant value Feature has to offer and introduce fragility
in the process. 
</p>
        <h4>What User Stories are good for?
</h4>
        <p>
I would use User Stories <b>only</b><b>as a lingo</b> between developers and business/marketing
teams. They are small enough to be discussed without thorough background and big enough
to explain behavior and expected outcome. I would not use User Stories to plan my
sprints or my releases; I would aim to work in units I can deliver to my customers
and discuss value of complete experiences.
</p>
        <h4>How to adjust a big Feature into a Sprint?
</h4>
        <p>
More on it to follow…
</p>
        <img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=11c18e74-7bf5-4531-b413-44e278a42ff0" />
      </body>
      <title>User Stories do not replace Features</title>
      <guid isPermaLink="false">http://lnbogen.com/PermaLink,guid,11c18e74-7bf5-4531-b413-44e278a42ff0.aspx</guid>
      <link>http://lnbogen.com/2010/07/10/UserStoriesDoNotReplaceFeatures.aspx</link>
      <pubDate>Sat, 10 Jul 2010 21:18:54 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://lnbogen.com/2010/07/10/FeatureUserStoryAndTask.aspx"&gt;User Stories&lt;/a&gt; became
very trendy when Scrum became popular &lt;a href="http://lnbogen.com/2010/07/10/HowUserStoriesWereBorn.aspx"&gt;due
to its smaller abstraction level&lt;/a&gt;&lt;u&gt;;&lt;/u&gt; this made it possible to break big Feature
and adjust its pieces into a single Sprint. I think this was taken too far, where
User Stories sometimes completely replace Features. Not only I believe that &lt;a href="http://lnbogen.com/2010/07/08/VersionExtractReleasesFromSprints.aspx"&gt;Sprint
should not be a release unit&lt;/a&gt;, I also believe that User Stories are not the correct
work unit in a release or a Sprint: 
&lt;/p&gt;
&lt;p&gt;
1. &lt;b&gt;Losing the why&lt;/b&gt; –User Stories by themselves are incomplete: they are missing
the *why* - why do we think it is wise to develop this all experience? User Story
describes only a small portion of a full experience. If we want to have real discussion
on the value of a new capability, we must understand the full picture. The value always
lies in the forest, not in the trees.
&lt;/p&gt;
&lt;p&gt;
2. &lt;b&gt;User Stories are usually not valuable to the customers by themselves&lt;/b&gt; - If
you break a Feature into 20 User Stories, how many completed User Stories are enough
to release the Feature? You cannot give your customer the Story of “A user can enter
his password, the system will validate it by [rules]” without actually letting him
register to the system. Your customer might enjoy &lt;em&gt;tracking&lt;/em&gt; the Feature as
you develop it this way, but you probably cannot release a version with 2 User Stories
out of the 20 needed. 
&lt;/p&gt;
&lt;p&gt;
3. &lt;b&gt;Maintaining another abstraction is expensive – &lt;/b&gt;what happens if a Feature
changes? If you’re holding your User Stories separately, you’ll need to update them.
Sometimes, as mistakes being made and it’s hard to sync papers, you’ll update one
and not the other. So your business team, as an example, will work with the Feature
paper but your QA team with the User Stories. Abstraction is smart only if it is beneficial
over time.
&lt;/p&gt;
&lt;p&gt;
I believe that User Stories are too pricey to be used as planning and execution units;
they abstract a lot of the significant value Feature has to offer and introduce fragility
in the process. 
&lt;/p&gt;
&lt;h4&gt;What User Stories are good for?
&lt;/h4&gt;
&lt;p&gt;
I would use User Stories &lt;b&gt;only&lt;/b&gt; &lt;b&gt;as a lingo&lt;/b&gt; between developers and business/marketing
teams. They are small enough to be discussed without thorough background and big enough
to explain behavior and expected outcome. I would not use User Stories to plan my
sprints or my releases; I would aim to work in units I can deliver to my customers
and discuss value of complete experiences.
&lt;/p&gt;
&lt;h4&gt;How to adjust a big Feature into a Sprint?
&lt;/h4&gt;
&lt;p&gt;
More on it to follow…
&lt;/p&gt;
&lt;img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=11c18e74-7bf5-4531-b413-44e278a42ff0" /&gt;</description>
      <comments>http://lnbogen.com/CommentView,guid,11c18e74-7bf5-4531-b413-44e278a42ff0.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://lnbogen.com/Trackback.aspx?guid=d9851492-785f-41e1-8a95-d19f1a82d150</trackback:ping>
      <pingback:server>http://lnbogen.com/pingback.aspx</pingback:server>
      <pingback:target>http://lnbogen.com/PermaLink,guid,d9851492-785f-41e1-8a95-d19f1a82d150.aspx</pingback:target>
      <dc:creator>Oren Ellenbogen</dc:creator>
      <wfw:comment>http://lnbogen.com/CommentView,guid,d9851492-785f-41e1-8a95-d19f1a82d150.aspx</wfw:comment>
      <wfw:commentRss>http://lnbogen.com/SyndicationService.asmx/GetEntryCommentsRss?guid=d9851492-785f-41e1-8a95-d19f1a82d150</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Sometimes, multiple Features offer multiple experiences to the <b>same</b><b>motivation/goal/pain</b>.
</p>
        <p>
This is why it’s so crucial to document the why, the motivation, the pains, the reasoning
behind a Feature. Although “The why” is crucial, it is not enough by itself. A great
Feature must also detail the experience our users will enjoy, may it be capabilities,
flows and look &amp; feel. Only then, we can understand the <b>purposed reality</b>,
before it is a reality - before we develop it and spend money to bring users to play
with it. 
</p>
        <p>
With that, a <b>real discussion</b> on <b>whether this Feature will be the best way
to achieve this goal</b> can take place. If you let your team be part of your vision
building, by sharing the pains and goals, you can get invaluable <strong>internal</strong><strong>feedback</strong> during
“thinking time”. Fixing the Feature flows, improving usability or look &amp; feel,
before it’s developed, is always cheaper than doing it after it after the fact.
</p>
        <img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=d9851492-785f-41e1-8a95-d19f1a82d150" />
      </body>
      <title>Why Feature should detail full experience</title>
      <guid isPermaLink="false">http://lnbogen.com/PermaLink,guid,d9851492-785f-41e1-8a95-d19f1a82d150.aspx</guid>
      <link>http://lnbogen.com/2010/07/10/WhyFeatureShouldDetailFullExperience.aspx</link>
      <pubDate>Sat, 10 Jul 2010 17:00:49 GMT</pubDate>
      <description>&lt;p&gt;
Sometimes, multiple Features offer multiple experiences to the &lt;b&gt;same&lt;/b&gt; &lt;b&gt;motivation/goal/pain&lt;/b&gt;.
&lt;/p&gt;
&lt;p&gt;
This is why it’s so crucial to document the why, the motivation, the pains, the reasoning
behind a Feature. Although “The why” is crucial, it is not enough by itself. A great
Feature must also detail the experience our users will enjoy, may it be capabilities,
flows and look &amp;amp; feel. Only then, we can understand the &lt;b&gt;purposed reality&lt;/b&gt;,
before it is a reality - before we develop it and spend money to bring users to play
with it. 
&lt;/p&gt;
&lt;p&gt;
With that, a &lt;b&gt;real discussion&lt;/b&gt; on &lt;b&gt;whether this Feature will be the best way
to achieve this goal&lt;/b&gt; can take place. If you let your team be part of your vision
building, by sharing the pains and goals, you can get invaluable &lt;strong&gt;internal&lt;/strong&gt; &lt;strong&gt;feedback&lt;/strong&gt; during
“thinking time”. Fixing the Feature flows, improving usability or look &amp;amp; feel,
before it’s developed, is always cheaper than doing it after it after the fact.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=d9851492-785f-41e1-8a95-d19f1a82d150" /&gt;</description>
      <comments>http://lnbogen.com/CommentView,guid,d9851492-785f-41e1-8a95-d19f1a82d150.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://lnbogen.com/Trackback.aspx?guid=1b1cb93e-f4e3-4243-ad8f-77c537fe2880</trackback:ping>
      <pingback:server>http://lnbogen.com/pingback.aspx</pingback:server>
      <pingback:target>http://lnbogen.com/PermaLink,guid,1b1cb93e-f4e3-4243-ad8f-77c537fe2880.aspx</pingback:target>
      <dc:creator>Oren Ellenbogen</dc:creator>
      <wfw:comment>http://lnbogen.com/CommentView,guid,1b1cb93e-f4e3-4243-ad8f-77c537fe2880.aspx</wfw:comment>
      <wfw:commentRss>http://lnbogen.com/SyndicationService.asmx/GetEntryCommentsRss?guid=1b1cb93e-f4e3-4243-ad8f-77c537fe2880</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
“Agile/Lean movement” and Scrum in particular, made short cycles a key factor in the
process. May it be cycles of planning, cycles of development or cycles of releases,
there was a big arrow pointing at *short cycles* to figure out how to get more accurate,
more responsive, more productive faster. 
</p>
        <p>
Due to the short cycles, the <u><a href="http://lnbogen.com/2010/07/10/FeatureUserStoryAndTask.aspx">Features</a></u> or
“Product Backlog Item”, sometimes, just didn’t fit in. “My 2 months Feature won’t
enter our 2 weeks Sprint!”. Because <a href="http://lnbogen.com/2010/07/08/VersionExtractReleasesFromSprints.aspx">Sprint
is, wrongfully in my opinion, being highly tied to releases</a>, it raised a need
to allow breaking Feature to multiple Sprints. The question is “how to break it <em>right</em>?”.
</p>
        <p>
User Stories came to offer a methodology to assist in this need. The idea is to detail
the Feature in multiple end-to-end flows (which good Feature already detail) and implement
them one by one instead of trying to implement the entire Feature at once. Because
User Stories are subset of a Feature, in the same language as a Feature, it felt that
these stories can replace Features and Sprint will contain them as smaller execution
parts. This will obviously “solve” the mismatch of Feature size to Sprint size. 
</p>
        <p>
I claim that it didn’t solve anything at the core level. Even worse, my feeling is
that User Stories introduced a dangerous abstraction, one that should be used carefully.
More on it in my next post...
</p>
        <img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=1b1cb93e-f4e3-4243-ad8f-77c537fe2880" />
      </body>
      <title>How User Stories were born</title>
      <guid isPermaLink="false">http://lnbogen.com/PermaLink,guid,1b1cb93e-f4e3-4243-ad8f-77c537fe2880.aspx</guid>
      <link>http://lnbogen.com/2010/07/10/HowUserStoriesWereBorn.aspx</link>
      <pubDate>Sat, 10 Jul 2010 16:30:28 GMT</pubDate>
      <description>&lt;p&gt;
“Agile/Lean movement” and Scrum in particular, made short cycles a key factor in the
process. May it be cycles of planning, cycles of development or cycles of releases,
there was a big arrow pointing at *short cycles* to figure out how to get more accurate,
more responsive, more productive faster. 
&lt;/p&gt;
&lt;p&gt;
Due to the short cycles, the &lt;u&gt;&lt;a href="http://lnbogen.com/2010/07/10/FeatureUserStoryAndTask.aspx"&gt;Features&lt;/a&gt;&lt;/u&gt; or
“Product Backlog Item”, sometimes, just didn’t fit in. “My 2 months Feature won’t
enter our 2 weeks Sprint!”. Because &lt;a href="http://lnbogen.com/2010/07/08/VersionExtractReleasesFromSprints.aspx"&gt;Sprint
is, wrongfully in my opinion, being highly tied to releases&lt;/a&gt;, it raised a need
to allow breaking Feature to multiple Sprints. The question is “how to break it &lt;em&gt;right&lt;/em&gt;?”.
&lt;/p&gt;
&lt;p&gt;
User Stories came to offer a methodology to assist in this need. The idea is to detail
the Feature in multiple end-to-end flows (which good Feature already detail) and implement
them one by one instead of trying to implement the entire Feature at once. Because
User Stories are subset of a Feature, in the same language as a Feature, it felt that
these stories can replace Features and Sprint will contain them as smaller execution
parts. This will obviously “solve” the mismatch of Feature size to Sprint size. 
&lt;/p&gt;
&lt;p&gt;
I claim that it didn’t solve anything at the core level. Even worse, my feeling is
that User Stories introduced a dangerous abstraction, one that should be used carefully.
More on it in my next post...
&lt;/p&gt;
&lt;img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=1b1cb93e-f4e3-4243-ad8f-77c537fe2880" /&gt;</description>
      <comments>http://lnbogen.com/CommentView,guid,1b1cb93e-f4e3-4243-ad8f-77c537fe2880.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://lnbogen.com/Trackback.aspx?guid=43bd6f2f-0316-4a16-b1bb-a43e58408d45</trackback:ping>
      <pingback:server>http://lnbogen.com/pingback.aspx</pingback:server>
      <pingback:target>http://lnbogen.com/PermaLink,guid,43bd6f2f-0316-4a16-b1bb-a43e58408d45.aspx</pingback:target>
      <dc:creator>Oren Ellenbogen</dc:creator>
      <wfw:comment>http://lnbogen.com/CommentView,guid,43bd6f2f-0316-4a16-b1bb-a43e58408d45.aspx</wfw:comment>
      <wfw:commentRss>http://lnbogen.com/SyndicationService.asmx/GetEntryCommentsRss?guid=43bd6f2f-0316-4a16-b1bb-a43e58408d45</wfw:commentRss>
      <title>Feature, User Story and Task</title>
      <guid isPermaLink="false">http://lnbogen.com/PermaLink,guid,43bd6f2f-0316-4a16-b1bb-a43e58408d45.aspx</guid>
      <link>http://lnbogen.com/2010/07/10/FeatureUserStoryAndTask.aspx</link>
      <pubDate>Sat, 10 Jul 2010 12:45:57 GMT</pubDate>
      <description>&lt;p&gt;
Many confuse the terms Feature, User Story and Task. I believe it’s important to grasp
the difference between them as each one serves different purpose and sometimes even
different audience.
&lt;/p&gt;
&lt;h4&gt;Feature
&lt;/h4&gt;
&lt;p&gt;
Feature is a detailed experience of how your &lt;b&gt;users&lt;/b&gt; will do &lt;b&gt;something &lt;/b&gt;with
your application. In order to make “something” meaningful, a Feature must include
(1) the reasoning behind it, the motivation, “the goal”, “the pain to solve” – without
it, it’s simply impossible to judge Feature’s ROI in terms of value versus effort
and money. Once this is in place, Feature should include (2) user flows. A user flow
might be “User can click on the delete button to delete his record, this will popup
[a message] for him to verify first”. Usually, a Feature will be built from multiple
flows, edge-cases and wording to make sure the grand experience is fully complete.
To help relating flow with look &amp; feel, a Feature should (3) include mockups and other
accessories. Lastly, (4) business (and even technical) notes should be added to wrap
up the experience: URL structure, SEO considerations, user messages user, analytics
requirements etc.
&lt;/p&gt;
&lt;p&gt;
&lt;u&gt;Language&lt;/u&gt;: customer’s lingo. 
&lt;br /&gt;
&lt;u&gt;Estimation Size:&lt;/u&gt; Ideal Days / Story Points / T-Shirt sizes&lt;br /&gt;
&lt;u&gt;Clients&lt;/u&gt;: Internal and external: development/marketing/business/analytics teams
and &lt;strong&gt;also&lt;/strong&gt; your customers (to share with them on feedback forums, blogs). 
&lt;br /&gt;
&lt;u&gt;To Include&lt;/u&gt;: (1) reasoning (2) flows (3) mockups and (4) business/technical
notes.
&lt;/p&gt;
&lt;h5&gt;
&lt;/h5&gt;
&lt;h4&gt;User Story
&lt;/h4&gt;
&lt;p&gt;
User Story is a &lt;strong&gt;single “user flow”&lt;/strong&gt; from a Feature I described above.
“User can enter his password and re-enter it for password verification. If the passwords
are not matched, the system will show a message”. Another example: “User can enter
his password; the system will check the password’s strength by [rules] and notify
the user if the password is not strong enough”. By itself, from User Story is hard
to understand the entire picture, but it’s a smaller unit of work to plan and execute
by.
&lt;/p&gt;
&lt;p&gt;
&lt;u&gt;Language&lt;/u&gt;: customer’s lingo. 
&lt;br /&gt;
&lt;u&gt;Estimation Size:&lt;/u&gt; Ideal Days / Story Points&lt;br /&gt;
&lt;u&gt;Clients&lt;/u&gt;: mostly internal, sometimes external - some User Stories just don’t
make sense on their own, without the Feature as complete background. 
&lt;br /&gt;
&lt;u&gt;To Include&lt;/u&gt;: (1) flow (2) mockup and (3) business/technical notes.
&lt;/p&gt;
&lt;h4&gt;Task
&lt;/h4&gt;
&lt;p&gt;
A task is a specific “todo” with a given work estimation. A Feature can be broken
into multiple tasks and so does a User Story. A task will be something like “Add new
column to database called Rate and model it in the application – 1 hour of effort”,
or “create javascript function to validate input on price field – 1.5 hours of effort”
or “create landing page for our campaign with Nike and connect it to our analytics
system – 3 hours”. Task resolution will always be much smaller and much more technical
than Feature or User Story. It will explain what to do rather than why.
&lt;/p&gt;
&lt;p&gt;
&lt;u&gt;Language&lt;/u&gt;: development/marketing/business lingo. 
&lt;br /&gt;
&lt;u&gt;Estimation Size:&lt;/u&gt; Hours&lt;br /&gt;
&lt;u&gt;Clients&lt;/u&gt;: internal only! 
&lt;br /&gt;
&lt;u&gt;To Include&lt;/u&gt;: technical information needed.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=43bd6f2f-0316-4a16-b1bb-a43e58408d45" /&gt;</description>
      <comments>http://lnbogen.com/CommentView,guid,43bd6f2f-0316-4a16-b1bb-a43e58408d45.aspx</comments>
      <category>Agile</category>
      <category>Scrum</category>
    </item>
    <item>
      <trackback:ping>http://lnbogen.com/Trackback.aspx?guid=18ff43aa-a5bb-4372-89e4-b4ddef21c4a4</trackback:ping>
      <pingback:server>http://lnbogen.com/pingback.aspx</pingback:server>
      <pingback:target>http://lnbogen.com/PermaLink,guid,18ff43aa-a5bb-4372-89e4-b4ddef21c4a4.aspx</pingback:target>
      <dc:creator>Oren Ellenbogen</dc:creator>
      <wfw:comment>http://lnbogen.com/CommentView,guid,18ff43aa-a5bb-4372-89e4-b4ddef21c4a4.aspx</wfw:comment>
      <wfw:commentRss>http://lnbogen.com/SyndicationService.asmx/GetEntryCommentsRss?guid=18ff43aa-a5bb-4372-89e4-b4ddef21c4a4</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
As I <a href="http://lnbogen.com/2010/07/08/VersionExtractReleasesFromSprints.aspx">mentioned</a>,
you should not tie sprints and releases together. I thought to add a few notes about
what will make a Sprint Demo really great. Luckily Moran Haviv, our legendary Project
Manager at Delver, wrote a great recap I thought to share with you:
</p>
        <h4>
          <b>Why Sprint Demo?</b>
        </h4>
        <p>
· The primary purpose of the Demo is to communicate, share and celebrate what everyone
managed to do in the last sprint and what is the value of it for the user/Organization;
In other words: what are we doing here and Why are we doing it?.
</p>
        <p>
· Collect valuable feedback to make sure our users will love our product as much as
we do!
</p>
        <p>
· Teams gets to show off with their output/artifact to everyone; (even if the software
has no UI it might yet deserve to be presented by a good story).
</p>
        <h4>A few guidelines for preparing great demo
</h4>
        <ul>
          <li>
            <b>Tell a story</b>. Center your demo around a realistic user solving a real problem.
The point is not just to show that the software works, but to show that it’s valuable. 
</li>
          <li>
            <b>What is a good Story? Or How can you tell it : </b>
            <ul>
              <li>
Use a meaningful relevant theme; 
</li>
              <li>
Demonstrate sequence of events as the user would experience them (tell the story); 
</li>
              <li>
Use realistic data and characters—use examples and names from your user community
or members of the development team; 
</li>
              <li>
Make it Exciting and Entertaining 
</li>
            </ul>
          </li>
          <li>
            <b>Keep it short</b>. focus on what’s interesting and what’s valuable about your feature
(you don’t need to exhaustively cover all your acceptance criteria). 
</li>
          <li>
            <b>Prepare.</b> Create any necessary test data. 
</li>
        </ul>
        <img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=18ff43aa-a5bb-4372-89e4-b4ddef21c4a4" />
      </body>
      <title>Great Sprint Demo: the recipe</title>
      <guid isPermaLink="false">http://lnbogen.com/PermaLink,guid,18ff43aa-a5bb-4372-89e4-b4ddef21c4a4.aspx</guid>
      <link>http://lnbogen.com/2010/07/08/GreatSprintDemoTheRecipe.aspx</link>
      <pubDate>Thu, 08 Jul 2010 21:12:44 GMT</pubDate>
      <description>&lt;p&gt;
As I &lt;a href="http://lnbogen.com/2010/07/08/VersionExtractReleasesFromSprints.aspx"&gt;mentioned&lt;/a&gt;,
you should not tie sprints and releases together. I thought to add a few notes about
what will make a Sprint Demo really great. Luckily Moran Haviv, our legendary Project
Manager at Delver, wrote a great recap I thought to share with you:
&lt;/p&gt;
&lt;h4&gt;&lt;b&gt;Why Sprint Demo?&lt;/b&gt;
&lt;/h4&gt;
&lt;p&gt;
· The primary purpose of the Demo is to communicate, share and celebrate what everyone
managed to do in the last sprint and what is the value of it for the user/Organization;
In other words: what are we doing here and Why are we doing it?.
&lt;/p&gt;
&lt;p&gt;
· Collect valuable feedback to make sure our users will love our product as much as
we do!
&lt;/p&gt;
&lt;p&gt;
· Teams gets to show off with their output/artifact to everyone; (even if the software
has no UI it might yet deserve to be presented by a good story).
&lt;/p&gt;
&lt;h4&gt;A few guidelines for preparing great demo
&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;b&gt;Tell a story&lt;/b&gt;. Center your demo around a realistic user solving a real problem.
The point is not just to show that the software works, but to show that it’s valuable. 
&lt;/li&gt;
&lt;li&gt;
&lt;b&gt;What is a good Story? Or How can you tell it : &lt;/b&gt; 
&lt;ul&gt;
&lt;li&gt;
Use a meaningful relevant theme; 
&lt;/li&gt;
&lt;li&gt;
Demonstrate sequence of events as the user would experience them (tell the story); 
&lt;/li&gt;
&lt;li&gt;
Use realistic data and characters—use examples and names from your user community
or members of the development team; 
&lt;/li&gt;
&lt;li&gt;
Make it Exciting and Entertaining 
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;b&gt;Keep it short&lt;/b&gt;. focus on what’s interesting and what’s valuable about your feature
(you don’t need to exhaustively cover all your acceptance criteria). 
&lt;/li&gt;
&lt;li&gt;
&lt;b&gt;Prepare.&lt;/b&gt; Create any necessary test data. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=18ff43aa-a5bb-4372-89e4-b4ddef21c4a4" /&gt;</description>
      <comments>http://lnbogen.com/CommentView,guid,18ff43aa-a5bb-4372-89e4-b4ddef21c4a4.aspx</comments>
      <category>Agile</category>
      <category>Scrum</category>
    </item>
    <item>
      <trackback:ping>http://lnbogen.com/Trackback.aspx?guid=33a73a1b-9d03-4aa8-8c35-0b8cc585652e</trackback:ping>
      <pingback:server>http://lnbogen.com/pingback.aspx</pingback:server>
      <pingback:target>http://lnbogen.com/PermaLink,guid,33a73a1b-9d03-4aa8-8c35-0b8cc585652e.aspx</pingback:target>
      <dc:creator>Oren Ellenbogen</dc:creator>
      <wfw:comment>http://lnbogen.com/CommentView,guid,33a73a1b-9d03-4aa8-8c35-0b8cc585652e.aspx</wfw:comment>
      <wfw:commentRss>http://lnbogen.com/SyndicationService.asmx/GetEntryCommentsRss?guid=33a73a1b-9d03-4aa8-8c35-0b8cc585652e</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <h4>Separation of Concerns
</h4>
        <p>
Working by the <a href="http://www.scrumalliance.org/articles/39-glossary-of-scrum-terms">“scrum
book”,</a> sprint is also a release unit, in which you want to complete all the effort
you committed to your clients and demonstrate it at the end of the sprint. Well, not
in <a href="http://lnbogen.com/2010/07/08/SprintPlanJustEnoughDoItReflect.aspx">my
book</a>. Sprint should be remained an <strong>internal</strong> unit of time. Sprint
is used for planning, for doing and for reflection, to make the team work better over
time. It doesn’t mean that your customers will enjoy adjusting to your schedule. 
</p>
        <p>
I prefer to leave release cycles outside, as they are <strong>external</strong> unit
of time. You need to adjust them to your customers, not the other way around.
</p>
        <p>
Let’s say that you picked 3 weeks as a sprint size after considering <a href="http://lnbogen.com/2010/07/08/SprintPlanJustEnoughDoItReflect.aspx">“big
enough, small enough”</a> values. If you tie sprint and release together, that means
that your clients will see things every 3 weeks. That might be fine, but it won’t
allow you to challenge yourself to reduce release cycles. Even worst, the customers
might demand a shorter release cycle to earn confidence in your delivery. A dangerous
move, in my opinion, is to reduce the sprint size to match desired release cycle.
This move might violate the “sprint should be big enough to avoid unacceptable overhead
of planning/reflection” principle. Yes, your customers will be happy but your developers
won’t. It won’t last. You want both internal team and external customers to be happy
and enjoy a process that pushes them forward rather than pushes them around.
</p>
        <h4>What is a Version?
</h4>
        <p>
Version is just a bunch of capabilities with a specific target date attached to it.
Version is easy to communicate out: “we plan to allow a user to upload image, crop
it and update his profile image in version 1.1, which is targeted to July 20th”. Basically,
for each targeted date you specify a list of features, enhancements, reports etc.
The customers gets to say when the versions should be aimed for, according to their
needs.
</p>
        <h4>What does it mean about Sprint Demo then?
</h4>
        <p>
Well, if the release cycles are shorter than sprint cycles then the Sprint Demo will
become a show off by the team to each other rather to your customers. Obviously, you
may want to add another “Release Demo” meeting for your customers (and maybe include
the team in it). By doing Sprint Demo internally, the teams will get the chance to
see what’s going on “on the other side of the corridor”. Oh, did I mention that this
is also <strong>fun</strong>? It allows the organization to collect valuable internal
feedback to make sure our users will love our product as much people who wrote it!
</p>
        <img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=33a73a1b-9d03-4aa8-8c35-0b8cc585652e" />
      </body>
      <title>Version: extract releases from sprints</title>
      <guid isPermaLink="false">http://lnbogen.com/PermaLink,guid,33a73a1b-9d03-4aa8-8c35-0b8cc585652e.aspx</guid>
      <link>http://lnbogen.com/2010/07/08/VersionExtractReleasesFromSprints.aspx</link>
      <pubDate>Thu, 08 Jul 2010 21:03:19 GMT</pubDate>
      <description>&lt;h4&gt;Separation of Concerns
&lt;/h4&gt;
&lt;p&gt;
Working by the &lt;a href="http://www.scrumalliance.org/articles/39-glossary-of-scrum-terms"&gt;“scrum
book”,&lt;/a&gt; sprint is also a release unit, in which you want to complete all the effort
you committed to your clients and demonstrate it at the end of the sprint. Well, not
in &lt;a href="http://lnbogen.com/2010/07/08/SprintPlanJustEnoughDoItReflect.aspx"&gt;my
book&lt;/a&gt;. Sprint should be remained an &lt;strong&gt;internal&lt;/strong&gt; unit of time. Sprint
is used for planning, for doing and for reflection, to make the team work better over
time. It doesn’t mean that your customers will enjoy adjusting to your schedule. 
&lt;/p&gt;
&lt;p&gt;
I prefer to leave release cycles outside, as they are &lt;strong&gt;external&lt;/strong&gt; unit
of time. You need to adjust them to your customers, not the other way around.
&lt;/p&gt;
&lt;p&gt;
Let’s say that you picked 3 weeks as a sprint size after considering &lt;a href="http://lnbogen.com/2010/07/08/SprintPlanJustEnoughDoItReflect.aspx"&gt;“big
enough, small enough”&lt;/a&gt; values. If you tie sprint and release together, that means
that your clients will see things every 3 weeks. That might be fine, but it won’t
allow you to challenge yourself to reduce release cycles. Even worst, the customers
might demand a shorter release cycle to earn confidence in your delivery. A dangerous
move, in my opinion, is to reduce the sprint size to match desired release cycle.
This move might violate the “sprint should be big enough to avoid unacceptable overhead
of planning/reflection” principle. Yes, your customers will be happy but your developers
won’t. It won’t last. You want both internal team and external customers to be happy
and enjoy a process that pushes them forward rather than pushes them around.
&lt;/p&gt;
&lt;h4&gt;What is a Version?
&lt;/h4&gt;
&lt;p&gt;
Version is just a bunch of capabilities with a specific target date attached to it.
Version is easy to communicate out: “we plan to allow a user to upload image, crop
it and update his profile image in version 1.1, which is targeted to July 20th”. Basically,
for each targeted date you specify a list of features, enhancements, reports etc.
The customers gets to say when the versions should be aimed for, according to their
needs.
&lt;/p&gt;
&lt;h4&gt;What does it mean about Sprint Demo then?
&lt;/h4&gt;
&lt;p&gt;
Well, if the release cycles are shorter than sprint cycles then the Sprint Demo will
become a show off by the team to each other rather to your customers. Obviously, you
may want to add another “Release Demo” meeting for your customers (and maybe include
the team in it). By doing Sprint Demo internally, the teams will get the chance to
see what’s going on “on the other side of the corridor”. Oh, did I mention that this
is also &lt;strong&gt;fun&lt;/strong&gt;? It allows the organization to collect valuable internal
feedback to make sure our users will love our product as much people who wrote it!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=33a73a1b-9d03-4aa8-8c35-0b8cc585652e" /&gt;</description>
      <comments>http://lnbogen.com/CommentView,guid,33a73a1b-9d03-4aa8-8c35-0b8cc585652e.aspx</comments>
      <category>Agile</category>
      <category>Management</category>
      <category>Scrum</category>
    </item>
    <item>
      <trackback:ping>http://lnbogen.com/Trackback.aspx?guid=9a0a137a-2945-4e23-894a-b67bdfdae2fe</trackback:ping>
      <pingback:server>http://lnbogen.com/pingback.aspx</pingback:server>
      <pingback:target>http://lnbogen.com/PermaLink,guid,9a0a137a-2945-4e23-894a-b67bdfdae2fe.aspx</pingback:target>
      <dc:creator>Oren Ellenbogen</dc:creator>
      <wfw:comment>http://lnbogen.com/CommentView,guid,9a0a137a-2945-4e23-894a-b67bdfdae2fe.aspx</wfw:comment>
      <wfw:commentRss>http://lnbogen.com/SyndicationService.asmx/GetEntryCommentsRss?guid=9a0a137a-2945-4e23-894a-b67bdfdae2fe</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <h4>“Sprint” – what does it mean?
</h4>
        <h5>
        </h5>
        <table border="0" cellspacing="0" cellpadding="2">
          <tbody>
            <tr>
              <td valign="top" width="446">
Note: my definition of sprint is not by the <a href="http://www.scrumalliance.org/articles/39-glossary-of-scrum-terms#1118">book</a>.
It’s perfectly fine by me as I love adjusting theory to practice; I hope it is okay
with you as well. Basically, a sprint is just a time window that you plan to <b>achieve
something</b> at. Just imagine a box with your interesting “todo” notes. For example,
in the next 2 weeks you may want to plan to perform some proof of concept for your
initiative; plan to create 3 landing pages to check which one covert users better
to registered users; plan to write a tutorial or even plan to upgrade your team’s
computers.</td>
              <td style="text-align: right; align: right" valign="top" width="208">
                <img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" src="http://www.lnbogen.com/content/binary/box.png" width="150" height="150" />
              </td>
            </tr>
          </tbody>
        </table>
        <h4>Why do I need to define a specific time window then?
</h4>
        <p>
The idea of a sprint, in essence, is simply to (1) ease psychological acceptance of
changes and (2) allow shorter, just-in-time planning. 
</p>
        <p>
Specific time window, made constant (sprint after sprint), allows you to understand
that things might change and you now made mental and physical “room” to adjust when
needed. It’s a bit of sugarcoating, of course, but it’s making the transition smoother. 
</p>
        <p>
The just-in-time planning part is more “acceptable” when you’re embracing the fact
that it’s <b>too damn expensive</b> trying to break all effort into small pieces.
You’re customers are “allowed” to change their mind, so – what’s the point of understanding
that something being requested for next year, will take 121 hours to develop? In 2
weeks, hell, in 2 days, this effort might cancelled. Breaking future effort to small
pieces is great, but <b>only</b> if it’s extremely cheap to achieve or extremely relevant
now. Until then, you might be okay with high level estimation.
</p>
        <h4>The perfect size: big enough, small enough
</h4>
        <p>
Sprint should be <b>big enough</b> to (1) achieve meaningful progress and (2) avoid
unacceptable overhead of planning + reflection. That means that if your smallest effort
is always at least 1.5 weeks, don’t use 1 week sprint. If you need a full day to plan
a sprint and another to reflect on how it went, don’t use 1 week sprint. Otherwise,
your people might feel “we’re doing nothing but planning and reflecting”.
</p>
        <p>
Sprint should also be <b>small enough</b> to allow to reflect and adjust often. Just
like “release often” attitude, adjust often will make the organization work better,
faster. Don’t dismiss it lightly.
</p>
        <h4>How many sprints should I plan in details?
</h4>
        <p>
Good question if I may compliment myself for asking so. I would aim for detailed plan
at least 1-1.5 months in advanced, unless you’re in a really volatile market and 1
month is “too far”. If your sprint size is 2 weeks, then I would say around 2-3 sprints.
By saying “in details” I mean very detailed understanding of effort, real breakdown
or very solid understanding, based on similar effort in the past or one-of-a-kind
magic ball. The idea is to have good image of near future; this will obviously be <strong>expensive</strong> to
create, but will give you <strong>confidence</strong> on how to achieve the most important
goals on your table. 
</p>
        <p>
I would try to understand what’s coming later on (3-6 months), but invest much less
time and stay with high level estimation. I don’t want to waste time on planning potentially
irrelevant effort.
</p>
        <h4>Natural dependencies planning
</h4>
        <p>
When sprint size picked wisely, there is much “smoother” feeling of dependencies planning.
There is no real need for Gantt or something of that sort, thank God. Everyone will
be aware of the effort being made in the sprint and will align dependencies accordingly.
The feeling will be more natural, more just-in-time rather the stating “we need infrastructure
team to finish in 6 months something so we could use it 9 months from now!”. It doesn’t
mean that dependencies planning is gone out the window, you’ll still need to do so
for big infrastructure effort, but you’ll see that it happens less than you were used
to. This is a good thing.
</p>
        <h4>Reflect and adjust
</h4>
        <p>
At the end of the sprint, it’s a great time to sit down and consider what went well,
what wasn’t (take Action Items) and what can be done to have better sprint next time.
You’ll adjust to external changes better when you’ll adjust to internal pains better.
</p>
        <h4>I thought that Agile == no planning
</h4>
        <p>
Now, that is just sick. Seriously, no one is expecting you to work badly. Great planning
is the only way to produce great products to your customers, deliver it on time and
with high quality. 
</p>
        <h4>Not all planning are born equal
</h4>
        <p>
Accept it, plan accordingly :)
</p>
        <img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=9a0a137a-2945-4e23-894a-b67bdfdae2fe" />
      </body>
      <title>Sprint: plan just enough, do it, reflect</title>
      <guid isPermaLink="false">http://lnbogen.com/PermaLink,guid,9a0a137a-2945-4e23-894a-b67bdfdae2fe.aspx</guid>
      <link>http://lnbogen.com/2010/07/08/SprintPlanJustEnoughDoItReflect.aspx</link>
      <pubDate>Thu, 08 Jul 2010 19:36:38 GMT</pubDate>
      <description>&lt;h4&gt;“Sprint” – what does it mean?
&lt;/h4&gt;
&lt;h5&gt;
&lt;/h5&gt;
&lt;table border="0" cellspacing="0" cellpadding="2"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="446"&gt;
Note: my definition of sprint is not by the &lt;a href="http://www.scrumalliance.org/articles/39-glossary-of-scrum-terms#1118"&gt;book&lt;/a&gt;.
It’s perfectly fine by me as I love adjusting theory to practice; I hope it is okay
with you as well. Basically, a sprint is just a time window that you plan to &lt;b&gt;achieve
something&lt;/b&gt; at. Just imagine a box with your interesting “todo” notes. For example,
in the next 2 weeks you may want to plan to perform some proof of concept for your
initiative; plan to create 3 landing pages to check which one covert users better
to registered users; plan to write a tutorial or even plan to upgrade your team’s
computers.&lt;/td&gt;
&lt;td style="text-align: right; align: right" valign="top" width="208"&gt;
&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" src="http://www.lnbogen.com/content/binary/box.png" width="150" height="150" /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4&gt;Why do I need to define a specific time window then?
&lt;/h4&gt;
&lt;p&gt;
The idea of a sprint, in essence, is simply to (1) ease psychological acceptance of
changes and (2) allow shorter, just-in-time planning. 
&lt;/p&gt;
&lt;p&gt;
Specific time window, made constant (sprint after sprint), allows you to understand
that things might change and you now made mental and physical “room” to adjust when
needed. It’s a bit of sugarcoating, of course, but it’s making the transition smoother. 
&lt;/p&gt;
&lt;p&gt;
The just-in-time planning part is more “acceptable” when you’re embracing the fact
that it’s &lt;b&gt;too damn expensive&lt;/b&gt; trying to break all effort into small pieces.
You’re customers are “allowed” to change their mind, so – what’s the point of understanding
that something being requested for next year, will take 121 hours to develop? In 2
weeks, hell, in 2 days, this effort might cancelled. Breaking future effort to small
pieces is great, but &lt;b&gt;only&lt;/b&gt; if it’s extremely cheap to achieve or extremely relevant
now. Until then, you might be okay with high level estimation.
&lt;/p&gt;
&lt;h4&gt;The perfect size: big enough, small enough
&lt;/h4&gt;
&lt;p&gt;
Sprint should be &lt;b&gt;big enough&lt;/b&gt; to (1) achieve meaningful progress and (2) avoid
unacceptable overhead of planning + reflection. That means that if your smallest effort
is always at least 1.5 weeks, don’t use 1 week sprint. If you need a full day to plan
a sprint and another to reflect on how it went, don’t use 1 week sprint. Otherwise,
your people might feel “we’re doing nothing but planning and reflecting”.
&lt;/p&gt;
&lt;p&gt;
Sprint should also be &lt;b&gt;small enough&lt;/b&gt; to allow to reflect and adjust often. Just
like “release often” attitude, adjust often will make the organization work better,
faster. Don’t dismiss it lightly.
&lt;/p&gt;
&lt;h4&gt;How many sprints should I plan in details?
&lt;/h4&gt;
&lt;p&gt;
Good question if I may compliment myself for asking so. I would aim for detailed plan
at least 1-1.5 months in advanced, unless you’re in a really volatile market and 1
month is “too far”. If your sprint size is 2 weeks, then I would say around 2-3 sprints.
By saying “in details” I mean very detailed understanding of effort, real breakdown
or very solid understanding, based on similar effort in the past or one-of-a-kind
magic ball. The idea is to have good image of near future; this will obviously be &lt;strong&gt;expensive&lt;/strong&gt; to
create, but will give you &lt;strong&gt;confidence&lt;/strong&gt; on how to achieve the most important
goals on your table. 
&lt;/p&gt;
&lt;p&gt;
I would try to understand what’s coming later on (3-6 months), but invest much less
time and stay with high level estimation. I don’t want to waste time on planning potentially
irrelevant effort.
&lt;/p&gt;
&lt;h4&gt;Natural dependencies planning
&lt;/h4&gt;
&lt;p&gt;
When sprint size picked wisely, there is much “smoother” feeling of dependencies planning.
There is no real need for Gantt or something of that sort, thank God. Everyone will
be aware of the effort being made in the sprint and will align dependencies accordingly.
The feeling will be more natural, more just-in-time rather the stating “we need infrastructure
team to finish in 6 months something so we could use it 9 months from now!”. It doesn’t
mean that dependencies planning is gone out the window, you’ll still need to do so
for big infrastructure effort, but you’ll see that it happens less than you were used
to. This is a good thing.
&lt;/p&gt;
&lt;h4&gt;Reflect and adjust
&lt;/h4&gt;
&lt;p&gt;
At the end of the sprint, it’s a great time to sit down and consider what went well,
what wasn’t (take Action Items) and what can be done to have better sprint next time.
You’ll adjust to external changes better when you’ll adjust to internal pains better.
&lt;/p&gt;
&lt;h4&gt;I thought that Agile == no planning
&lt;/h4&gt;
&lt;p&gt;
Now, that is just sick. Seriously, no one is expecting you to work badly. Great planning
is the only way to produce great products to your customers, deliver it on time and
with high quality. 
&lt;/p&gt;
&lt;h4&gt;Not all planning are born equal
&lt;/h4&gt;
&lt;p&gt;
Accept it, plan accordingly :)
&lt;/p&gt;
&lt;img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=9a0a137a-2945-4e23-894a-b67bdfdae2fe" /&gt;</description>
      <comments>http://lnbogen.com/CommentView,guid,9a0a137a-2945-4e23-894a-b67bdfdae2fe.aspx</comments>
      <category>Agile</category>
      <category>Management</category>
    </item>
    <item>
      <trackback:ping>http://lnbogen.com/Trackback.aspx?guid=9907c3ff-07e2-4749-b865-43f671c602a2</trackback:ping>
      <pingback:server>http://lnbogen.com/pingback.aspx</pingback:server>
      <pingback:target>http://lnbogen.com/PermaLink,guid,9907c3ff-07e2-4749-b865-43f671c602a2.aspx</pingback:target>
      <dc:creator>Oren Ellenbogen</dc:creator>
      <wfw:comment>http://lnbogen.com/CommentView,guid,9907c3ff-07e2-4749-b865-43f671c602a2.aspx</wfw:comment>
      <wfw:commentRss>http://lnbogen.com/SyndicationService.asmx/GetEntryCommentsRss?guid=9907c3ff-07e2-4749-b865-43f671c602a2</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Delver is all about letting you to explore, research and (eventually) purchase products
in a different way. Pushed and driven by what your network has to say, it will be
easy for you to see what books your friends recommending, what kind of movies are
hot or which camera you should buy next. You could publish polls, to get help from
your friends on what to purchase, you can rate products and write reviews, you can
create a catalog of items (“My ski trip to Italy”), create a gift catalog and share
it with your other friends, recommend products to your friends and plenty more!
</p>
        <p>
You’re <strong>more than welcome</strong> to check it out at <a href="http://delver.com/">http://delver.com/</a></p>
        <p>
We are still in “closed beta”, which means you need an *invite* to get in. Once you’re
in, you can send invites to your friends and enjoy their feedback on items you’re
interested at. If you want an invite, drop me a line with your email (or email me
directly).
</p>
        <img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=9907c3ff-07e2-4749-b865-43f671c602a2" />
      </body>
      <title>Delver beta is alive!</title>
      <guid isPermaLink="false">http://lnbogen.com/PermaLink,guid,9907c3ff-07e2-4749-b865-43f671c602a2.aspx</guid>
      <link>http://lnbogen.com/2010/05/13/DelverBetaIsAlive.aspx</link>
      <pubDate>Thu, 13 May 2010 10:53:37 GMT</pubDate>
      <description>&lt;p&gt;
Delver is all about letting you to explore, research and (eventually) purchase products
in a different way. Pushed and driven by what your network has to say, it will be
easy for you to see what books your friends recommending, what kind of movies are
hot or which camera you should buy next. You could publish polls, to get help from
your friends on what to purchase, you can rate products and write reviews, you can
create a catalog of items (“My ski trip to Italy”), create a gift catalog and share
it with your other friends, recommend products to your friends and plenty more!
&lt;/p&gt;
&lt;p&gt;
You’re &lt;strong&gt;more than welcome&lt;/strong&gt; to check it out at &lt;a href="http://delver.com/"&gt;http://delver.com/&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
We are still in “closed beta”, which means you need an *invite* to get in. Once you’re
in, you can send invites to your friends and enjoy their feedback on items you’re
interested at. If you want an invite, drop me a line with your email (or email me
directly).
&lt;/p&gt;
&lt;img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=9907c3ff-07e2-4749-b865-43f671c602a2" /&gt;</description>
      <comments>http://lnbogen.com/CommentView,guid,9907c3ff-07e2-4749-b865-43f671c602a2.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://lnbogen.com/Trackback.aspx?guid=3e4ee18b-a5f3-46a7-8f8f-1c2bb831b853</trackback:ping>
      <pingback:server>http://lnbogen.com/pingback.aspx</pingback:server>
      <pingback:target>http://lnbogen.com/PermaLink,guid,3e4ee18b-a5f3-46a7-8f8f-1c2bb831b853.aspx</pingback:target>
      <dc:creator>Oren Ellenbogen</dc:creator>
      <wfw:comment>http://lnbogen.com/CommentView,guid,3e4ee18b-a5f3-46a7-8f8f-1c2bb831b853.aspx</wfw:comment>
      <wfw:commentRss>http://lnbogen.com/SyndicationService.asmx/GetEntryCommentsRss?guid=3e4ee18b-a5f3-46a7-8f8f-1c2bb831b853</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I’ve spent around 2 hours to figure it out, so at least I’ll write it down. 
<br />
I’m using dotTrace 3.1 to do some analysis for .net web application running on Windows
Server 2008 R2 (IIS 7.5).
</p>
        <p>
I got strange numbers and was missing some data (methods calls) running “profile web
application” until I set the affinity of the w3wp.exe process to single Node (single
core). This can be done easily by opening the Tasks Manager, right click on w3wp process
–&gt; Set Affinity –&gt; pick just one core.
</p>
        <p>
Only then you should record the required page(s) and take the snapshot.
</p>
        <img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=3e4ee18b-a5f3-46a7-8f8f-1c2bb831b853" />
      </body>
      <title>Running dotTrace 3.1 on multi-core machine</title>
      <guid isPermaLink="false">http://lnbogen.com/PermaLink,guid,3e4ee18b-a5f3-46a7-8f8f-1c2bb831b853.aspx</guid>
      <link>http://lnbogen.com/2010/01/20/RunningDotTrace31OnMulticoreMachine.aspx</link>
      <pubDate>Wed, 20 Jan 2010 16:42:49 GMT</pubDate>
      <description>&lt;p&gt;
I’ve spent around 2 hours to figure it out, so at least I’ll write it down. 
&lt;br /&gt;
I’m using dotTrace 3.1 to do some analysis for .net web application running on Windows
Server 2008 R2 (IIS 7.5).
&lt;/p&gt;
&lt;p&gt;
I got strange numbers and was missing some data (methods calls) running “profile web
application” until I set the affinity of the w3wp.exe process to single Node (single
core). This can be done easily by opening the Tasks Manager, right click on w3wp process
–&amp;gt; Set Affinity –&amp;gt; pick just one core.
&lt;/p&gt;
&lt;p&gt;
Only then you should record the required page(s) and take the snapshot.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=3e4ee18b-a5f3-46a7-8f8f-1c2bb831b853" /&gt;</description>
      <comments>http://lnbogen.com/CommentView,guid,3e4ee18b-a5f3-46a7-8f8f-1c2bb831b853.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://lnbogen.com/Trackback.aspx?guid=2335d26b-d8fa-4f26-a4d7-53f42afcb67a</trackback:ping>
      <pingback:server>http://lnbogen.com/pingback.aspx</pingback:server>
      <pingback:target>http://lnbogen.com/PermaLink,guid,2335d26b-d8fa-4f26-a4d7-53f42afcb67a.aspx</pingback:target>
      <dc:creator>Oren Ellenbogen</dc:creator>
      <wfw:comment>http://lnbogen.com/CommentView,guid,2335d26b-d8fa-4f26-a4d7-53f42afcb67a.aspx</wfw:comment>
      <wfw:commentRss>http://lnbogen.com/SyndicationService.asmx/GetEntryCommentsRss?guid=2335d26b-d8fa-4f26-a4d7-53f42afcb67a</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
During team’s growth, the practice of keeping the knowledge base sound, looks like
mission impossible. There are simply too many concerns to write down and maintain:
picking a proper (=”searchable”) title to the knowledge base item, keeping the history
of changes in the design and why they were made, adding some drawing etc. Text notes
(and pretty pictures), what can we do, are getting obsolete extremely fast. 
</p>
        <blockquote>
          <p>
“How can we keep the team’s knowledge base without running after our tail?”
</p>
        </blockquote>
        <p>
My team came up with this suggestion:
</p>
        <blockquote>
          <p>
“Let’s keep the titles and put owners next to it, the rest can be solved with good
communication and tests!”
</p>
        </blockquote>
        <p>
Examples for such “knowledge base items” are, from our real list:
</p>
        <ul>
          <li>
Supporting Contextual Sign-In scenarios (Avish) 
</li>
          <li>
Common CSS Classes for our beautiful look-and-feel (Moran) 
</li>
          <li>
Creating and using pretty-URL routes (Ken) 
</li>
          <li>
… 
</li>
        </ul>
        <p>
          <br />
We broke it into domains like “basic architecture”, “common features”, “cross-cutting
concerns”. Now the list is easy to search at (wiki) and fun to maintain. 
<br /><br />
This work extremely well if:
</p>
        <ul>
          <li>
Code-reviews are done on a regular basis. This means that at least 2 developers can
talk about each knowledge base item. 
</li>
          <li>
Tests are written to built great confidence (to refactor easily) in the code. I talk
about unit-testing, integration testing, UI testing etc. 
<ul><li>
Great tests explain how to use the API and what should be expected from it. 
</li><li>
Tests (mostly integration tests) explain the latest architecture. 
</li></ul></li>
          <li>
Comments in code should include the “why” behind the logic. Team members can add to
it even more if needed, by talking with each other. 
</li>
          <li>
New developers are exposed to the knowledge base, talking with the relevant owners.
This is a great reference to look at. 
</li>
        </ul>
        <p>
Simple, short, effective!
</p>
        <img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=2335d26b-d8fa-4f26-a4d7-53f42afcb67a" />
      </body>
      <title>Keeping team’s knowledge base</title>
      <guid isPermaLink="false">http://lnbogen.com/PermaLink,guid,2335d26b-d8fa-4f26-a4d7-53f42afcb67a.aspx</guid>
      <link>http://lnbogen.com/2009/09/17/KeepingTeamsKnowledgeBase.aspx</link>
      <pubDate>Thu, 17 Sep 2009 12:59:11 GMT</pubDate>
      <description>&lt;p&gt;
During team’s growth, the practice of keeping the knowledge base sound, looks like
mission impossible. There are simply too many concerns to write down and maintain:
picking a proper (=”searchable”) title to the knowledge base item, keeping the history
of changes in the design and why they were made, adding some drawing etc. Text notes
(and pretty pictures), what can we do, are getting obsolete extremely fast. 
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
“How can we keep the team’s knowledge base without running after our tail?”
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
My team came up with this suggestion:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
“Let’s keep the titles and put owners next to it, the rest can be solved with good
communication and tests!”
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Examples for such “knowledge base items” are, from our real list:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Supporting Contextual Sign-In scenarios (Avish) 
&lt;/li&gt;
&lt;li&gt;
Common CSS Classes for our beautiful look-and-feel (Moran) 
&lt;/li&gt;
&lt;li&gt;
Creating and using pretty-URL routes (Ken) 
&lt;/li&gt;
&lt;li&gt;
… 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;br /&gt;
We broke it into domains like “basic architecture”, “common features”, “cross-cutting
concerns”. Now the list is easy to search at (wiki) and fun to maintain. 
&lt;br /&gt;
&lt;br /&gt;
This work extremely well if:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Code-reviews are done on a regular basis. This means that at least 2 developers can
talk about each knowledge base item. 
&lt;/li&gt;
&lt;li&gt;
Tests are written to built great confidence (to refactor easily) in the code. I talk
about unit-testing, integration testing, UI testing etc. 
&lt;ul&gt;
&lt;li&gt;
Great tests explain how to use the API and what should be expected from it. 
&lt;/li&gt;
&lt;li&gt;
Tests (mostly integration tests) explain the latest architecture. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
Comments in code should include the “why” behind the logic. Team members can add to
it even more if needed, by talking with each other. 
&lt;/li&gt;
&lt;li&gt;
New developers are exposed to the knowledge base, talking with the relevant owners.
This is a great reference to look at. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Simple, short, effective!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=2335d26b-d8fa-4f26-a4d7-53f42afcb67a" /&gt;</description>
      <comments>http://lnbogen.com/CommentView,guid,2335d26b-d8fa-4f26-a4d7-53f42afcb67a.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://lnbogen.com/Trackback.aspx?guid=8c1d064e-af42-4751-ab4c-76a7c4b993ca</trackback:ping>
      <pingback:server>http://lnbogen.com/pingback.aspx</pingback:server>
      <pingback:target>http://lnbogen.com/PermaLink,guid,8c1d064e-af42-4751-ab4c-76a7c4b993ca.aspx</pingback:target>
      <dc:creator>Oren Ellenbogen</dc:creator>
      <wfw:comment>http://lnbogen.com/CommentView,guid,8c1d064e-af42-4751-ab4c-76a7c4b993ca.aspx</wfw:comment>
      <wfw:commentRss>http://lnbogen.com/SyndicationService.asmx/GetEntryCommentsRss?guid=8c1d064e-af42-4751-ab4c-76a7c4b993ca</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <h3>Great dishes. Great timing. <strong>Every single day. This is one amazing place
to eat at!</strong></h3>
        <p>
In many ways, running a great team of developers is just like running top-quality
kitchen. 
<br />
You’re measured by your ability to serve great quality(CI? well tested?), super tasty(nice
UI?) dishes (features?), to hungry people (clients?) in reasonable time (before they’ll
leave to another site).
</p>
        <h3>Without solid understanding of ETA, there is no way to predict quality and release
in time.
</h3>
        <p>
Most of us are driven by what life has to throw on us, may it be some personal event,
a new book you read that makes you want to refactor everything or simply a lot of
context-switches between projects and bugs. 
<br />
Add this to our constant urge to excel at what we do, and you get a “miraculous” skill
of losing control over our time. We’re built this way. <strong>Life is pushing us
around!</strong></p>
        <p>
How does this effect us or the “wheel” I’m talking about? I want to introduce you
to Joe.  
<br />
Joe is a nice guy in my imaginary world, working as a superstar developer for “TheBestOutThere”
company. Joe was assigned to complete a feature and asked to estimate when it will
be done. “This feature is quite simple”, he shoots fast, “a few changes here, a few
there and then the UI to nail the all thing. Hmmm… I guess that <strong>no more than
2 days of work</strong>”. So our story begins…
</p>
        <p>
The first day goes pretty well as Joe adding the needed fields to the database and
even manage to complete some tasks regarding the logic needed. On the second day (reminder:
the last day according to the ETA) things starting to bite Joe’s ass. The feature
turns to be a bit more difficult than he anticipated, and he feels that it will take
2 extra hours to complete the work. Keeping it in mind, he already notifies the wife
he’s going to be late today. “Damn, late again?”, he ponders, “oh well, at least I
know what is left to do now”. Knowing that he needs to leave late today, he continues
to work and suddenly he detects a really ugly piece of code in his path. “Refactoring
time baby!”, he smiles to himself. “Well, I already have a few spare hours, why not?”,
he convince himself once more. It works. The refactoring takes additional 4 hours.
Joe, in a panic attack understands that it took more than he planned, hurries up missing
a few critical tests and canceling the “code review” meeting claiming “this feature
is simple enough!”. The code-review still takes place as this is simply a must for
top-quality kitchens. Fixing the code review comments, including adding the missing
tests (as needed to begin with) cost a few more hours and so <strong>days starting
to fly by</strong>. After 5 days, Joe moving the feature to “code-ready”, now waiting
for QA to test the feature. QA opens about 7 bugs, which take 6 more hours to fix
(with solid unit tests to reproduce these bugs). On top of it, some more fixes were
needed for easy deployment later on in production. <strong>The feature took total
of about 7 days</strong>. Where is the missing 5 days went to? is Joe simply a poor
estimator? Not quite, he just suffer from bad “context” we all do. He suffers from
the constant battle between deliver fast and deliver with high quality. The problem
is that it’s really hard to understand how estimation and quality work together.
</p>
        <h4>If ETA is Jesus, Quality is God. Which is more tangible?
</h4>
        <p>
People are wasting time trying to convince themselves they can outperform on a daily
basis. We can’t. Our best is probably not as great as we imagine. Instead, let’s not
try to improve our ability to code faster, think faster or drink more coffee. Even
if you manage to get better at it (or consume more coffee and urinate to a cup), it
won’t last for long (urine tends to stink in the room).
</p>
        <p>
Instead, think carefully about “where the hack my 5 more days went to? Could I see
it coming?” 
<br />
Here is the “context” Joe needed to have in order to produce a <strong>complete</strong> feature,
with great quality, in time:
</p>
        <ol>
          <li>
Did I spare enough time reading the spec and talking with the Product Manager about
it? (yes, this <strong>is</strong> part of the feature!)</li>
          <li>
Did I make sure there are no open issues left?</li>
          <li>
Did I spare time thinking about how this feature will be tested? how we can automate
these tests easily?</li>
          <li>
Did I spare time to design the solution and do the required review with other people?
what about the hours needed to fix your solution based on the reviews?</li>
          <li>
Did I spare time to read QA test cases and give feedback on it?</li>
          <li>
Do I have everything you need to make the feature a huge success? 
</li>
        </ol>
        <ol>
          <li>
What about people helping you out where needed? 
</li>
        </ol>
        <li>
Did I spare enough time to write the code itself? are you sure?</li>
        <li>
Did I spare time for testing? I talk about really great testing (unit tests, integration
tests, automated UI tests, manual UI tests)</li>
        <ol>
          <li>
Again, the goal here is great confidence in quality, not 100% test coverage.</li>
        </ol>
        <li>
Did I spare time for code reviews? for code reviews fixes?</li>
        <li>
Did I spare time thinking about how this feature will be deployed?</li>
        <li>
Did I spare time sitting with the Product Manager again on your <strong>final result</strong> before
merging your work back to “trunk”? (do it now as it’s “hot”)</li>
        <li>
Did I spare time for “bug fixing buffer” (saving ~10% of the feature time for bug
fixing is a good start, try to reduce later)?</li>
        <p>
Estimating each one of these steps (use “buffers” if certainty is low) and you’re
a bit closer to understand where the missing 5 days vanished.  
<br />
Joe was thinking only about the <strong>coding</strong> effort, not the <strong>entire
picture</strong>! This, by nature, means inability to consistently predict when something
will end. He was pricing the wrong thing!
</p>
        <h4>What does it take to make your team great unit of brilliant minds producing great
dishes, every time:
</h4>
        <ol>
          <li>
Hire the best. They simply worth it. (oh well, that was easy, right? :))</li>
          <li>
Trust them doing the best work one can do! Help them get them but don’t think they
can’t get there by themselves with the right set of tools and context.</li>
          <li>
Start with explaining the meaning of great ETA - without it, prediction is impossible.
Consistency is a lost cause. This is one bad kitchen.</li>
          <li>
Ask people to stand behind there ETA. <strong>They</strong> are <strong>responsible</strong> for
it!</li>
          <li>
In the same breath, remind them that quality work is the right path to get a correct
ETA. Quality work will lead to shorter cycle eventually! 
</li>
          <li>
But (here comes to tricky part!), they should also remember that over-refactoring
leads to <strong>high quality of nothing important</strong> (as nothing really reach
production).</li>
          <li>
So, define together what is “quality work”. Set it as “team context”.</li>
          <li>
Constantly hear what your guys has to say about “I wish we could fix it!”. Eliminate
the big things (lack of tools, too many context-switches, not enough testing etc).</li>
          <li>
Try to inject a lot of honesty, communication and great motivation to the team. This
is the basic engine oil no one can live without.</li>
          <li>
Measure delivery cycle length: spec –&gt; design –&gt; getting ETA –&gt; feature is
code-ready –&gt; solving all bugs –&gt; deployed in production.</li>
          <li>
Talk with your guys to understand waste again. Eliminate the big things now! seriously!</li>
          <li>
Keep hiring more people, only the best, you’ll need them soon enough.</li>
        </ol>
        <p>
Over time, the cycle of delivery should get much better while the quality will get
even higher. The trick here is that people will feel more confident in the flow, “saving'”
time to write quality piece of code, making features amazingly stable in the 1st attempt. <strong>This
is the consistent rhythm you should dream of. The wheel spins…</strong></p>
        <img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=8c1d064e-af42-4751-ab4c-76a7c4b993ca" />
      </body>
      <title>Estimations spin the wheel</title>
      <guid isPermaLink="false">http://lnbogen.com/PermaLink,guid,8c1d064e-af42-4751-ab4c-76a7c4b993ca.aspx</guid>
      <link>http://lnbogen.com/2009/09/16/EstimationsSpinTheWheel.aspx</link>
      <pubDate>Wed, 16 Sep 2009 10:38:45 GMT</pubDate>
      <description>&lt;h3&gt;Great dishes. Great timing. &lt;strong&gt;Every single day. This is one amazing place
to eat at!&lt;/strong&gt;
&lt;/h3&gt;
&lt;p&gt;
In many ways, running a great team of developers is just like running top-quality
kitchen. 
&lt;br /&gt;
You’re measured by your ability to serve great quality(CI? well tested?), super tasty(nice
UI?) dishes (features?), to hungry people (clients?) in reasonable time (before they’ll
leave to another site).
&lt;/p&gt;
&lt;h3&gt;Without solid understanding of ETA, there is no way to predict quality and release
in time.
&lt;/h3&gt;
&lt;p&gt;
Most of us are driven by what life has to throw on us, may it be some personal event,
a new book you read that makes you want to refactor everything or simply a lot of
context-switches between projects and bugs. 
&lt;br /&gt;
Add this to our constant urge to excel at what we do, and you get a “miraculous” skill
of losing control over our time. We’re built this way. &lt;strong&gt;Life is pushing us
around!&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
How does this effect us or the “wheel” I’m talking about? I want to introduce you
to Joe.&amp;#160; 
&lt;br /&gt;
Joe is a nice guy in my imaginary world, working as a superstar developer for “TheBestOutThere”
company. Joe was assigned to complete a feature and asked to estimate when it will
be done. “This feature is quite simple”, he shoots fast, “a few changes here, a few
there and then the UI to nail the all thing. Hmmm… I guess that &lt;strong&gt;no more than
2 days of work&lt;/strong&gt;”. So our story begins…
&lt;/p&gt;
&lt;p&gt;
The first day goes pretty well as Joe adding the needed fields to the database and
even manage to complete some tasks regarding the logic needed. On the second day (reminder:
the last day according to the ETA) things starting to bite Joe’s ass. The feature
turns to be a bit more difficult than he anticipated, and he feels that it will take
2 extra hours to complete the work. Keeping it in mind, he already notifies the wife
he’s going to be late today. “Damn, late again?”, he ponders, “oh well, at least I
know what is left to do now”. Knowing that he needs to leave late today, he continues
to work and suddenly he detects a really ugly piece of code in his path. “Refactoring
time baby!”, he smiles to himself. “Well, I already have a few spare hours, why not?”,
he convince himself once more. It works. The refactoring takes additional 4 hours.
Joe, in a panic attack understands that it took more than he planned, hurries up missing
a few critical tests and canceling the “code review” meeting claiming “this feature
is simple enough!”. The code-review still takes place as this is simply a must for
top-quality kitchens. Fixing the code review comments, including adding the missing
tests (as needed to begin with) cost a few more hours and so &lt;strong&gt;days starting
to fly by&lt;/strong&gt;. After 5 days, Joe moving the feature to “code-ready”, now waiting
for QA to test the feature. QA opens about 7 bugs, which take 6 more hours to fix
(with solid unit tests to reproduce these bugs). On top of it, some more fixes were
needed for easy deployment later on in production. &lt;strong&gt;The feature took total
of about 7 days&lt;/strong&gt;. Where is the missing 5 days went to? is Joe simply a poor
estimator? Not quite, he just suffer from bad “context” we all do. He suffers from
the constant battle between deliver fast and deliver with high quality. The problem
is that it’s really hard to understand how estimation and quality work together.
&lt;/p&gt;
&lt;h4&gt;If ETA is Jesus, Quality is God. Which is more tangible?
&lt;/h4&gt;
&lt;p&gt;
People are wasting time trying to convince themselves they can outperform on a daily
basis. We can’t. Our best is probably not as great as we imagine. Instead, let’s not
try to improve our ability to code faster, think faster or drink more coffee. Even
if you manage to get better at it (or consume more coffee and urinate to a cup), it
won’t last for long (urine tends to stink in the room).
&lt;/p&gt;
&lt;p&gt;
Instead, think carefully about “where the hack my 5 more days went to? Could I see
it coming?” 
&lt;br /&gt;
Here is the “context” Joe needed to have in order to produce a &lt;strong&gt;complete&lt;/strong&gt; feature,
with great quality, in time:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Did I spare enough time reading the spec and talking with the Product Manager about
it? (yes, this &lt;strong&gt;is&lt;/strong&gt; part of the feature!)&lt;/li&gt;
&lt;li&gt;
Did I make sure there are no open issues left?&lt;/li&gt;
&lt;li&gt;
Did I spare time thinking about how this feature will be tested? how we can automate
these tests easily?&lt;/li&gt;
&lt;li&gt;
Did I spare time to design the solution and do the required review with other people?
what about the hours needed to fix your solution based on the reviews?&lt;/li&gt;
&lt;li&gt;
Did I spare time to read QA test cases and give feedback on it?&lt;/li&gt;
&lt;li&gt;
Do I have everything you need to make the feature a huge success? 
&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;
What about people helping you out where needed? 
&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;
Did I spare enough time to write the code itself? are you sure?&lt;/li&gt;
&lt;li&gt;
Did I spare time for testing? I talk about really great testing (unit tests, integration
tests, automated UI tests, manual UI tests)&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;
Again, the goal here is great confidence in quality, not 100% test coverage.&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;
Did I spare time for code reviews? for code reviews fixes?&lt;/li&gt;
&lt;li&gt;
Did I spare time thinking about how this feature will be deployed?&lt;/li&gt;
&lt;li&gt;
Did I spare time sitting with the Product Manager again on your &lt;strong&gt;final result&lt;/strong&gt; before
merging your work back to “trunk”? (do it now as it’s “hot”)&lt;/li&gt;
&lt;li&gt;
Did I spare time for “bug fixing buffer” (saving ~10% of the feature time for bug
fixing is a good start, try to reduce later)?&lt;/li&gt;
&gt;
&lt;p&gt;
Estimating each one of these steps (use “buffers” if certainty is low) and you’re
a bit closer to understand where the missing 5 days vanished.&amp;#160; 
&lt;br /&gt;
Joe was thinking only about the &lt;strong&gt;coding&lt;/strong&gt; effort, not the &lt;strong&gt;entire
picture&lt;/strong&gt;! This, by nature, means inability to consistently predict when something
will end. He was pricing the wrong thing!
&lt;/p&gt;
&lt;h4&gt;What does it take to make your team great unit of brilliant minds producing great
dishes, every time:
&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;
Hire the best. They simply worth it. (oh well, that was easy, right? :))&lt;/li&gt;
&lt;li&gt;
Trust them doing the best work one can do! Help them get them but don’t think they
can’t get there by themselves with the right set of tools and context.&lt;/li&gt;
&lt;li&gt;
Start with explaining the meaning of great ETA - without it, prediction is impossible.
Consistency is a lost cause. This is one bad kitchen.&lt;/li&gt;
&lt;li&gt;
Ask people to stand behind there ETA. &lt;strong&gt;They&lt;/strong&gt; are &lt;strong&gt;responsible&lt;/strong&gt; for
it!&lt;/li&gt;
&lt;li&gt;
In the same breath, remind them that quality work is the right path to get a correct
ETA. Quality work will lead to shorter cycle eventually! 
&lt;/li&gt;
&lt;li&gt;
But (here comes to tricky part!), they should also remember that over-refactoring
leads to &lt;strong&gt;high quality of nothing important&lt;/strong&gt; (as nothing really reach
production).&lt;/li&gt;
&lt;li&gt;
So, define together what is “quality work”. Set it as “team context”.&lt;/li&gt;
&lt;li&gt;
Constantly hear what your guys has to say about “I wish we could fix it!”. Eliminate
the big things (lack of tools, too many context-switches, not enough testing etc).&lt;/li&gt;
&lt;li&gt;
Try to inject a lot of honesty, communication and great motivation to the team. This
is the basic engine oil no one can live without.&lt;/li&gt;
&lt;li&gt;
Measure delivery cycle length: spec –&amp;gt; design –&amp;gt; getting ETA –&amp;gt; feature is
code-ready –&amp;gt; solving all bugs –&amp;gt; deployed in production.&lt;/li&gt;
&lt;li&gt;
Talk with your guys to understand waste again. Eliminate the big things now! seriously!&lt;/li&gt;
&lt;li&gt;
Keep hiring more people, only the best, you’ll need them soon enough.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
Over time, the cycle of delivery should get much better while the quality will get
even higher. The trick here is that people will feel more confident in the flow, “saving'”
time to write quality piece of code, making features amazingly stable in the 1st attempt. &lt;strong&gt;This
is the consistent rhythm you should dream of. The wheel spins…&lt;/strong&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=8c1d064e-af42-4751-ab4c-76a7c4b993ca" /&gt;</description>
      <comments>http://lnbogen.com/CommentView,guid,8c1d064e-af42-4751-ab4c-76a7c4b993ca.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://lnbogen.com/Trackback.aspx?guid=8b187d37-d165-4882-8714-8e98e082ae55</trackback:ping>
      <pingback:server>http://lnbogen.com/pingback.aspx</pingback:server>
      <pingback:target>http://lnbogen.com/PermaLink,guid,8b187d37-d165-4882-8714-8e98e082ae55.aspx</pingback:target>
      <dc:creator>Oren Ellenbogen</dc:creator>
      <wfw:comment>http://lnbogen.com/CommentView,guid,8b187d37-d165-4882-8714-8e98e082ae55.aspx</wfw:comment>
      <wfw:commentRss>http://lnbogen.com/SyndicationService.asmx/GetEntryCommentsRss?guid=8b187d37-d165-4882-8714-8e98e082ae55</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Can you count the number of times you were asked with this innocent question? 
</p>
        <p>
I tried to think and analyze the "motivation" behind this question, considering <em>why </em>people
are so intrigued to hear <em>my</em> answer when putting me on the spot. Is it really
that important for others to know what Oren have to say about God? I can't ignore
the simple fact that religion is a huge cornerstone in our life and finding more people
with similar believes give us great comfort and sense of power. People are looking
for acceptance, to become part of a group they can define and feel "right" in. This
is a social aspect that is common to almost everything we do in life (love, friends,
work, faith etc). I already know all of that and so do you. So, where am I going with
this?<br /><br />
I'm trying to muse with the the notion of acceptance and <strong>where do I fit in</strong>.
What is <strong>my</strong> "do you believe in God" question?
</p>
        <p>
Personally, It's striking me as plain crazy that our life is so driven to into what
I grasp as the "wrong" groups. Do you believe in God? Do you eat Kosher food? Do you
fast at Yom Kipor? Are you rightist? And the list goes on and on. Are these the questions
we should really ask ourselves? is these <em>how</em> we want to measure ourselves
or find others to connect with? I'm not sure I know the answers, but I feel there
are some deep feelings, clear ideas and emotional borders that I'm so <strong>passionate</strong> about,
they must represent my scales. They must represent <em>my</em> inner truth. Writing
allow one to shoot ideas and thoughts on paper, so I tried to explain myself my truths.
Hopefully it will give me a common ground to fit myself into a world I truly believe
in and measure myself about what I see as right. Trying to synthesize my list, I came
up with the 3 questions I have definite feeling of, (but) these are only <em>my</em> big
questions so read it with the appropriate suspicion:
</p>
        <ol>
          <li>
            <strong>Are you making someone else proud?<br /></strong>I'm blessed with the best parents one can wish for and the greatest family
one can be born into. The best thing they have done for me is giving me their complete
trust, always stating how much faith they have in me making the right call. It was
really hard for me to mess things up with that kind of love and support. Make sure
that you've got someone in life that you can make them proud, may it be your parents,
family, girlfriend, close friend or the girl from the cafeteria. "I'm proud of you"
is huge empowerment and it's a constant motivator to drive your life beyond the easy
and all-so-common mediocrity. This source should be your impregnable place for positive
enforcement, keeping you down to earth and posses the right confident to make tough
choices in life.<br /><br />
Be careful not to confuse making one proud with making one satisfied. You must own
your path thus there is no place for blind acceptance. You need someone that trust
your best efforts and push you forward in your struggles. 
<br /><br /></li>
          <li>
            <strong>Do you see yourself as a good person?</strong>
            <br />
Let's avoid the definition of good for a second as it doesn't really matter. Although
some of us really cynical about the meaning (and with no doubt some are plain bad),
we all know that Mother Teresa is a good soul. The pure notion of bad and good is
embedded deep inside us. Try to be truthful to yourself, do you see yourself as a
good person? how would you define good? Do you think you can measure "how good" are
you? Do you think it's important? Are you doing what it takes to get "better"? does
it get easier to look at the mirror?<br /><br />
You can call me what ever you might feel, but there is a romantic notion behind "being
good". The way I see it, my time here is limited so my constant question is "what
am I going to leave behind?". I would like to think that I've touched some people
during my short life, that I managed to teach something as my great family and friends
have taught me. I'm not sure that I made a great change (or even a small one), but
at least I feel I did the best I can do with my believe of sincere communication.
I'll never be Mother Teresa, but at least I'll do the best I can with what I feel
is right for me, trying to focus on my strength and talent to make others picking
their brain and wonder about themselves. Being there for others will make you feel
less alone, less "on a road to nowhere". What do you have to lose?<br /><br /></li>
          <li>
            <strong>Is there a way for you to help others?<br /></strong>Do you feel lucky? If you do, you played your cards right somehow. Is there
a way for you to show your tricks to the world? to make others think of a different
way to look at things? Helping others makes a great closure between making others
proud and making you feel as a good person. It's a powerful tool you should use wisely.
The purpose is not the "convert" someone into your believes or trying to bring him
into your "group". One should reach his own right and wrong, you can only help him
by asking the right questions and trying to share your thoughts and experience. This
way you are part of the journey, part of a legacy in other's life. This is a great
accomplishment to leave behind you.<br /></li>
        </ol>
        <p>
The order of the questions is important. Without making others proud and have their
support it's impossible to be highly motivated all the time. Without constant motivation
you won't allow yourself to grow into the person you can become, making it easier
to avoid helping others and seeking for the "wrong kind" of acceptance. <strong>Giving
up is easy, fitting in just for the sake of acceptance will not make you happier (at
least for long).</strong><br /><br />
Don't allow yourself to give up just because you were born to the wrong environment,
that you had troubles as a child or you feel just like the world is against you. The
world don't owe you anything, you can blame your luck, your God (or lack of it) but
bottom line it's really up to you. Don't hurt others to pay back to your awful sense
of luck. Find your positive people around you and let them pick you up when needed,
there is no shame of needing others help, they would love to do so in order to feel
good about themselves and making others proud. You'll do the same for them one day,
I promise you that.<br /><br />
Everyone who knows me are familiar with my reiterative phrase "I firmly believe in
natural growth", this rule apply here as well. Find your own sources of strength and
make sure that you keep your "good standards" before trying to influence others to
ponder about their path in life. Once you have the confidence in your answers, you'll
be ready to open your view to the world and see what it has to offer.
</p>
        <p>
          <br />
          <strong>Do I believe in God?<br /></strong>We're probably ants in a giants world, but is it really matter? I would like
to think that this God cares more about us as living being, trying to grow together
than following strict rules without understanding the real truth behind them. Isn't
this the all purpose of the bible? of the stories we are taught since we were born?
I wish our discussions would address more of the "are we doing the best we can?" and
"how can we make it better?" rather than such a superficial scratch of our real purpose.
</p>
        <p>
I would love to hear what is <strong>your truth </strong>and which questions drive
you in your path<strong>. </strong>Drop me a comment if you feel like sharing.
</p>
        <img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=8b187d37-d165-4882-8714-8e98e082ae55" />
      </body>
      <title>Do you believe in God?</title>
      <guid isPermaLink="false">http://lnbogen.com/PermaLink,guid,8b187d37-d165-4882-8714-8e98e082ae55.aspx</guid>
      <link>http://lnbogen.com/2009/02/04/DoYouBelieveInGod.aspx</link>
      <pubDate>Wed, 04 Feb 2009 10:07:28 GMT</pubDate>
      <description>&lt;p&gt;
Can you count the number of times you were asked with this innocent question? 
&lt;/p&gt;
&lt;p&gt;
I tried to think and analyze the "motivation" behind this question, considering &lt;em&gt;why &lt;/em&gt;people
are so intrigued to hear &lt;em&gt;my&lt;/em&gt; answer when putting me on the spot. Is it really
that important for others to know what Oren have to say about God? I can't ignore
the simple fact that religion is a huge cornerstone in our life and finding more people
with similar believes give us great comfort and sense of power. People are looking
for acceptance, to become part of a group they can define and feel "right" in. This
is a social aspect that is common to almost everything we do in life (love, friends,
work, faith etc). I already know all of that and so do you. So, where am I going with
this?&lt;br&gt;
&lt;br&gt;
I'm trying to muse with the the notion of acceptance and &lt;strong&gt;where do I fit in&lt;/strong&gt;.
What is &lt;strong&gt;my&lt;/strong&gt; "do you believe in God" question?
&lt;/p&gt;
&lt;p&gt;
Personally, It's striking me as plain crazy that our life is so driven to into what
I grasp as the "wrong" groups. Do you believe in God? Do you eat Kosher food? Do you
fast at Yom Kipor? Are you rightist? And the list goes on and on. Are these the questions
we should really ask ourselves? is these &lt;em&gt;how&lt;/em&gt; we want to measure ourselves
or find others to connect with? I'm not sure I know the answers, but I feel there
are some deep feelings, clear ideas and emotional borders that I'm so &lt;strong&gt;passionate&lt;/strong&gt; about,
they must represent my scales. They must represent &lt;em&gt;my&lt;/em&gt; inner truth. Writing
allow one to shoot ideas and thoughts on paper, so I tried to explain myself my truths.
Hopefully it will give me a common ground to fit myself into a world I truly believe
in and measure myself about what I see as right. Trying to synthesize my list, I came
up with the 3 questions I have definite feeling of, (but) these are only &lt;em&gt;my&lt;/em&gt; big
questions so read it with the appropriate suspicion:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Are you making someone else proud?&lt;br&gt;
&lt;/strong&gt;I'm blessed with the best parents one can wish for and the greatest family
one can be born into. The best thing they have done for me is giving me their complete
trust, always stating how much faith they have in me making the right call. It was
really hard for me to mess things up with that kind of love and support. Make sure
that you've got someone in life that you can make them proud, may it be your parents,
family, girlfriend, close friend or the girl from the cafeteria. "I'm proud of you"
is huge empowerment and it's a constant motivator to drive your life beyond the easy
and all-so-common mediocrity. This source should be your impregnable place for positive
enforcement, keeping you down to earth and posses the right confident to make tough
choices in life.&lt;br&gt;
&lt;br&gt;
Be careful not to confuse making one proud with making one satisfied. You must own
your path thus there is no place for blind acceptance. You need someone that trust
your best efforts and push you forward in your struggles. 
&lt;br&gt;
&lt;br&gt;
&lt;li&gt;
&lt;strong&gt;Do you see yourself as a good person?&lt;/strong&gt;
&lt;br&gt;
Let's avoid the definition of good for a second as it doesn't really matter. Although
some of us really cynical about the meaning (and with no doubt some are plain bad),
we all know that Mother Teresa is a good soul. The pure notion of bad and good is
embedded deep inside us. Try to be truthful to yourself, do you see yourself as a
good person? how would you define good? Do you think you can measure "how good" are
you? Do you think it's important? Are you doing what it takes to get "better"? does
it get easier to look at the mirror?&lt;br&gt;
&lt;br&gt;
You can call me what ever you might feel, but there is a romantic notion behind "being
good". The way I see it, my time here is limited so my constant question is "what
am I going to leave behind?". I would like to think that I've touched some people
during my short life, that I managed to teach something as my great family and friends
have taught me. I'm not sure that I made a great change (or even a small one), but
at least I feel I did the best I can do with my believe of sincere communication.
I'll never be Mother Teresa, but at least I'll do the best I can with what I feel
is right for me, trying to focus on my strength and talent to make others picking
their brain and wonder about themselves. Being there for others will make you feel
less alone, less "on a road to nowhere". What do you have to lose?&lt;br&gt;
&lt;br&gt;
&lt;li&gt;
&lt;strong&gt;Is there a way for you to help others?&lt;br&gt;
&lt;/strong&gt;Do you feel lucky? If you do, you played your cards right somehow. Is there
a way for you to show your tricks to the world? to make others think of a different
way to look at things? Helping others makes a great closure between making others
proud and making you feel as a good person. It's a powerful tool you should use wisely.
The purpose is not the "convert" someone into your believes or trying to bring him
into your "group". One should reach his own right and wrong, you can only help him
by asking the right questions and trying to share your thoughts and experience. This
way you are part of the journey, part of a legacy in other's life. This is a great
accomplishment to leave behind you.&lt;br&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
The order of the questions is important. Without making others proud and have their
support it's impossible to be highly motivated all the time. Without constant motivation
you won't allow yourself to grow into the person you can become, making it easier
to avoid helping others and seeking for the "wrong kind" of acceptance. &lt;strong&gt;Giving
up is easy, fitting in just for the sake of acceptance will not make you happier (at
least for long).&lt;/strong&gt;
&lt;br&gt;
&lt;br&gt;
Don't allow yourself to give up just because you were born to the wrong environment,
that you had troubles as a child or you feel just like the world is against you. The
world don't owe you anything, you can blame your luck, your God (or lack of it) but
bottom line it's really up to you. Don't hurt others to pay back to your awful sense
of luck. Find your positive people around you and let them pick you up when needed,
there is no shame of needing others help, they would love to do so in order to feel
good about themselves and making others proud. You'll do the same for them one day,
I promise you that.&lt;br&gt;
&lt;br&gt;
Everyone who knows me are familiar with my reiterative phrase "I firmly believe in
natural growth", this rule apply here as well. Find your own sources of strength and
make sure that you keep your "good standards" before trying to influence others to
ponder about their path in life. Once you have the confidence in your answers, you'll
be ready to open your view to the world and see what it has to offer.
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
&lt;strong&gt;Do I believe in God?&lt;br&gt;
&lt;/strong&gt;We're probably ants in a giants world, but is it really matter? I would like
to think that this God cares more about us as living being, trying to grow together
than following strict rules without understanding the real truth behind them. Isn't
this the all purpose of the bible? of the stories we are taught since we were born?
I wish our discussions would address more of the "are we doing the best we can?" and
"how can we make it better?" rather than such a superficial scratch of our real purpose.
&lt;/p&gt;
&lt;p&gt;
I would love to hear what is &lt;strong&gt;your truth &lt;/strong&gt;and which questions drive
you in your path&lt;strong&gt;. &lt;/strong&gt;Drop me a comment if you feel like sharing.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://lnbogen.com/aggbug.ashx?id=8b187d37-d165-4882-8714-8e98e082ae55" /&gt;</description>
      <comments>http://lnbogen.com/CommentView,guid,8b187d37-d165-4882-8714-8e98e082ae55.aspx</comments>
    </item>
  </channel>
</rss>