<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-16995374</id><updated>2011-04-22T12:52:03.572+08:00</updated><title type='text'>TM Blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://tatminghk.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16995374/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://tatminghk.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>tatminghk</name><uri>http://www.blogger.com/profile/03175507001500557746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>9</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-16995374.post-114528332912258386</id><published>2006-04-17T22:11:00.000+08:00</published><updated>2006-04-17T22:15:29.156+08:00</updated><title type='text'></title><content type='html'>&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style="color:#990000;"&gt;Software Design Patterns: How much do you understand?&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;Most i understand: Adapter Pattern, Bridge Pattern.&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Adapter Pattern: Convert the interface of a class into another interface clients expect.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Bridge Pattern: It's to decouple interface from implementation; more beyond encapsulation to insulation.simply mean provide multiple implementation under the same interface.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="color:#990000;"&gt;Benefits of using design patterns?&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Main benefits is more efficient. It is because you can use the this Pattern(Solution) a million times over, without ever doing it the same twice.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Another one is design patterns can solve protecting a caller from changes associated with specific platforms.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16995374-114528332912258386?l=tatminghk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tatminghk.blogspot.com/feeds/114528332912258386/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16995374&amp;postID=114528332912258386&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16995374/posts/default/114528332912258386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16995374/posts/default/114528332912258386'/><link rel='alternate' type='text/html' href='http://tatminghk.blogspot.com/2006/04/software-design-patterns-how-much-do.html' title=''/><author><name>tatminghk</name><uri>http://www.blogger.com/profile/03175507001500557746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16995374.post-114243341736050264</id><published>2006-03-15T22:30:00.000+08:00</published><updated>2006-03-15T22:36:57.363+08:00</updated><title type='text'></title><content type='html'>&lt;span style="color:#993300;"&gt;Why do software projects fail so often?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;First of all, now give you some worrying statistic. According to the research, only about 16% of software projects are successful, 53% challenged (that is cost overruns, budget overruns or content deficiencies) and 31% cancelled. Is it very horrible?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;Here is some key reasons why software projects fail:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Not Enough Time&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Insufficient Budget&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Poor Communication&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Never Reviewing Project Progress&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Inadequate Testing&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Testing in the Production Environment&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Lack of Quality Assurance&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Not Conforming to Industry Standards&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Stakeholder Conflicts&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Skills that Do Not Match the Job&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Poor Architecture&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Late Failure Warning Signals&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="color:#6633ff;"&gt;Failure has become the I.T. industry norm?  So what can we do about it?&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#6666cc;"&gt;Here is the 3 Keys to Project Success:&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Top management support&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;A sound methodology&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Solid technical leadership by someone who has successfully completed a similar project&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;Without each of these solidly in place, the tripod will topple and the project will fail.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#660000;"&gt;Other Interdependent Factors in Project Success:&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Cost&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Quality&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Speed&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Risk&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;Reference links:&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.dulcian.com/papers/Top%2010%20Reasons%20Why%20Systems%20Projects%20Fail.htm"&gt;&lt;span style="font-size:85%;"&gt;http://www.dulcian.com/papers/Top%2010%20Reasons%20Why%20Systems%20Projects%20Fail.htm&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.projectsmart.co.uk/why_software_projects_fail.html"&gt;&lt;span style="font-size:85%;"&gt;http://www.projectsmart.co.uk/why_software_projects_fail.html&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.adaptivepartners.com/projfailb.htm"&gt;&lt;span style="font-size:85%;"&gt;http://www.adaptivepartners.com/projfailb.htm&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16995374-114243341736050264?l=tatminghk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tatminghk.blogspot.com/feeds/114243341736050264/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16995374&amp;postID=114243341736050264&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16995374/posts/default/114243341736050264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16995374/posts/default/114243341736050264'/><link rel='alternate' type='text/html' href='http://tatminghk.blogspot.com/2006/03/why-do-software-projects-fail-so-often.html' title=''/><author><name>tatminghk</name><uri>http://www.blogger.com/profile/03175507001500557746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16995374.post-114243300185157788</id><published>2006-03-15T22:20:00.000+08:00</published><updated>2006-03-15T22:30:01.856+08:00</updated><title type='text'></title><content type='html'>&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style="color:#000099;"&gt;What is test-driven development?&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;Test-Driven Development (TDD) is a computer programming technique that involves writing test cases first and then implementing the code necessary to pass the tests.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style="color:#ff0000;"&gt;What is the goal of test-driven development?&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;The goal of test-driven development is to achieve rapid feedback and implements the "illustrate the main line" approach to constructing a program. This technique is heavily emphasized in Extreme Programming.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Practitioners emphasize that test-driven development is primarily a method of designing software, not just a method of testing. The method is also used for removal of software defects.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style="color:#006600;"&gt;In Test driven development simply have 5 cycle:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;strong&gt;Write the test&lt;/strong&gt; --- &lt;span style="font-size:85%;"&gt;It begins with writing a test, the developer must understand the specification and the requirements clearly. This is accomplished through use cases and user stories. The design document covers all the test scenarios and exception conditions.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;strong&gt;Write the code&lt;/strong&gt; --- &lt;span style="font-size:85%;"&gt;The next step is to make the test pass by writing the code. This step forces the programmer to take the perspective of a client by seeing the code through its interfaces. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;strong&gt;Run the automated tests&lt;/strong&gt; --- &lt;span style="font-size:85%;"&gt;The next step is to run the automated test cases and observe if they pass or fail. If they pass, the programmer can be more confident that the code meets the test cases as written.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;strong&gt;Refactor&lt;/strong&gt; --- &lt;span style="font-size:85%;"&gt;The final step is the refactoring step and any code clean-up necessary will occur here.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;strong&gt;Repeat&lt;/strong&gt; --- &lt;span style="font-size:85%;"&gt;The cycle will then repeat itself and start with either adding additional functionality or fixing any errors.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;Reference links:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;a href="http://en.wikipedia.org/wiki/Test_driven_development"&gt;&lt;span style="font-size:85%;"&gt;http://en.wikipedia.org/wiki/Test_driven_development&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;a href="http://www.agiledata.org/essays/tdd.html"&gt;&lt;span style="font-size:85%;"&gt;http://www.agiledata.org/essays/tdd.html&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16995374-114243300185157788?l=tatminghk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tatminghk.blogspot.com/feeds/114243300185157788/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16995374&amp;postID=114243300185157788&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16995374/posts/default/114243300185157788'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16995374/posts/default/114243300185157788'/><link rel='alternate' type='text/html' href='http://tatminghk.blogspot.com/2006/03/what-is-test-driven-development-test.html' title=''/><author><name>tatminghk</name><uri>http://www.blogger.com/profile/03175507001500557746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16995374.post-114243233815292251</id><published>2006-03-15T22:15:00.000+08:00</published><updated>2006-03-15T22:20:02.443+08:00</updated><title type='text'></title><content type='html'>&lt;span style="color:#3333ff;"&gt;What makes a program code good?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Here is some key reason how to determine the program code is good or not.&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Clarity&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Flexibility&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Contingency&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Structure&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Efficiency&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;Reference link: &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.smith.edu/its/sctsummit04/color/P%20Technical/215.pdf"&gt;&lt;span style="font-size:85%;"&gt;http://www.smith.edu/its/sctsummit04/color/P%20Technical/215.pdf&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16995374-114243233815292251?l=tatminghk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tatminghk.blogspot.com/feeds/114243233815292251/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16995374&amp;postID=114243233815292251&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16995374/posts/default/114243233815292251'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16995374/posts/default/114243233815292251'/><link rel='alternate' type='text/html' href='http://tatminghk.blogspot.com/2006/03/what-makes-program-code-good-here-is.html' title=''/><author><name>tatminghk</name><uri>http://www.blogger.com/profile/03175507001500557746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16995374.post-113699348189923778</id><published>2006-01-11T22:42:00.000+08:00</published><updated>2006-01-11T23:37:04.100+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-size:130%;"&gt;&lt;span style="color:#cc0000;"&gt;YAGNI &lt;/span&gt;--- YouArentGonnaNeedIt&lt;/span&gt;&lt;span style="font-size:85%;"&gt; is an ExtremeProgramming practice which states: &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;"Always implement things when you actually need them, never when you just foresee that you need them."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Even if you're totally, totally, totally sure that you'll need a feature later on, don't implement it now. Usually, it'll turn out either&lt;span style="color:#006600;"&gt; &lt;/span&gt;&lt;span style="color:#ff6600;"&gt;a) you don't need it after all&lt;/span&gt;, or &lt;span style="color:#ff0000;"&gt;b) what you actually need is quite different from what you foresaw needing earlier. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This doesn't mean you should avoid building flexibility into your code. It means you shouldn't overengineer something based on what you think you might need later on. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;There are two main reasons to practise YAGNI: &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;You save time, because you avoid writing code that you turn out not to need. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Your code is better, because you avoid polluting it with 'guesses' that turn out to be more or less wrong but stick around anyway.&lt;/span&gt; &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;YAGNI has some overlooked disadvantages:&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Delays what the programmer was originally working on. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;There is a chance that the requirements for the software will change and the functionality will become either different or unneeded. By applying the YAGNI principle, the programmer has not wasted time in adding the redundant functionality and no longer has to waste additional time debugging the code. The code is also less cluttered as a result. &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;Reference Links:&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/YAGNI"&gt;&lt;span style="font-size:85%;"&gt;http://en.wikipedia.org/wiki/YAGNI&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://xp.c2.com/YouArentGonnaNeedIt.html"&gt;&lt;span style="font-size:85%;"&gt;http://xp.c2.com/YouArentGonnaNeedIt.html&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;---------------------------------------------------------------&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;color:#cc0000;"&gt;JsUnit &lt;/span&gt;&lt;/strong&gt;--- &lt;span style="font-size:85%;"&gt;JsUnit is a Unit Testing framework for client-side (in-browser) JavaScript. It is essentially a port of &lt;span style="font-size:0;"&gt;JUnit&lt;/span&gt; to JavaScript. Also included is a platform for automating the execution of tests on multiple browsers and mutiple machines running different OSs. Its development began in January 2001.&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;The &lt;span style="font-size:0;"&gt;Usage&lt;/span&gt; of JsUnit is described in the follwing sections: &lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://jsunit.berlios.de/usage.html#codeConv"&gt;&lt;span style="font-size:85%;"&gt;Coding Conventions&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://jsunit.berlios.de/usage.html#interface"&gt;&lt;span style="font-size:85%;"&gt;Interfaces&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://jsunit.berlios.de/usage.html#writing"&gt;&lt;span style="font-size:85%;"&gt;Writing test cases and test suites&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://jsunit.berlios.de/usage.html#application"&gt;&lt;span style="font-size:85%;"&gt;Creating a test application&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://jsunit.berlios.de/usage.html#examples"&gt;&lt;span style="font-size:85%;"&gt;Examples&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;Additional Source:&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Power Point --- &lt;a href="http://www.edwardh.com/jsunit/talks/jsunit.ppt"&gt;http://www.edwardh.com/jsunit/talks/jsunit.ppt&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;Reference Links:&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://jsunit.berlios.de/"&gt;&lt;span style="font-size:85%;"&gt;http://jsunit.berlios.de/&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.edwardh.com/jsunit/"&gt;&lt;span style="font-size:85%;"&gt;http://www.edwardh.com/jsunit/&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16995374-113699348189923778?l=tatminghk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tatminghk.blogspot.com/feeds/113699348189923778/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16995374&amp;postID=113699348189923778&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16995374/posts/default/113699348189923778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16995374/posts/default/113699348189923778'/><link rel='alternate' type='text/html' href='http://tatminghk.blogspot.com/2006/01/yagni-youarentgonnaneedit-is.html' title=''/><author><name>tatminghk</name><uri>http://www.blogger.com/profile/03175507001500557746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16995374.post-113699022394184787</id><published>2006-01-11T22:30:00.000+08:00</published><updated>2006-01-11T22:37:03.956+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-size:130%;"&gt;Compare the CSDP and MT356&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Compare the CSDP(Certified Software Development Professional) body of knowledge with our current Software Engineering course(MT356). I have find that following knowledges areas are not included in our textbook.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Business Practices&lt;/li&gt;&lt;li&gt;Professional Practices &lt;/li&gt;&lt;li&gt;Engineering Economics &lt;/li&gt;&lt;li&gt;Software Maintenance &lt;/li&gt;&lt;li&gt;Software Quality Methods&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16995374-113699022394184787?l=tatminghk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tatminghk.blogspot.com/feeds/113699022394184787/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16995374&amp;postID=113699022394184787&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16995374/posts/default/113699022394184787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16995374/posts/default/113699022394184787'/><link rel='alternate' type='text/html' href='http://tatminghk.blogspot.com/2006/01/compare-csdp-and-mt356-compare.html' title=''/><author><name>tatminghk</name><uri>http://www.blogger.com/profile/03175507001500557746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16995374.post-113067153137961893</id><published>2005-10-30T18:57:00.000+08:00</published><updated>2005-10-30T19:31:20.680+08:00</updated><title type='text'></title><content type='html'>&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;My Favorite UML Tool:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;In our view, &lt;/span&gt;&lt;a href="http://gentleware.com/"&gt;&lt;span style="font-size:130%;"&gt;Poseidon for UML Community Edition&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt; is the better one(compare with two others).&lt;br /&gt;There are several reasons to support our idea&lt;/span&gt;&lt;span style="font-size:85%;"&gt;. &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;br /&gt;1) In the class, Steven Sir already give me the &lt;/span&gt;&lt;a href="http://gentleware.com/"&gt;&lt;span style="font-size:130%;"&gt;Poseidon for UML Community Edition&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;. We does not waste any time to download.&lt;br /&gt;2) Software Size -- &lt;/span&gt;&lt;a href="http://gentleware.com/"&gt;&lt;span style="font-size:130%;"&gt;Poseidon for UML Community Edition&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt; only 30mb, much less than other two softwares.&lt;br /&gt;3) Operation -- Not most of people have newest PC. I still using Celeron(School PC lab also like that) but i can running this software very stable.&lt;br /&gt;4) installation -- My slow pc just spend a short moment to install this software.&lt;br /&gt;5) User-Friendly -- I just spend 30 mins to learn how to control.&lt;br /&gt;&lt;br /&gt;In the past, i have used "Visio" to draw UML diagrams. It is very user-friendly software.&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16995374-113067153137961893?l=tatminghk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tatminghk.blogspot.com/feeds/113067153137961893/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16995374&amp;postID=113067153137961893&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16995374/posts/default/113067153137961893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16995374/posts/default/113067153137961893'/><link rel='alternate' type='text/html' href='http://tatminghk.blogspot.com/2005/10/my-favorite-uml-tool-in-our-view.html' title=''/><author><name>tatminghk</name><uri>http://www.blogger.com/profile/03175507001500557746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16995374.post-112869065228470908</id><published>2005-10-07T20:58:00.000+08:00</published><updated>2005-10-07T21:10:52.293+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;strong&gt;What do you think about the basic skills for software engineers?&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;First of all, what is  Software engineering? It is the profession concerned with creating and maintaining software applications by applying technologies and practices from computer science, project management, engineering, application domains, and other fields.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;(&lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Software_engineer"&gt;&lt;span style="font-size:85%;"&gt;http://en.wikipedia.org/wiki/Software_engineer&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Computer software engineers are projected to be one of the fastest growing occupations from 2002 to 2012. Rapid employment growth in the computer systems design and related services industry, which employs the greatest number of computer software engineers.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;em&gt;&lt;strong&gt;Requirements:&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;i)  Software engineers must possess strong programming skills, but are more concerned with developing algorithms and analyzing and solving programming problems than with actually writing code.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;ii)  Software engineers must have strong problem-solving and analytical skills.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;iii) Communication skill, it is because software engineers often work as part of a team. They also must be able to communicate effectively with team members, other staff, and the customers they meet. Because they often deal with a number of tasks simultaneously, they must be able to concentrate and pay close attention to detail.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;iv) Work hours / location, software engineers normally work in well-lighted and comfortable offices or computer laboratories in which computer equipment is located. Most software engineers work at least 40hours a week. They also may have to work evenings or weekends to meet deadlines or solve unexpected technical problems. So overtime is normaly of this Job.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;v)  Basic qualification, most employers prefer to hire persons who have at least a bachelor degree and broad knowledge of, and experience with, a variety of computer systems and technologies. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-size:85%;"&gt;How about the future&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Despite the recent downturn in information technology, the number of computer software engineers is expected to rise much faster than the average. Job growth will not be as rapid as during the last decade however, as the industry matures and some work is outsourced to foreign countries.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16995374-112869065228470908?l=tatminghk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tatminghk.blogspot.com/feeds/112869065228470908/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16995374&amp;postID=112869065228470908&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16995374/posts/default/112869065228470908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16995374/posts/default/112869065228470908'/><link rel='alternate' type='text/html' href='http://tatminghk.blogspot.com/2005/10/what-do-you-think-about-basic-skills.html' title=''/><author><name>tatminghk</name><uri>http://www.blogger.com/profile/03175507001500557746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16995374.post-112737103861591129</id><published>2005-09-22T14:36:00.000+08:00</published><updated>2005-10-05T22:04:56.360+08:00</updated><title type='text'></title><content type='html'>Hello!! This is my first message here!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16995374-112737103861591129?l=tatminghk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tatminghk.blogspot.com/feeds/112737103861591129/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16995374&amp;postID=112737103861591129&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16995374/posts/default/112737103861591129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16995374/posts/default/112737103861591129'/><link rel='alternate' type='text/html' href='http://tatminghk.blogspot.com/2005/09/hello-this-is-my-first-message-here.html' title=''/><author><name>tatminghk</name><uri>http://www.blogger.com/profile/03175507001500557746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>
