我們又回到書本上了,今天雖是鐵人賽最後一天,但並不是本系列的終結篇。
(還有一篇,因為人家還想玩大富翁...XD)
程式設計師該有什麼特質?或者說,當程式設計師的人有什麼特質?
特質因人而異,每個人的習慣與成長背景不同,所處環境不同,都會表現出不一樣的特質。
所以我們來談談,程式設計師該有的特質...「宅」(誤)
為什麼 Code Complete 這本談程式設計專業領域的書,要談這種跟程式開發無關的議題?
理論與實務的差異在於,理論可以講得天花亂墜,頭頭是道;但,理論的東西,實務面並不一定能夠運作的像理論所勾勒出來的樣子。因為實務面的運作,其最終執行的是--人。人是很複雜有情緒的個體,不像機器般的依指令去做事情。想成為一個好的程式設計師,除了擁有好的技巧外,學習怎麼自我管理與思考,也是一件很重要的事情。
.謙卑
曾經讀過一篇文章,說程式設計師就好像扮演上帝的角色一樣,在搜尋相關文章的時候,發現這篇洪朝貴教授寫的文章:
「數位時代, 能夠寫程式的我們, 就是權力的擁有者。」這是多麼動人的一句話!($_$)
但現實終究不是如此。當然,我們沒有要討論洪教授的文章及裡面的內容。很多不會寫程式的人,常常很羨慕會寫程式的人,不怕沒飯吃;而會寫程式的人,又常常抱怨,這寫程式的飯還真難吃,永遠有解決不完的問題!(而且動嘴的人比動手的人領得更多...XD)
這是事實!(我不是說薪水,而是寫程式這條路)人的腦容量本來就有限制,不會因為一個人的智力愈高,就愈能完成所有的事情。最優秀的程式設計師,是那些能夠體認自己能力不是無限的人,而想扮演上帝的程式設計師,往往就是最差勁的那一個。
維持清楚的頭腦,降低心智的負擔(借助正確的觀念與開發方法),才是走這條路的本錢。
.求知慾
科技日新月異,說真的「長江後浪推前浪,前浪死在沙灘上」。能夠活下來的,沒有擁有特異功能,那就一定不是人...XD
當年在外島當兵的我,資訊的恐慌是一直沒停過的(從學校畢業,這一年十個月的生涯,看到的電腦,就是一台連上的文書兵用PEII來打公文用的,比起在學校實驗室的 PC(Windows 3.1)、Machintosh、SUN Sparc 真的是讓人搖頭),藉由「資訊與電腦雜誌」,不斷的補足我該有的知識。退伍後,第一件事情就是跑去買一台 486 的電腦,拿著 Windows 95 安裝片,不厭其煩的,灌了又 Format,Format 了又灌,只為搞清楚,可以用什麼方式讓安裝變得更順暢...XD
程式設計師,千萬不要排斥學習新的東西(美其名為新,很多也是舊酒裝新瓶),沒時間學習?每天忙得要死,哪還有時間看新的東西?(這絕對是藉口!忙錄不見得工作效率高,可能是沒有找到有效率的做事方法)
訂閱電子報,科技資訊的新知每天送到你的信箱,與其去看一些沒營養的信件(當然八卦某種程度也是一種精神食糧),倒不如花個十幾二十分鐘(瀏覽標題也好),讓自己隨時掌握新的動向。
真的沒辦法?也許換工作,也是讓自己學習的一種好方法!
選擇一個適合的工作環境,可以運用新的技術,那也是強迫自己學習的一種方式(不過在台灣的環境,這點倒是不容易,大部分還是要靠運氣)。
.溝通與合作
現今系統的開發已不是一個人可以從頭做到尾,包山包海的年代,你要面對使用者或者是你所屬的團隊,開放心胸的溝通,絕對比閉門造車要來得好許多。以我個人的經驗,雖然可能程式面的部份,還是得自己獨立完成,但大部分的操作界面與 Know How 還是來自 User 的回饋。良好的溝通,充分的合作,有時候 User 還會提供給你意想不到的簡單的作法,很多問題都迎刃而解,尤其是在這種資訊發達的年代,電腦技能不見得 User 就會比你差。
.經驗,小心害了你
經驗絕對是寫程式的必備要件之一。要有經驗就要多練習,多參與專案或多看看成功專案的開發。但也千萬別自信過頭,或粗心大意。還在想要舉什麼案例,來說明經驗小心害了你。結果昨天的 PO 文馬上就出包,而且被抓包(要感謝邦友熱心的指正)。這就是太過大意而輕忽掉的結果(將以前的程式碼 Copy & Paste,漏 Copy 一段),以為一小段程式不會有什麼問題,結果連最基本的測試都沒做,即發文。當然,結果一定是錯誤百出的。這也是一個錯誤的示範(也違背了之前文章所提的重點:測試永遠不嫌多)。
.誠實為上策
如果錯了,那麼就勇於認錯吧!(這話好像在說給政客聽的,還有傷害球迷的球星)就像上述犯的錯誤,就勇於承認,最重要的是馬上改正(也別將道歉變成一種習慣...XD)。如果真的不知道錯誤在哪裡(別要面子的充作專家),那也誠實的告訴你的使用者,也許他會給你解決之道。最糟糕的是,明知到有錯,卻還故意隱瞞,不去找出問題,那麼發生問題之後,所要的成本將無法估計。
.別讓惰性成為慣性
寫程式寫久了,難免惰性就來了,就是不想寫,會找很多藉口來搪塞,可以迅速完成的工作,遲遲不願意動手,養成習慣了就很難改過來,在這種競爭激烈的環境中,是會被淘汰的,不可不慎。還有就是要養成好的習慣,常常去想要如何提昇程式的效率(在撰寫程式的過程,要無時無刻問自己,這樣是不是最好的方式),Bill Gates 曾說:「任何一位程式設計師會不會成材在踏入程式設計行業的前幾年就可以看得出來了,從此之後就幾乎定型。」(引用書中的文字)。所以,要時時警惕,不要懈怠了。
.堅持
我想強調的不是堅持程式設計這份工作,或寫程式時候的專業的堅持。而是對於寫程式這件事情的熱忱與堅持(或說持續保持)。
我印象很深刻,是當年在做法院專案的時候,有一次到台中地院的資訊室出差,遇到一位資訊室主任,大概 60 歲左右。我一去就拉著我要我看一段程式,是 GWBasic 的程式,我一看當場傻眼(那時候已經找不到這種程式語言了),他說是奇門盾甲的程式,他在 BBS 站上跟人家討教寫出來的,然後 Demo 給我看(說真的,那時候我可能還寫不出來咧)。真的是只要你有這份熱情,我想寫程式一定是一件很快樂的事(當然工作上趕進度一定是痛苦的事)。
Code Complete 這本書,1993 年出版,至今已經 16 年。主要偏重的是在 Software Construction 的觀念與方法,並不是在教如何寫程式的。在軟體工程與軟體專案管理方面的書,日新月異,很多都寫得比他豐富,也更有新的作法。但他比較好的地方是很完整將基本觀念一一的介紹與舉例,淺顯易懂。不需要具備相當程度的知識才能看懂(例如 Design Pattern,到現在我還是沒有把它看完)。中譯本是旗標出版的,好像已經絕版(學貫有第二版的中譯本),不過圖書館都借得到就是。
我很幸運的,在剛踏入職場的時候,遇到一位很好的 Leader,他介紹我們看這本書,也教了我很多寫程式的觀念。而他大學時代就開始幫人家寫程式,大學畢業後就與同學合開公司,我進去的時候,還是一間 15 人的小公司,到現在已經成長到蠻大的規模,而他仍然堅持著寫程式的興趣,而且嘉惠更多的人,有興趣可以到他的 Blog 參觀。
最後,僅以這一段音樂,獻給所有在工作崗位上努力、勤奮、堅持的鐵人們!
Chariots of Fire ( 火戰車 )
<object height="344" width="425"><param name="movie" value="http://www.youtube.com/v/L-7Vu7cqB20&hl=zh_TW&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed allowfullscreen="true" allowscriptaccess="always" height="344" src="http://www.youtube.com/v/L-7Vu7cqB20&hl=zh_TW&fs=1&" type="application/x-shockwave-flash" width="425"></embed></object>
1.經驗:這一定要有的,沒有什麼找到工作?現在104隨便找都要大學,相關工作2年,又開出一推你要會的東西.
2.謙卑:這我認同.但什麼是謙卑?過於或小於自信都不行.但謙卑都不是自己認定的.而是要能讓老闆認定.
3.求知慾:算了!我一直以為我的知識,技術是最先進的.但我履歷上寫這些人家看不懂的技術,根本沒人看得懂.像我用WPF二年.這個名詞在軟體開發界沒幾個董,何況在其他的行業哪?就我目前所知台灣軟體界有在徵WPF軟設師只有2家.其他的MS最新技術如WCF,WF...台灣還沒人去導入.我去面試的公司程式都是用非常傳統,7,8年前的方式開發.所以沒什麼用.
4.溝通與合作:這也是很抽象的.企業主要找一個什麼都會的,獨立,自主的.然後再叫你要會溝通與合作.最近去面試一家公司.起初聊的很好.最後告訴我,你很強,你很優秀,十分的優秀,非常的優秀...但,我的環境你可能不適合,我聽了只是整頭霧水.
5.別讓惰性成習慣:當你找工作半年,看看會不會有惰性.以前每天在學新的.面試專業考試都100分找不到工作.現在叫我去看Code.算了.
6.堅持:成功是堅持.失敗也是堅持.
7.誠實為上策:誠實是狗屎.不管是公司,程設師現在哪有幾個是誠實?最近幾家公司,我認為會上的,都是我太誠實了.最後都不誠實的人上.結果都不到一個月那個職缺又出來了.不誠實被Free了.很多人說自傳是廣告,沒人查真實.
恭喜 jamesjan 大大鐵人鍊成
放煙火祝賀先
煙煙煙煙煙煙煙煙煙煙煙煙煙煙煙
煙煙煙煙煙煙煙煙煙煙煙煙煙
煙 煙
煙 煙
煙 煙
煙煙煙煙煙煙煙煙煙煙煙煙煙煙煙煙
煙煙
煙
煙
火火
火火
火火
火火 火火 火火
火火 火火火 火火
火 火火 火火 火
火 火
火 火
火 火
火 火
火 火
火 火
現在放煙火都要很小心...尤其不能再第七局...XD
煙火:XD...趴著也中槍
1.謙卑
2.求知慾
3.溝通與合作
4.經驗,小心害了你
5.誠實為上策
6.別讓惰性成為慣性
7.堅持
剛入行的幾年我有七項全能
現在大概只剩3跟4了.....Orz
我全部俱備,但前面都要加一個字 pretending...XD
Orz 看來看去, 我只有 1 而已.... T_T
一個都沒有~~(大驚)
我只有一部分---惰性.
身有同感 pantc328 大大
我只能說你太強了,強到別人看不懂你的強,以為不好控制,會搶了別人得好位置,你很強只是運氣不好...
跟你一樣心有戚戚焉的人
有機會一起交流一下技術吧 我專長是微軟跟linux,酷愛寫程式
感謝你的加油.
我也覺得他們認為我是難駕馭的人.
互相加油一下.
壞習慣養成了,真的很難改,就如同我養成了晚睡加上看影片一定要吃東西的習慣,結果就是:
1.黑眼圈
2.沒精神
3.肥......................
想改過,但是耳邊惡魔說的話總是比較有說服力............
一起加油吧!共勉之!
這個簡單.
你的電視,DVD,電冰箱過戶給我.
然後睡前一杯高粱.
最後跟我去騎車.
pantc328提到:
現在叫我去看
酒後騎車不好吧~~~
sula3065408提到:
酒後騎車不好吧~~~
這裡的車是腳踏車吧!