軟體設計是取捨之道,生活呢?
自從同事兼同袍的哥們 — 高阿吉跳槽後,最近自己的心緒也偶而會有起伏,
有時後看見辦公室裡那堆蒼蠅,例如:討人厭的紅衣胖主管、極端排外的資深二人組....。
光是遠遠看見它們就會不自主地嘆口氣,想到說:『自己怎麼還繼續窩在這個烏龍院!?』
-_______-"
雖然座位旁的是自己很合的來的小主管,年初也是自己決定先忙完手邊案子,
順便跟小主管多學點東西再走,可是偶而....莫名的失落感還是會浮現出來....。
雖然高阿吉告訴我:外面很操、壓力很大、生活步調也變的很急促,勸我緩一些時刻再出來....。
雖然最近春天的腳步近了,早上走在公司如校園般的環境裡,會突然覺得環境很美....還帶點悠閒和自主....。
雖然最近慢慢在想法上,似乎有一點點的不一樣....寫程式的技巧也慢慢由駑鈍變的平常....算是有點進步....。
雖然跟客戶接觸....也不像以前那麼衝,也更懂得即時反省自己的言行....。
雖然....。
雖然....。
一堆的雖然....。
但總還是覺得少了點什麼!?....。
而看了這篇文章....雖然並沒什麼相關性,只算是個在程式跟專案開發方面的觀念提醒:別太自我、要懂得取捨才能有效率的成事!
但這個標題卻讓我有些感觸,似乎標題比內容更值得我參考....或許我要懂得就是....『取捨』,
在生活之間,在某些事物之間,取的某些平衡,也更懂得看見一些不易看見的事物優點吧! ![]()
軟體設計就是取捨之道
iThome電腦報週刊 │ 2008-03-24 文/王建興
軟體開發領域很常用到「重新建造輪子」這一個句子,它是許多程式人常見的一種迷思,有時候,它甚至可以說是一種心病。
我們時常拿建造一個車子的過程,比喻開發軟體的過程。在這裡,車子是最終想要完成的系統,而輪子便是建造車子所需的重要零組件。因此軟體開發領域中,建造系統的重要軟體組件,時常被比喻為輪子。而重新建造輪子,自然意指重新開發系統所需的軟體組件。
重新造輪意謂生產力的耗費
為什麼說,重新建造輪子是許多程式人的共同心病呢?
這是因為許多程式人無法抵擋,心中那個呼喚、引誘他們重新打造輪子的魔鬼。為什麼要把重新建造輪子,說得好像是十分邪惡的一件事情呢?
無庸置疑的,軟體開發的生產力,絕對是現代軟體開發最看重的指標之一,也是許多軟體開發團隊所追求的重要目標。程式人在軟體開發上,除了確保品質之外,加速軟體開發的進程,同樣也是會面臨到的最大挑戰。
許多軟體專案的開發延遲,甚至遲遲無法完成,造成產品或服務推出市場的時間失去先機,這些多半都歸因於開發生產力不彰。因此,許多開發流程、軟體設計的技巧及方法,都著眼於提升開發生產力。
我們時常拿建造一個車子的過程,比喻開發軟體的過程。在這裡,車子是最終想要完成的系統,而輪子便是建造車子所需的重要零組件。因此軟體開發領域中,建造系統的重要軟體組件,時常被比喻為輪子。而重新建造輪子,自然意指重新開發系統所需的軟體組件。
重新造輪意謂生產力的耗費
為什麼說,重新建造輪子是許多程式人的共同心病呢?
這是因為許多程式人無法抵擋,心中那個呼喚、引誘他們重新打造輪子的魔鬼。為什麼要把重新建造輪子,說得好像是十分邪惡的一件事情呢?
無庸置疑的,軟體開發的生產力,絕對是現代軟體開發最看重的指標之一,也是許多軟體開發團隊所追求的重要目標。程式人在軟體開發上,除了確保品質之外,加速軟體開發的進程,同樣也是會面臨到的最大挑戰。
許多軟體專案的開發延遲,甚至遲遲無法完成,造成產品或服務推出市場的時間失去先機,這些多半都歸因於開發生產力不彰。因此,許多開發流程、軟體設計的技巧及方法,都著眼於提升開發生產力。
而輪子的重新建造,意謂著大量的生產力浪費。
新造組件耗費生產力,卻不見得可以得到好處
原本已經存在的軟體組件,在過去肯定花費不少時間,在需求分析、介面設計、程式撰寫、以及反覆的測試。而且軟體組件存在的目的,便是要讓多個開發專案共同運用。也就是說,每個軟體組件,都是經歷了許多專案現實又殘酷的考驗,才能生存下來的。
歷經這些考驗後,這些軟體組件等於是經過了廣泛的實戰測試,可能存在的軟體瑕疵,多半都已在測試中發現並修正。所以我們可以說,既存的軟體組件,可信賴的品質多半都有一定程度。
重新建造輪子背後代表的意義,是得重新再經歷類似的過程、投入資源及時間(通常占去最多的並不是開發時間,而是最容易被忽略的測試時間),最後得到一個或許可能比較好的組件。
但是這又如何呢?或許重新建造的組件的確優於舊有的組件,它可能更有彈性、更通用、適用範圍更廣、更多的專案可重複使用、滿足更多變的使用者需求。
但在你未來的系統中,這些優點不見得會完全地利用到,兩相權衡之下,不見得可以得到好處,但在當下是切切實實地把生產力給浪費掉了。
新造組件耗費生產力,卻不見得可以得到好處
原本已經存在的軟體組件,在過去肯定花費不少時間,在需求分析、介面設計、程式撰寫、以及反覆的測試。而且軟體組件存在的目的,便是要讓多個開發專案共同運用。也就是說,每個軟體組件,都是經歷了許多專案現實又殘酷的考驗,才能生存下來的。
歷經這些考驗後,這些軟體組件等於是經過了廣泛的實戰測試,可能存在的軟體瑕疵,多半都已在測試中發現並修正。所以我們可以說,既存的軟體組件,可信賴的品質多半都有一定程度。
重新建造輪子背後代表的意義,是得重新再經歷類似的過程、投入資源及時間(通常占去最多的並不是開發時間,而是最容易被忽略的測試時間),最後得到一個或許可能比較好的組件。
但是這又如何呢?或許重新建造的組件的確優於舊有的組件,它可能更有彈性、更通用、適用範圍更廣、更多的專案可重複使用、滿足更多變的使用者需求。
但在你未來的系統中,這些優點不見得會完全地利用到,兩相權衡之下,不見得可以得到好處,但在當下是切切實實地把生產力給浪費掉了。
越優秀的程式人,越容易落入造輪的地獄
既然如此,為什麼程式人們總是會受到心魔的引誘,一而再、再而三地浪費寶貴的開發生產力呢?尤其我要說,越是優秀、對自我期許高的程式人,越是受不了這樣的誘惑。反而平庸的程式人,不容易發生重新建造輪子的問題。
這其中的原因究竟為何呢?讓我細細道來。雖然許多人都說,程式人這一行是吃青春飯,但我認為,程式設計終究是一個大量倚重經驗及視野的工作,而不是許多人心中所想像的,體力與對新技術的熟悉占極大的比重。
相信許多程式人和我有一樣的感受,每經過一段時日,就會覺得自己又「升級」了,基於這段日子的經驗累積,視野又大有不同。而這些「升級」的動力,例如學習、體會到某個設計方法論或是架構的好處。當你「升級」之後,再回過頭去檢視自己舊時的作品,多半會抱持負面的觀感。
面對過去的自己,時常會有一種「年少無知」、甚至是「年少輕狂」的感覺,真希望「昨日種種譬如昨日死,今日種種譬如今日生」。剛對設計方法或架構有了更深一層感受的你,對比起來,更明白過去所做的設計,究竟存在那些問題以及缺陷,它可能不夠通用、不夠彈性、也難以擴充。
倘若你是一個自我期許較高的程式人,免不了難以壓抑心中的衝動,這些問題及缺陷,便有如眼中令人難受的沙子,非得立即除之而後快。所以,對於那些既存,但又看不順眼的輪子們,會興起再次重新打造的念頭,也就不足為奇了。
可是,人總是持續成長,你的能力和視野,同樣隨著時間的演進,在不斷地進展。或許輪子的確不夠好,但在某個程度上,它是足堪使用的。
如果只是因為你知道有更好的設計方法或架構,就得要重新再把這些輪子再做過,無疑地,是陷入無止盡的輪子再造地獄之中,也持續地浪費無謂的生產力。或許有所得,但失去的更多。
既然如此,為什麼程式人們總是會受到心魔的引誘,一而再、再而三地浪費寶貴的開發生產力呢?尤其我要說,越是優秀、對自我期許高的程式人,越是受不了這樣的誘惑。反而平庸的程式人,不容易發生重新建造輪子的問題。
這其中的原因究竟為何呢?讓我細細道來。雖然許多人都說,程式人這一行是吃青春飯,但我認為,程式設計終究是一個大量倚重經驗及視野的工作,而不是許多人心中所想像的,體力與對新技術的熟悉占極大的比重。
相信許多程式人和我有一樣的感受,每經過一段時日,就會覺得自己又「升級」了,基於這段日子的經驗累積,視野又大有不同。而這些「升級」的動力,例如學習、體會到某個設計方法論或是架構的好處。當你「升級」之後,再回過頭去檢視自己舊時的作品,多半會抱持負面的觀感。
面對過去的自己,時常會有一種「年少無知」、甚至是「年少輕狂」的感覺,真希望「昨日種種譬如昨日死,今日種種譬如今日生」。剛對設計方法或架構有了更深一層感受的你,對比起來,更明白過去所做的設計,究竟存在那些問題以及缺陷,它可能不夠通用、不夠彈性、也難以擴充。
倘若你是一個自我期許較高的程式人,免不了難以壓抑心中的衝動,這些問題及缺陷,便有如眼中令人難受的沙子,非得立即除之而後快。所以,對於那些既存,但又看不順眼的輪子們,會興起再次重新打造的念頭,也就不足為奇了。
可是,人總是持續成長,你的能力和視野,同樣隨著時間的演進,在不斷地進展。或許輪子的確不夠好,但在某個程度上,它是足堪使用的。
如果只是因為你知道有更好的設計方法或架構,就得要重新再把這些輪子再做過,無疑地,是陷入無止盡的輪子再造地獄之中,也持續地浪費無謂的生產力。或許有所得,但失去的更多。
《詳細內文請見iThome電腦報391期(www.ithome.com.tw),天瓏、誠品、何嘉仁、搜主義、敦煌、法雅客、Page one書店均有銷售》
Today's Visitors: 0 Total Visitors: 6
Personal Category: Thinking
Topic: feeling / personal / murmur
Previous in This Category: [轉載] - 處理事情不是一種能力,而是一種習慣! Next in This Category: 朱學恒 - Re:我想做音樂!... (看清楚什麼叫熱情!)
Previous in This Category: [轉載] - 處理事情不是一種能力,而是一種習慣! Next in This Category: 朱學恒 - Re:我想做音樂!... (看清楚什麼叫熱情!)

