<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post//</link>
<title><![CDATA[越早学会这些，你的编程之路越好走]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Thu, 22 Dec 2011 03:56:30 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	我依然记得当我完成学业时，我是多么的天真。那时我深信自己已经准备好进入任何一家软件公司，并开始成为一个顶级的开发人员。显然，开始工作后没多久我就意识到，还有很多事是我所不了解的。<br/>在不断吸取经验的同时，我一直在努力学习那些我从来没有学过的，但却是成为优秀的开发人员所应了解的基本知识。以下是我希望自己能在学校就学到的10件事。<br/>一、我们总是错的<br/>开发人员有着相当大的自我意识，包含了一些其他的非技术性缺陷，这也正是为什么我们很难发现我们做错了什么。我看到过很多无休止的设计讨论，开发人员不断地发表自己的想法……呵呵!猜猜怎样……我们都错了，唯一的区别就是我们犯错的离谱程度不同。<br/>理解并接受这个事实非常重要，我们只有这样做了，才能敞开心胸去听听别人的意见，采用他们的想法，来得出一个更好的解决办法。<br/>二、事情若有可能出错，就一定会出错<br/>也就是说“希望驱动开发(hope driven development)”，如果你对于某些事并不确定，如果你发现自己使用了“应该”这个词，那你就麻烦了。<br/>而这只有一个解决方案，尽己所能去保证它不会出错，这可能意味着你需要编写一个测试、调试并验证需求……<br/>三、所有的代码都烂<br/>在我抱怨那些我碰到过的代码十年之久后，我得出了一个精辟的结论，所有的(包括我自己写的)代码，都烂。当然，烂还是有等级之分的，但即便是我见过写得最好的代码，也是难以读懂的。<br/>这并不意味着把你的代码写得更好是没有意义的，恰恰相反，最好和最坏的代码还是有天壤之别的。<br/>四、错误(Bug)总会存在<br/>永远存在!问题只在于要发现它困难与否。<br/>五、客户最大<br/>许多客户并不在乎你在方案中使用了哪些技术，应用程序需不需要做更多的事……或通俗上说，你是否使用了好的实践方案。<br/>也因为我可以想象，要是我只说了前面那一段，我会收到多少恶评，让我说得更清楚些……我想说的是，我们永远不应该忘记客户的立场，有时候，开发人员为了最佳实践而在项目工程中过度坚持采用(某些)技术，但要记住，若这些技术无法给客户带来价值，那就放弃吧!(编注：关于客户，作者Alberto在其前几篇文章《我的10个开发原则》和《程序员常犯的5个非技术性错误》都有提到，可见他对这一点的体会。)<br/>六、纸上谈兵是行不通的<br/>我曾认为，我可以在前期就把我的整个设计置于纸上，然后只要将缺漏处填上就好，但这样根本行不通。<br/>软件开发是复杂的，若不亲手去碰碰看，很难看到所有的实际层面以及它们之间的关系。因此，在前期保持规划与设计是很有用的，但不要过度坚持，也不要把设计图表当作合约固守。<br/>七、少即是多<br/>或者，你可能知道更好的说法是：“Keep it simple, stupid!”(保持简单，KISS设计原则)。所以，如果没有必要的就舍弃吧!因为要记住：“事情若有可能出错，就一定会出错。”<br/>(编注：除了KISS原则之外，此文还介绍了其他一些软件设计原则。)<br/>八、编写代码只是我们所做工作的20%而已<br/>请准备好，花80%的时间用于思考、调试、测试、开会、谈话……而所有的其他活动都是非常重要的，所以若要成为一个优秀的软件开发人员，你必须培养广泛而全面的技巧(Skill)，而不仅仅是技术(Technical)。<br/>九、客户永远不知道他/她想要的是什么!<br/>客户若有需求，或是想法，但是他们不知道详细情况……软件开发要做的工作就是，发现细节并去除所有的不确定性，将这些需求转换成客户想要一个应用程序。<br/>十、已经有人做过了<br/>所以不要再重新发明轮子，用谷歌找找看，或者更好的方法是，请教你的同事，很多时候他们可能都已经做了相同、或非常类似的事情。<br/>来自：http://3339412.blog.51cto.com/3329412/617167
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] 越早学会这些，你的编程之路越好走]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>