[情報] 明星程式設計師必備的十項特質消失

看板KUAS_CSIE作者時間14年前 (2011/07/01 12:37), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
http://goo.gl/P4Acq 《Top 10 Traits of a Rockstar Software Engineer》:明星程式設計師必備的十項特質 by 猴子靈藥 [Monkey Potion] 這是一篇很有意思的短文。文中條列出不多不少、總共十項優秀軟體工程師所應具備的特 質,並且很微妙地將軟體工程師比喻成搖滾明星。你是公司的主管嗎?按照這些特質尋找 人才就對了!你是在學的學生嗎?按照這十項特質的方向努力學習就沒錯了! 在這十個特質中,我認為最關鍵、同時也是寫得最為貼切的莫過於第一點:Loves to Code。 1. 真心喜愛程式 (Loves to Code) 程式設計,是一種發自於內心、不求回報的付出 (Labor of Love)。如同任何的職業一樣 ,唯有具備滿滿的熱情,才能完成真正偉大的事情。一般人的誤解,常認為撰寫程式是一 種機械化,或者純然科學化的行為。事實上,最棒的軟體工程師是工匠 (Craftman),能 夠將能量、巧思以及創造力注入每一行的程式碼當中。優秀的工程師,知道程式碼區塊何 時被琢磨至完美的程度,也知道在大型的系統中,這些區塊何時會如同謎題般巧妙地拼湊 組合起來。熱愛撰寫程式的工程師所獲得的喜悅感,就像是作曲家完成一首交響樂所感受 到的狂喜;而也正是這種興奮感以及成就感,使優秀的程式設計者們真心熱愛程式設計。 2. 把事情完成 (Gets Things Done) 有些技術人喜歡只說不做,而優秀的工程師是會真正去做事的人。有些人為了找出最佳的 方法解決問題,會花費數週的時間設計出複雜且多餘的系統架構與函式庫;真正優秀的程 式設計者應該問自己:什麼才是解決問題最容易的途徑? 3. 持續地重構程式 (Continuously Refactors Code) 撰寫程式,與雕刻非常相像。就像藝術家會不斷地改善自己的創作作品,程式設計者也會 持續性地改造自己的程式碼,只為了以最好的方法達到需求的目標。 4. 使用設計模式 (Uses Design Patterns) 所謂的模式 (Pattern),是不斷重現在自然界與人類行為中的各種情境以及機制;而軟體 工程也不例外。優秀的工程師能夠辨認出系統中所使用的設計模式,並且善加利用各種設 計模式,同時也不受制於它們。 5. 撰寫測試 (Writes Tests) 有經驗的程式設計師,總是能夠瞭解撰寫測試程式碼的價值所在。測試的存在,能夠證明 撰寫完成的系統運作無誤,並且確保過去曾經發生過的臭蟲問題不會再次重現。 6. 善用既存程式碼 (Leverages Existing Code) 重新發明輪子一直都是軟體產業中的大問題。優秀的工程師會專注於三種不可或缺的復用 (Reuse) 層面:第一,使用同儕已經撰寫好並且經過測試的系統架構;第二,善用第三 方團體所提供的函式庫;最後,則是利用某些網路服務所提供的便利功能。正確地善用既 存的程式碼,才能使程式設計者專注於真正重要的任務上,也就是應用程式本身。 7. 專注於可用性 (Focuses on Usability) 好程式設計師專注於使用者。無論使用者是事業體或者個人,無論程式設計者為消費性軟 體公司或者投資銀行工作,專注的焦點同樣在於可用性。優秀的程式設計者會非常努力地 工作,只為了使系統更加簡單並且更為容易使用。他們無時無刻都會想到使用者,不會撰 寫出錯綜複雜只有怪咖能夠理解的系統。 8. 撰寫可維護的程式碼 (Writes Maintainable Code) 工程師界的小秘密:撰寫好程式碼或者壞程式碼,所花費的時間一樣多!紀律良好的工程 師,會從第一行程式碼就開始思考維護性以及程式碼未來的演化。絕對沒有任何理由寫出 醜惡的程式碼、橫跨數個頁面的函式,或者帶有稀奇古怪名稱的變數。每一字、每一句、 每一行的程式碼,都應該恰如其份地展示出它們原先擁有的意涵。 9. 能夠以任何程式語言撰寫程式 (Can Code in Any Language) 優秀的程式設計師或許會有個人喜愛的程式語言,但從不固執迷信於其中。在很多的情境 中,程式語言的重要性往往不如那些伴隨程式語言而來的函式庫。優秀的程式設計者能夠 體認這項事實,並且願意去學習新的程式語言、新的函式庫以及新的方法以建造出更好的 程式系統。 10. 瞭解基礎的電腦科學 (Knows Basic Computer Science) 優秀的工程師需要紮實的基礎。也許你沒有資訊科系的學位,但你不能不認識其中的基礎 知識:資料結構與演算法。明星級的程式設計師不但需要瞭解,更要能夠內化這些基本知 識,因為擁有這些知識基礎,將能夠幫助我們在軟體系統中做出正確的設計決定。 以上,就是為了成為超級星光大道的 Super Star Programmer 所需具備的十項基本特質 。看完上述十點特質之後,是不是覺得好像還少了點什麼?是不是有某個很重要的特質沒 有被列入其中?還有什麼樣的態度、能力或特徵,是你認為做為一位優秀的程式設計者所 不可或缺的呢?歡迎提出來討論喔~ ^_^ 半路 on May 3rd, 2008 at 2:04 pm 自嗨,不是,自回一下。 XD 除了作者在原文中所提到的十點必備特質以外,另外我認為對於程式設計者來說最重要的 能力,應該就是溝通技巧了。 球不是一個人可以踢的,遊戲更不是一個人可以做的。在大多數的情況中,不論我們面對 的是企畫、美術或者程式同儕,都會需要在開發的過程中不斷地溝通、協調、確認與再確 認各種事項。這也是人與人之間相互合作的基本能力。 有時需要想出令雙方都能滿意的作法,有時需要做出妥協與退讓,而有時也需要正面的衝 突與碰撞。沒意見不代表就是好意見;事實上,有些時候衝突是必要的。但是要如何拿捏 其中進退的分寸,就是所謂溝通的藝術了。 另外,Labor of Love 一詞其實有個非常貼切的中文翻譯: 「就是因為愛啊啊啊啊啊~~~!」(閃亮) 例句:Programming is a labor of love. 翻譯:程式設計就是因為愛啊啊啊啊啊~~~!(閃亮) 這樣瞭解了嗎? XD -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.133.76.30
文章代碼(AID): #1E3Ky4tw (KUAS_CSIE)