| 1 | 1/1 | 返回列表 |
| 查看: 475 | 回復: 0 | |||
[交流]
【討論】北大青鳥濟南新東方校區(qū):明星軟件工程師的10種特質
|
|
北大青鳥濟南新東方校區(qū):明星軟件工程師的10種特質 如今,每家公司都似乎成了科技公司。從軟件創(chuàng)業(yè)公司到投機性投資公司、制藥巨頭和媒體巨頭,它們都越來越多地加入到軟件業(yè)務行列。代碼質量不僅成為 了一個必需品,更成為了一個競爭優(yōu)勢。因為眾多公司圍繞軟件而競爭,開發(fā)軟件的人——軟件工程師正顯得越發(fā)重要。但是,你該如何發(fā)現(xiàn)那種百里挑一的程序員 呢?在本文中,我們簡明扼要地列出了明星開發(fā)人員的10種特質。 1. 熱愛編程 編程是一種為了滿足興趣而心甘情愿去做的勞動(Programming is a labor of love)。和其他任何職業(yè)一樣,唯有真正的熱情,才能完成真正的偉大事情。這里有個誤解,認為編寫代碼是機械化并純科學性的。事實上,最優(yōu)秀的軟件工程 師是工匠,他們能把能量、獨創(chuàng)性和創(chuàng)造力融入到每一行代碼中。偉大的工程師知道何時該把代碼雕琢至完美,知道何時把大型系統(tǒng)像拼圖一樣組裝到一塊。熱愛編 程的工程師從構建軟件中獲得滿足,就好比一位作曲家在完成一部交響樂后而欣喜若狂。正是興奮感和成就感,才造就了喜愛編程的明星工程師。 2. 完成事情 有很多技術人員只談論軟件而不編寫代碼(只說不做型)。而偉大軟件工程師會真正去編碼,這也是他們最為重要的品質之一。他們是實際做事的人。聰明人都 知道,解決問題的最佳途徑是直面問題,而不是花上數(shù)周來設計復雜又不必要的架構和函數(shù)庫。優(yōu)秀工程師應當會問:解決手頭問題的最簡單方法是什么?最近的軟 件開發(fā)方法——敏捷實踐,正是專注那個。它的思想是,把復雜的項目拆分為短小的迭代,每個迭代只關注一小部分的增量功能。因為每個迭代對應的編碼只需要數(shù) 周,所以功能易于管理并簡單。 3. 持續(xù)重構代碼 編碼很像雕刻。要像藝術家一樣不斷完善自己的作品,軟件工程師也要通過可能的最佳方式來持續(xù)完善自己的代碼,以達到目標。重新塑造代碼的原則稱為“重 構”,Martin Fowler在他的創(chuàng)意書中有相應描述。重構背后的原始思想是:改善代碼而不改變其功能,移動調整部分代碼以確保系統(tǒng)不腐,還有確保系統(tǒng)完成基于當前需求 該完成的事。持續(xù)重構可以讓開發(fā)人員解決另一個著名的問題——“黑盒遺留代碼”(這個問題基本無人想觸及)。 幾十年的軟件開發(fā)文化要求我們,不應該去改變正常工作的東西。然而,隨著時間推移,問題是我們成為了老舊代碼的奴隸,老舊代碼變得不穩(wěn)定和不兼容。而 重構正好可以改變這一狀況,因為我們是代碼的主人,不是它的奴隸。重構在工程師和代碼之間建立起持續(xù)的“對話”,并帶來所有權、確定性、自信心和系統(tǒng)的穩(wěn) 定性。 千萬不要成為老舊代碼的奴隸。如果代碼是他人所寫,或許你可以輕易推脫責任。但大多數(shù)時候,那些代碼是自己所寫,要拿得起放得下,舊代碼該埋時,就把它埋了! 4. 使用設計模式 自從所謂的“四人幫”(Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides)發(fā)表他們的著作——《設計模式》后,全世界的軟件工程師一直都在討論模式。在我們所處世界,不管是自然界還是人類行為,模式無處不 在。軟件工程自然也不例外。模式就是不斷重現(xiàn)的跨語言跨系統(tǒng)的場景和機制。一位優(yōu)秀的工程師通常能識別并利用模式,而不是受制于模式。工程師不應(強制) 讓系統(tǒng)去適應某種模式,而需發(fā)現(xiàn)在系統(tǒng)中使用模式的時機(恰當使用模式)。在使用模式來確保正確性時,應借鑒利用前人的智慧結晶,使用以前能正當解決特定 工程問題的方法。但請切記:模式不是萬靈藥;不要為了使用設計模式而使用設計模式。 5. 編寫測試 曾有段時間,軟件工程師們認為測試不值得他們去做。然而,如果你不做測試,你怎么能確保代碼就能正常工作呢?敏捷實踐中的“單元測試”已獲得普遍認 可,因為它注重編寫測試來反映代碼是否有效。隨著系統(tǒng)增大,測試也隨之增大。有經(jīng)驗的工程師知道并了解測試的價值所在,因為測試的目的就是創(chuàng)建一個能正常 運作的系統(tǒng)。優(yōu)秀的工程師通常會確保出現(xiàn)過一次的Bug不會再出現(xiàn)第二次。但優(yōu)秀的工程師也知道,不應該浪費時間寫那些瑣碎或多余的測試,而需要專注測試 各個組件中的核心部分。 6. 善用現(xiàn)有代碼 “重新發(fā)明輪子”一直是軟件行業(yè)中的巨大問題之一。從發(fā)明新語言到從寫函數(shù)庫,忽視并重寫那些已經(jīng)存在并已能工作的奇怪驅動力,已經(jīng)造成大量軟件開發(fā) 的失敗案例。一位明星工程師會專注三種基本類型的重用:第一,內部基礎架構的重用,相應代碼是他自己或同事編寫的;第二,使用第三方的函數(shù)庫,比如 JDK。最后,研究使用某些大型網(wǎng)絡服務商提供的相應服務,比如Amazon。總之,正確善用現(xiàn)有的代碼,使得軟件工程師能真正專注于最為重要的事情上 ——應用程序本身。 7. 專注可用性 優(yōu)秀的工程師通常都專注于用戶。無論用戶是企業(yè)還是個人,無論是為消費型的軟件公司還是投資銀行,需要關注的都是可用性。用戶如何和系統(tǒng)交互?系統(tǒng)是 否提供一種簡單、直接和平穩(wěn)的操作體驗?有種說法,因為軟件工程師是技術人員,他/她和“用戶如何與系統(tǒng)交互”沒有關聯(lián),這種說法嚴重錯誤。優(yōu)秀工程師努 力工作是為了什么?不正是讓系統(tǒng)簡單并易于使用。他們無時無刻都會想到用戶,不會嘗試去發(fā)明那些令人費解,只有極客才能理解并欣賞的東西。 有些時候,一些軟件工程師過于投入,反而忘記所編寫的程序/軟件,是供他人使用,不是做給自己看的“藝術品”。所以,在軟件開發(fā)過程中,一直要把“用戶”放在心中。 8. 編寫可維護的代碼 軟件開發(fā)界的另外一個小秘密是:編寫優(yōu)秀代碼和糟糕代碼所花費的時間是一樣多。一位訓練有素的工程師,他/她會從第一行代碼開始就考慮可維護性和代碼 的演化。沒有任何理由編寫“丑陋”的代碼、長達數(shù)頁的函數(shù),或是稀奇古怪的變量名。優(yōu)秀的工程師編寫代碼會遵循命名慣例,代碼編寫緊湊、簡單和不過度炫耀 聰明。代碼的每一行,都應恰如其分地展現(xiàn)出其原有目的。在給不便理解的代碼(塊)合理注釋時,別忘了命名規(guī)則。清晰明了的函數(shù)名和變量名可以讓代碼不言而 明。 在編碼時,有些程序員會有這種心態(tài):過一會兒再來修改或完善某部分代碼或某條語句。但誰知這一“過一會”竟然是“一天”、“一周”、“一個月”或“一 年”,甚至以后根本就沒機會再回頭修改。所以,盡量別妥協(xié)寫出暫時堪用的代碼。否則,不僅不會節(jié)省開發(fā)時間,也可以阻礙整個進程。當然也不利于后續(xù)維護人 員的工作。 9. 能用任何語言編程 優(yōu)秀的軟件工程師活血有自己一門特別鐘愛的編程語言,但從不會執(zhí)迷于當中。如今已有很多優(yōu)秀的編程語言,也就是說,如果你只會使用其中一門語言,說明 你缺乏多樣性。你可以用Java、C#或C++編寫任何現(xiàn)代軟件,可以用PHP、Perl或Ruby編寫任何網(wǎng)站的后臺。簡而言之,編程所用語言,遠遠沒 有語言相應的函數(shù)庫重要。優(yōu)秀的工程師能夠認知到這一點,并愿意去學習新語言、新函數(shù)庫和構建系統(tǒng)的新方法。 10. 知曉基本的計算機科學知識 最后,但肯定不是優(yōu)秀工程師最不重要的特質就是:扎實的基礎。優(yōu)秀的工程師或許并沒有計算機科學的學位,但他/她必須知道基礎——數(shù)據(jù)結構和算法。如 果不知道哈希表,或者不知道鏈表和數(shù)組之間的差別,你如何構建一款大型的軟件?。這些都是每位從事軟件開發(fā)的開發(fā)人員應當知道的。算法也同樣重要,從二分 查找到各種排序,到圖形遍歷,一位明星工程師必須知道并內在消化這些基礎東西。因為這些基礎就是你在構建任何現(xiàn)代軟件中做抉擇時的必備品。 結束語 以上就是區(qū)分偉大軟件工程師的諸多特質。其中討論的“熱情”,是非常重要的。代碼重用、設計模式、基礎數(shù)據(jù)結構和算法都是必須知道的,而敏捷實踐中的重構和單元測試則有助于工程師應對復雜的軟件。尤為重要的是,明星工程師相信簡潔和常識。也正是這些信念,幫助他們成功構建當今世界所需的看似不可能又錯綜復雜的系統(tǒng)。 本文來自“北大青鳥濟南新東方(山東大學)校區(qū)”網(wǎng)站 http://www.0531accp.com |
找到一些相關的精華帖子,希望有用哦~
| 1 | 1/1 | 返回列表 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 一志愿華理,數(shù)一英一285求A區(qū)調劑 +4 | AZMK 2026-03-25 | 6/300 |
|
|---|---|---|---|---|
|
[考研] 275求調劑 +9 | Micky11223 2026-03-25 | 11/550 |
|
|
[考研] 0856求調劑 +8 | zhn03 2026-03-25 | 9/450 |
|
|
[材料工程] 一志愿C9材料與化工專業(yè)總分300求調劑 +5 | 曼111 2026-03-24 | 6/300 |
|
|
[考研] 296求調劑 +5 | www_q 2026-03-20 | 5/250 |
|
|
[考研] 招08考數(shù)學 +8 | laoshidan 2026-03-20 | 17/850 |
|
|
[考研] 【2026考研調劑】制藥工程 284分 求相關專業(yè)調劑名額 +4 | 袁奐奐 2026-03-25 | 8/400 |
|
|
[考研] 284求調劑 +15 | Zhao anqi 2026-03-22 | 15/750 |
|
|
[考研] 286求調劑 +11 | Faune 2026-03-21 | 11/550 |
|
|
[考研] 07化學280分求調劑 +7 | 722865 2026-03-23 | 7/350 |
|
|
[考研] 306求0703調劑一志愿華中師范 +10 | 紙魚ly 2026-03-21 | 11/550 |
|
|
[考研] 【雙一流院校新能源、環(huán)境材料,材料加工與模擬招收大量調劑】 +4 | Higraduate 2026-03-22 | 7/350 |
|
|
[考研] 276求調劑。有半年電池和半年高分子實習經(jīng)歷 +9 | 材料學257求調劑 2026-03-23 | 10/500 |
|
|
[考研] 303求調劑 +5 | 安憶靈 2026-03-22 | 6/300 |
|
|
[考研] 279求調劑 +5 | 紅衣隱官 2026-03-21 | 5/250 |
|
|
[考研] 材料與化工(0856)304求 B區(qū) 調劑 +3 | 邱gl 2026-03-21 | 3/150 |
|
|
[考研] 一志愿西南交通 專碩 材料355 本科雙非 求調劑 +5 | 西南交通專材355 2026-03-19 | 5/250 |
|
|
[考研] 295材料求調劑,一志愿武漢理工085601專碩 +5 | Charlieyq 2026-03-19 | 5/250 |
|
|
[考研] 261求B區(qū)調劑,科研經(jīng)歷豐富 +3 | 牛奶很忙 2026-03-20 | 4/200 |
|
|
[考研] 求調劑 +3 | eation27 2026-03-20 | 3/150 |
|