<?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>Pragmatic Design And Coding By Manish Singh - Thoughts</title>
    <link>http://manishsingh.net/blogs/</link>
    <description>Blog !</description>
    <language>en-us</language>
    <copyright>Manish Kumar Singh</copyright>
    <lastBuildDate>Sun, 29 Mar 2009 09:26:22 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.0.7226.0</generator>
    <managingEditor>msingh.www@gmail.com</managingEditor>
    <webMaster>msingh.www@gmail.com</webMaster>
    <item>
      <trackback:ping>http://manishsingh.net/blogs/Trackback.aspx?guid=40b0bd7e-a7f3-4fe8-b8f7-99c698b5c408</trackback:ping>
      <pingback:server>http://manishsingh.net/blogs/pingback.aspx</pingback:server>
      <pingback:target>http://manishsingh.net/blogs/PermaLink,guid,40b0bd7e-a7f3-4fe8-b8f7-99c698b5c408.aspx</pingback:target>
      <dc:creator>Manish Kumar Singh</dc:creator>
      <wfw:comment>http://manishsingh.net/blogs/CommentView,guid,40b0bd7e-a7f3-4fe8-b8f7-99c698b5c408.aspx</wfw:comment>
      <wfw:commentRss>http://manishsingh.net/blogs/SyndicationService.asmx/GetEntryCommentsRss?guid=40b0bd7e-a7f3-4fe8-b8f7-99c698b5c408</wfw:commentRss>
      <slash:comments>6</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <h3>Introduction 
</h3>
        <p>
          <img style="MARGIN-TOP: 0px; FLOAT: left; MARGIN-BOTTOM: 0px; MARGIN-RIGHT: 10px" height="129" alt="Microsoft Surface Touch Table" src="http://www.manishsingh.net/blogs/shared/surface/touchtable.jpg" width="163" />I
was hearing about <a href="http://www.microsoft.com/surface/Default.aspx">Microsoft
Surface</a> far last few months, but did not get much information. Recently, I saw
a post "<a href="http://channel9.msdn.com/pdc2008/PC17/">PDC 2008</a>" by Robert Levy
and Brad Carpenter having a video session demonstrating the capabilities of Microsoft
Session. The demonstrate the unique attributes of <a href="http://en.wikipedia.org/wiki/Microsoft_Surface">Microsoft
Surface computing</a>, with a dive into vision-based object recognition and core controls
like ScatterView, and how the Surface SDK aligns with the multi-touch developer roadmap
for <a href="http://www.microsoft.com/windows/windows-7/">Windows 7</a> and <a href="http://en.wikipedia.org/wiki/Windows_Presentation_Foundation">WPF</a>.
The software giant has built a new touch screen computer — a coffee table that will
change the world. Forget the keyboard and mouse, the next generation of computer interfaces
will be <a href="http://en.wikipedia.org/wiki/Natural_User_Interface">NUI</a> (Natural
User Interface) which uses natural motions, hand gesture and real world physical objects.
The surface is capable of object recognition, object/finger orientation recognition
and tracking, and is multi-touch and is multi-user. Users can interact with the machine
by touching or dragging their fingertips and objects such as paintbrushes across the
screen, or by placing and moving placed objects. This paradigm of interaction with
computers is known as a natural user interface (<a href="http://en.wikipedia.org/wiki/Natural_User_Interface">NUI</a>).
Surface has been optimized to respond to 52 touches at a time. 
</p>
        <p>
          <a href="http://www.microsoft.com/surface/Default.aspx">Microsoft Surface</a> applications
can be written in Windows Presentation Foundation (<a href="http://en.wikipedia.org/wiki/Windows_Presentation_Foundation">WPF</a>)
and .Net language like C# or VB.Net. It is nicely integrated with Visual Studio 2008
following the same pattern of programming paradigms the .Net developers are used to.
However it has custom WPF controls to allow programming for the unique interface of
Surface. Developers already proficient in <a href="http://en.wikipedia.org/wiki/Windows_Presentation_Foundation">WPF</a> can
utilize the SDK to write Surface apps. 
</p>
        <table cellspacing="0" cellpadding="0" width="70%" align="center" border="0">
          <tbody>
            <tr>
              <td valign="top" align="middle">
                <img height="134" alt="Object Recognition" src="http://www.manishsingh.net/blogs/shared/surface/surface1.jpg" width="200" />
              </td>
              <td valign="top" align="middle">
                <img height="152" alt="Multi User Application" src="http://www.manishsingh.net/blogs/shared/surface/360deg.jpg" width="200" />
              </td>
            </tr>
          </tbody>
        </table>
        <h4>Microsoft Surface SDK 1.0 
</h4>
        <p>
Right now, <a href="http://www.microsoft.com/surface/Default.aspx">Microsoft Surface</a> SDK
is not available for public. It has been distributed only to some of the <a href="http://www.microsoft.com/SURFACE/Find-a-Partner.aspx">Microsoft
partners</a>. I am eagerly waiting to get my hands on the SDK once it is launched.
Since, I have already worked with <a href="http://www.microsoft.com/SILVERLIGHT/">SilverLight</a> and <a href="http://en.wikipedia.org/wiki/Windows_Presentation_Foundation">WPF</a>,
I think, it would be quite easy to pick <a href="http://www.microsoft.com/surface/Default.aspx">Microsoft
Surface</a>. This is true for every developer worked on <a href="http://en.wikipedia.org/wiki/Windows_Presentation_Foundation">WPF</a> and
used <a href="http://en.wikipedia.org/wiki/Extensible_Application_Markup_Language">XAML</a>.
However, there is a small catch ... Working for surface would require more creativity
and unlearning the GUI which we are used to. The new interface requires us to think
about the UI from entirely a new perspective ... a 360 degree multi-touch perspective. 
</p>
        <p>
I am sure the developers deep in love with .NET programming and having high respect
for Microsoft Technologies, would be very excited after seeing the video session of <a href="http://channel9.msdn.com/pdc2008/PC17/">PDC
2008</a>. The features demonstrated, and the ease of programming together with seamless
process of learning would make you sit up staright on your seat, open <a href="http://www.google.com">Google</a> to
find out whether you can get hold of <a href="http://www.microsoft.com/surface/Default.aspx">Microsoft
Surface</a> SDK. Hmm! As you might be thinking after watching the video, whether you
need the touch screen device which costs $10K-15K, to practice <a href="http://www.microsoft.com/surface/Default.aspx">Microsoft
Surface</a>? The answer is No! Microsoft has a simulator for Surface which would allow
you to deploy and play around with your surface code. Unfortunately, that too is not
available to public right now. So you might have to wait a little more, until of course
you are working for the company included in the Microsoft's <a href="http://www.microsoft.com/SURFACE/Find-a-Partner.aspx">Partner
list</a>, currently allowed to download and use <a href="http://www.microsoft.com/surface/Default.aspx">Microsoft
Surface</a> SDK and Simulator. 
</p>
        <h4>It Is Not Just Another Glorified And Hyped Touch Screen Computer 
</h4>
        <p>
Many had a wrong impression about <a href="http://www.microsoft.com/surface/Default.aspx">Microsoft
Surface</a> thinking it to be another glorified and hyped touch screen computer. The
touch screen computers enable users to do away with keyboard and mouse. They can navigate
the menu by touching various options to reach a logical end of viewing data or printing.
And there ends the comparison. <a href="http://www.microsoft.com/surface/Default.aspx">Microsoft
Surface</a> device also known as Microsoft Tabletop can do many more things, which
you might think are not possible! 
</p>
        <p>
The three main components that differentiates it from a regular Touch-Screen device,
Direct interaction, Multi-Touch Contact and Object Recognition. 
</p>
        <table cellspacing="0" cellpadding="0" width="50%" align="center" border="0">
          <tbody>
            <tr>
              <td valign="top" align="middle" width="15%">
 </td>
              <td valign="top" align="middle">
                <img height="134" alt="Object Recognition" src="http://www.manishsingh.net/blogs/shared/surface/objectreg.jpg" width="200" />
              </td>
            </tr>
          </tbody>
        </table>
        <ul>
          <li>
            <b>Multi-touch contact:</b> User need not use only one finger to manage digital data.
If user dips five fingers in five different colors in the on screen paint palette
and draws five lines with five fingers, you get five lines with five colors . . . 
</li>
          <li>
            <b>Direct interaction:</b> Facility to manage digital information with hand gestures
and touch instead on mouse and keyboard. 
</li>
          <li>
            <b>Object Recognition:</b> This technology allows non-digital objects to be used as
input devices. This means that the input source does not necessarily have to be digital
in form. 
</li>
        </ul>
        <h4>This Is The Future 
</h4>
        <p>
Companies are putting in millions of dollar in research for <a href="http://en.wikipedia.org/wiki/Natural_User_Interface">NUI</a>.
There is a nice video "<a href="http://www.ted.com/index.php/talks/pattie_maes_demos_the_sixth_sense.html">TED:
Sixth Sense</a>" from Pattie Maes' lab at MIT, spearheaded by Pranav Mistry. It's
a wearable device with a projector that paves the way for profound interaction with
our environment. It demonstrates a device which responds to natural gestures of hand
which is read by a camera. The UI is developed and projected using a small projector
fitted in the same device. If you guys have seen movies like "Minority Report", see
these technologies nearing to the imaginations. 
</p>
        <p>
The <a href="http://en.wikipedia.org/wiki/Natural_User_Interface">NUI</a> immensely
increases interaction with digital contents in a more simplified manner. One does
not need to practice with mouse. It won't be a single user interface anymore. Two
users can open two different menus at the same time .... (Right now your application
would open one menu at a time). A 360 degree interaction, with each person using the
same application independently. Surely, we need to think and see the UI very differently
now and you are bound only by your imaginations. 
</p>
        <p>
So friend's start unlearning the GUI you are accustomed to, and buckle your seat
belts for the next gen -- <a href="http://en.wikipedia.org/wiki/Natural_User_Interface">NUI</a>. 
</p>
        <p>
Manish
</p>
        <img width="0" height="0" src="http://manishsingh.net/blogs/aggbug.ashx?id=40b0bd7e-a7f3-4fe8-b8f7-99c698b5c408" />
        <br />
        <hr />
Manish Kumar Singh</body>
      <title>Microsoft Surface ... CLI to GUI and Now NUI (Natural User Interface)</title>
      <guid isPermaLink="false">http://manishsingh.net/blogs/PermaLink,guid,40b0bd7e-a7f3-4fe8-b8f7-99c698b5c408.aspx</guid>
      <link>http://manishsingh.net/blogs/2009/03/29/MicrosoftSurfaceCLIToGUIAndNowNUINaturalUserInterface.aspx</link>
      <pubDate>Sun, 29 Mar 2009 09:26:22 GMT</pubDate>
      <description>&lt;h3&gt;Introduction 
&lt;/h3&gt;
&lt;p&gt;
&lt;img style="MARGIN-TOP: 0px; FLOAT: left; MARGIN-BOTTOM: 0px; MARGIN-RIGHT: 10px" height=129 alt="Microsoft Surface Touch Table" src="http://www.manishsingh.net/blogs/shared/surface/touchtable.jpg" width=163&gt;I
was hearing about &lt;a href="http://www.microsoft.com/surface/Default.aspx"&gt;Microsoft
Surface&lt;/a&gt; far last few months, but did not get much information. Recently, I saw
a post "&lt;a href="http://channel9.msdn.com/pdc2008/PC17/"&gt;PDC 2008&lt;/a&gt;" by Robert Levy
and Brad Carpenter having a video session demonstrating the capabilities of Microsoft
Session. The demonstrate the unique attributes of &lt;a href="http://en.wikipedia.org/wiki/Microsoft_Surface"&gt;Microsoft
Surface computing&lt;/a&gt;, with a dive into vision-based object recognition and core controls
like ScatterView, and how the Surface SDK aligns with the multi-touch developer roadmap
for &lt;a href="http://www.microsoft.com/windows/windows-7/"&gt;Windows 7&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Windows_Presentation_Foundation"&gt;WPF&lt;/a&gt;.
The software giant has built a new touch screen computer — a coffee table that will
change the world. Forget the keyboard and mouse, the next generation of computer interfaces
will be &lt;a href="http://en.wikipedia.org/wiki/Natural_User_Interface"&gt;NUI&lt;/a&gt; (Natural
User Interface) which uses natural motions, hand gesture and real world physical objects.
The surface is capable of object recognition, object/finger orientation recognition
and tracking, and is multi-touch and is multi-user. Users can interact with the machine
by touching or dragging their fingertips and objects such as paintbrushes across the
screen, or by placing and moving placed objects. This paradigm of interaction with
computers is known as a natural user interface (&lt;a href="http://en.wikipedia.org/wiki/Natural_User_Interface"&gt;NUI&lt;/a&gt;).
Surface has been optimized to respond to 52 touches at a time. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.microsoft.com/surface/Default.aspx"&gt;Microsoft Surface&lt;/a&gt; applications
can be written in Windows Presentation Foundation (&lt;a href="http://en.wikipedia.org/wiki/Windows_Presentation_Foundation"&gt;WPF&lt;/a&gt;)
and .Net language like C# or VB.Net. It is nicely integrated with Visual Studio 2008
following the same pattern of programming paradigms the .Net developers are used to.
However it has custom WPF controls to allow programming for the unique interface of
Surface. Developers already proficient in &lt;a href="http://en.wikipedia.org/wiki/Windows_Presentation_Foundation"&gt;WPF&lt;/a&gt; can
utilize the SDK to write Surface apps. 
&lt;/p&gt;
&lt;table cellspacing=0 cellpadding=0 width="70%" align=center border=0&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=top align=middle&gt;
&lt;img height=134 alt="Object Recognition" src="http://www.manishsingh.net/blogs/shared/surface/surface1.jpg" width=200&gt; 
&lt;/td&gt;
&lt;td valign=top align=middle&gt;
&lt;img height=152 alt="Multi User Application" src="http://www.manishsingh.net/blogs/shared/surface/360deg.jpg" width=200&gt; 
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4&gt;Microsoft Surface SDK 1.0 
&lt;/h4&gt;
&lt;p&gt;
Right now, &lt;a href="http://www.microsoft.com/surface/Default.aspx"&gt;Microsoft Surface&lt;/a&gt; SDK
is not available for public. It has been distributed only to some of the &lt;a href="http://www.microsoft.com/SURFACE/Find-a-Partner.aspx"&gt;Microsoft
partners&lt;/a&gt;. I am eagerly waiting to get my hands on the SDK once it is launched.
Since, I have already worked with &lt;a href="http://www.microsoft.com/SILVERLIGHT/"&gt;SilverLight&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Windows_Presentation_Foundation"&gt;WPF&lt;/a&gt;,
I think, it would be quite easy to pick &lt;a href="http://www.microsoft.com/surface/Default.aspx"&gt;Microsoft
Surface&lt;/a&gt;. This is true for every developer worked on &lt;a href="http://en.wikipedia.org/wiki/Windows_Presentation_Foundation"&gt;WPF&lt;/a&gt; and
used &lt;a href="http://en.wikipedia.org/wiki/Extensible_Application_Markup_Language"&gt;XAML&lt;/a&gt;.
However, there is a small catch ... Working for surface would require more creativity
and unlearning the GUI which we are used to. The new interface requires us to think
about the UI from entirely a new perspective ... a 360 degree multi-touch perspective. 
&lt;/p&gt;
&lt;p&gt;
I am sure the developers deep in love with .NET programming and having high respect
for Microsoft Technologies, would be very excited after seeing the video session of &lt;a href="http://channel9.msdn.com/pdc2008/PC17/"&gt;PDC
2008&lt;/a&gt;. The features demonstrated, and the ease of programming together with seamless
process of learning would make you sit up staright on your seat, open &lt;a href="http://www.google.com"&gt;Google&lt;/a&gt; to
find out whether you can get hold of &lt;a href="http://www.microsoft.com/surface/Default.aspx"&gt;Microsoft
Surface&lt;/a&gt; SDK. Hmm! As you might be thinking after watching the video, whether you
need the touch screen device which costs $10K-15K, to practice &lt;a href="http://www.microsoft.com/surface/Default.aspx"&gt;Microsoft
Surface&lt;/a&gt;? The answer is No! Microsoft has a simulator for Surface which would allow
you to deploy and play around with your surface code. Unfortunately, that too is not
available to public right now. So you might have to wait a little more, until of course
you are working for the company included in the Microsoft's&amp;nbsp;&lt;a href="http://www.microsoft.com/SURFACE/Find-a-Partner.aspx"&gt;Partner
list&lt;/a&gt;, currently allowed to download and use &lt;a href="http://www.microsoft.com/surface/Default.aspx"&gt;Microsoft
Surface&lt;/a&gt; SDK and Simulator. 
&lt;/p&gt;
&lt;h4&gt;It Is Not Just Another Glorified And Hyped Touch Screen Computer 
&lt;/h4&gt;
&lt;p&gt;
Many had a wrong impression about &lt;a href="http://www.microsoft.com/surface/Default.aspx"&gt;Microsoft
Surface&lt;/a&gt; thinking it to be another glorified and hyped touch screen computer. The
touch screen computers enable users to do away with keyboard and mouse. They can navigate
the menu by touching various options to reach a logical end of viewing data or printing.
And there ends the comparison. &lt;a href="http://www.microsoft.com/surface/Default.aspx"&gt;Microsoft
Surface&lt;/a&gt; device also known as Microsoft Tabletop can do many more things, which
you might think are not possible! 
&lt;/p&gt;
&lt;p&gt;
The three main components that differentiates it from a regular Touch-Screen device,
Direct interaction, Multi-Touch Contact and Object Recognition. 
&lt;/p&gt;
&lt;table cellspacing=0 cellpadding=0 width="50%" align=center border=0&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=top align=middle width="15%"&gt;
&amp;nbsp;&lt;/td&gt;
&lt;td valign=top align=middle&gt;
&lt;img height=134 alt="Object Recognition" src="http://www.manishsingh.net/blogs/shared/surface/objectreg.jpg" width=200&gt; 
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;b&gt;Multi-touch contact:&lt;/b&gt; User need not use only one finger to manage digital data.
If user dips five fingers in five different colors in the on screen paint palette
and draws five lines with five fingers, you get five lines with five colors . . . 
&lt;li&gt;
&lt;b&gt;Direct interaction:&lt;/b&gt; Facility to manage digital information with hand gestures
and touch instead on mouse and keyboard. 
&lt;li&gt;
&lt;b&gt;Object Recognition:&lt;/b&gt; This technology allows non-digital objects to be used as
input devices. This means that the input source does not necessarily have to be digital
in form. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;This Is The Future 
&lt;/h4&gt;
&lt;p&gt;
Companies are putting in millions of dollar in research for &lt;a href="http://en.wikipedia.org/wiki/Natural_User_Interface"&gt;NUI&lt;/a&gt;.
There is a nice video "&lt;a href="http://www.ted.com/index.php/talks/pattie_maes_demos_the_sixth_sense.html"&gt;TED:
Sixth Sense&lt;/a&gt;" from Pattie Maes' lab at MIT, spearheaded by Pranav Mistry. It's
a wearable device with a projector that paves the way for profound interaction with
our environment. It demonstrates a device which responds to natural gestures of hand
which is read by a camera. The UI is developed and projected using a small projector
fitted in the same device. If you guys have seen movies like "Minority Report", see
these technologies nearing to the imaginations. 
&lt;/p&gt;
&lt;p&gt;
The &lt;a href="http://en.wikipedia.org/wiki/Natural_User_Interface"&gt;NUI&lt;/a&gt; immensely
increases interaction with digital contents in a more simplified manner. One does
not need to practice with mouse. It won't be a single user interface anymore. Two
users can open two different menus at the same time .... (Right now your application
would open one menu at a time). A 360 degree interaction, with each person using the
same application independently. Surely, we need to think and see the UI very differently
now and you are bound only by your imaginations. 
&lt;/p&gt;
&lt;p&gt;
So friend's start unlearning the GUI you are accustomed&amp;nbsp;to, and buckle your seat
belts for the next gen --&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Natural_User_Interface"&gt;NUI&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
Manish
&lt;/p&gt;
&lt;img width="0" height="0" src="http://manishsingh.net/blogs/aggbug.ashx?id=40b0bd7e-a7f3-4fe8-b8f7-99c698b5c408" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Manish Kumar Singh</description>
      <comments>http://manishsingh.net/blogs/CommentView,guid,40b0bd7e-a7f3-4fe8-b8f7-99c698b5c408.aspx</comments>
      <category>.Net</category>
      <category>Thoughts</category>
    </item>
    <item>
      <trackback:ping>http://manishsingh.net/blogs/Trackback.aspx?guid=8eac131d-2ead-413d-8d71-6929ebad5436</trackback:ping>
      <pingback:server>http://manishsingh.net/blogs/pingback.aspx</pingback:server>
      <pingback:target>http://manishsingh.net/blogs/PermaLink,guid,8eac131d-2ead-413d-8d71-6929ebad5436.aspx</pingback:target>
      <dc:creator>Manish Kumar Singh</dc:creator>
      <wfw:comment>http://manishsingh.net/blogs/CommentView,guid,8eac131d-2ead-413d-8d71-6929ebad5436.aspx</wfw:comment>
      <wfw:commentRss>http://manishsingh.net/blogs/SyndicationService.asmx/GetEntryCommentsRss?guid=8eac131d-2ead-413d-8d71-6929ebad5436</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I have seen many programmers and senior programmers showing their prowess in implementing
and justifying a design pattern implementation. Before doing so one should ask a very
simple and honest question to self, “Do I fully understand it?” I am sure many of
you, would say off course, what’s the big deal. Now look at your decision once more
by answering the following questions:
</p>
        <ol>
          <li>
Does your team, working with you also understand the pattern correctly? Are they comfortable
with its implementation?</li>
          <li>
Would you be there till the project reaches its logical end or do you have at least
one successor who would be there and understands the pattern correctly?</li>
          <li>
Does it require other members to follow a set of rules while coding?</li>
          <li>
Do you understand “What it solves” OR “How it solves”?</li>
          <li>
Are you thinking about scalability or maintainability?</li>
        </ol>
        <p>
          <strong>Thoughts on Question 1</strong>
        </p>
        <p>
Most of the serious projects require a team of developers working together on different
modules. If they do not understand the pattern, it is more likely, that you would
encounter chaotic and unorganized codes. The common evils are repetition of codes
which explains the lack of understanding the design pattern, code tweaking to override
design pattern, hard coded lines, code spaghetti and more. Wow these codes could kill.
</p>
        <p>
          <strong>Thoughts on Question 2</strong>
        </p>
        <p>
Something that remains constant in software development is “Change”. It is inevitable
and the requirement itself keeps changing. No doubt the design patterns are there
to help, but when it requires any change, who’s going to do it? In case it falls in
a wrong hand, it would shit all over your effort and logic.
</p>
        <p>
          <strong>Thoughts on Question 3</strong>
        </p>
        <p>
If your answer to this question is YES, then you must ensure you understand question
one, and keep a constant vigil or do a knowledge sharing for your team to bring them
on the same page, else the errors and problem can pretty quickly escalate making your
module a piece of shit. If your answer is NO, then you need to worry about question
two only.
</p>
        <p>
          <strong>Thoughts on Question 4</strong>
        </p>
        <p>
A big question! It is really easy to say what it solves, but knowing how it solves
is entirely a different ball game. You need to think on what is the price you need
to pay for implementing it, what are the other alternatives, is there a mix and match
of patterns to suit your need, does it increases the complexity of the module or simplifies
it, what is the cost of maintaining it, how frequently it is expected to change, what
are the impact points etc. etc. I am sure it would make you crazy, at first it seemed
to me as a simple question but later wow!
</p>
        <p>
          <strong>Thoughts on Question 5</strong>
        </p>
        <p>
You must read what other people think about scalablability. <a title="Damien Katz" href="http://damienkatz.net/2006/05/signs_youre_a_c.html" target="_blank"><span class="linkx">Damien
Katz</span></a>, in his post, writes about crappy programmers, boasting about concepts
like enterprise, scalability and patterns without actually understanding it. Another
hilarious and a bit “PG” post by <a title="Ted Dziuba" href="http://teddziuba.com/2008/04/im-going-to-scale-my-foot-up-y.html" target="_blank"><span class="linkx">Ted
Dziuba</span></a>, where he is really pissed off and frustrated with people talking
about scalability without having a good knowledge of it. In sync, there is another
post by <a title="Rajiv Popat" href="http://www.thousandtyone.com/blog/StopWhiningAboutScalabilityBestPracticesAndEnterpriseApplicationDevelopment.aspx" target="_blank"><span class="linkx">Rajiv
Popat</span></a> where he talks about the best practices and people who seriously
talk about such concepts but are not able to answer the simplest questions he asked. 
</p>
        <p>
Design patterns are not meant for scalability. It is about extension and maintenance.
It should reduce the impact of change, help in decoupling the elements of module interacting
with each other, reduce maintenance cost, provide extra room for extension.<br /></p>
        <img width="0" height="0" src="http://manishsingh.net/blogs/aggbug.ashx?id=8eac131d-2ead-413d-8d71-6929ebad5436" />
        <br />
        <hr />
Manish Kumar Singh</body>
      <title>Do not implement Design Patterns - if you do not understand it</title>
      <guid isPermaLink="false">http://manishsingh.net/blogs/PermaLink,guid,8eac131d-2ead-413d-8d71-6929ebad5436.aspx</guid>
      <link>http://manishsingh.net/blogs/2009/01/13/DoNotImplementDesignPatternsIfYouDoNotUnderstandIt.aspx</link>
      <pubDate>Tue, 13 Jan 2009 05:17:12 GMT</pubDate>
      <description>&lt;p&gt;
I have seen many programmers and senior programmers showing their prowess in implementing
and justifying a design pattern implementation. Before doing so one should ask a very
simple and honest question to self, “Do I fully understand it?” I am sure many of
you, would say off course, what’s the big deal. Now look at your decision once more
by answering the following questions:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Does your team, working with you also understand the pattern correctly? Are they comfortable
with its implementation?&lt;/li&gt;
&lt;li&gt;
Would you be there till the project reaches its logical end or do you have at least
one successor who would be there and understands the pattern correctly?&lt;/li&gt;
&lt;li&gt;
Does it require other members to follow a set of rules while coding?&lt;/li&gt;
&lt;li&gt;
Do you understand “What it solves” OR “How it solves”?&lt;/li&gt;
&lt;li&gt;
Are you thinking about scalability or maintainability?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
&lt;strong&gt;Thoughts on Question 1&lt;/strong&gt; 
&lt;/p&gt;
&lt;p&gt;
Most of the serious projects require a team of developers working together on different
modules. If they do not understand the pattern, it is more likely, that you would
encounter chaotic and unorganized codes. The common evils are repetition of codes
which explains the lack of understanding the design pattern, code tweaking to override
design pattern, hard coded lines, code spaghetti and more. Wow these codes could kill.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Thoughts on Question 2&lt;/strong&gt; 
&lt;/p&gt;
&lt;p&gt;
Something that remains constant in software development is “Change”. It is inevitable
and the requirement itself keeps changing. No doubt the design patterns are there
to help, but when it requires any change, who’s going to do it? In case it falls in
a wrong hand, it would shit all over your effort and logic.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Thoughts on Question 3&lt;/strong&gt; 
&lt;/p&gt;
&lt;p&gt;
If your answer to this question is YES, then you must ensure you understand question
one, and keep a constant vigil or do a knowledge sharing for your team to bring them
on the same page, else the errors and problem can pretty quickly escalate making your
module a piece of shit. If your answer is NO, then you need to worry about question
two only.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Thoughts on Question 4&lt;/strong&gt; 
&lt;/p&gt;
&lt;p&gt;
A big question! It is really easy to say what it solves, but knowing how it solves
is entirely a different ball game. You need to think on what is the price you need
to pay for implementing it, what are the other alternatives, is there a mix and match
of patterns to suit your need, does it increases the complexity of the module or simplifies
it, what is the cost of maintaining it, how frequently it is expected to change, what
are the impact points etc. etc. I am sure it would make you crazy, at first it seemed
to me as a simple question but later wow!
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Thoughts on Question 5&lt;/strong&gt; 
&lt;/p&gt;
&lt;p&gt;
You must read what other people think about scalablability. &lt;a title="Damien Katz" href="http://damienkatz.net/2006/05/signs_youre_a_c.html" target="_blank"&gt;&lt;span class="linkx"&gt;Damien
Katz&lt;/span&gt;&lt;/a&gt;, in his post, writes about crappy programmers, boasting about concepts
like enterprise, scalability and patterns without actually understanding it. Another
hilarious and a bit “PG” post by &lt;a title="Ted Dziuba" href="http://teddziuba.com/2008/04/im-going-to-scale-my-foot-up-y.html" target="_blank"&gt;&lt;span class="linkx"&gt;Ted
Dziuba&lt;/span&gt;&lt;/a&gt;, where he is really pissed off and frustrated with people talking
about scalability without having a good knowledge of it. In sync, there is another
post by &lt;a title="Rajiv Popat" href="http://www.thousandtyone.com/blog/StopWhiningAboutScalabilityBestPracticesAndEnterpriseApplicationDevelopment.aspx" target="_blank"&gt;&lt;span class="linkx"&gt;Rajiv
Popat&lt;/span&gt;&lt;/a&gt; where he talks about the best practices and people who seriously
talk about such concepts but are not able to answer the simplest questions he asked. 
&lt;/p&gt;
&lt;p&gt;
Design patterns are not meant for scalability. It is about extension and maintenance.
It should reduce the impact of change, help in decoupling the elements of module interacting
with each other, reduce maintenance cost, provide extra room for extension.&lt;br&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://manishsingh.net/blogs/aggbug.ashx?id=8eac131d-2ead-413d-8d71-6929ebad5436" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Manish Kumar Singh</description>
      <comments>http://manishsingh.net/blogs/CommentView,guid,8eac131d-2ead-413d-8d71-6929ebad5436.aspx</comments>
      <category>Thoughts</category>
    </item>
  </channel>
</rss>