<?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>ThousandtyOne! - .NET, Life and Logical Thoughts By Rajiv Popat</title>
    <link>http://www.thousandtyone.com/blog/</link>
    <description> By Rajiv Popat. </description>
    <language>en-us</language>
    <copyright>Rajiv Popat</copyright>
    <lastBuildDate>Mon, 17 Nov 2008 15:40:25 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.0.7226.0</generator>
    <managingEditor>rajiv@thousandtyone.com</managingEditor>
    <webMaster>rajiv@thousandtyone.com</webMaster>
    <item>
      <trackback:ping>http://www.thousandtyone.com/blog/Trackback.aspx?guid=2ab9f1a1-3d8e-4796-9de7-747ed5bbe636</trackback:ping>
      <pingback:server>http://www.thousandtyone.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.thousandtyone.com/blog/PermaLink,guid,2ab9f1a1-3d8e-4796-9de7-747ed5bbe636.aspx</pingback:target>
      <dc:creator>Rajiv Popat</dc:creator>
      <wfw:comment>http://www.thousandtyone.com/blog/CommentView,guid,2ab9f1a1-3d8e-4796-9de7-747ed5bbe636.aspx</wfw:comment>
      <wfw:commentRss>http://www.thousandtyone.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=2ab9f1a1-3d8e-4796-9de7-747ed5bbe636</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Flash-backing multiple years to my days at <a href="http://www.thousandtyone.com/blog/MeetThePersonasLetTheStoryTellingBegin.aspx" target="_blank">Multiplitaxion
Inc</a>, I am reminded of my work with a senior technical manager who we shall call <a href="http://www.thousandtyone.com/blog/WhyDoesFredProgramByCoincidence.aspx" target="_blank">Fred</a>.
This particular individual had been vested with the responsibility of running multiple
projects and getting them implemented successfully. When I talked first talked to
Fred, while touring him around the office, something didn't quite click. It wasn't
a lay-your-finger-on-and-objectively-criticize-what-is-wrong kind of a feeling. It
was more of a feeling that <a href="http://www.thousandtyone.com/blog/WhenInDoubtDontThink.aspx" target="_blank">did
not involve a lot conscious thinking</a>; just a nagging gut whispering gently in
my ear, telling me very softly but clearly that something was wrong somewhere. Then,
the feeling grew stronger and stronger as we engaged in a casual discussion on software
development and how both of us felt about it. 
</p>
        <p>
Under normal circumstances if this would have been an interview, the vibe he was sending,
would have been enough for me to let him go but this wasn't an interview. Mr. Fred
had been already recruited, he wasn't my selection and he wasn't even in my team.
Fred was going to run over three parallel projects on mainframes something I knew
absolutely nothing about; and because I knew nothing about his area of expertise,
or what he would be working on, it didn't made sense to judge Mr. Fred based on just
one discussion. Besides, <a href="http://www.thousandtyone.com/blog/MeetThePersonasLetTheStoryTellingBegin.aspx" target="_blank">Pops</a> told
me to shut my big mouth up and play a nice guy, so I did.
</p>
        <p align="center">
          <img src="http://www.thousandtyone.com/blog/content/binary/TwinGirlsOneShoutingOneShuttngHerUp.gif" />
        </p>
        <p>
Weeks went by and we slowly started involving Fred with multiple other projects. Over
a period of time, I started hearing names of cutting edge technologies in pre-beta
stages in design sessions. I started reading names of random technologies in design
documents of multiple projects Fred was handling. When I looked at the weekly status
reports that were being uploaded to our centralized lotus notes based document repository,
the sky looked blue, the grass green and the universe looked just fine. 
</p>
        <p>
Our projects were using state-of-art-cutting-edge technologies and frameworks. Mr.
Fred was starting to take us to next heights enabling us for what was then refereed
to as the e-commerce era. There was one little problem however; our submit buttons,
didn't work all that well. 
</p>
        <p>
Have you ever had an incident where you are about to present an application to a client
or a potential client;  and you get this chill run down your spine when you're
about to hit that button because you're not sure what'll happen when you press the
submit button which is 'technically supposed to' save things to a database? Those
cold chills are exactly what I would experience when I was vested with the task of
giving a demo to a client or a potential client of any project or product Mr. Fred
had been involved with.
</p>
        <p>
The strange part however was that Mr. Fred was working with decently good teams who
weren't exactly known for <a href="http://www.thousandtyone.com/blog/WhyDoesFredProgramByCoincidence.aspx" target="_blank">programming
by co-incidence</a> at Multiplitaxion Inc. All of them, had been involved with and
had attributed to multiple successful projects in the past. They seemed pretty excited
about the new technology stack being used and were spending late nights in office
trying to meet deadlines as they picked up and learnt new technologies. There were
too many of those cutting edge, state-of-the-art tools and technologies being used
in our projects. 
</p>
        <p>
It wasn't until six months later that I realized what Mr. Fred was doing has a name
in software development world. It is in fact, lovingly called Resume-Driven-Development.
Justice Gray does a pretty good job at explaining Resume Driven Development in his
post on - <a href="http://graysmatter.codivation.com/NewDevelopmentMethodologiesForThe21stCentury.aspx" target="_blank">New
development methodologies for the 21st century</a> - he explains Resume Driven Development
as:
</p>
        <p>
          <table>
            <tbody>
              <tr>
                <td class="PostText" align="middle">
                  <p class="QuotePara">
                  </p>
                  <p class="QuoteText">
You want to have an exciting career full of exciting accomplishments and nothing is
more exciting than introducing exciting new technologies into a project!  But
what do you do when the new technology has no business justification or simply isn't
the best solution for the problem as opposed to something less sexy?  That's
the beauty of Resume-Driven: in this methodology, you don't care!  If you think
XSLT is cool, how about using them to completely deliver HTML pages with static JavaScript
inside?  Sure it's a maintenance nightmare but with XSLT on *your* resume, what
does it matter?  You'll have left this project by the time it gets maintained
anyway!  Building a static web page for a capella band?  Why not use Microsoft
Biztalk?  With RDD your career is only limited by your imagination! 
</p>
                </td>
              </tr>
            </tbody>
          </table>
        </p>
        <p>
I can do a long post to describe how Mr. Fred applied Resume Driven Development to
all his projects but I won't. Generally, here is how it would work:
</p>
        <ol>
          <li>
Mr. Fred would look at a collection of technologies out there and pick the coolest
one out. 
</li>
          <li>
Mr. Fred would then look at the technology, and decide it was a perfect tool in his
toolset. He would in-fact consider it synonymous to a <a href="http://www.abraham-maslow.com/m_motivation/Maslows_Hammer.asp" target="_blank">golden
hammer</a>. 
</li>
          <li>
From that point, because Mr. Fred had a hammer, <a href="http://www.phrases.org.uk/bulletin_board/19/messages/1307.html" target="_blank">Baruch's
Law</a> would kick in, and to his eyes, every single problem looked <a href="http://www.phrases.org.uk/bulletin_board/19/messages/1307.html" target="_blank">like
a nail</a>. 
</li>
          <li>
Without much ado, Mr. Fred would strike the hammer really hard irrespective of what
the problem was; he would build himself what he called a 'proof of concept' to prove
that he had picked the right technology for the problem. 
</li>
          <li>
Mr. Fred would announce the Proof of concept as successful, hand his cool technology
to the team asking them to continue as he moved on to find something else to add to
his resume. 
</li>
        </ol>
        <p>
I have a few acquaintances do the usual hi-how-are-you courtesy calls to catch up
with me. They are often curious about technologies I am working on and often indulge
in comparing the technologies I am working on with the technologies they are working
on. 
</p>
        <p>
As developers, it is human nature to flaunt hot and sexy names of technologies out
there and tell the world you're working on <a href="http://en.wikipedia.org/wiki/Windows_Workflow_Foundation" target="_blank">Windows
Workflow Foundation</a> and <a href="http://en.wikipedia.org/wiki/Silverlight" target="_blank">Silverlight</a> but
before you take a technology and apply it to your project, ask yourself if you are
doing justice to your project by honoring <a href="http://en.wikipedia.org/wiki/Occam's_razor" target="_blank">Occam's
Razor</a> or are you just working at increasing the page-size of your resume at the
risk of having a failed project on your organization's resume. 
</p>
        <p>
No-one cares what technologies you use or <a href="http://www.codinghorror.com/blog/archives/001022.html" target="_blank">what
your code looks like</a>. Your job as a developer is to get successful implementations
done; <a href="http://video.google.com/videoplay?docid=-317659265568822821" target="_blank">your
job isn't even writing code</a>. After all, the <a href="http://www.codinghorror.com/blog/archives/001119.html" target="_blank">whole
wide world runs on PHP</a>. Go ahead, grab that <a href="http://www.amazon.com/exec/obidos/ASIN/0672328917/thousandtyone-20" target="_blank">book
on Windows Presentation Foundation</a> and read it well; but before you strike with
your hammer, do validate that what you are striking, is in fact, a nail. Resume driven
development is tempting, but in the long run, neither is it very effective, nor does
it scale up as a philosophy to base a life on.
</p>
      <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/Thousandtyone/~4/456102646" height="1" width="1" /></body>
      <title>Resume Driven Development, The Hammer And The Nail</title>
      <guid isPermaLink="false">http://www.thousandtyone.com/blog/PermaLink,guid,2ab9f1a1-3d8e-4796-9de7-747ed5bbe636.aspx</guid>
      <link>http://www.thousandtyone.com/blog/ResumeDrivenDevelopmentTheHammerAndTheNail.aspx</link>
      <pubDate>Mon, 17 Nov 2008 15:40:25 GMT</pubDate>
      <description>&lt;p&gt;
Flash-backing multiple years to my days at &lt;a href="http://www.thousandtyone.com/blog/MeetThePersonasLetTheStoryTellingBegin.aspx" target="_blank"&gt;Multiplitaxion
Inc&lt;/a&gt;, I am reminded of my work with a senior technical manager who we shall call &lt;a href="http://www.thousandtyone.com/blog/WhyDoesFredProgramByCoincidence.aspx" target="_blank"&gt;Fred&lt;/a&gt;.
This particular individual had been vested with the responsibility of running multiple
projects and getting them implemented successfully. When I talked first talked to
Fred, while touring him around the office, something didn't quite click. It wasn't
a lay-your-finger-on-and-objectively-criticize-what-is-wrong kind of a feeling. It
was more of a feeling that &lt;a href="http://www.thousandtyone.com/blog/WhenInDoubtDontThink.aspx" target="_blank"&gt;did
not involve a lot conscious thinking&lt;/a&gt;; just a nagging gut whispering gently in
my ear, telling me very softly but clearly that something was wrong somewhere. Then,
the feeling grew stronger and stronger as we engaged in a casual discussion on software
development and how both of us felt about it. 
&lt;/p&gt;
&lt;p&gt;
Under normal circumstances if this would have been an interview, the vibe he was sending,
would have been enough for me to let him go but this wasn't an interview. Mr. Fred
had been already recruited, he wasn't my selection and he wasn't even in my team.
Fred was going to run over three parallel projects on mainframes something I knew
absolutely nothing about; and because I knew nothing about his area of expertise,
or what he would be working on, it didn't made sense to judge Mr. Fred based on just
one discussion. Besides, &lt;a href="http://www.thousandtyone.com/blog/MeetThePersonasLetTheStoryTellingBegin.aspx" target="_blank"&gt;Pops&lt;/a&gt; told
me to shut my big mouth up and play a nice guy, so I did.
&lt;/p&gt;
&lt;p align="center"&gt;
&lt;img src="http://www.thousandtyone.com/blog/content/binary/TwinGirlsOneShoutingOneShuttngHerUp.gif"&gt; 
&lt;/p&gt;
&lt;p&gt;
Weeks went by and we slowly started involving Fred with multiple other projects. Over
a period of time, I started hearing names of cutting edge technologies in pre-beta
stages in design sessions. I started reading names of random technologies in design
documents of multiple projects Fred was handling. When I looked at the weekly status
reports that were being uploaded to our centralized lotus notes based document repository,
the sky looked blue, the grass green and the universe looked just fine. 
&lt;/p&gt;
&lt;p&gt;
Our projects were using state-of-art-cutting-edge technologies and frameworks. Mr.
Fred was starting to take us to next heights enabling us for what was then refereed
to as the e-commerce era. There was one little problem however; our submit buttons,
didn't work all that well. 
&lt;/p&gt;
&lt;p&gt;
Have you ever had an incident where you are about to present an application to a client
or a potential client;&amp;nbsp; and you get this chill run down your spine when you're
about to hit that button because you're not sure what'll happen when you press the
submit button which is 'technically supposed to' save things to a database? Those
cold chills are exactly what I would experience when I was vested with the task of
giving a demo to a client or a potential client of any project or product Mr. Fred
had been involved with.
&lt;/p&gt;
&lt;p&gt;
The strange part however was that Mr. Fred was working with decently good teams who
weren't exactly known for &lt;a href="http://www.thousandtyone.com/blog/WhyDoesFredProgramByCoincidence.aspx" target="_blank"&gt;programming
by co-incidence&lt;/a&gt; at Multiplitaxion Inc. All of them, had been involved with and
had attributed to multiple successful projects in the past. They seemed pretty excited
about the new technology stack being used and were spending late nights in office
trying to meet deadlines as they picked up and learnt new technologies. There were
too many of those cutting edge, state-of-the-art tools and technologies being used
in our projects. 
&lt;/p&gt;
&lt;p&gt;
It wasn't until six months later that I realized what Mr. Fred was doing has a name
in software development world. It is in fact, lovingly called Resume-Driven-Development.
Justice Gray does a pretty good job at explaining Resume Driven Development in his
post on - &lt;a href="http://graysmatter.codivation.com/NewDevelopmentMethodologiesForThe21stCentury.aspx" target="_blank"&gt;New
development methodologies for the 21st century&lt;/a&gt; - he explains Resume Driven Development
as:
&lt;/p&gt;
&lt;p&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="PostText" align="middle"&gt;
&lt;p class="QuotePara"&gt;
&lt;p class="QuoteText"&gt;
You want to have an exciting career full of exciting accomplishments and nothing is
more exciting than introducing exciting new technologies into a project!&amp;nbsp; But
what do you do when the new technology has no business justification or simply isn't
the best solution for the problem as opposed to something less sexy?&amp;nbsp; That's
the beauty of Resume-Driven: in this methodology, you don't care!&amp;nbsp; If you think
XSLT is cool, how about using them to completely deliver HTML pages with static JavaScript
inside?&amp;nbsp; Sure it's a maintenance nightmare but with XSLT on *your* resume, what
does it matter?&amp;nbsp; You'll have left this project by the time it gets maintained
anyway!&amp;nbsp; Building a static web page for a capella band?&amp;nbsp; Why not use Microsoft
Biztalk?&amp;nbsp; With RDD your career is only limited by your imagination! 
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p&gt;
I can do a long post to describe how Mr. Fred applied Resume Driven Development to
all his projects but I won't. Generally, here is how it would work:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Mr. Fred would look at a collection of technologies out there and pick the coolest
one out. 
&lt;li&gt;
Mr. Fred would then look at the technology, and decide it was a perfect tool in his
toolset. He would in-fact consider it synonymous to a &lt;a href="http://www.abraham-maslow.com/m_motivation/Maslows_Hammer.asp" target="_blank"&gt;golden
hammer&lt;/a&gt;. 
&lt;li&gt;
From that point, because Mr. Fred had a hammer, &lt;a href="http://www.phrases.org.uk/bulletin_board/19/messages/1307.html" target="_blank"&gt;Baruch's
Law&lt;/a&gt; would kick in, and to his eyes, every single problem looked &lt;a href="http://www.phrases.org.uk/bulletin_board/19/messages/1307.html" target="_blank"&gt;like
a nail&lt;/a&gt;. 
&lt;li&gt;
Without much ado, Mr. Fred would strike the hammer really hard irrespective of what
the problem was; he would build himself what he called a 'proof of concept' to prove
that he had picked the right technology for the problem. 
&lt;li&gt;
Mr. Fred would announce the Proof of concept as successful, hand his cool technology
to the team asking them to continue as he moved on to find something else to add to
his resume. 
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
I have a few acquaintances do the usual hi-how-are-you courtesy calls to catch up
with me. They are often curious about technologies I am working on and often indulge
in comparing the technologies I am working on with the technologies they are working
on. 
&lt;/p&gt;
&lt;p&gt;
As developers, it is human nature to flaunt hot and sexy names of technologies out
there and tell the world you're working on &lt;a href="http://en.wikipedia.org/wiki/Windows_Workflow_Foundation" target="_blank"&gt;Windows
Workflow Foundation&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Silverlight" target="_blank"&gt;Silverlight&lt;/a&gt; but
before you take a technology and apply it to your project, ask yourself if you are
doing justice to your project by honoring &lt;a href="http://en.wikipedia.org/wiki/Occam's_razor" target="_blank"&gt;Occam's
Razor&lt;/a&gt; or are you just working at increasing the page-size of your resume at the
risk of having a failed project on your organization's resume. 
&lt;/p&gt;
&lt;p&gt;
No-one cares what technologies you use or &lt;a href="http://www.codinghorror.com/blog/archives/001022.html" target="_blank"&gt;what
your code looks like&lt;/a&gt;. Your job as a developer is to get successful implementations
done; &lt;a href="http://video.google.com/videoplay?docid=-317659265568822821" target="_blank"&gt;your
job isn't even writing code&lt;/a&gt;. After all, the &lt;a href="http://www.codinghorror.com/blog/archives/001119.html" target="_blank"&gt;whole
wide world runs on PHP&lt;/a&gt;. Go ahead, grab that &lt;a href="http://www.amazon.com/exec/obidos/ASIN/0672328917/thousandtyone-20" target="_blank"&gt;book
on Windows Presentation Foundation&lt;/a&gt; and read it well; but before you strike with
your hammer, do validate that what you are striking, is in fact, a nail. Resume driven
development is tempting, but in the long run, neither is it very effective, nor does
it scale up as a philosophy to base a life on.
&lt;/p&gt;</description>
      <comments>http://www.thousandtyone.com/blog/CommentView,guid,2ab9f1a1-3d8e-4796-9de7-747ed5bbe636.aspx</comments>
      <category>Personal Thoughts on Software Development</category>
    </item>
    <item>
      <trackback:ping>http://www.thousandtyone.com/blog/Trackback.aspx?guid=29b06aa7-8214-4ab8-bd74-b64df68f68be</trackback:ping>
      <pingback:server>http://www.thousandtyone.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.thousandtyone.com/blog/PermaLink,guid,29b06aa7-8214-4ab8-bd74-b64df68f68be.aspx</pingback:target>
      <dc:creator>Rajiv Popat</dc:creator>
      <wfw:comment>http://www.thousandtyone.com/blog/CommentView,guid,29b06aa7-8214-4ab8-bd74-b64df68f68be.aspx</wfw:comment>
      <wfw:commentRss>http://www.thousandtyone.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=29b06aa7-8214-4ab8-bd74-b64df68f68be</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
If you're into dice-driven board games chances are that you'll love <a href="http://www.boardgamegeek.com/game/1604" target="_blank">MAD</a>.
If nothing else it's hilariously funny, confusing and completely insane all rolled
into one. The objective of the game? You have to be the first one to lose all your <a href="http://www.boardgamegeek.com/game/1604" target="_blank">MAD</a> funny-money
before someone else looses all of theirs. The funny feel of the game reflects right
on it's cover which has funny pictures and a remark, "What, me worry?".
</p>
        <p align="center">
          <img src="http://www.thousandtyone.com/blog/content/binary/MadMagazineAndGamePicture.gif" /> 
</p>
        <p align="left">
The board game comes with a printed document which is supposed to be your 'proof of
purchase' with a warning inscribed very prominently:
</p>
        <p>
          <table>
            <tbody>
              <tr>
                <td class="PostText" align="middle">
                  <p class="QuotePara">
                  </p>
                  <p class="QuoteText">
                    <strong>DON'T PANIC:<br /></strong>If you and your opponents find a board space or a Card card to be confusing,
we wouldn't be the least bit surprised. But don't fight about it! Take a vote and
play according to the majority rule. To most people, a majority is anything over 50%.
However, because you're sufficiently intelligent and persistent to have read this
far, you're clearly not most people. Therefore, determine in your own mind what constitutes
a majority, take a vote and decide according to the majority rule. 
</p>
                </td>
              </tr>
            </tbody>
          </table>
        </p>
        <p>
The game is insanely funny; it is by far the funniest board games I've played till
date. In-spite of the warning you will invariable see yourself get into really funny
arguments with other players over interpretations of what the cards and board spaces
mean. 
</p>
        <p>
The game has nothing to do with software development, but overall, the game is a very
apt representation of the confusion and chaos that happens in game of software development. 
</p>
        <ol>
          <li>
The customer thinks he knows what he wants. 
</li>
          <li>
You think the customer knows what he wants. 
</li>
          <li>
You have meetings with customers in attempt to try and understand what he thinks he
wants. 
</li>
          <li>
You think you know what the customer wants. 
</li>
          <li>
The customer thinks you know what he wants. 
</li>
          <li>
Neither you nor the customer knows what is it that he really wants and how you'll
get there. 
</li>
          <li>
You convince the customer that you know exactly what he wants.</li>
        </ol>
        <p>
Then added opponents of software development <a href="http://www.thousandtyone.com/blog/TheWarTheAngelTheDevilAndTheProgrammer.aspx" target="_blank">start
attacking from multiple directions</a> and before you know it, something creepy and
weird happens: Everyone Panics.
</p>
        <p>
          <a href="http://www.boardgamegeek.com/game/1604" target="_blank">MAD</a>, the board
game begins with the same practical, pragmatic advice that <a href="http://en.wikipedia.org/wiki/Douglas_Adams" target="_blank">Douglas
Adams</a> had picked for his famous book, <a href="http://www.amazon.com/exec/obidos/ASIN/0345391802/thousandtyone-20" target="_blank">The
Hitchhiker's Guide to the Galaxy</a>:
</p>
        <p align="center">
  <img src="http://www.thousandtyone.com/blog/content/binary/HitchHikersGuideToGalaxyDontPanic.gif" /></p>
        <p>
As far as software development is concerned panic contributes as much to the failure
of the projects as much as any other factor.
</p>
        <p>
          <a href="http://www.lostechies.com/blogs/chad_myers/" target="_blank">Chad Myer</a> Provides <a href="http://www.lostechies.com/blogs/chad_myers/archive/2008/04/02/ancient-wisdom-is-inescapable-especially-with-project-management.aspx" target="_blank">added
insight into why every project usually goes into panic mode</a>: 
</p>
        <p>
          <table>
            <tbody>
              <tr>
                <td class="PostText" align="middle">
                  <div class="QuoteText">
                    <p class="QuotePara">
                    </p>
                    <p>
There is a point in every project - well, every project I've ever been a part of in
one shape or another - where panic starts. I'm not quite sure what starts it every
time, but the ones that I do know of have all been about money and 'burn rate' and
I'm willing to bet that all of them (even the ones that were not made known to me)
are about that. The point of Agile, in my opinion, is to allow visibility and more
frequent opportunity for decision points for the stakeholder for just these types
of moments.  The appropriate response, when this moment of panic is about to
ensue is for everyone, especially the stakeholder, to put on their big boy pants and
start making the hard decisions about what to cut. 
</p>
                    <p>
The inappropriate response - oh there are many, but they boil down to this - is to
start mistrusting the developers and start assuming they're lazy SOBs who have been
cleverly avoiding work throughout the whole project.  Looking back, nearly every
single time the panic season started, this was the demeanor the stakeholders took. 
Instantly the project went sour, all pace was destroyed, morale tanked, some people
went into psycho 100hr/wk work mode to prove the stakeholders wrong, others proved
them right by giving up and not doing anything. Ultimately, the project died a rather
undignified and flaming death. Failure resulted (or perhaps success didn't happen
to the degree to which it needed to happen), the team burned out and most left while
the stakeholder was stuck with a failure product and all their critical brain trust
gone or demoralized. 
</p>
                  </div>
                </td>
              </tr>
            </tbody>
          </table>
        </p>
        <p>
Ever been a part of a project where the panic button is pressed because the team is
failing and someone realizes that it's failing because of lack of policing mechanisms?
If you've been a part of any such projects in your life you're probably related to
what Chad is saying here. If you, dear reader, have been through this experience,
you probably know the feeling and can smell this panic button being pressed based
on incidents that start happening. <a href="http://www.thousandtyone.com/blog/AreEightHoursADayEnoughForSoftwareProgrammers.aspx" target="_blank">Office
timings</a> are made stringent, holidays and leaves are canceled, emails lose their
touch of basic niceness, <a href="http://www.thousandtyone.com/blog/DeadlinesDrivenDevelopmentIsForDummies.aspx" target="_blank">dead-lines
for every single task are asked</a>, micro management begins and everything starts
failing apart.
</p>
        <p>
I've seen quite a few Agile projects fail when the panic situation becomes public
knowledge. After all, transparency is the biggest blessing and curse of Agile or simply
an open culture in general. It brings the chaos and panic right on your face, forcing
the weak hearted to either abandon it or press the panic button and replace the fundamental
premise of trust on which Agile Projects are built are managed with policing measures
and mechanisms.
</p>
        <p>
I've often seen individuals accuse agile as being an excuse for being sloppy, but
agile, by far, requires <a href="http://www.thousandtyone.com/blog/CMMRUPAndGanttChartsDontBuildSuccessfulSoftwareKickAssProgrammersDo.aspx" target="_blank">a
huge deal of talent</a> and <a href="http://www.ddj.com/architect/201804241" target="_blank">discipline</a> within,
the development team and entire organization. In fact it requires more talent and
discipline than any other process I've seen in my life. Chad in <a href="http://www.lostechies.com/blogs/chad_myers/archive/2008/04/02/ancient-wisdom-is-inescapable-especially-with-project-management.aspx" target="_blank">his
post</a> explains: 
</p>
        <p>
          <table>
            <tbody>
              <tr>
                <td class="PostText" align="middle">
                  <div class="QuoteText">
                    <p class="QuotePara">
                    </p>
                    <p>
This is it, there's no turning back. Everyone on the team - stakeholder and producer
alike - must trust each other to make the hard decisions and cut what they must to
make the plan happen. You must resist the urge to bear down, roll up your sleeves
and do everything wrong as fast as you can and ruin everything you've strived for.
It's during the hard, trying times that discipline pays its debt. Soldiers don't go
to boot camp to learn how to salute during peace time, they go there to learn how
to be disciplined when the bullets are whizzing past your ears. 
</p>
                  </div>
                </td>
              </tr>
            </tbody>
          </table>
        </p>
        <p>
All of Agile is about forcing you to take the correct and sometimes hard decisions
sooner than later. It won't give you a cozy feel of the 'green status report' when
things are not fine. Software development is much harder than losing all your money
in MAD. Before you start the software development game, the least you can do is remember
the rules from MAD: 
</p>
        <p>
          <table>
            <tbody>
              <tr>
                <td class="PostText" align="middle">
                  <div class="QuoteText">
                    <p class="QuotePara">
                    </p>
                    <p>
                      <strong>DON'T PANIC:<br /></strong>If you and your opponents find a board space or a Card card to be confusing,
we wouldn't be the least bit surprised. But don't fight about it! Take a vote and
play according to the majority rule. To most people, a majority is anything over 50%.
However, because you're sufficiently intelligent and persistent to have read this
far, you're clearly not most people. Therefore, determine in your own mind what constitutes
a majority, take a vote and decide according to the majority rule. 
</p>
                  </div>
                </td>
              </tr>
            </tbody>
          </table>
        </p>
        <p>
If you are a young and budding manager, developer or whatever-it-is-that-you-are,
I leave you with one humble thought, that you can put on <a href="http://www.thousandtyone.com/blog/ProjectManagersNotToDoListAndMostItsMostImportantNotToDoItem.aspx" target="_blank">your
not-to-do list</a>. Take the hard decisions if you must, <a href="http://www.thousandtyone.com/blog/ThatCoolFeatureYouProbablyArentGoingToNeed.aspx" target="_blank">cut
down on features</a> if you must, motivate and train your team to work independently
if you must; whatever you do; don't police and don't panic; because that is what spreads
like wild fire and causes everything to fall apart. 
</p>
      <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/Thousandtyone/~4/452313278" height="1" width="1" /></body>
      <title>Two Golden Rules For Software Development - Don't Police, Don't Panic.</title>
      <guid isPermaLink="false">http://www.thousandtyone.com/blog/PermaLink,guid,29b06aa7-8214-4ab8-bd74-b64df68f68be.aspx</guid>
      <link>http://www.thousandtyone.com/blog/TwoGoldenRulesForSoftwareDevelopmentDontPoliceDontPanic.aspx</link>
      <pubDate>Thu, 13 Nov 2008 23:13:44 GMT</pubDate>
      <description>&lt;p&gt;
If you're into dice-driven board games chances are that you'll love &lt;a href="http://www.boardgamegeek.com/game/1604" target="_blank"&gt;MAD&lt;/a&gt;.
If nothing else it's hilariously funny, confusing and completely insane all rolled
into one. The objective of the game? You have to be the first one to lose all your &lt;a href="http://www.boardgamegeek.com/game/1604" target="_blank"&gt;MAD&lt;/a&gt; funny-money
before someone else looses all of theirs. The funny feel of the game reflects right
on it's cover which has funny pictures and a remark, "What, me worry?".
&lt;/p&gt;
&lt;p align="center"&gt;
&lt;img src="http://www.thousandtyone.com/blog/content/binary/MadMagazineAndGamePicture.gif"&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p align="left"&gt;
The board game comes with a printed document which is supposed to be your 'proof of
purchase' with a warning inscribed very prominently:
&lt;/p&gt;
&lt;p&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="PostText" align="middle"&gt;
&lt;p class="QuotePara"&gt;
&lt;p class="QuoteText"&gt;
&lt;strong&gt;DON'T PANIC:&lt;br&gt;
&lt;/strong&gt;If you and your opponents find a board space or a Card card to be confusing,
we wouldn't be the least bit surprised. But don't fight about it! Take a vote and
play according to the majority rule. To most people, a majority is anything over 50%.
However, because you're sufficiently intelligent and persistent to have read this
far, you're clearly not most people. Therefore, determine in your own mind what constitutes
a majority, take a vote and decide according to the majority rule. 
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p&gt;
The game is insanely funny; it is by far the funniest board games I've played till
date. In-spite of the warning you will invariable see yourself get into really funny
arguments with other players over interpretations of what the cards and board spaces
mean. 
&lt;/p&gt;
&lt;p&gt;
The game has nothing to do with software development, but overall, the game is a very
apt representation of the confusion and chaos that happens in game of software development. 
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
The customer thinks he knows what he wants. 
&lt;li&gt;
You think the customer knows what he wants. 
&lt;li&gt;
You have meetings with customers in attempt to try and understand what he thinks he
wants. 
&lt;li&gt;
You think you know what the customer wants. 
&lt;li&gt;
The customer thinks you know what he wants. 
&lt;li&gt;
Neither you nor the customer knows what is it that he really wants and how you'll
get there. 
&lt;li&gt;
You convince the customer that you know exactly what he wants.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
Then added opponents of software development &lt;a href="http://www.thousandtyone.com/blog/TheWarTheAngelTheDevilAndTheProgrammer.aspx" target="_blank"&gt;start
attacking from multiple directions&lt;/a&gt; and before you know it, something creepy and
weird happens: Everyone Panics.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.boardgamegeek.com/game/1604" target="_blank"&gt;MAD&lt;/a&gt;, the board
game begins with the same practical, pragmatic advice that &lt;a href="http://en.wikipedia.org/wiki/Douglas_Adams" target="_blank"&gt;Douglas
Adams&lt;/a&gt; had picked for his famous book, &lt;a href="http://www.amazon.com/exec/obidos/ASIN/0345391802/thousandtyone-20" target="_blank"&gt;The
Hitchhiker's Guide to the Galaxy&lt;/a&gt;:
&lt;/p&gt;
&lt;p align="center"&gt;
&amp;nbsp; &lt;img src="http://www.thousandtyone.com/blog/content/binary/HitchHikersGuideToGalaxyDontPanic.gif"&gt; 
&lt;/p&gt;
&lt;p&gt;
As far as software development is concerned panic contributes as much to the failure
of the projects as much as any other factor.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.lostechies.com/blogs/chad_myers/" target="_blank"&gt;Chad Myer&lt;/a&gt; Provides &lt;a href="http://www.lostechies.com/blogs/chad_myers/archive/2008/04/02/ancient-wisdom-is-inescapable-especially-with-project-management.aspx" target="_blank"&gt;added
insight into why every project usually goes into panic mode&lt;/a&gt;: 
&lt;/p&gt;
&lt;p&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="PostText" align="middle"&gt;
&lt;div class="QuoteText"&gt;
&lt;p class="QuotePara"&gt;
&lt;p&gt;
There is a point in every project - well, every project I've ever been a part of in
one shape or another - where panic starts. I'm not quite sure what starts it every
time, but the ones that I do know of have all been about money and 'burn rate' and
I'm willing to bet that all of them (even the ones that were not made known to me)
are about that. The point of Agile, in my opinion, is to allow visibility and more
frequent opportunity for decision points for the stakeholder for just these types
of moments.&amp;nbsp; The appropriate response, when this moment of panic is about to
ensue is for everyone, especially the stakeholder, to put on their big boy pants and
start making the hard decisions about what to cut. 
&lt;/p&gt;
&lt;p&gt;
The inappropriate response - oh there are many, but they boil down to this - is to
start mistrusting the developers and start assuming they're lazy SOBs who have been
cleverly avoiding work throughout the whole project.&amp;nbsp; Looking back, nearly every
single time the panic season started, this was the demeanor the stakeholders took.&amp;nbsp;
Instantly the project went sour, all pace was destroyed, morale tanked, some people
went into psycho 100hr/wk work mode to prove the stakeholders wrong, others proved
them right by giving up and not doing anything. Ultimately, the project died a rather
undignified and flaming death. Failure resulted (or perhaps success didn't happen
to the degree to which it needed to happen), the team burned out and most left while
the stakeholder was stuck with a failure product and all their critical brain trust
gone or demoralized. 
&lt;/p&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p&gt;
Ever been a part of a project where the panic button is pressed because the team is
failing and someone realizes that it's failing because of lack of policing mechanisms?
If you've been a part of any such projects in your life you're probably related to
what Chad is saying here. If you, dear reader, have been through this experience,
you probably know the feeling and can smell this panic button being pressed based
on incidents that start happening. &lt;a href="http://www.thousandtyone.com/blog/AreEightHoursADayEnoughForSoftwareProgrammers.aspx" target="_blank"&gt;Office
timings&lt;/a&gt; are made stringent, holidays and leaves are canceled, emails lose their
touch of basic niceness, &lt;a href="http://www.thousandtyone.com/blog/DeadlinesDrivenDevelopmentIsForDummies.aspx" target="_blank"&gt;dead-lines
for every single task are asked&lt;/a&gt;, micro management begins and everything starts
failing apart.
&lt;/p&gt;
&lt;p&gt;
I've seen quite a few Agile projects fail when the panic situation becomes public
knowledge. After all, transparency is the biggest blessing and curse of Agile or simply
an open culture in general. It brings the chaos and panic right on your face, forcing
the weak hearted to either abandon it or press the panic button and replace the fundamental
premise of trust on which Agile Projects are built are managed with policing measures
and mechanisms.
&lt;/p&gt;
&lt;p&gt;
I've often seen individuals accuse agile as being an excuse for being sloppy, but
agile, by far, requires &lt;a href="http://www.thousandtyone.com/blog/CMMRUPAndGanttChartsDontBuildSuccessfulSoftwareKickAssProgrammersDo.aspx" target="_blank"&gt;a
huge deal of talent&lt;/a&gt; and &lt;a href="http://www.ddj.com/architect/201804241" target="_blank"&gt;discipline&lt;/a&gt; within,
the development team and entire organization. In fact it requires more talent and
discipline than any other process I've seen in my life. Chad in &lt;a href="http://www.lostechies.com/blogs/chad_myers/archive/2008/04/02/ancient-wisdom-is-inescapable-especially-with-project-management.aspx" target="_blank"&gt;his
post&lt;/a&gt; explains: 
&lt;/p&gt;
&lt;p&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="PostText" align="middle"&gt;
&lt;div class="QuoteText"&gt;
&lt;p class="QuotePara"&gt;
&lt;p&gt;
This is it, there's no turning back. Everyone on the team - stakeholder and producer
alike - must trust each other to make the hard decisions and cut what they must to
make the plan happen. You must resist the urge to bear down, roll up your sleeves
and do everything wrong as fast as you can and ruin everything you've strived for.
It's during the hard, trying times that discipline pays its debt. Soldiers don't go
to boot camp to learn how to salute during peace time, they go there to learn how
to be disciplined when the bullets are whizzing past your ears. 
&lt;/p&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p&gt;
All of Agile is about forcing you to take the correct and sometimes hard decisions
sooner than later. It won't give you a cozy feel of the 'green status report' when
things are not fine. Software development is much harder than losing all your money
in MAD. Before you start the software development game, the least you can do is remember
the rules from MAD: 
&lt;/p&gt;
&lt;p&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="PostText" align="middle"&gt;
&lt;div class="QuoteText"&gt;
&lt;p class="QuotePara"&gt;
&lt;p&gt;
&lt;strong&gt;DON'T PANIC:&lt;br&gt;
&lt;/strong&gt;If you and your opponents find a board space or a Card card to be confusing,
we wouldn't be the least bit surprised. But don't fight about it! Take a vote and
play according to the majority rule. To most people, a majority is anything over 50%.
However, because you're sufficiently intelligent and persistent to have read this
far, you're clearly not most people. Therefore, determine in your own mind what constitutes
a majority, take a vote and decide according to the majority rule. 
&lt;/p&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p&gt;
If you are a young and budding manager, developer or whatever-it-is-that-you-are,
I leave you with one humble thought, that you can put on &lt;a href="http://www.thousandtyone.com/blog/ProjectManagersNotToDoListAndMostItsMostImportantNotToDoItem.aspx" target="_blank"&gt;your
not-to-do list&lt;/a&gt;. Take the hard decisions if you must, &lt;a href="http://www.thousandtyone.com/blog/ThatCoolFeatureYouProbablyArentGoingToNeed.aspx" target="_blank"&gt;cut
down on features&lt;/a&gt; if you must, motivate and train your team to work independently
if you must; whatever you do; don't police and don't panic; because that is what spreads
like wild fire and causes everything to fall apart. 
&lt;/p&gt;</description>
      <comments>http://www.thousandtyone.com/blog/CommentView,guid,29b06aa7-8214-4ab8-bd74-b64df68f68be.aspx</comments>
      <category>Personal Thoughts on Software Development</category>
    </item>
    <item>
      <trackback:ping>http://www.thousandtyone.com/blog/Trackback.aspx?guid=036536e9-ac06-4be5-b303-0272f845b257</trackback:ping>
      <pingback:server>http://www.thousandtyone.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.thousandtyone.com/blog/PermaLink,guid,036536e9-ac06-4be5-b303-0272f845b257.aspx</pingback:target>
      <dc:creator>Rajiv Popat</dc:creator>
      <wfw:comment>http://www.thousandtyone.com/blog/CommentView,guid,036536e9-ac06-4be5-b303-0272f845b257.aspx</wfw:comment>
      <wfw:commentRss>http://www.thousandtyone.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=036536e9-ac06-4be5-b303-0272f845b257</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
During his early days as a mentor to some of the junior programmers at <a href="http://www.thousandtyone.com/blog/MeetThePersonasLetTheStoryTellingBegin.aspx" target="_blank">Multiplitaxion
Inc</a>; one of them, who we shall call <a href="http://www.thousandtyone.com/blog/MeetThePersonasLetTheStoryTellingBegin.aspx" target="_blank">Fred</a>,
had an issue with me and my management style. His issue was that I wasn't pushing
him to meet deadlines. 
</p>
        <p>
Mr. Fred believed that my not pressuring him really hard, like most other traditional
managers had pushed him in the past, was bad management on my part. 
</p>
        <p>
He patiently explained to me that, instead of me making him estimate the duration
for his tasks and then letting him have enough time to complete them with a quality
implementation, he would really appreciate it if I could estimate how long his tasks
should take and then give him a dead-line so that he would start working harder as
the deadline approached. 
</p>
        <p align="center">
          <img src="http://www.thousandtyone.com/blog/content/binary/PanicOnDeadLineApporaching.gif" />
        </p>
        <p>
For most other <a href="http://www.thousandtyone.com/blog/TheThickSkinnedDeveloper.aspx" target="_blank">thick-skinned</a> programmers
who were <a href="http://www.thousandtyone.com/blog/CMMRUPAndGantChartsDontBuildSuccessfulSoftwareKickAssProgrammersDo.aspx" target="_blank">getting
projects rolled out successfully</a> at <a href="http://www.thousandtyone.com/blog/MeetThePersonasLetTheStoryTellingBegin.aspx" target="_blank">Multiplitaxion
Inc</a>, deadlines weren't working out all that well. They seemed to like the idea
of estimating their own tasks and working in a pragmatic non-panic environment.
</p>
        <p>
I had discovered, early on in my career that the mounting pressure to ship based on
a given artificial deadline encourages developers to program by co-incidence. As a
developer, I had learnt the lesson <a href="http://www.thousandtyone.com/blog/WhyDoesFredProgramByCoincidence.aspx" target="_blank">the
hard way</a>, and had told myself that I would not push teams I work with to <a href="http://www.thousandtyone.com/blog/WhyDoesFredProgramByCoincidence.aspx" target="_blank">program
by coincidence just to meet a deadline</a>; specially artificial ones.
</p>
        <p>
As I grew in my professional and personal life I started realizing that not imposing
any deadline on people and empowering them with trust, makes them much more productive.
Then I met Mr. Fred who had issues with the whole no-deadlines-we-trust-you-to-get-things-done
way to running projects. Here was a guy telling him me that he desperately needed
deadlines and he needed to be pressured so that he would do his work as I stood there
and looked at him, completely confused.
</p>
        <p>
Deadline Driven Development or DDD as some call it lovingly, isn't new in the world
of software development and this <a href="http://www.thousandtyone.com/blog/IsYourClientYourAlly.aspx" target="_blank">wasn't
the first time</a> I was seeing it in action. During my early days as an young and
budding developer, I had seen deadline-driven-development in the world of project
managers where it was rampantly popular.  Having said that however, this was
the first time in my life when I was seeing a team member crave for it. This was indeed
my first experience of seeing young and budding engineers infected with an otherwise
managerial disease.  
</p>
        <p>
Tom DeMarco and Timothy Lister describe a real life story, of how managers and senior
executives, like keeping their teams under constant pressure of deadlines, in their
book <a href="http://www.amazon.com/exec/obidos/ASIN/0932633439/thousandtyone-20" target="_blank">Peopleware:
Productive Projects and Teams</a>:
</p>
        <p>
          <table>
            <tbody>
              <tr>
                <td class="PostText" align="middle">
                  <p class="QuotePara">
                  </p>
                  <p class="QuoteText">
During the past year, I did some consulting for a project that was proceeding so smoothly
that the project manager knew she would deliver the product on schedule. She was summoned
in front of the management committee and asked for a progress report. She said she
could guarantee that her product would be ready by the deadline of March 1, exactly
on time according to the original estimate. The upper managers chewed over that piece
of unexpected good news and then called her in again the next day. Since she was on
time for March 1, they explained, the deadline had been moved up to January 15. 
</p>
                </td>
              </tr>
            </tbody>
          </table>
        </p>
        <p>
The story might seem extreme to a few of you dear reader, and even though moving the
deadline ahead might seem a little dramatic for most management teams to do, consider
this: how frequently has your management seen you ship comfortably on time and have
thrown in a couple of extra features in the mix asking you to build the new features
in the same timeframe. Maybe the deadline wasn't randomly moved ahead, but adding
random features, just to keep the team on their toes, equates to the same thing. 
</p>
        <p>
Deadline driven development is an approach to software development where the management <a href="http://www.thousandtyone.com/blog/DoYouRespectTheIronTriangle.aspx" target="_blank">constantly
and rampantly disrespects the iron triangle</a>. At multiple organizations that I've
seen or visited, I've personally heard of or participated in more than one project
and utilization meetings where people <a href="http://www.thousandtyone.com/blog/AreEightHoursADayEnoughForSoftwareProgrammers.aspx" target="_blank">being
able to head home comfortably at 6:30</a> is cited as a bad example of resource utilization. 
</p>
        <p>
Most veterans understand and have mastered <a href="http://www.thousandtyone.com/blog/WhyDoesFredProgramByCoincidence.aspx" target="_blank">the
art of balancing between aiming for perfection and shipping</a> and these <a href="http://www.thousandtyone.com/blog/CMMRUPAndGanttChartsDontBuildSuccessfulSoftwareKickAssProgrammersDo.aspx" target="_blank">kick
ass developers will ship as fast as they humanly can</a>. At times they'll estimate
stupidly, stumble like babies and miss deadlines. Then they'll get up, get better
and ship successfully. <a href="http://www.amazon.com/exec/obidos/ASIN/0932633439/thousandtyone-20" target="_blank">Peopleware</a> does
a pretty good job at describing the paradox of success when it comes to deadlines:
</p>
        <p>
          <table>
            <tbody>
              <tr>
                <td class="PostText" align="middle">
                  <p class="QuotePara">
                  </p>
                  <p class="QuoteText">
How many times have you heard that some new technique is going to be used because
it is the only chance to make the hard-and-fast deadline, and that if the deadline
is missed, there will be hell to pay?  The  setup of the change has already
made its  outcome more than a little  dubious. The  kid-like 
willingness to throw ourselves into a potentially  embarrassing endeavor is defeated
by the potential for ridicule. Paradoxically, change only has a chance of succeeding 
if failure, at least a little bit of failure, is also okay. 
</p>
                </td>
              </tr>
            </tbody>
          </table>
        </p>
        <p>
Every time there is a business push to ship faster I see countless managers, just
take the email, forward it to their teams and push them harder; under the <a href="http://www.thousandtyone.com/blog/OptimismAndWishfulThinkingTwoBiggestCursesInSoftwareDevelopment.aspx" target="_blank">optimistic
belief</a> that if the team really pushed harder they might be able to pull of a magic
trick. 
</p>
        <p>
If you're a manager, your job is <a href="http://www.thousandtyone.com/blog/CMMRUPAndGanttChartsDontBuildSuccessfulSoftwareKickAssProgrammersDo.aspx" target="_blank">not
just to build a gantt-chart</a> and then run behind your team collecting the <a href="http://www.thousandtyone.com/blog/IsYourTaskDoneOrJustNinetyPercentDone.aspx" target="_blank">status
in terms of percentage complete</a>. Business is expected to rush software development
teams into it's own death-bed through continuous increase in velocity but and some
point you need to take the crap upon yourself, cushion your team from it and let them
function <a href="http://www.thousandtyone.com/blog/ThePerilsOfMultitaskingInSoftwareDevelopmentAndLife.aspx" target="_blank">un-interrupted</a> without
the pressure of continuous and mostly artificial dead-lines. If you need to sit through <a href="http://www.thousandtyone.com/blog/MeetingsTheHeroinOfSoftwareDevelopmentWorld.aspx" target="_blank">a
thousand meetings</a> to convince the business, please do; if you must get into heated
argument with marketing guys and your bosses please do; but if you pass of a stupid
artificial deadline to your team all you do is demonstrate the lack of your management
skills. 
</p>
        <p>
If you're a budding manager and the next time they tell you that there'll be hell
to pay if a deadline is missed, try to investigate a little more into exactly how
the business gets impacted and what is the actual loss involved if you were to miss
a deadline for a few days. Chances are, there'll be none and there is invariable a
high possibility that the so-called magical deadline which appeared out of nowhere
would be the brainchild of a <a href="http://www.thousandtyone.com/blog/ProjectManagersNotToDoListAndMostItsMostImportantNotToDoItem.aspx" target="_blank">prick</a> trying
to push the team a little harder by pushing random deadlines. 
</p>
        <p>
I've been a part of multiple projects and have worked with a huge numbers of developers.
I have hardly ever seen programmers cheat their organizations and have a fun time
watching movies and playing video games when they had a clear sense of what they were
expected to do and what the organization expected out of them. Working under the assumptions
that your employees are out there to <a href="http://www.thousandtyone.com/blog/ProtectingIntellectualPropertyVsTrustingEmployees.aspx" target="_blank">rob
you</a> and then pushing constant deadlines at them so that they don't miss-utilize
their <a href="http://www.thousandtyone.com/blog/AreEightHoursADayEnoughForSoftwareProgrammers.aspx" target="_blank">office
time</a> is outright stupidity which does nothing other than encourage <a href="http://www.thousandtyone.com/blog/BreakingTheInfiniteLoopOfFailure.aspx" target="_blank">the
infinite loop of failure</a> within the organization and the software development
world in general.  
</p>
        <p>
Deadlines Driven Development is for a team of Dummies. For everyone else who is <a href="http://www.thousandtyone.com/blog/CMMRUPAndGanttChartsDontBuildSuccessfulSoftwareKickAssProgrammersDo.aspx" target="_blank">decently
smart</a>, there is communication, collaboration and successful implementations. 
</p>
      <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/Thousandtyone/~4/448880232" height="1" width="1" /></body>
      <title>Deadlines Driven Development Is For Dummies.</title>
      <guid isPermaLink="false">http://www.thousandtyone.com/blog/PermaLink,guid,036536e9-ac06-4be5-b303-0272f845b257.aspx</guid>
      <link>http://www.thousandtyone.com/blog/DeadlinesDrivenDevelopmentIsForDummies.aspx</link>
      <pubDate>Mon, 10 Nov 2008 18:06:32 GMT</pubDate>
      <description>&lt;p&gt;
During his early days as a mentor to some of the junior programmers at &lt;a href="http://www.thousandtyone.com/blog/MeetThePersonasLetTheStoryTellingBegin.aspx" target="_blank"&gt;Multiplitaxion
Inc&lt;/a&gt;; one of them, who we shall call &lt;a href="http://www.thousandtyone.com/blog/MeetThePersonasLetTheStoryTellingBegin.aspx" target="_blank"&gt;Fred&lt;/a&gt;,
had an issue with me and my management style. His issue was that I wasn't pushing
him to meet deadlines. 
&lt;/p&gt;
&lt;p&gt;
Mr. Fred believed that my not pressuring him really hard, like most other traditional
managers had pushed him in the past, was bad management on my part. 
&lt;/p&gt;
&lt;p&gt;
He patiently explained to me that, instead of me making him estimate the duration
for his tasks and then letting him have enough time to complete them with a quality
implementation, he would really appreciate it if I could estimate how long his tasks
should take and then give him a dead-line so that he would start working harder as
the deadline approached. 
&lt;/p&gt;
&lt;p align="center"&gt;
&lt;img src="http://www.thousandtyone.com/blog/content/binary/PanicOnDeadLineApporaching.gif"&gt; 
&lt;/p&gt;
&lt;p&gt;
For most other &lt;a href="http://www.thousandtyone.com/blog/TheThickSkinnedDeveloper.aspx" target="_blank"&gt;thick-skinned&lt;/a&gt; programmers
who were &lt;a href="http://www.thousandtyone.com/blog/CMMRUPAndGantChartsDontBuildSuccessfulSoftwareKickAssProgrammersDo.aspx" target="_blank"&gt;getting
projects rolled out successfully&lt;/a&gt; at &lt;a href="http://www.thousandtyone.com/blog/MeetThePersonasLetTheStoryTellingBegin.aspx" target="_blank"&gt;Multiplitaxion
Inc&lt;/a&gt;, deadlines weren't working out all that well. They seemed to like the idea
of estimating their own tasks and working in a pragmatic non-panic environment.
&lt;/p&gt;
&lt;p&gt;
I had discovered, early on in my career that the mounting pressure to ship based on
a given artificial deadline encourages developers to program by co-incidence. As a
developer, I had learnt the lesson &lt;a href="http://www.thousandtyone.com/blog/WhyDoesFredProgramByCoincidence.aspx" target="_blank"&gt;the
hard way&lt;/a&gt;, and had told myself that I would not push teams I work with to &lt;a href="http://www.thousandtyone.com/blog/WhyDoesFredProgramByCoincidence.aspx" target="_blank"&gt;program
by coincidence just to meet a deadline&lt;/a&gt;; specially artificial ones.
&lt;/p&gt;
&lt;p&gt;
As I grew in my professional and personal life I started realizing that not imposing
any deadline on people and empowering them with trust, makes them much more productive.
Then I met Mr. Fred who had issues with the whole no-deadlines-we-trust-you-to-get-things-done
way to running projects. Here was a guy telling him me that he desperately needed
deadlines and he needed to be pressured so that he would do his work as I stood there
and looked at him, completely confused.
&lt;/p&gt;
&lt;p&gt;
Deadline Driven Development or DDD as some call it lovingly, isn't new in the world
of software development and this &lt;a href="http://www.thousandtyone.com/blog/IsYourClientYourAlly.aspx" target="_blank"&gt;wasn't
the first time&lt;/a&gt; I was seeing it in action. During my early days as an young and
budding developer, I had seen deadline-driven-development in the world of project
managers where it was rampantly popular.&amp;nbsp; Having said that however, this was
the first time in my life when I was seeing a team member crave for it. This was indeed
my first experience of seeing young and budding engineers infected with an otherwise
managerial disease.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
Tom DeMarco and Timothy Lister describe a real life story, of how managers and senior
executives, like keeping their teams under constant pressure of deadlines, in their
book &lt;a href="http://www.amazon.com/exec/obidos/ASIN/0932633439/thousandtyone-20" target="_blank"&gt;Peopleware:
Productive Projects and Teams&lt;/a&gt;:
&lt;/p&gt;
&lt;p&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="PostText" align="middle"&gt;
&lt;p class="QuotePara"&gt;
&lt;p class="QuoteText"&gt;
During the past year, I did some consulting for a project that was proceeding so smoothly
that the project manager knew she would deliver the product on schedule. She was summoned
in front of the management committee and asked for a progress report. She said she
could guarantee that her product would be ready by the deadline of March 1, exactly
on time according to the original estimate. The upper managers chewed over that piece
of unexpected good news and then called her in again the next day. Since she was on
time for March 1, they explained, the deadline had been moved up to January 15. 
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p&gt;
The story might seem extreme to a few of you dear reader, and even though moving the
deadline ahead might seem a little dramatic for most management teams to do, consider
this: how frequently has your management seen you ship comfortably on time and have
thrown in a couple of extra features in the mix asking you to build the new features
in the same timeframe. Maybe the deadline wasn't randomly moved ahead, but adding
random features, just to keep the team on their toes, equates to the same thing. 
&lt;/p&gt;
&lt;p&gt;
Deadline driven development is an approach to software development where the management &lt;a href="http://www.thousandtyone.com/blog/DoYouRespectTheIronTriangle.aspx" target="_blank"&gt;constantly
and rampantly disrespects the iron triangle&lt;/a&gt;. At multiple organizations that I've
seen or visited, I've personally heard of or participated in more than one project
and utilization meetings where people &lt;a href="http://www.thousandtyone.com/blog/AreEightHoursADayEnoughForSoftwareProgrammers.aspx" target="_blank"&gt;being
able to head home comfortably at 6:30&lt;/a&gt; is cited as a bad example of resource utilization. 
&lt;/p&gt;
&lt;p&gt;
Most veterans understand and have mastered &lt;a href="http://www.thousandtyone.com/blog/WhyDoesFredProgramByCoincidence.aspx" target="_blank"&gt;the
art of balancing between aiming for perfection and shipping&lt;/a&gt; and these &lt;a href="http://www.thousandtyone.com/blog/CMMRUPAndGanttChartsDontBuildSuccessfulSoftwareKickAssProgrammersDo.aspx" target="_blank"&gt;kick
ass developers will ship as fast as they humanly can&lt;/a&gt;. At times they'll estimate
stupidly, stumble like babies and miss deadlines. Then they'll get up, get better
and ship successfully. &lt;a href="http://www.amazon.com/exec/obidos/ASIN/0932633439/thousandtyone-20" target="_blank"&gt;Peopleware&lt;/a&gt; does
a pretty good job at describing the paradox of success when it comes to deadlines:
&lt;/p&gt;
&lt;p&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="PostText" align="middle"&gt;
&lt;p class="QuotePara"&gt;
&lt;p class="QuoteText"&gt;
How many times have you heard that some new technique is going to be used because
it is the only chance to make the hard-and-fast deadline, and that if the deadline
is missed, there will be hell to pay?&amp;nbsp; The&amp;nbsp; setup of the change has already
made its&amp;nbsp; outcome more than a little&amp;nbsp; dubious. The&amp;nbsp; kid-like&amp;nbsp;
willingness to throw ourselves into a potentially&amp;nbsp; embarrassing endeavor is defeated
by the potential for ridicule. Paradoxically, change only has a chance of succeeding&amp;nbsp;
if failure, at least a little bit of failure, is also okay. 
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p&gt;
Every time there is a business push to ship faster I see countless managers, just
take the email, forward it to their teams and push them harder; under the &lt;a href="http://www.thousandtyone.com/blog/OptimismAndWishfulThinkingTwoBiggestCursesInSoftwareDevelopment.aspx" target="_blank"&gt;optimistic
belief&lt;/a&gt; that if the team really pushed harder they might be able to pull of a magic
trick. 
&lt;/p&gt;
&lt;p&gt;
If you're a manager, your job is &lt;a href="http://www.thousandtyone.com/blog/CMMRUPAndGanttChartsDontBuildSuccessfulSoftwareKickAssProgrammersDo.aspx" target="_blank"&gt;not
just to build a gantt-chart&lt;/a&gt; and then run behind your team collecting the &lt;a href="http://www.thousandtyone.com/blog/IsYourTaskDoneOrJustNinetyPercentDone.aspx" target="_blank"&gt;status
in terms of percentage complete&lt;/a&gt;. Business is expected to rush software development
teams into it's own death-bed through continuous increase in velocity but and some
point you need to take the crap upon yourself, cushion your team from it and let them
function &lt;a href="http://www.thousandtyone.com/blog/ThePerilsOfMultitaskingInSoftwareDevelopmentAndLife.aspx" target="_blank"&gt;un-interrupted&lt;/a&gt; without
the pressure of continuous and mostly artificial dead-lines. If you need to sit through &lt;a href="http://www.thousandtyone.com/blog/MeetingsTheHeroinOfSoftwareDevelopmentWorld.aspx" target="_blank"&gt;a
thousand meetings&lt;/a&gt; to convince the business, please do; if you must get into heated
argument with marketing guys and your bosses please do; but if you pass of a stupid
artificial deadline to your team all you do is demonstrate the lack of your management
skills. 
&lt;/p&gt;
&lt;p&gt;
If you're a budding manager and the next time they tell you that there'll be hell
to pay if a deadline is missed, try to investigate a little more into exactly how
the business gets impacted and what is the actual loss involved if you were to miss
a deadline for a few days. Chances are, there'll be none and there is invariable a
high possibility that the so-called magical deadline which appeared out of nowhere
would be the brainchild of a &lt;a href="http://www.thousandtyone.com/blog/ProjectManagersNotToDoListAndMostItsMostImportantNotToDoItem.aspx" target="_blank"&gt;prick&lt;/a&gt; trying
to push the team a little harder by pushing random deadlines. 
&lt;/p&gt;
&lt;p&gt;
I've been a part of multiple projects and have worked with a huge numbers of developers.
I have hardly ever seen programmers cheat their organizations and have a fun time
watching movies and playing video games when they had a clear sense of what they were
expected to do and what the organization expected out of them. Working under the assumptions
that your employees are out there to &lt;a href="http://www.thousandtyone.com/blog/ProtectingIntellectualPropertyVsTrustingEmployees.aspx" target="_blank"&gt;rob
you&lt;/a&gt; and then pushing constant deadlines at them so that they don't miss-utilize
their &lt;a href="http://www.thousandtyone.com/blog/AreEightHoursADayEnoughForSoftwareProgrammers.aspx" target="_blank"&gt;office
time&lt;/a&gt; is outright stupidity which does nothing other than encourage &lt;a href="http://www.thousandtyone.com/blog/BreakingTheInfiniteLoopOfFailure.aspx" target="_blank"&gt;the
infinite loop of failure&lt;/a&gt; within the organization and the software development
world in general.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
Deadlines Driven Development is for a team of Dummies. For everyone else who is &lt;a href="http://www.thousandtyone.com/blog/CMMRUPAndGanttChartsDontBuildSuccessfulSoftwareKickAssProgrammersDo.aspx" target="_blank"&gt;decently
smart&lt;/a&gt;, there is communication, collaboration and successful implementations. 
&lt;/p&gt;</description>
      <comments>http://www.thousandtyone.com/blog/CommentView,guid,036536e9-ac06-4be5-b303-0272f845b257.aspx</comments>
      <category>Personal Thoughts on Software Development</category>
    </item>
    <item>
      <trackback:ping>http://www.thousandtyone.com/blog/Trackback.aspx?guid=63b74aa9-b27c-4827-b512-a5283538c38e</trackback:ping>
      <pingback:server>http://www.thousandtyone.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.thousandtyone.com/blog/PermaLink,guid,63b74aa9-b27c-4827-b512-a5283538c38e.aspx</pingback:target>
      <dc:creator>Rajiv Popat</dc:creator>
      <wfw:comment>http://www.thousandtyone.com/blog/CommentView,guid,63b74aa9-b27c-4827-b512-a5283538c38e.aspx</wfw:comment>
      <wfw:commentRss>http://www.thousandtyone.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=63b74aa9-b27c-4827-b512-a5283538c38e</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
When acquaintances and distant relatives strike a conversation with me in parties
and during these discussions want to know what it is that I do for a living, I tell
them that I read, talk, listen and besides doing all of that, I write. The reply often
results in a confused acquaintance or an even more confused distant family member
looking at me like I am an alien with a third eye when in-fact I'm just passing Zen-line
statements that you would usually hear from <a href="http://en.wikipedia.org/wiki/Yoda" target="_blank">Yoda</a>.
</p>
        <p align="center">
 <img src="http://www.thousandtyone.com/blog/content/binary/YodaStandingAndTalking.gif" /></p>
        <p>
I am no-where close to being as insightful as <a href="http://en.wikipedia.org/wiki/Yoda" target="_blank">Yoda</a> but
labeling myself as a programmer, project manager, technical architect or any fancy
designation sounds like an incorrect introduction of my true self. 
</p>
        <p>
When I'm not reading, talking and listening to others in development teams, 'writing'
describes what I do rather well:
</p>
        <ol>
          <li>
I write code. 
</li>
          <li>
I write about code. 
</li>
          <li>
I write about my experiences with reading, talking and listening to others.</li>
        </ol>
        <p>
Of course, this blog reflects my love for reading, talking, listening to others and
writing. Going ahead I'll be exploring my love for all of these activities using stories
with lessons to learn both from projects that I've worked on and the ones I've witnessed
or seen from the outside. These are stories from my past with a fictional sugar coating
and no direct names of organizations, clients or individuals. 
</p>
        <p>
Most of these stories will be real with a fictional coating. Others will be completely
fictional with real lessons. I will weave and knit words to confuse you just so that
you don't find out what's real and what's not; but my intent isn't evil here. The
intention is to share with you, dear reader, lessons learnt during my software development
career in ways that are exciting and fun.
</p>
        <p>
We will, for the sake of creative imagination use a few common characters and personas
in all the stories that we publish on this blog from this point on. This post is about
describing some of those personas and laying down the basic framework for the stories
and posts to come. 
</p>
        <p>
          <strong>Multiplitaxion Inc. </strong>
        </p>
        <p>
Multiplitaxion Inc, is a fictional company where things just don't seem to go right. <a href="http://www.thousandtyone.com/blog/AboutThisBlog.aspx" target="_blank">The
name, as usual, was suggested by my very smart nephew</a> when he was first taught
multiplication. The guy had mastered the idea of multiplication rather well and could
multiply numbers decently well; but there was a 'little' bit of a problem. He was
having a hard time pronouncing multiplication; so he came up with Multiplitaxion.
The name was way too cool to be wasted. That's when Multiplitaxion Inc, was born. 
</p>
        <p>
The idea of Multiplitaxion Inc, was inspired by three different sources. 
</p>
        <ol>
          <li>
Lots of Organizations - During a point of time in my career I was hopping from one
client office to other and visiting multiple so called big software development houses.
I was realizing one thing; The bigger they were the bigger their stupidities were.
There were a very few who were maintaining the <a href="http://www.thousandtyone.com/blog/ItsNotAboutGoogleItsAboutYou.aspx" target="_blank">magic
touch of small</a> but most of the bigger organizations were hugely big even when
it came to their stupidities. 
</li>
          <li>
            <a href="http://www.imdb.com/title/tt0151804/" target="_blank">Office Space</a> -
This was a comedy that a <a href="http://thetreasuryblog.com/Blog/" target="_blank">colleague
of mine</a> introduced me to. The movie had a fictional organization called <a href="http://www.imdb.com/title/tt0151804/plotsummary" target="_blank">Initech</a>;
which was a pretty funny representation of the kind of stupidities that happen in
a huge number of software development shops.   
</li>
          <li>
The Poster - I remember a conference room where project status was analyzed and decisions
for future versions were taken; I remember a single conference which continued for
a very long time where I was barely close to <a href="http://www.thousandtyone.com/blog/MeetingsTheHeroinOfSoftwareDevelopmentWorld.aspx" target="_blank">catching
my zzzzz</a>, hardly ever spoke and kept staring that this poster on the wall.  
</li>
        </ol>
        <p align="center">
          <img src="http://www.thousandtyone.com/blog/content/binary/PosterOnIdiocy.gif" />
        </p>
        <p>
You would think that anyone with the common-sense and sense-of-humor to stick a poster
of this sort in the conference room would be careful about the stupidities they would
indulge in. However, I sat in the conference room, waiting for a very <a href="http://www.thousandtyone.com/blog/MeetingsTheHeroinOfSoftwareDevelopmentWorld.aspx" target="_blank">lengthy
meeting</a> to finish, where everyone involved tried to freeze the requirements for
the next version followed by a finger pointing exercise of why the first version didn't
meet all the requirements. I sat there and admired the idiocy that happens even when
some reasonably smart people come together in large groups with conflicting interests.
Multiplitaxion Inc, isn't real; and neither does it represent one single organization
form my past; but the problem this fictional little organization faces are real. Very
real. 
</p>
        <p>
          <strong>Fred </strong>
        </p>
        <p>
To be honest Fred is not my brain child. He belongs to Venkat Subramaniam and Andy
Hunt who conceived the idea of Fred in their book <a href="http://www.amazon.com/exec/obidos/ASIN/020161622X/thousandtyone-20" target="_blank">The
Pragmatic Programmer</a> where they described Fred using a simple example: 
</p>
        <p>
          <table>
            <tbody>
              <tr>
                <td class="PostText" align="middle">
                  <div class="QuoteText">
                    <p class="QuotePara">
                    </p>
                    <p>
Suppose Fred is given a programming assignment. Fred types in some code, tries it,
and it seems to work. Fred types in some more code, tries it, and it still seems to
work. After several weeks of coding this way, the program suddenly stops working,
and after hours of trying to fix it, he still doesn't know why. Fred may well spend
a significant amount of time chasing this piece of code around without ever being
able to fix it. No matter what he does, it just doesn't ever seem to work right. 
</p>
                    <p>
Fred doesn't know why the code is failing because he didn't know why it worked in
the first place. It seemed to work, given the limited "testing" that Fred did, but
that was just a coincidence. Buoyed by false confidence, Fred charged ahead into oblivion.
Now, most intelligent people may know someone like Fred, but we know better. We don't
rely on coincidences—do we? 
</p>
                  </div>
                </td>
              </tr>
            </tbody>
          </table>
        </p>
        <p>
I loved the idea of Fred and went ahead and said that <a href="http://www.thousandtyone.com/blog/WhyDoesFredProgramByCoincidence.aspx" target="_blank">there's
a little bit of Fred in all of us</a>. But then throughout my career I've also met
perfect embodiments of Fred. <a href="http://www.thousandtyone.com/blog/WhyDoesFredProgramByCoincidence.aspx" target="_blank">This
blog is not about criticizing Fred</a>. Instead it's about analyzing what Mr. Fred
does and learning from his stupid mistakes; but before we do that it's really important
that we know Fred; which is why, dear reader, I present to you, Mr. Fred. 
</p>
        <p>
Fred, Meet the world. World, Meet Mr. Fred. 
</p>
        <p>
          <strong>Pops</strong>
        </p>
        <p>
This one's not my brain child too. This is the brain child of <a href="http://www.randsinrepose.com/" target="_blank">Michael
Lopp</a> in his book <a href="http://www.amazon.com/exec/obidos/ASIN/159059844X/thousandtyone-20" target="_blank">Managing
Humans</a> where he referred to himself as Rands: 
</p>
        <p>
          <table>
            <tbody>
              <tr>
                <td class="PostText" align="middle">
                  <div class="QuoteText">
                    <p class="QuotePara">
                    </p>
                    <p>
The icing on this semi-fictional cake is Rands. This is a name I began using in the
mid-’90s for my virtual presence; when I began web-logging about management, the name
stuck. Think of Rands as your semi-fictional guide walking you through the fake stories
of fake people that have had incredible relevant (yet fake) experiences. Rands has
a bit of attitude, but, then again, so do I. 
</p>
                  </div>
                </td>
              </tr>
            </tbody>
          </table>
        </p>
        <p>
I'm of Indian origin and I carry my <a href="http://www.thousandtyone.com/blog/AreYouStuckWithAProblemDivideAndConquer.aspx" target="_blank">Indian
origin and accent rather well</a> when I travel around a <a href="http://www.amazon.com/exec/obidos/ASIN/0312425074/thousandtyone-20" target="_blank">flat
world</a>. I'm definitely not an Indian call center employee with a thick Indian accent
trying to assume an identity of 'Sam' or 'Harry' and making a fool of myself. 
My real name is Rajiv Popat and I have no complexes what-so-ever about that. 
</p>
        <p>
Pops however, is a rather funny identity which allows me to step out of myself to
be just as critical of myself as I am of others including Fred. Then the idea of Pops
is even more appealing when <a href="http://www.thousandtyone.com/blog/ProjectManagersNotToDoListAndMostItsMostImportantNotToDoItem.aspx" target="_blank">I
go ahead and make random mistakes which, of course, I do all the time</a>. I can blame
it all on Pops. After all, it's not me making those stupid mistakes. It's Pops. 
</p>
        <p>
          <strong>More Personas</strong>
        </p>
        <p>
Of course, Multiplitaxion Inc, Fred and Pops are a good starting point for story telling;
but I do realize we'll need more characters as we move ahead. I'll be making changes
to this post as I go ahead and introduce other characters in future. 
</p>
        <p>
Consider this page the Introduction to all of the characters that you'll meet in the
stories about management and software development from Pops at ThousandtyOne.com. 
</p>
        <p>
Every time I want to go ahead and add a new character to the story I'll just go ahead
and add him here. I know I'm not supposed to be going back and editing a post that
has already been published, but it's not me who'll do that, remember? It's Pops. The
guy just doesn't understand blogging rules all that well after-all.
</p>
      <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/Thousandtyone/~4/444918447" height="1" width="1" /></body>
      <title>Meet The Personas. Let The Story Telling Begin.</title>
      <guid isPermaLink="false">http://www.thousandtyone.com/blog/PermaLink,guid,63b74aa9-b27c-4827-b512-a5283538c38e.aspx</guid>
      <link>http://www.thousandtyone.com/blog/MeetThePersonasLetTheStoryTellingBegin.aspx</link>
      <pubDate>Fri, 07 Nov 2008 00:38:19 GMT</pubDate>
      <description>&lt;p&gt;
When acquaintances and distant relatives strike a conversation with me in parties
and during these discussions want to know what it is that I do for a living, I tell
them that I read, talk, listen and besides doing all of that, I write. The reply often
results in a confused acquaintance or an even more confused distant family member
looking at me like I am an alien with a third eye when in-fact I'm just passing Zen-line
statements that you would usually hear from &lt;a href="http://en.wikipedia.org/wiki/Yoda" target="_blank"&gt;Yoda&lt;/a&gt;.
&lt;/p&gt;
&lt;p align="center"&gt;
&amp;nbsp;&lt;img src="http://www.thousandtyone.com/blog/content/binary/YodaStandingAndTalking.gif"&gt; 
&lt;/p&gt;
&lt;p&gt;
I am no-where close to being as insightful as &lt;a href="http://en.wikipedia.org/wiki/Yoda" target="_blank"&gt;Yoda&lt;/a&gt; but
labeling myself as a programmer, project manager, technical architect or any fancy
designation sounds like an incorrect introduction of my true self. 
&lt;/p&gt;
&lt;p&gt;
When I'm not reading, talking and listening to others in development teams, 'writing'
describes what I do rather well:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
I write code. 
&lt;li&gt;
I write about code. 
&lt;li&gt;
I write about my experiences with reading, talking and listening to others.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
Of course, this blog reflects my love for reading, talking, listening to others and
writing. Going ahead I'll be exploring my love for all of these activities using stories
with lessons to learn both from projects that I've worked on and the ones I've witnessed
or seen from the outside. These are stories from my past with a fictional sugar coating
and no direct names of organizations, clients or individuals. 
&lt;/p&gt;
&lt;p&gt;
Most of these stories will be real with a fictional coating. Others will be completely
fictional with real lessons. I will weave and knit words to confuse you just so that
you don't find out what's real and what's not; but my intent isn't evil here. The
intention is to share with you, dear reader, lessons learnt during my software development
career in ways that are exciting and fun.
&lt;/p&gt;
&lt;p&gt;
We will, for the sake of creative imagination use a few common characters and personas
in all the stories that we publish on this blog from this point on. This post is about
describing some of those personas and laying down the basic framework for the stories
and posts to come. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Multiplitaxion Inc. &lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Multiplitaxion Inc, is a fictional company where things just don't seem to go right. &lt;a href="http://www.thousandtyone.com/blog/AboutThisBlog.aspx" target="_blank"&gt;The
name, as usual, was suggested by my very smart nephew&lt;/a&gt; when he was first taught
multiplication. The guy had mastered the idea of multiplication rather well and could
multiply numbers decently well; but there was a 'little' bit of a problem. He was
having a hard time pronouncing multiplication; so he came up with Multiplitaxion.
The name was way too cool to be wasted. That's when Multiplitaxion Inc, was born. 
&lt;/p&gt;
&lt;p&gt;
The idea of Multiplitaxion Inc, was inspired by three different sources. 
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Lots of Organizations - During a point of time in my career I was hopping from one
client office to other and visiting multiple so called big software development houses.
I was realizing one thing; The bigger they were the bigger their stupidities were.
There were a very few who were maintaining the &lt;a href="http://www.thousandtyone.com/blog/ItsNotAboutGoogleItsAboutYou.aspx" target="_blank"&gt;magic
touch of small&lt;/a&gt; but most of the bigger organizations were hugely big even when
it came to their stupidities. 
&lt;li&gt;
&lt;a href="http://www.imdb.com/title/tt0151804/" target="_blank"&gt;Office Space&lt;/a&gt; -
This was a comedy that a &lt;a href="http://thetreasuryblog.com/Blog/" target="_blank"&gt;colleague
of mine&lt;/a&gt; introduced me to. The movie had a fictional organization called &lt;a href="http://www.imdb.com/title/tt0151804/plotsummary" target="_blank"&gt;Initech&lt;/a&gt;;
which was a pretty funny representation of the kind of stupidities that happen in
a huge number of software development shops.&amp;nbsp;&amp;nbsp; 
&lt;li&gt;
The Poster - I remember a conference room where project status was analyzed and decisions
for future versions were taken; I remember a single conference which continued for
a very long time where I was barely close to &lt;a href="http://www.thousandtyone.com/blog/MeetingsTheHeroinOfSoftwareDevelopmentWorld.aspx" target="_blank"&gt;catching
my zzzzz&lt;/a&gt;, hardly ever spoke and kept staring that this poster on the wall.&amp;nbsp; 
&lt;/li&gt;
&lt;/ol&gt;
&lt;p align="center"&gt;
&lt;img src="http://www.thousandtyone.com/blog/content/binary/PosterOnIdiocy.gif"&gt; 
&lt;/p&gt;
&lt;p&gt;
You would think that anyone with the common-sense and sense-of-humor to stick a poster
of this sort in the conference room would be careful about the stupidities they would
indulge in. However, I sat in the conference room, waiting for a very &lt;a href="http://www.thousandtyone.com/blog/MeetingsTheHeroinOfSoftwareDevelopmentWorld.aspx" target="_blank"&gt;lengthy
meeting&lt;/a&gt; to finish, where everyone involved tried to freeze the requirements for
the next version followed by a finger pointing exercise of why the first version didn't
meet all the requirements. I sat there and admired the idiocy that happens even when
some reasonably smart people come together in large groups with conflicting interests.
Multiplitaxion Inc, isn't real; and neither does it represent one single organization
form my past; but the problem this fictional little organization faces are real. Very
real. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Fred &lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
To be honest Fred is not my brain child. He belongs to Venkat Subramaniam and Andy
Hunt who conceived the idea of Fred in their book &lt;a href="http://www.amazon.com/exec/obidos/ASIN/020161622X/thousandtyone-20" target="_blank"&gt;The
Pragmatic Programmer&lt;/a&gt; where they described Fred using a simple example: 
&lt;p&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="PostText" align="middle"&gt;
&lt;div class="QuoteText"&gt;
&lt;p class="QuotePara"&gt;
&lt;p&gt;
Suppose Fred is given a programming assignment. Fred types in some code, tries it,
and it seems to work. Fred types in some more code, tries it, and it still seems to
work. After several weeks of coding this way, the program suddenly stops working,
and after hours of trying to fix it, he still doesn't know why. Fred may well spend
a significant amount of time chasing this piece of code around without ever being
able to fix it. No matter what he does, it just doesn't ever seem to work right. 
&lt;/p&gt;
&lt;p&gt;
Fred doesn't know why the code is failing because he didn't know why it worked in
the first place. It seemed to work, given the limited "testing" that Fred did, but
that was just a coincidence. Buoyed by false confidence, Fred charged ahead into oblivion.
Now, most intelligent people may know someone like Fred, but we know better. We don't
rely on coincidences—do we? 
&lt;/p&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p&gt;
I loved the idea of Fred and went ahead and said that &lt;a href="http://www.thousandtyone.com/blog/WhyDoesFredProgramByCoincidence.aspx" target="_blank"&gt;there's
a little bit of Fred in all of us&lt;/a&gt;. But then throughout my career I've also met
perfect embodiments of Fred. &lt;a href="http://www.thousandtyone.com/blog/WhyDoesFredProgramByCoincidence.aspx" target="_blank"&gt;This
blog is not about criticizing Fred&lt;/a&gt;. Instead it's about analyzing what Mr. Fred
does and learning from his stupid mistakes; but before we do that it's really important
that we know Fred; which is why, dear reader, I present to you, Mr. Fred. 
&lt;/p&gt;
&lt;p&gt;
Fred, Meet the world. World, Meet Mr. Fred. 
&lt;p&gt;
&lt;strong&gt;Pops&lt;/strong&gt; 
&lt;p&gt;
This one's not my brain child too. This is the brain child of &lt;a href="http://www.randsinrepose.com/" target="_blank"&gt;Michael
Lopp&lt;/a&gt; in his book &lt;a href="http://www.amazon.com/exec/obidos/ASIN/159059844X/thousandtyone-20" target="_blank"&gt;Managing
Humans&lt;/a&gt; where he referred to himself as Rands: 
&lt;/p&gt;
&lt;p&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="PostText" align="middle"&gt;
&lt;div class="QuoteText"&gt;
&lt;p class="QuotePara"&gt;
&lt;p&gt;
The icing on this semi-fictional cake is Rands. This is a name I began using in the
mid-’90s for my virtual presence; when I began web-logging about management, the name
stuck. Think of Rands as your semi-fictional guide walking you through the fake stories
of fake people that have had incredible relevant (yet fake) experiences. Rands has
a bit of attitude, but, then again, so do I. 
&lt;/p&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p&gt;
I'm of Indian origin and I carry my &lt;a href="http://www.thousandtyone.com/blog/AreYouStuckWithAProblemDivideAndConquer.aspx" target="_blank"&gt;Indian
origin and accent rather well&lt;/a&gt; when I travel around a &lt;a href="http://www.amazon.com/exec/obidos/ASIN/0312425074/thousandtyone-20" target="_blank"&gt;flat
world&lt;/a&gt;. I'm definitely not an Indian call center employee with a thick Indian accent
trying to assume an identity of 'Sam' or 'Harry' and making a fool of myself.&amp;nbsp;
My real name is Rajiv Popat and I have no complexes what-so-ever about that. 
&lt;/p&gt;
&lt;p&gt;
Pops however, is a rather funny identity which allows me to step out of myself to
be just as critical of myself as I am of others including Fred. Then the idea of Pops
is even more appealing when &lt;a href="http://www.thousandtyone.com/blog/ProjectManagersNotToDoListAndMostItsMostImportantNotToDoItem.aspx" target="_blank"&gt;I
go ahead and make random mistakes which, of course, I do all the time&lt;/a&gt;. I can blame
it all on Pops. After all, it's not me making those stupid mistakes. It's Pops. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;More Personas&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Of course, Multiplitaxion Inc, Fred and Pops are a good starting point for story telling;
but I do realize we'll need more characters as we move ahead. I'll be making changes
to this post as I go ahead and introduce other characters in future. 
&lt;/p&gt;
&lt;p&gt;
Consider this page the Introduction to all of the characters that you'll meet in the
stories about management and software development from Pops at ThousandtyOne.com. 
&lt;/p&gt;
&lt;p&gt;
Every time I want to go ahead and add a new character to the story I'll just go ahead
and add him here. I know I'm not supposed to be going back and editing a post that
has already been published, but it's not me who'll do that, remember? It's Pops. The
guy just doesn't understand blogging rules all that well after-all.
&lt;/p&gt;</description>
      <comments>http://www.thousandtyone.com/blog/CommentView,guid,63b74aa9-b27c-4827-b512-a5283538c38e.aspx</comments>
      <category>Personal Thoughts on Software Development</category>
    </item>
    <item>
      <trackback:ping>http://www.thousandtyone.com/blog/Trackback.aspx?guid=bd5fa405-7af1-4627-92cf-f04532ae09af</trackback:ping>
      <pingback:server>http://www.thousandtyone.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.thousandtyone.com/blog/PermaLink,guid,bd5fa405-7af1-4627-92cf-f04532ae09af.aspx</pingback:target>
      <dc:creator>Rajiv Popat</dc:creator>
      <wfw:comment>http://www.thousandtyone.com/blog/CommentView,guid,bd5fa405-7af1-4627-92cf-f04532ae09af.aspx</wfw:comment>
      <wfw:commentRss>http://www.thousandtyone.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=bd5fa405-7af1-4627-92cf-f04532ae09af</wfw:commentRss>
      <slash:comments>3</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
One of my seniors told me something on the lines of - "Senior engineers are supposed
to wear multiple hats and juggle multiple tasks at the same time"; the issue at hand
was that I was not 'utilizing' the senior most members in my team to their fullest
extent by not giving them multiple tasks to work on all at once. According to him,
even though I had promoted these individuals I wasn't tapping into their full potential
by pushing them to undertake multiple tasks at once.
</p>
        <p>
This particular senior of mine believed that all senior members in all teams should
multitask and if they couldn't, they weren't senior enough to be promoted to the position
of senior programmers. He wanted, expected and demanded that anyone who was to be
promoted as a senior programmer had to be a serious, mind-blowing, kick ass juggler
when it came to handling multiple tasks as once before he was lifted to the position
of a senior programmer or promoted.
</p>
        <p align="center">
          <img src="http://www.thousandtyone.com/blog/content/binary/RaiseTheJuggler.gif" />
        </p>
        <p>
During the early parts of my career I had been a ruthless multitasking guy myself.
The obvious expectation from someone like me was that I would push multiple members
in my team towards multitask as well, but then something creepy happened. All the
multitasking that I was doing was starting to have it's toll on me. 
</p>
        <p>
There would be days at a stretch when I would stare at the monitor losing a track
of what it is that I was doing and what I was supposed to be doing next. I had taken
multitasking to the next level and was suffering through what can be, most aptly,
defined as the ALT-Tab-Syndrome. That is when I started realizing how expensive a
human context or task switch was.
</p>
        <p>
In his <a href="http://www.joelonsoftware.com/articles/fog0000000022.html" target="_blank">article</a> on
human task switch <a href="http://www.joelonsoftware.com/AboutMe.html" target="_blank">Joel
Spolsky</a> explains how harmful human multitasking is by comparing it with multitasking
on computers. He argues that both are expensive and the only thing they do is provide
is a perception of speed, not actual increase in speed or productivity. <a href="http://www.joelonsoftware.com/articles/fog0000000022.html" target="_blank">He
explains</a>: 
</p>
        <p>
          <table>
            <tbody>
              <tr>
                <td class="PostText" align="middle">
                  <div class="QuoteText">
                    <p class="QuotePara">
                    </p>
                    <p>
OK, back to the more interesting topic of managing humans, not CPUs. The trick here
is that when you manage <i>programmers</i>, specifically, task switches take a really,
really, really long time. That's because programming is the kind of task where you
have to keep a lot of things in your head at once. The more things you remember at
once, the more productive you are at programming. A programmer coding at full throttle
is keeping zillions of things in their head at once: everything from names of variables,
data structures, important APIs, the names of utility functions that they wrote and
call a lot, even the name of the subdirectory where they store their source code.
If you send that programmer to Crete for a three week vacation, they will forget it <i>all</i>.
The human brain seems to move it out of short-term RAM and swaps it out onto a backup
tape where it takes forever to retrieve. 
</p>
                  </div>
                </td>
              </tr>
            </tbody>
          </table>
        </p>
        <p>
In <a href="http://www.joelonsoftware.com/articles/fog0000000022.html" target="_blank">his
post</a>, Joel basically pushes the idea that human multitasking in all it's form
is not as productive as working on one-thing-at-a-time. In fact Joel feels it's harmful.   
</p>
        <p>
          <a href="http://www.anomaly.org/wade/index.html" target="_blank">G. Wade Johnson</a> argues
that what Joel is talking about can be described as preemptive programming. <a href="http://www.anomaly.org/wade/index.html" target="_blank">Wade</a> on
the other hand, introduces <a href="http://www.anomaly.org/wade/blog/2005/07/another_view_of_human_multitas.html" target="_blank">another
form of multitasking</a> where he talks about utilizing multitasking to utilize idle
time: 
</p>
        <p>
          <table>
            <tbody>
              <tr>
                <td class="PostText" align="middle">
                  <div class="QuoteText">
                    <p class="QuotePara">
                    </p>
                    <p>
An interrupt forces a task-switch. You incur all of the overhead of changing state,
just like in the time-slice case. In fact interrupts are worse for humans than for
computers. If you know you will be changing tasks after lunch, you can generally aim
for a good place to stop. With an interrupt, you have no choice of when it occurs. 
</p>
                    <p>
On the other hand, I try to keep one major task and two or three minor tasks on my
plate at all times. This way, when something causes me to block on the major task,
(waiting on technical or business input, lack of some resource, a design problem that
I just can't seem to beat right now) I can spend some time on the minor tasks. Every
minor task I complete, is one more thing that actually gets finished. That way I don't
spend the blocked time busy waiting (browsing the web, reading slashdot, etc &lt;grin&gt;). 
</p>
                  </div>
                </td>
              </tr>
            </tbody>
          </table>
        </p>
        <p>
As valid as Wade's point seems, I've been a first hand example of what happens when
you try to utilize and squeeze out every second of your idle item. Human RAM's are
relatively limited in size, writing a few functions, firing a build that is going
to take a minute to fire, reading a blog-post in that one minute and coming back to
the code when the build is complete with all the variable names, function names and
class names you were working with fresh in your head doesn't sound real life as well. 
</p>
        <p>
          <a href="http://headrush.typepad.com/about.html" target="_blank">Kathy Sierra</a> believes
that the perils of multitasking aren't just limited to lowering the quality of the
tasks that you are multitasking. According to her multitasking may have perils which
are much more profound. <a href="http://headrush.typepad.com/creating_passionate_users/2006/03/multitasking_ma.html" target="_blank">She
explains</a>: 
</p>
        <p>
          <table>
            <tbody>
              <tr>
                <td class="PostText" align="middle">
                  <div class="QuoteText">
                    <p class="QuotePara">
                    </p>
                    <p>
Where I once believed that the myth of multitasking was about time (that doing four
things simultaneously takes much longer than to do those same four things in sequence),
scientists now know it's also about quality. And it gets worse... it's not just that
the quality of those four things in parallel will suffer, it's that your ability to
think and learn may suffer. Some researchers believe that all this constant, warp-speed,
always-on multitasking is causing young people, especially, to become less able to
follow any topic deeply. 
</p>
                  </div>
                </td>
              </tr>
            </tbody>
          </table>
        </p>
        <p>
Kathy has indeed done her research on the topic really well. Go ahead, browse through <a href="http://headrush.typepad.com/creating_passionate_users/2006/03/multitasking_ma.html" target="_blank">her
post</a> and you'll get everyone from <a href="http://www.time.com/time/magazine/article/0,9171,1174696,00.html" target="_blank">The
Time Magazine</a> to Jordan Grafman, chief of the cognitive neuroscience section at
the National Institute of Neurological Disorders and Stroke, telling you that multitasking
and being involved in too many things at once is harmful. 
</p>
        <p>
While I see countless young and ambitious engineers wanting to take on more and more
projects, bigger and better challenges, grow in life and go places all at once, <a href="http://headrush.typepad.com/creating_passionate_users/2006/03/multitasking_ma.html" target="_blank">Kathy's
post does a good job at reminding them their physical and mental limitations</a>: 
</p>
        <p>
          <table>
            <tbody>
              <tr>
                <td class="PostText" align="middle">
                  <div class="QuoteText">
                    <p class="QuotePara">
                    </p>
                    <p>
Whenever I talk about the big myth of multitasking, people <i>always</i> come up to
tell me how they themselves just "have the kind of brain that can do this." Riiiiiight.
They don't. I don't. You don't. And maybe you'd realize it if you turn off your cell
phone, disable IM, mute the little "ding" alarm that says you've got email, and just <i>sit
there</i> for a few moments. 
</p>
                    <p>
The big problem for most young people, it seems, is that they don't know <i>how</i> to
"just sit there." They get the shakes after just a few minutes without media stimulation. 
</p>
                  </div>
                </td>
              </tr>
            </tbody>
          </table>
        </p>
        <p>
What ever be the form of multitasking that you're doing; chances are that it is doing
you or your work more harm than it is doing you or your work good; and that includes
the kind of multitasking <a href="http://www.anomaly.org/wade/blog/2005/07/another_view_of_human_multitas.html" target="_blank">Wade
explained in his post</a>. As developers we tend to believe it's beneficial and we
like to think we can handle it really well; but the truth of life is we can't. <a href="http://headrush.typepad.com/creating_passionate_users/2006/03/multitasking_ma.html" target="_blank">Kathy
explains</a>: 
</p>
        <p>
          <table>
            <tbody>
              <tr>
                <td class="PostText" align="middle">
                  <div class="QuoteText">
                    <p class="QuotePara">
                    </p>
                    <p>
One of the most interesting things discussed in the Time article is that neuroscientists
have established the specific area of the brain responsible for context switching.
And unfortunately for some of us, it appears that this part of the brain performs
less well as our brain ages. In a nutshell, the older we get, the less quickly and
effectively we can multitask. But... most parents of teenagers already know that we
have no frickin' idea how our kids manage to do what they do simultaneously. The key
issue, though, is that while we now know they're better at it than we (the parents)
are, they aren't half as good at it as they think they are.
</p>
                    <p>
And chances are, you aren't as good at it as you think you are.
</p>
                  </div>
                </td>
              </tr>
            </tbody>
          </table>
        </p>
        <p>
The next time you fire a build and you feel this yearning temptation to read a blog
post or reply to an email, ask yourself if you can handle the task-switch and come
back to the build elegantly and completely when it's complete? If not, maybe you're
just better off sitting there, admiring the build getting fired and slowing down a
bit as you think about the next few lines of code you are going to write. After all
you'll hardly get anywhere with just random multitasked speed. 
</p>
        <p>
If you're leading a team, if there is one lesson you can take back from this post, <a href="http://www.joelonsoftware.com/articles/fog0000000022.html" target="_blank">Joel
describes it rather articulately</a>: 
</p>
        <p>
          <table>
            <tbody>
              <tr>
                <td class="PostText" align="middle">
                  <div class="QuoteText">
                    <p class="QuotePara">
                    </p>
                    <p>
As it turns out, if you give somebody two things to work on, you should be grateful
if they "starve" one task and only work on one, because they're going to get more
stuff done and finish the average task sooner. In fact, the real lesson from all this
is that you should never let people work on more than one thing at once. Make sure
they know what it is. Good managers see their responsibility as removing obstacles
so that people can focus on one thing and really get it done. When emergencies come
up, think about whether you can handle it yourself before you delegate it to a programmer
who is deeply submersed in a project.
</p>
                  </div>
                </td>
              </tr>
            </tbody>
          </table>
        </p>
        <p>
Are you still expecting your team members to multitask before you promote them? Are
you only promoting your team members based on their multitasking abilities? Here's
my advice to you: Don't use multitasking abilities as a measure for promotion.
</p>
        <p>
Are you knitting your brows and telling yourself what a moron I am because you think
that as you climb up the corporate ladder you have to multitask? Well, Multitasking
is a real need in my job profile as well. I tend to give a very strong perception
of multitasking when I work on multiple projects at once; but that's exactly what
it is - a perception. Behind the curtains; I try my best not to multitask as long
as possible. 
</p>
        <p>
A colleague recently told me that he was planning on picking up Ruby on Rails in the
next three months while he also worked on something learning something else during
those three months. My immediate response and suggestion to him had been that he should
buy a Ruby On Rails book, stop learning the other thing that he was planning on learning
and just focus on Ruby On Rails and finish it off in the next one and half month instead
of three. Then he should consider moving to something else. 
</p>
        <p>
This is but, one simple example of avoiding the perils on multitasking. All situations
in your life may not be as simple as this and I clearly don't have all the answers,
but the biggest favor that you can do yourself is by starting to realize that human
task switching is expensive and that multitasking in a real problem in our lives.
Once you realize that, work consciously towards finding ways and means to avoid multitasking
every time you can see an opportunity to avoid it. 
</p>
        <p>
Bottom line; whenever you have an option to avoid multitasking, avoid it. 
</p>
        <p>
The trick is to blind out everything else when you start with a task at hand and not
look at anything other than the task as had till the task comes to a logical end where
it's safe to switch to something else without having to keep too much about your first
task in your head. Till you reach that point, don't open your outlook; close your
browsers and if that stupid phone is ringing continuously switch it off too. Once
you reach a logical end where you know it's ok to switch to another task, then by
all means do; but random aimless multitasking in attempt to do too much in too little
time gets you nowhere. Absolutely nowhere.
</p>
        <p>
The Perils of multitasking are huge; both in software development and life in general.
Multitasking is truly impacting and preventing us from being successful and happy;
but you don't have to take my word for it; see <a href="http://www.scottberkun.com/" target="_blank"><a title="http://www.scottberkun.com/" href="http://www.scottberkun.com/">Scott
Berkun</a></a> talk about <a href="http://blip.tv/file/199623/" target="_blank">attention
and sex</a> to help you decide for yourself. 
</p>
      <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/Thousandtyone/~4/441170586" height="1" width="1" /></body>
      <title>The Perils Of Multitasking In Software Development And Life.</title>
      <guid isPermaLink="false">http://www.thousandtyone.com/blog/PermaLink,guid,bd5fa405-7af1-4627-92cf-f04532ae09af.aspx</guid>
      <link>http://www.thousandtyone.com/blog/ThePerilsOfMultitaskingInSoftwareDevelopmentAndLife.aspx</link>
      <pubDate>Mon, 03 Nov 2008 16:52:17 GMT</pubDate>
      <description>&lt;p&gt;
One of my seniors told me something on the lines of - "Senior engineers are supposed
to wear multiple hats and juggle multiple tasks at the same time"; the issue at hand
was that I was not 'utilizing' the senior most members in my team to their fullest
extent by not giving them multiple tasks to work on all at once. According to him,
even though I had promoted these individuals I wasn't tapping into their full potential
by pushing them to undertake multiple tasks at once.
&lt;/p&gt;
&lt;p&gt;
This particular senior of mine believed that all senior members in all teams should
multitask and if they couldn't, they weren't senior enough to be promoted to the position
of senior programmers. He wanted, expected and demanded that anyone who was to be
promoted as a senior programmer had to be a serious, mind-blowing, kick ass juggler
when it came to handling multiple tasks as once before he was lifted to the position
of a senior programmer or promoted.
&lt;/p&gt;
&lt;p align="center"&gt;
&lt;img src="http://www.thousandtyone.com/blog/content/binary/RaiseTheJuggler.gif"&gt; 
&lt;/p&gt;
&lt;p&gt;
During the early parts of my career I had been a ruthless multitasking guy myself.
The obvious expectation from someone like me was that I would push multiple members
in my team towards multitask as well, but then something creepy happened. All the
multitasking that I was doing was starting to have it's toll on me. 
&lt;/p&gt;
&lt;p&gt;
There would be days at a stretch when I would stare at the monitor losing a track
of what it is that I was doing and what I was supposed to be doing next. I had taken
multitasking to the next level and was suffering through what can be, most aptly,
defined as the ALT-Tab-Syndrome. That is when I started realizing how expensive a
human context or task switch was.
&lt;/p&gt;
&lt;p&gt;
In his &lt;a href="http://www.joelonsoftware.com/articles/fog0000000022.html" target="_blank"&gt;article&lt;/a&gt; on
human task switch &lt;a href="http://www.joelonsoftware.com/AboutMe.html" target="_blank"&gt;Joel
Spolsky&lt;/a&gt; explains how harmful human multitasking is by comparing it with multitasking
on computers. He argues that both are expensive and the only thing they do is provide
is a perception of speed, not actual increase in speed or productivity. &lt;a href="http://www.joelonsoftware.com/articles/fog0000000022.html" target="_blank"&gt;He
explains&lt;/a&gt;: 
&lt;/p&gt;
&lt;p&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="PostText" align="middle"&gt;
&lt;div class="QuoteText"&gt;
&lt;p class="QuotePara"&gt;
&lt;p&gt;
OK, back to the more interesting topic of managing humans, not CPUs. The trick here
is that when you manage &lt;i&gt;programmers&lt;/i&gt;, specifically, task switches take a really,
really, really long time. That's because programming is the kind of task where you
have to keep a lot of things in your head at once. The more things you remember at
once, the more productive you are at programming. A programmer coding at full throttle
is keeping zillions of things in their head at once: everything from names of variables,
data structures, important APIs, the names of utility functions that they wrote and
call a lot, even the name of the subdirectory where they store their source code.
If you send that programmer to Crete for a three week vacation, they will forget it &lt;i&gt;all&lt;/i&gt;.
The human brain seems to move it out of short-term RAM and swaps it out onto a backup
tape where it takes forever to retrieve. 
&lt;/p&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p&gt;
In &lt;a href="http://www.joelonsoftware.com/articles/fog0000000022.html" target="_blank"&gt;his
post&lt;/a&gt;, Joel basically pushes the idea that human multitasking in all it's form
is not as productive as working on one-thing-at-a-time. In fact Joel feels it's harmful.&amp;nbsp;&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.anomaly.org/wade/index.html" target="_blank"&gt;G. Wade Johnson&lt;/a&gt; argues
that what Joel is talking about can be described as preemptive programming. &lt;a href="http://www.anomaly.org/wade/index.html" target="_blank"&gt;Wade&lt;/a&gt; on
the other hand, introduces &lt;a href="http://www.anomaly.org/wade/blog/2005/07/another_view_of_human_multitas.html" target="_blank"&gt;another
form of multitasking&lt;/a&gt; where he talks about utilizing multitasking to utilize idle
time: 
&lt;/p&gt;
&lt;p&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="PostText" align="middle"&gt;
&lt;div class="QuoteText"&gt;
&lt;p class="QuotePara"&gt;
&lt;p&gt;
An interrupt forces a task-switch. You incur all of the overhead of changing state,
just like in the time-slice case. In fact interrupts are worse for humans than for
computers. If you know you will be changing tasks after lunch, you can generally aim
for a good place to stop. With an interrupt, you have no choice of when it occurs. 
&lt;p&gt;
On the other hand, I try to keep one major task and two or three minor tasks on my
plate at all times. This way, when something causes me to block on the major task,
(waiting on technical or business input, lack of some resource, a design problem that
I just can't seem to beat right now) I can spend some time on the minor tasks. Every
minor task I complete, is one more thing that actually gets finished. That way I don't
spend the blocked time busy waiting (browsing the web, reading slashdot, etc &amp;lt;grin&amp;gt;). 
&lt;/p&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p&gt;
As valid as Wade's point seems, I've been a first hand example of what happens when
you try to utilize and squeeze out every second of your idle item. Human RAM's are
relatively limited in size, writing a few functions, firing a build that is going
to take a minute to fire, reading a blog-post in that one minute and coming back to
the code when the build is complete with all the variable names, function names and
class names you were working with fresh in your head doesn't sound real life as well. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://headrush.typepad.com/about.html" target="_blank"&gt;Kathy Sierra&lt;/a&gt; believes
that the perils of multitasking aren't just limited to lowering the quality of the
tasks that you are multitasking. According to her multitasking may have perils which
are much more profound. &lt;a href="http://headrush.typepad.com/creating_passionate_users/2006/03/multitasking_ma.html" target="_blank"&gt;She
explains&lt;/a&gt;: 
&lt;/p&gt;
&lt;p&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="PostText" align="middle"&gt;
&lt;div class="QuoteText"&gt;
&lt;p class="QuotePara"&gt;
&lt;p&gt;
Where I once believed that the myth of multitasking was about time (that doing four
things simultaneously takes much longer than to do those same four things in sequence),
scientists now know it's also about quality. And it gets worse... it's not just that
the quality of those four things in parallel will suffer, it's that your ability to
think and learn may suffer. Some researchers believe that all this constant, warp-speed,
always-on multitasking is causing young people, especially, to become less able to
follow any topic deeply. 
&lt;/p&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p&gt;
Kathy has indeed done her research on the topic really well. Go ahead, browse through &lt;a href="http://headrush.typepad.com/creating_passionate_users/2006/03/multitasking_ma.html" target="_blank"&gt;her
post&lt;/a&gt; and you'll get everyone from &lt;a href="http://www.time.com/time/magazine/article/0,9171,1174696,00.html" target="_blank"&gt;The
Time Magazine&lt;/a&gt; to Jordan Grafman, chief of the cognitive neuroscience section at
the National Institute of Neurological Disorders and Stroke, telling you that multitasking
and being involved in too many things at once is harmful. 
&lt;/p&gt;
&lt;p&gt;
While I see countless young and ambitious engineers wanting to take on more and more
projects, bigger and better challenges, grow in life and go places all at once, &lt;a href="http://headrush.typepad.com/creating_passionate_users/2006/03/multitasking_ma.html" target="_blank"&gt;Kathy's
post does a good job at reminding them their physical and mental limitations&lt;/a&gt;: 
&lt;/p&gt;
&lt;p&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="PostText" align="middle"&gt;
&lt;div class="QuoteText"&gt;
&lt;p class="QuotePara"&gt;
&lt;p&gt;
Whenever I talk about the big myth of multitasking, people &lt;i&gt;always&lt;/i&gt; come up to
tell me how they themselves just "have the kind of brain that can do this." Riiiiiight.
They don't. I don't. You don't. And maybe you'd realize it if you turn off your cell
phone, disable IM, mute the little "ding" alarm that says you've got email, and just &lt;i&gt;sit
there&lt;/i&gt; for a few moments. 
&lt;p&gt;
The big problem for most young people, it seems, is that they don't know &lt;i&gt;how&lt;/i&gt; to
"just sit there." They get the shakes after just a few minutes without media stimulation. 
&lt;/p&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p&gt;
What ever be the form of multitasking that you're doing; chances are that it is doing
you or your work more harm than it is doing you or your work good; and that includes
the kind of multitasking &lt;a href="http://www.anomaly.org/wade/blog/2005/07/another_view_of_human_multitas.html" target="_blank"&gt;Wade
explained in his post&lt;/a&gt;. As developers we tend to believe it's beneficial and we
like to think we can handle it really well; but the truth of life is we can't. &lt;a href="http://headrush.typepad.com/creating_passionate_users/2006/03/multitasking_ma.html" target="_blank"&gt;Kathy
explains&lt;/a&gt;: 
&lt;/p&gt;
&lt;p&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="PostText" align="middle"&gt;
&lt;div class="QuoteText"&gt;
&lt;p class="QuotePara"&gt;
&lt;p&gt;
One of the most interesting things discussed in the Time article is that neuroscientists
have established the specific area of the brain responsible for context switching.
And unfortunately for some of us, it appears that this part of the brain performs
less well as our brain ages. In a nutshell, the older we get, the less quickly and
effectively we can multitask. But... most parents of teenagers already know that we
have no frickin' idea how our kids manage to do what they do simultaneously. The key
issue, though, is that while we now know they're better at it than we (the parents)
are, they aren't half as good at it as they think they are.
&lt;/p&gt;
&lt;p&gt;
And chances are, you aren't as good at it as you think you are.
&lt;/p&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p&gt;
The next time you fire a build and you feel this yearning temptation to read a blog
post or reply to an email, ask yourself if you can handle the task-switch and come
back to the build elegantly and completely when it's complete? If not, maybe you're
just better off sitting there, admiring the build getting fired and slowing down a
bit as you think about the next few lines of code you are going to write. After all
you'll hardly get anywhere with just random multitasked speed. 
&lt;/p&gt;
&lt;p&gt;
If you're leading a team, if there is one lesson you can take back from this post, &lt;a href="http://www.joelonsoftware.com/articles/fog0000000022.html" target="_blank"&gt;Joel
describes it rather articulately&lt;/a&gt;: 
&lt;/p&gt;
&lt;p&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="PostText" align="middle"&gt;
&lt;div class="QuoteText"&gt;
&lt;p class="QuotePara"&gt;
&lt;p&gt;
As it turns out, if you give somebody two things to work on, you should be grateful
if they "starve" one task and only work on one, because they're going to get more
stuff done and finish the average task sooner. In fact, the real lesson from all this
is that you should never let people work on more than one thing at once. Make sure
they know what it is. Good managers see their responsibility as removing obstacles
so that people can focus on one thing and really get it done. When emergencies come
up, think about whether you can handle it yourself before you delegate it to a programmer
who is deeply submersed in a project.
&lt;/p&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p&gt;
Are you still expecting your team members to multitask before you promote them? Are
you only promoting your team members based on their multitasking abilities? Here's
my advice to you: Don't use multitasking abilities as a measure for promotion.
&lt;/p&gt;
&lt;p&gt;
Are you knitting your brows and telling yourself what a moron I am because you think
that as you climb up the corporate ladder you have to multitask? Well, Multitasking
is a real need in my job profile as well. I tend to give a very strong perception
of multitasking when I work on multiple projects at once; but that's exactly what
it is - a perception. Behind the curtains; I try my best not to multitask as long
as possible. 
&lt;/p&gt;
&lt;p&gt;
A colleague recently told me that he was planning on picking up Ruby on Rails in the
next three months while he also worked on something learning something else during
those three months. My immediate response and suggestion to him had been that he should
buy a Ruby On Rails book, stop learning the other thing that he was planning on learning
and just focus on Ruby On Rails and finish it off in the next one and half month instead
of three. Then he should consider moving to something else. 
&lt;/p&gt;
&lt;p&gt;
This is but, one simple example of avoiding the perils on multitasking. All situations
in your life may not be as simple as this and I clearly don't have all the answers,
but the biggest favor that you can do yourself is by starting to realize that human
task switching is expensive and that multitasking in a real problem in our lives.
Once you realize that, work consciously towards finding ways and means to avoid multitasking
every time you can see an opportunity to avoid it. 
&lt;/p&gt;
&lt;p&gt;
Bottom line; whenever you have an option to avoid multitasking, avoid it. 
&lt;/p&gt;
&lt;p&gt;
The trick is to blind out everything else when you start with a task at hand and not
look at anything other than the task as had till the task comes to a logical end where
it's safe to switch to something else without having to keep too much about your first
task in your head. Till you reach that point, don't open your outlook; close your
browsers and if that stupid phone is ringing continuously switch it off too. Once
you reach a logical end where you know it's ok to switch to another task, then by
all means do; but random aimless multitasking in attempt to do too much in too little
time gets you nowhere. Absolutely nowhere.
&lt;/p&gt;
&lt;p&gt;
The Perils of multitasking are huge; both in software development and life in general.
Multitasking is truly impacting and preventing us from being successful and happy;
but you don't have to take my word for it; see &lt;a href="http://www.scottberkun.com/" target="_blank"&gt;&lt;a title="http://www.scottberkun.com/" href="http://www.scottberkun.com/"&gt;Scott
Berkun&lt;/a&gt;&lt;/a&gt; talk about &lt;a href="http://blip.tv/file/199623/" target="_blank"&gt;attention
and sex&lt;/a&gt; to help you decide for yourself. 
&lt;/p&gt;</description>
      <comments>http://www.thousandtyone.com/blog/CommentView,guid,bd5fa405-7af1-4627-92cf-f04532ae09af.aspx</comments>
      <category>Personal Thoughts on Software Development</category>
    </item>
    <item>
      <trackback:ping>http://www.thousandtyone.com/blog/Trackback.aspx?guid=91d56220-32f9-4113-8549-d47807a437c0</trackback:ping>
      <pingback:server>http://www.thousandtyone.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.thousandtyone.com/blog/PermaLink,guid,91d56220-32f9-4113-8549-d47807a437c0.aspx</pingback:target>
      <dc:creator>Rajiv Popat</dc:creator>
      <wfw:comment>http://www.thousandtyone.com/blog/CommentView,guid,91d56220-32f9-4113-8549-d47807a437c0.aspx</wfw:comment>
      <wfw:commentRss>http://www.thousandtyone.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=91d56220-32f9-4113-8549-d47807a437c0</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
During my school life, I quit my karate lessons within a couple of years or learning
and practice. Today if I got into an award confrontation requiring self defense here's
how I would defend myself: I would run, as fast as I could. I would run so freaking
fast that I wouldn't even look behind. That's how much karate I remember.
</p>
        <p>
On the serious side of life, my reasons for my early interest in martial arts, besides
being physical, were also philosophical. Martial Arts, in all it's forms has ideas
and concepts which can be borrowed and used for life and software development. This
post is about one such concept and if you are a programmer, this post is also about
asking a very important question: are you a code samurai?
</p>
        <p>
Martial Art gurus believe that a perfect weapon is one which becomes a seamless extension
of the warrior's body and brings him greater reach, humility and grace. On the same
line of thought, a perfect warrior is one who can blend himself with the perfect weapon.
In other words, in the world of martial arts it is believed that to become a great
at a warrior you must pick the great weapon and then reach a stage where the <a href="http://www.youtube.com/watch?v=QQRFuBeRAi4" target="_blank">warrior
and the weapon become one</a>. 
</p>
        <p align="center">
          <img src="http://www.thousandtyone.com/blog/content/binary/GirlWithHerKatanaSword.gif" />
        </p>
        <p>
I've often announced that software developers need to turn themselves into <a href="www.thousandtyone.com/blog/AreYouAOneManArmy.aspx " target="_blank">warriors
and one man armies</a>. If you look at it, your machine is your only weapon against <a href="http://www.thousandtyone.com/blog/TheWarTheAngelTheDevilAndTheProgrammer.aspx" target="_blank">the
countless enemies of software development</a>. Yet, I rarely find programmers who
are one with their machines. A huge number of programmers on the other hand, are hunting
and pecking for keys on their keyboards as they type and fumbling with the mouse as
they hunt for points on the screen to click.
</p>
        <p>
I've always said that hitting the window key and typing iexplore is fast. It's <a href="http://www.thousandtyone.com/blog/AboutMe.aspx" target="_blank">faster
than reaching out for the mouse</a> and clicking that Internet explorer icon but <a href="http://www.codinghorror.com/blog/archives/001088.html" target="_blank">Jeff
Atwood provides a much more compelling example</a>: 
</p>
        <p>
          <table>
            <tbody>
              <tr>
                <td class="PostText" align="middle">
                  <div class="QuoteText">
                    <p class="QuotePara">
                    </p>
                    <p>
Let's assume that we're typing some text into a document of some kind, and we wish
to save the document we're working on. (I could argue that the user should never have
to explicitly save anything, but humor me.) If it seems ridiculous that the mouse
method: 
</p>
                    <ol>
                      <li>
Take your right hand off the keyboard 
</li>
                      <li>
Place your right hand on the mouse 
</li>
                      <li>
Mouse over to the File menu 
</li>
                      <li>
Click File 
</li>
             