其實這孩子是天才,每次都能算好成績,把自己的名次固定住,真不簡單~
--------------------------------------------------------------------
一篇懂得隨喜讚歎、自在生活的好文章~
我那上國中的女兒,她同學都管叫她23號。
她的班上總共有50個人,而每次考試,女兒都排名23。
久而久之,便有了這個雅號,她也就成了名副其實的中等生。
我們覺得這外號刺耳,女兒卻欣然接受。
老公發愁地說,一碰到公司活動,或者老同學聚會,別人都對自家的「小超人」讚不絕口,他卻只能扮深沉。
人家的孩子,不僅成績出類拔萃,而且特長多多。
唯有我們家的23號女生,沒有一樣值得炫耀的地方。
因此,他一看到娛樂節目那些才藝非凡的孩子,就羡慕得兩眼放光。
後來,看到一則九歲孩子上大學的報導,他很受傷地問女兒:『孩子,妳怎麼就不是個神童呢?』
女兒說:『因為我爸爸不是神父啊!』
老公無言以對,我不禁笑出聲來。
中秋節,親友相聚,坐滿了一個寬大的包廂。
眾人的話題,也漸漸轉向各家的小兒女。
趁著酒興,要孩子們說說將來要做什麼?
鋼琴家,明星,政界要人,孩子們毫不怯場,連那個四歲半的女孩,也會說將來要做電視的主持人,贏得一陣讚歎!
15歲的女兒,正為身邊的小弟弟小妹妹剔蟹剝蝦,盛湯揩嘴,忙得不亦樂乎。
大家忽然想起,只剩她沒說了。
在眾人的催促下,她認真地回答:『長大了,我的第一志願是,當幼稚園老師,領著孩子們唱歌跳舞,做遊戲。』
眾人禮貌地表示贊許,緊接著追問她的第二志願。
她大大方方地說:『我想做媽媽,穿著印叮噹貓的圍裙,在廚房做晚餐,然後給我的孩子講故事,領著他在陽臺上看星星。』
親友愕然,面面相覷,不知道該說些什麼。
老公的神情,極為尷尬。
回家後,他歎著氣說:『你還真打算讓女兒將來當個幼稚園老師?我們難道真的眼睜睜地看著她當中等生?』
其實,我們也動過很多腦筋。為提高她的學習成績,請家教,報輔導班,買各種各樣的資料。
孩子也蠻懂事,漫畫書不看了,剪紙班退出了,週末的懶覺放棄了。
像一隻疲憊的小鳥,她從一個班趕到另一個班,卷子,練習冊,一遝遝地做。
但到底是個孩子,身體先扛不住了,得了重感冒。
吊著點滴,在病床上,她還堅持寫作業,最後引發了肺炎。
病好後,孩子的臉小了一圈。
可期末考試的成績,仍然是讓我們哭笑不得的23名。
後來,我們也曾試過增加營養、物質激勵等等,幾次三番地折騰下來,女兒的小臉越來越蒼白。
而且,一說要考試,她就開始厭食,失眠,冒虛汗,再接著,考出了令我們瞠目結舌的33名。
我和老公,悄無聲息地放棄了轟轟烈烈的揠苗助長活動。
恢復了她正常的作息時間,還給她畫漫畫的權利,允許她繼續訂《兒童幽默》之類的書報,家中安穩了很久。
我們對女兒,是心疼的,可面對她的成績,又有說不出的困惑。
週末,一群同事結伴郊遊。大家各自做了最拿手的菜,帶著老公和孩子去野餐。
一路上笑語盈盈,這家孩子唱歌,那家孩子表演小品。
女兒沒什麼看家本領,只是開心地不停鼓掌。
她不時跑到後面,照看著那些食物。
把傾斜的飯盒擺好,松了的瓶蓋擰緊,流出的菜汁擦淨。
忙忙碌碌,像個細心的小管家。
野餐的時候,發生了一件意外的事。
兩個小男孩,一個數理天才,一個英語高手,兩人同時夾住盤子上的一塊糯米餅,誰也不肯放手,更不願平分。
豐盛的美食,源源不斷地擺上來,他們看都不看。
大人們又笑又歎,連勸帶哄,可怎麼都不管用。
最後,還是女兒,用擲硬幣的方法,輕鬆地打破了這個僵局。
回來的路上,堵車,一些孩子焦躁起來。
女兒的笑話一個接一個,全車人都被逗樂了。
她手底下也沒閒著,用裝食品的彩色紙盒,剪出許多小動物,引得這群孩子讚歎不已。
直到下車,每個人都拿到了自己的生肖剪紙。
聽到孩子們連連道謝,老公禁不住露出了自豪的微笑。
期中考試後,我接到了女兒班主任的電話。
首先得知,女兒的成績,仍是中等。
不過,他說:『有一件奇怪的事想告訴我,他從教三十年了,第一次遇見這種事。
語文試卷上有一道附加題:你最欣賞班上的哪位同學,請說出理由。
除女兒之外,全班同學,竟然都寫上了女兒的名字。
理由很多:熱心助人,守信用,不愛生氣,好相處等等,寫得最多的是,樂觀幽默。』
班主任還說:『很多同學建議,由她來擔任班長。』
他感歎道:『你這個女兒,雖說成績普通,可是做人,實在很優秀!』
我開玩笑地對女兒說:『妳快要成為英雄了。』
正在織圍巾的女兒,歪著頭想了想,認真地告訴我說:
『老師曾講過一句格言:當英雄路過的時候,總要有人坐在路邊鼓掌....。』
她輕輕地說:『媽媽,我不想成為英雄,我想成為坐在路邊鼓掌的人。』
我猛地一震,默默地打量著她。
她安靜地織著絨線,淡粉的線,在竹針上纏纏繞繞,仿佛一寸一寸的光陰,在她手上,吐出星星點點的花蕾。
我心上,竟是驀地一暖。
那一刻,我忽然被這個不想成為英雄的女孩打動了。
這世間,有多少人,年少時渴望成為英雄,最終卻成了煙火紅塵中的平凡人。
如果健康,如果快樂,如果,沒有違背自己的心意,我們的孩子,又何妨做一個善良的普通人。
長大成人後,她一定會成為:賢淑的妻子,溫柔的母親,甚至,熱心的同事,和善的鄰居。
何況她是班上50名之中的23名,我們還不慶幸,還不滿足?
還想要更高人一等,更出人頭地!那後面還有27名半數以上的孩子呢?如果我是她們的父母,我要如何自處呢?
在那些漫長的歲月,她都能安然地過著自己想要的生活;她又沒學壞,我作為身教言教的父母,能教養孩子長大成人,並成為社會上有用的人,就可告慰先祖,還想為孩子祈求怎樣更美好的未來?
就算她將來能當上司法官,能考上建築師,若她心術不正,口是心非,那又有何用?
2010/11/09
2010/11/03
2010/10/21
如何安裝〈愛〉
客服工程師 :
您好!有什麼我可以為您服務的嗎?
顧客:
您好!有什麼我可以為您服務的嗎?
顧客:
嗯,我考慮以後,決定安裝「愛」。
你能夠一步一步教我怎麼做嗎?
客服工程師:
客服工程師:
好,可以的。你準備好要安裝了嗎?
顧客:
顧客:
嗯,我不是很懂技術,但是我想我準備好了。
我首先要做什麼?
客服工程師:
客服工程師:
第一步是要打開你的心。你找到心了嗎?
顧客:
找到了,但是有幾個其他的程式正在跑。
在他們跑的時候安裝「愛」沒有問題嗎?
客服工程師:
客服工程師:
哪些程式正在跑呢?
顧客:
顧客:
我看看,有「過去受的傷」、「低自尊」、
「妒忌」和「忿恨」正在跑。
客服工程師:
客服工程師:
沒有關係,「愛」將會讓「過去受的傷」在你目前的作業系統中逐漸消掉。
它可能會繼續留在你的記憶體裡面,但是不會影響其他程式。
「愛」自己有一個叫「高自尊」的組件將會覆寫蓋過「低自尊」。
不過,你必須完全關閉「妒忌」和「忿恨」。
這兩個程式將會使「愛」無法順利安裝。
你能夠關閉它們嗎?
顧客:
顧客:
我不知道如何關閉他們。你能夠告訴我嗎?
客服工程師:
客服工程師:
當然沒問題!在你的開始選單啟動「寬恕」。
重複這個動作直到「妒忌」與「忿恨」完全消除為止。
顧客:
顧客:
嗯,好了!「愛」自動開始安裝了。這樣正常嗎?
客服工程師:
客服工程師:
是的,不過你目前只有基本的程式,
你必需連接上其他的心才能升級。
顧客:
顧客:
啊!我已經有錯誤訊息了。
它說「程式無法在外部元件上運作」,我該怎麼辦呢?
客服工程師:
客服工程師:
不要緊。它是說「愛」程式是必須建立在內心來運作的,
說得簡單一點,
它意味著在你能夠愛別人之前,你得要先愛你自己。
顧客:
顧客:
那麼,我該怎麼做?
客服工程師:
客服工程師:
拉下自我接受的選單,點選下面這幾個檔案:
「自我寬恕」、「瞭解自我價值」和「知道自我的限制」。
顧客:
顧客:
嗯,好了!
客服工程師:
客服工程師:
現在把他們複製到「我的心」這個目錄底下。
系統會覆寫蓋掉任何有衝突的文件,然後開始修復程式裡的錯誤。
還有,你得要把「喋喋不休的自我批評」從所有的目錄底下刪掉,
然後清空資源回收筒,確保它絕對不會再出現。
顧客:
顧客:
好, 咦 ∼ ∼!
「我的心」目錄一直有新的檔案出現,
螢幕上出現笑容了
「平靜」與「踏實」在「我的心」上自動複製得滿滿的。
這樣正常嗎?
客服工程師:
客服工程師:
有的時候是會這樣的,有的時候得等上一會兒。
不過,所有的東西終究都會在合適的時間出現。
「愛」已經安裝好,也開始運作了。掛斷之前我還有一件事要告訴你,
「愛」是免費軟體,
記得一定要把它和它的各種組件分享給每個你碰到的人,
然後他們又會和其他人分享它,
最後,一些很棒的組件又會傳回到你這邊來。
2010/09/16
堅持夢想
好久沒發文章了~
看到這個人,又鼓勵了我...
也許你現在不如意,也許這類激勵的人或話已不再讓你相信世界這麼美好
但每件事都有價值...也許這段小文或這則故事會給你一點點動力,陪你渡過這段難熬的時光
Nick
如果你正打算放棄夢想,力克說:
告訴自己再多撐一天、一個禮拜、一個月,再多撐一年吧。你會發現,拒絕退場的結果令人驚訝。只有拒絕再試一次的人才會被打敗。
如果你心裡憂傷難過,力克說:
在悲慟的另一邊,有一條不同的出路,會讓你更堅強、更堅定,讓你找到自己想要的人生。我會為你點出這條路。
http://www.kingstone.com.tw/book/Book_Page.asp?kmcode=2012440030040&actid=epA007100916
看到這個人,又鼓勵了我...
也許你現在不如意,也許這類激勵的人或話已不再讓你相信世界這麼美好
但每件事都有價值...也許這段小文或這則故事會給你一點點動力,陪你渡過這段難熬的時光
Nick
如果你正打算放棄夢想,力克說:
告訴自己再多撐一天、一個禮拜、一個月,再多撐一年吧。你會發現,拒絕退場的結果令人驚訝。只有拒絕再試一次的人才會被打敗。
如果你心裡憂傷難過,力克說:
在悲慟的另一邊,有一條不同的出路,會讓你更堅強、更堅定,讓你找到自己想要的人生。我會為你點出這條路。
http://www.kingstone.com.tw/book/Book_Page.asp?kmcode=2012440030040&actid=epA007100916
2010/04/14
2010/03/17
《Top 10 Traits of a Rockstar Software Engineer》:明星程式設計師必備的十項特質
轉載自
http://blog.monkeypotion.net/reading/gameprogreading/top-ten-traits-of-a-rockstar-software-engineer
原文出處:Top 10 Traits of a Rockstar Software Engineer
這是一篇很有意思的短文。文中條列出不多不少、總共十項優秀軟體工程師所應具備的特質,並且很微妙地將軟體工程師比喻成搖滾明星。你是公司的主管嗎?按照這些特質尋找人才就對了!你是在學的學生嗎?按照這十項特質的方向努力學習就沒錯了!
在這十個特質中,我認為最關鍵、同時也是寫得最為貼切的莫過於第一點:Loves to Code。
1. 真心喜愛程式 (Loves to Code)
程式設計,是一種發自於內心、不求回報的付出 (Labor of Love)。如同任何的職業一樣,唯有具備滿滿的熱情,才能完成真正偉大的事情。一般人的誤解,常認為撰寫程式是一種機械化,或者純然科學化的行為。事實上,最棒的軟體工程師是工匠 (Craftman),能夠將能量、巧思以及創造力注入每一行的程式碼當中。優秀的工程師,知道程式碼區塊何時被琢磨至完美的程度,也知道在大型的系統中,這些區塊何時會如同謎題般巧妙地拼湊組合起來。熱愛撰寫程式的工程師所獲得的喜悅感,就像是作曲家完成一首交響樂所感受到的狂喜;而也正是這種興奮感以及成就感,使優秀的程式設計者們真心熱愛程式設計。
我個人非常、非常地喜歡以上整段的敘述。Labor of Love 是一個非常棒的形容詞,幾乎將我內心最深層的感動,完整無缺地表達了出來。是否有時會覺得累、覺得倦,或是覺得不知所做為何?不妨回頭找找自己最初的本心吧。
2. 把事情完成 (Gets Things Done)
有些技術人喜歡只說不做,而優秀的工程師是會真正去做事的人。有些人為了找出最佳的方法解決問題,會花費數週的時間設計出複雜且多餘的系統架構與函式庫;真正優秀的程式設計者應該問自己:什麼才是解決問題最容易的途徑?
請記得我們身處現實世界中,而非傳說中的理想境界,沒有所謂的完美解決方案存在。做為程式設計者,我們所應當盡力去做的事情,就是利用手邊既有的各種資源,以最有效率的方式完成交派的任務。如果不能夠把事情完成,再神妙的構思與設計都只能活在白日夢,以及那些不著邊際的大話裡。
3. 持續地重構程式 (Continuously Refactors Code)
撰寫程式,與雕刻非常相像。就像藝術家會不斷地改善自己的創作作品,程式設計者也會持續性地改造自己的程式碼,只為了以最好的方法達到需求的目標。
不要變成老舊程式碼的奴隸。當這些程式碼是由其他人撰寫的時候,你或許可以輕易地推卸責任或者怪罪於別人;但是在多數的情況下,當這些可惡的程式碼,是由你自己所撰寫的時候,才是最令自己捶胸頓足、欲哭無淚的時候。請拿出細心、耐心與愛心,勇敢地挑戰那些殘破不堪的老舊程式碼吧。
4. 使用設計模式 (Uses Design Patterns)
所謂的模式 (Pattern),是不斷重現在自然界與人類行為中的各種情境以及機制;而軟體工程也不例外。優秀的工程師能夠辨認出系統中所使用的設計模式,並且善加利用各種設計模式,同時也不受制於它們。
設計模式是前人智慧的結晶,幫助我們解決重複出現的類似設計難題,同時也成為程式設計者之間的溝通橋樑;但請記得,它們絕對不是程式設計中的萬靈藥:不要為了使用設計模式而使用設計模式;設計模式並不能使原來就很差勁的程式碼變得比較高明。
5. 撰寫測試 (Writes Tests)
有經驗的程式設計師,總是能夠瞭解撰寫測試程式碼的價值所在。測試的存在,能夠證明撰寫完成的系統運作無誤,並且確保過去曾經發生過的臭蟲問題不會再次重現。
為了進行測試而撰寫多餘的、與功能無關的程式碼?專案的進度怎麼辦?還有許多功能項目需要完成?所有的理由都是忽略撰寫測試程式碼的好理由。直到被臭蟲痛咬一口之前都是。花費心力在關鍵的程式碼區塊中撰寫測試,將能夠為你節省下難以計數的除錯時間;但很遺憾地,就我所知,目前台灣的業界並沒有撰寫測試程式碼的風氣,仍然亟待改進。
6. 善用既存程式碼 (Leverages Existing Code)
重新發明輪子一直都是軟體產業中的大問題。優秀的工程師會專注於三種不可或缺的復用 (Reuse) 層面:第一,使用同儕已經撰寫好並且經過測試的系統架構;第二,善用第三方團體所提供的函式庫;最後,則是利用某些網路服務所提供的便利功能。正確地善用既存的程式碼,才能使程式設計者專注於真正重要的任務上,也就是應用程式本身。
不要再寫第一千零一個 Linked List 類別了!不使用其他人撰寫的元件,堅持所有的功能都要由自己親手完成,究竟是自大、自爽、自衛還是自慰?請搞清楚自己的目的、專案的目標,以及核心關鍵的任務。
7. 專注於可用性 (Focuses on Usability)
好程式設計師專注於使用者。無論使用者是事業體或者個人,無論程式設計者為消費性軟體公司或者投資銀行工作,專注的焦點同樣在於可用性。優秀的程式設計者會非常努力地工作,只為了使系統更加簡單並且更為容易使用。他們無時無刻都會想到使用者,不會撰寫出錯綜複雜只有怪咖能夠理解的系統。
這是一項經常被忽略的重要特質。有時候,程式設計者寫得太開心太入迷,往往會忘了撰寫出來的程式,是需要交給其他使用者使用的東西。對於程式設計者來說,使用者的角色其實存在於許多不同的面向中,包括專案中的主程式、企畫設計者,以及遊戲成品的玩家,都是開發過程中需要「常在我心」的使用者。
8. 撰寫可維護的程式碼 (Writes Maintainable Code)
工程師界的小秘密:撰寫好程式碼或者壞程式碼,所花費的時間一樣多!紀律良好的工程師,會從第一行程式碼就開始思考維護性以及程式碼未來的演化。絕對沒有任何理由寫出醜惡的程式碼、橫跨數個頁面的函式,或者帶有稀奇古怪名稱的變數。每一字、每一句、每一行的程式碼,都應該恰如其份地展示出它們原先擁有的意涵。
不要總是認為以後、未來或者某一天,一定會有機會回頭改寫那些從前寫不好的程式碼,因而和自己做出妥協,寫出只是暫時堪用的程式碼。事實上,不遵守紀律的程式撰寫方式,不僅難以節省開發的時程,更無法順利推動專案的進度。重構的觀念與程序並不是偷懶的藉口,也不能拯救一個病入膏肓的系統架構。維持良好的寫作風格、命名規則以及嚴謹的設計架構,都是非常重要的基本守則。
9. 能夠以任何程式語言撰寫程式 (Can Code in Any Language)
優秀的程式設計師或許會有個人喜愛的程式語言,但從不固執迷信於其中。在很多的情境中,程式語言的重要性往往不如那些伴隨程式語言而來的函式庫。優秀的程式設計者能夠體認這項事實,並且願意去學習新的程式語言、新的函式庫以及新的方法以建造出更好的程式系統。
對於知識,要求知若渴;對於自己,要能虛懷若谷。保持開放的心態,對新鮮的事物保持孩子般的好奇心;而不是像個「大人」般被冷漠的態度與嘲諷的言語佔據內心,困守在象牙塔中而不自知。電腦科學與軟體程式設計領域的進展飛快無比,不止要從書本中獲取知識,更要盡可能地從網路、研討會,甚至身邊的同儕,學到那些經過真實歷練的經驗與智慧。
10. 瞭解基礎的電腦科學 (Knows Basic Computer Science)
優秀的工程師需要紮實的基礎。也許你沒有資訊科系的學位,但你不能不認識其中的基礎知識:資料結構與演算法。明星級的程式設計師不但需要瞭解,更要能夠內化這些基本知識,因為擁有這些知識基礎,將能夠幫助我們在軟體系統中做出正確的設計決定。
在 90% 的狀況中,我們不會需要使用複雜可怕的資料結構或令人畏懼的演算法,但是請至少先瞭解其中最基本首要的部分。什麼時候該用 vector?什麼時候可以用 list?如果使用 deque 的話有什麼差別?應該優先考慮執行效能,或者優先考慮記憶體空間,甚至是未來擴充的彈性?不同的資料結構與演算法之間,有沒有不同的取捨?招式是死的,用的人是活的,能夠順應局勢見招拆招,才是好本事!
以上,就是為了成為超級星光大道的 Super Star Programmer 所需具備的十項基本特質。看完上述十點特質之後,是不是覺得好像還少了點什麼?是不是有某個很重要的特質沒有被列入其中?還有什麼樣的態度、能力或特徵,是你認為做為一位優秀的程式設計者所不可或缺的呢?歡迎提出來討論喔~ ^_^
http://blog.monkeypotion.net/reading/gameprogreading/top-ten-traits-of-a-rockstar-software-engineer
原文出處:Top 10 Traits of a Rockstar Software Engineer
這是一篇很有意思的短文。文中條列出不多不少、總共十項優秀軟體工程師所應具備的特質,並且很微妙地將軟體工程師比喻成搖滾明星。你是公司的主管嗎?按照這些特質尋找人才就對了!你是在學的學生嗎?按照這十項特質的方向努力學習就沒錯了!
在這十個特質中,我認為最關鍵、同時也是寫得最為貼切的莫過於第一點:Loves to Code。
1. 真心喜愛程式 (Loves to Code)
程式設計,是一種發自於內心、不求回報的付出 (Labor of Love)。如同任何的職業一樣,唯有具備滿滿的熱情,才能完成真正偉大的事情。一般人的誤解,常認為撰寫程式是一種機械化,或者純然科學化的行為。事實上,最棒的軟體工程師是工匠 (Craftman),能夠將能量、巧思以及創造力注入每一行的程式碼當中。優秀的工程師,知道程式碼區塊何時被琢磨至完美的程度,也知道在大型的系統中,這些區塊何時會如同謎題般巧妙地拼湊組合起來。熱愛撰寫程式的工程師所獲得的喜悅感,就像是作曲家完成一首交響樂所感受到的狂喜;而也正是這種興奮感以及成就感,使優秀的程式設計者們真心熱愛程式設計。
我個人非常、非常地喜歡以上整段的敘述。Labor of Love 是一個非常棒的形容詞,幾乎將我內心最深層的感動,完整無缺地表達了出來。是否有時會覺得累、覺得倦,或是覺得不知所做為何?不妨回頭找找自己最初的本心吧。
2. 把事情完成 (Gets Things Done)
有些技術人喜歡只說不做,而優秀的工程師是會真正去做事的人。有些人為了找出最佳的方法解決問題,會花費數週的時間設計出複雜且多餘的系統架構與函式庫;真正優秀的程式設計者應該問自己:什麼才是解決問題最容易的途徑?
請記得我們身處現實世界中,而非傳說中的理想境界,沒有所謂的完美解決方案存在。做為程式設計者,我們所應當盡力去做的事情,就是利用手邊既有的各種資源,以最有效率的方式完成交派的任務。如果不能夠把事情完成,再神妙的構思與設計都只能活在白日夢,以及那些不著邊際的大話裡。
3. 持續地重構程式 (Continuously Refactors Code)
撰寫程式,與雕刻非常相像。就像藝術家會不斷地改善自己的創作作品,程式設計者也會持續性地改造自己的程式碼,只為了以最好的方法達到需求的目標。
不要變成老舊程式碼的奴隸。當這些程式碼是由其他人撰寫的時候,你或許可以輕易地推卸責任或者怪罪於別人;但是在多數的情況下,當這些可惡的程式碼,是由你自己所撰寫的時候,才是最令自己捶胸頓足、欲哭無淚的時候。請拿出細心、耐心與愛心,勇敢地挑戰那些殘破不堪的老舊程式碼吧。
4. 使用設計模式 (Uses Design Patterns)
所謂的模式 (Pattern),是不斷重現在自然界與人類行為中的各種情境以及機制;而軟體工程也不例外。優秀的工程師能夠辨認出系統中所使用的設計模式,並且善加利用各種設計模式,同時也不受制於它們。
設計模式是前人智慧的結晶,幫助我們解決重複出現的類似設計難題,同時也成為程式設計者之間的溝通橋樑;但請記得,它們絕對不是程式設計中的萬靈藥:不要為了使用設計模式而使用設計模式;設計模式並不能使原來就很差勁的程式碼變得比較高明。
5. 撰寫測試 (Writes Tests)
有經驗的程式設計師,總是能夠瞭解撰寫測試程式碼的價值所在。測試的存在,能夠證明撰寫完成的系統運作無誤,並且確保過去曾經發生過的臭蟲問題不會再次重現。
為了進行測試而撰寫多餘的、與功能無關的程式碼?專案的進度怎麼辦?還有許多功能項目需要完成?所有的理由都是忽略撰寫測試程式碼的好理由。直到被臭蟲痛咬一口之前都是。花費心力在關鍵的程式碼區塊中撰寫測試,將能夠為你節省下難以計數的除錯時間;但很遺憾地,就我所知,目前台灣的業界並沒有撰寫測試程式碼的風氣,仍然亟待改進。
6. 善用既存程式碼 (Leverages Existing Code)
重新發明輪子一直都是軟體產業中的大問題。優秀的工程師會專注於三種不可或缺的復用 (Reuse) 層面:第一,使用同儕已經撰寫好並且經過測試的系統架構;第二,善用第三方團體所提供的函式庫;最後,則是利用某些網路服務所提供的便利功能。正確地善用既存的程式碼,才能使程式設計者專注於真正重要的任務上,也就是應用程式本身。
不要再寫第一千零一個 Linked List 類別了!不使用其他人撰寫的元件,堅持所有的功能都要由自己親手完成,究竟是自大、自爽、自衛還是自慰?請搞清楚自己的目的、專案的目標,以及核心關鍵的任務。
7. 專注於可用性 (Focuses on Usability)
好程式設計師專注於使用者。無論使用者是事業體或者個人,無論程式設計者為消費性軟體公司或者投資銀行工作,專注的焦點同樣在於可用性。優秀的程式設計者會非常努力地工作,只為了使系統更加簡單並且更為容易使用。他們無時無刻都會想到使用者,不會撰寫出錯綜複雜只有怪咖能夠理解的系統。
這是一項經常被忽略的重要特質。有時候,程式設計者寫得太開心太入迷,往往會忘了撰寫出來的程式,是需要交給其他使用者使用的東西。對於程式設計者來說,使用者的角色其實存在於許多不同的面向中,包括專案中的主程式、企畫設計者,以及遊戲成品的玩家,都是開發過程中需要「常在我心」的使用者。
8. 撰寫可維護的程式碼 (Writes Maintainable Code)
工程師界的小秘密:撰寫好程式碼或者壞程式碼,所花費的時間一樣多!紀律良好的工程師,會從第一行程式碼就開始思考維護性以及程式碼未來的演化。絕對沒有任何理由寫出醜惡的程式碼、橫跨數個頁面的函式,或者帶有稀奇古怪名稱的變數。每一字、每一句、每一行的程式碼,都應該恰如其份地展示出它們原先擁有的意涵。
不要總是認為以後、未來或者某一天,一定會有機會回頭改寫那些從前寫不好的程式碼,因而和自己做出妥協,寫出只是暫時堪用的程式碼。事實上,不遵守紀律的程式撰寫方式,不僅難以節省開發的時程,更無法順利推動專案的進度。重構的觀念與程序並不是偷懶的藉口,也不能拯救一個病入膏肓的系統架構。維持良好的寫作風格、命名規則以及嚴謹的設計架構,都是非常重要的基本守則。
9. 能夠以任何程式語言撰寫程式 (Can Code in Any Language)
優秀的程式設計師或許會有個人喜愛的程式語言,但從不固執迷信於其中。在很多的情境中,程式語言的重要性往往不如那些伴隨程式語言而來的函式庫。優秀的程式設計者能夠體認這項事實,並且願意去學習新的程式語言、新的函式庫以及新的方法以建造出更好的程式系統。
對於知識,要求知若渴;對於自己,要能虛懷若谷。保持開放的心態,對新鮮的事物保持孩子般的好奇心;而不是像個「大人」般被冷漠的態度與嘲諷的言語佔據內心,困守在象牙塔中而不自知。電腦科學與軟體程式設計領域的進展飛快無比,不止要從書本中獲取知識,更要盡可能地從網路、研討會,甚至身邊的同儕,學到那些經過真實歷練的經驗與智慧。
10. 瞭解基礎的電腦科學 (Knows Basic Computer Science)
優秀的工程師需要紮實的基礎。也許你沒有資訊科系的學位,但你不能不認識其中的基礎知識:資料結構與演算法。明星級的程式設計師不但需要瞭解,更要能夠內化這些基本知識,因為擁有這些知識基礎,將能夠幫助我們在軟體系統中做出正確的設計決定。
在 90% 的狀況中,我們不會需要使用複雜可怕的資料結構或令人畏懼的演算法,但是請至少先瞭解其中最基本首要的部分。什麼時候該用 vector?什麼時候可以用 list?如果使用 deque 的話有什麼差別?應該優先考慮執行效能,或者優先考慮記憶體空間,甚至是未來擴充的彈性?不同的資料結構與演算法之間,有沒有不同的取捨?招式是死的,用的人是活的,能夠順應局勢見招拆招,才是好本事!
以上,就是為了成為超級星光大道的 Super Star Programmer 所需具備的十項基本特質。看完上述十點特質之後,是不是覺得好像還少了點什麼?是不是有某個很重要的特質沒有被列入其中?還有什麼樣的態度、能力或特徵,是你認為做為一位優秀的程式設計者所不可或缺的呢?歡迎提出來討論喔~ ^_^
2010/02/11
2010/01/22
心中有佛
有一天,蘇東坡去拜訪佛印,遇到佛印正在打坐。蘇東坡便在佛印的對面靜靜地坐了下來,也學佛印打坐。過了約一柱香的時間,兩人同時張開眼睛,結束打坐。由於剛打完坐,蘇東坡覺得渾身舒暢,滿心歡喜。他問佛印說:「你看我現在像什麼?」 佛印回答蘇東坡:「我看閣下像一尊佛。」蘇東坡聽了佛印說自己像尊佛,心中大樂。佛印也問蘇東坡說:「那閣下看我像什麼呢?」 蘇東坡心想:「平常老是被你佔便宜,今兒個可讓我逮到機會了。也換我來佔你的便宜。」 於是他回答佛印說:「我看你像一陀大便。」佛印臉上微微一笑,便又繼續打坐了。 蘇東坡佔了佛印的便宜之後,越想越樂。回到家便迫不急待地將事情的本末告訴了蘇小妹。 「哥,你被佛印佔便宜了,你知道嗎?」蘇小妹聽完蘇東坡的話之後,提醒蘇東坡。「為什麼?他看我像尊佛,我看他像陀大便,怎麼會是我被佔便宜呢?」 「佛書上說,心中有佛,則觀看萬物皆是佛。佛印因為心中有佛,所以看你像尊佛。那敢問大哥你,當時你的心中到底裝了什麼?」 |
訂閱:
文章 (Atom)