最近一直在開發一款IDE,本來設計的目標只是一個單機版的客戶端,不會連接任何服務端。后來用戶突然加了一項需求,想要訪問數據庫,去查詢一些數據。 其實這本來也不是什么怪異的需求,只是一種C/S系統而已。那時候剛聽到這個需求的時候,馬上想到的是,用hibernate, ibatis還是直接用JDBC。不如用ibatis吧,只需要查詢幾個表的幾個字段而已,這一項剛好足夠。 可是要增加數據庫的支持時,心里特別的別扭,這款IDE的目標客戶是遍布各個地方的,這一點就決定了,我們不可能用C/S的方法。 后來是在online system上加了一個web service,讓這個IDE去調用。這樣任何地方都可以訪問這個服務了。 就算不論這一點,在考慮要用客戶端直接連數據庫的時候,心里面就像吃了螞蟻似的,非常不爽。不知道是因為B/S系統做多了,還是因為覺得客戶端直接連數據庫本身就是一種不對的做法,總之現在已經有點不喜歡C/S結構的系統了,或者說,不喜歡客戶端/數據庫服務這樣的系統。 不知道諸位程序員同

文章來源:
http://blog.csdn.net/Wingel/archive/2007/01/25/1493585.aspx
?程序員有個偏好,那就是實現,他們喜歡把東西實現出來。這是一個優點,實現能力越強的人,一般編程能力也越強,我們也就可以說,他的技術越強。
但是喜歡實現卻又是程序員的缺點,因為他們在實現一樣東西的時候,經常會不想去理會其他的事情。比如說,程序員接到一項任務時,普通的程序員就馬上會開始動手。稍微好一些的程序員則會仔細思考一下再動手。可惜,這樣子也是程序員管理能力欠缺的一個原因。
當你的能力足夠的時候,你應該懂得,把分配給你的任務計劃一下,看看多久完成,如果你要把這個任務分塊的話,嘗試估計一下各個塊的完成時間。不要因為擔心預計得不準,就不去估計。因為有個計劃給領導,絕對比沒有的強。
開發經驗逐漸增多的情況下,你已經有能力相對準確的計劃自己的任務了。這時候你應該去找你的領導,把他今年可能會分配給你的任務看一下。這件事情很重要,因為你不做的話,你還只是一個程序員。因為你對自己的能力已經有了充分的認識,也能相對準確的估計你的開發進度了。你可以好好把今年的任務計劃一下,把更新好的進度表給你的領導。因為他對你開發進度的估計,怎么樣都沒有你自己估計的準確。你能給一份計劃,他會很開心。
現在,你已經有能力計劃自己整年的開發情況了。
但是計劃會改變。
我們要擁抱計劃的變更!
你跟客戶,或者負責需求的人熟嗎?只有時刻掌握著需求的變化,才能時刻把握好自己的計劃。
你跟QA熟嗎?QA對你這個人開發質量的印象如何?清楚自己的開發質量,才能保證把事情做好的能力一直在進步。
你跟領導熟嗎?你保證你做的事情領導都知道嗎?你想做什么領導也知道?
你敢不敢說,所有跟你有關的情況,都盡在你的掌握?
會不會覺得這些很像空話,很不實際!
但是有做總是有好處的!
你做得越多,你越過程序員就越快。因為你不能,也不想只是單線程的程序員!
???? 前了陣子,做了個firefox下的插件,在了解它的插件運作的過程中,才發現,原來程序還可以是這樣組成的。
??? 我們現在的所有B/S程序,UI上就是由HTML+JavaScript組成的,而它這樣的局限就是,這樣的UI只能在瀏覽器上運行;而且它的UI會比較簡單,不能像桌面程序中的一些效果。
??? 前面那個問題,其實很容易回答,大部分桌面程序也只能在Window上運行,大部分人都會裝Windows,但是大部分人也都會裝瀏覽器。
??? 而后面這個問題,就是我要說的內容了。Firefox里面所有界面上的布局,都是用類似于HTML的XUL語言生成的,它比HTML支持更多的UI,更方便的一些操作。
??? 當你發現,用HTML就可以構造出一個功能非常復雜的GUI時,當你發現光光html就可以做出一個Firefox那樣的界面時,當你發現,Firefox這個平臺上所有的程序都是由HTML組成時,這就是我的驚異了。
??? 當你發現,其實用HTML就可以做出所有的GUI程序時,這就是Moliza的思路了(其實NetBean的RPC中各個Plugin的UI的思路跟這個有點類似)。
??? 當你發現,你要打開一個程序,你只需要一個瀏覽器,打開一個網頁,其余啥都不用做時,這就是Google的思路了。
??? 這就是我的感覺。
??? 而且我在做這個Firefox的插件時,我一直感覺我在用AJAX,其實AJAX的思路,最有價值的就是,UI上每次變更,不需要刷新整個頁面,不需要 Reload整個UI,只需要變更它需要變化的部分,就像桌面程序一樣。而你在用Firefox的時候,你會感覺到Firefox在刷新什么東西嗎?