0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

你與明星軟件開(kāi)發(fā)工程師只差這10個(gè)特質(zhì)

工程師人生 ? 來(lái)源:網(wǎng)絡(luò)整理 ? 作者:工程師吳畏 ? 2018-08-13 15:31 ? 次閱讀

如今,每家公司都似乎成了科技公司。從軟件創(chuàng)業(yè)公司到投機(jī)性投資公司、制藥巨頭和媒體巨頭,它們都越來(lái)越多地加入到軟件業(yè)務(wù)行列。

代碼質(zhì)量不僅成為了一個(gè)必需品,更成為了一個(gè)競(jìng)爭(zhēng)優(yōu)勢(shì)。因?yàn)楸姸喙緡@軟件而競(jìng)爭(zhēng),開(kāi)發(fā)軟件的人——軟件工程師正顯得越發(fā)重要。但是,你該如何發(fā)現(xiàn)那種百里挑一的程序員呢?在本文中,我們簡(jiǎn)明扼要地列出了明星開(kāi)發(fā)人員的10種特質(zhì)。

1. 熱愛(ài)編程

2. 完成事情

3. 持續(xù)重構(gòu)代碼

4. 使用設(shè)計(jì)模式

5. 編寫測(cè)試

6. 善用現(xiàn)有代碼

7. 專注可用性

8. 編寫可維護(hù)的代碼

9. 能用任何語(yǔ)言編程

10. 知曉基本的計(jì)算機(jī)科學(xué)

1. 熱愛(ài)編程

編程是一種為了滿足興趣而心甘情愿去做的勞動(dòng)(Programming is a labor of love)。和其他任何職業(yè)一樣,唯有真正的熱情,才能完成真正的偉大事情。這里有個(gè)誤解,認(rèn)為編寫代碼是機(jī)械化并純科學(xué)性的。事實(shí)上,最優(yōu)秀的軟件工程師是工匠,他們能把能量、獨(dú)創(chuàng)性和創(chuàng)造力融入到每一行代碼中。偉大的工程師知道何時(shí)該把代碼雕琢至完美,知道何時(shí)把大型系統(tǒng)像拼圖一樣組裝到一塊。熱愛(ài)編程的工程師從構(gòu)建軟件中獲得滿足,就好比一位作曲家在完成一部交響樂(lè)后而欣喜若狂。正是興奮感和成就感,才造就了喜愛(ài)編程的明星工程師。

2. 完成事情

有很多技術(shù)人員只談?wù)撥浖痪帉懘a(只說(shuō)不做型)。而偉大軟件工程師會(huì)真正去編碼,這也是他們最為重要的品質(zhì)之一。他們是實(shí)際做事的人。聰明人都知道,解決問(wèn)題的最佳途徑是直面問(wèn)題,而不是花上數(shù)周來(lái)設(shè)計(jì)復(fù)雜又不必要的架構(gòu)和函數(shù)庫(kù)。優(yōu)秀工程師應(yīng)當(dāng)會(huì)問(wèn):解決手頭問(wèn)題的最簡(jiǎn)單方法是什么?最近的軟件開(kāi)發(fā)方法——敏捷實(shí)踐,正是專注那個(gè)。它的思想是,把復(fù)雜的項(xiàng)目拆分為短小的迭代,每個(gè)迭代只關(guān)注一小部分的增量功能。因?yàn)槊總€(gè)迭代對(duì)應(yīng)的編碼只需要數(shù)周,所以功能易于管理并簡(jiǎn)單。

3. 持續(xù)重構(gòu)代碼

編碼很像雕刻。要像藝術(shù)家一樣不斷完善自己的作品,軟件工程師也要通過(guò)可能的最佳方式來(lái)持續(xù)完善自己的代碼,以達(dá)到目標(biāo)。重新塑造代碼的原則稱為“重構(gòu)”,Martin Fowler在他的創(chuàng)意書(shū)中有相應(yīng)描述。重構(gòu)背后的原始思想是:改善代碼而不改變其功能,移動(dòng)調(diào)整部分代碼以確保系統(tǒng)不腐,還有確保系統(tǒng)完成基于當(dāng)前需求該完成的事。持續(xù)重構(gòu)可以讓開(kāi)發(fā)人員解決另一個(gè)著名的問(wèn)題——“黑盒遺留代碼”(這個(gè)問(wèn)題基本無(wú)人想觸及)。

幾十年的軟件開(kāi)發(fā)文化要求我們,不應(yīng)該去改變正常工作的東西。然而,隨著時(shí)間推移,問(wèn)題是我們成為了老舊代碼的奴隸,老舊代碼變得不穩(wěn)定和不兼容。而重構(gòu)正好可以改變這一狀況,因?yàn)槲覀兪谴a的主人,不是它的奴隸。重構(gòu)在工程師和代碼之間建立起持續(xù)的“對(duì)話”,并帶來(lái)所有權(quán)、確定性、自信心和系統(tǒng)的穩(wěn)定性。

千萬(wàn)不要成為老舊代碼的奴隸。如果代碼是他人所寫,或許你可以輕易推脫責(zé)任。但大多數(shù)時(shí)候,那些代碼是自己所寫,要拿得起放得下,舊代碼該埋時(shí),就把它埋了!

4. 使用設(shè)計(jì)模式

自從所謂的“四人幫”(Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides)發(fā)表他們的著作——《設(shè)計(jì)模式》后,全世界的軟件工程師一直都在討論模式。在我們所處世界,不管是自然界還是人類行為,模式無(wú)處不在。軟件工程自然也不例外。模式就是不斷重現(xiàn)的跨語(yǔ)言跨系統(tǒng)的場(chǎng)景和機(jī)制。一位優(yōu)秀的工程師通常能識(shí)別并利用模式,而不是受制于模式。工程師不應(yīng)(強(qiáng)制)讓系統(tǒng)去適應(yīng)某種模式,而需發(fā)現(xiàn)在系統(tǒng)中使用模式的時(shí)機(jī)(恰當(dāng)使用模式)。在使用模式來(lái)確保正確性時(shí),應(yīng)借鑒利用前人的智慧結(jié)晶,使用以前能正當(dāng)解決特定工程問(wèn)題的方法。但請(qǐng)切記:模式不是萬(wàn)靈藥;不要為了使用設(shè)計(jì)模式而使用設(shè)計(jì)模式。

5. 編寫測(cè)試

曾有段時(shí)間,軟件工程師們認(rèn)為測(cè)試不值得他們?nèi)プ?。然而,如果你不做測(cè)試,你怎么能確保代碼就能正常工作呢?敏捷實(shí)踐中的“單元測(cè)試”已獲得普遍認(rèn)可,因?yàn)樗⒅鼐帉憸y(cè)試來(lái)反映代碼是否有效。隨著系統(tǒng)增大,測(cè)試也隨之增大。有經(jīng)驗(yàn)的工程師知道并了解測(cè)試的價(jià)值所在,因?yàn)闇y(cè)試的目的就是創(chuàng)建一個(gè)能正常運(yùn)作的系統(tǒng)。優(yōu)秀的工程師通常會(huì)確保出現(xiàn)過(guò)一次的Bug不會(huì)再出現(xiàn)第二次。但優(yōu)秀的工程師也知道,不應(yīng)該浪費(fèi)時(shí)間寫那些瑣碎或多余的測(cè)試,而需要專注測(cè)試各個(gè)組件中的核心部分。

6. 善用現(xiàn)有代碼

“重新發(fā)明輪子”一直是軟件行業(yè)中的巨大問(wèn)題之一。從發(fā)明新語(yǔ)言到從寫函數(shù)庫(kù),忽視并重寫那些已經(jīng)存在并已能工作的奇怪驅(qū)動(dòng)力,已經(jīng)造成大量軟件開(kāi)發(fā)的失敗案例。一位明星工程師會(huì)專注三種基本類型的重用:第一,內(nèi)部基礎(chǔ)架構(gòu)的重用,相應(yīng)代碼是他自己或同事編寫的;第二,使用第三方的函數(shù)庫(kù),比如JDK。最后,研究使用某些大型網(wǎng)絡(luò)服務(wù)商提供的相應(yīng)服務(wù),比如Amazon。總之,正確善用現(xiàn)有的代碼,使得軟件工程師能真正專注于最為重要的事情上——應(yīng)用程序本身。

7. 專注可用性

優(yōu)秀的工程師通常都專注于用戶。無(wú)論用戶是企業(yè)還是個(gè)人,無(wú)論是為消費(fèi)型的軟件公司還是投資銀行,需要關(guān)注的都是可用性。用戶如何和系統(tǒng)交互?系統(tǒng)是否提供一種簡(jiǎn)單、直接和平穩(wěn)的操作體驗(yàn)?有種說(shuō)法,因?yàn)檐浖こ處熓羌夹g(shù)人員,他/她和“用戶如何與系統(tǒng)交互”沒(méi)有關(guān)聯(lián),這種說(shuō)法嚴(yán)重錯(cuò)誤。優(yōu)秀工程師努力工作是為了什么?不正是讓系統(tǒng)簡(jiǎn)單并易于使用。他們無(wú)時(shí)無(wú)刻都會(huì)想到用戶,不會(huì)嘗試去發(fā)明那些令人費(fèi)解,只有極客才能理解并欣賞的東西。

有些時(shí)候,一些軟件工程師過(guò)于投入,反而忘記所編寫的程序/軟件,是供他人使用,不是做給自己看的“藝術(shù)品”。所以,在軟件開(kāi)發(fā)過(guò)程中,一直要把“用戶”放在心中。

8. 編寫可維護(hù)的代碼

軟件開(kāi)發(fā)界的另外一個(gè)小秘密是:編寫優(yōu)秀代碼和糟糕代碼所花費(fèi)的時(shí)間是一樣多。一位訓(xùn)練有素的工程師,他/她會(huì)從第一行代碼開(kāi)始就考慮可維護(hù)性和代碼的演化。沒(méi)有任何理由編寫“丑陋”的代碼、長(zhǎng)達(dá)數(shù)頁(yè)的函數(shù),或是稀奇古怪的變量名。優(yōu)秀的工程師編寫代碼會(huì)遵循命名慣例,代碼編寫緊湊、簡(jiǎn)單和不過(guò)度炫耀聰明。代碼的每一行,都應(yīng)恰如其分地展現(xiàn)出其原有目的。在給不便理解的代碼(塊)合理注釋時(shí),別忘了命名規(guī)則。清晰明了的函數(shù)名和變量名可以讓代碼不言而明。

在編碼時(shí),有些程序員會(huì)有這種心態(tài):過(guò)一會(huì)兒再來(lái)修改或完善某部分代碼或某條語(yǔ)句。但誰(shuí)知這一“過(guò)一會(huì)”竟然是“一天”、“一周”、“一個(gè)月”或“一年”,甚至以后根本就沒(méi)機(jī)會(huì)再回頭修改。所以,盡量別妥協(xié)寫出暫時(shí)堪用的代碼。否則,不僅不會(huì)節(jié)省開(kāi)發(fā)時(shí)間,也可以阻礙整個(gè)進(jìn)程。當(dāng)然也不利于后續(xù)維護(hù)人員的工作。

9. 能用任何語(yǔ)言編程

優(yōu)秀的軟件工程師或許有自己一門特別鐘愛(ài)的編程語(yǔ)言,但從不會(huì)執(zhí)迷于當(dāng)中。如今已有很多優(yōu)秀的編程語(yǔ)言,也就是說(shuō),如果你只會(huì)使用其中一門語(yǔ)言,說(shuō)明你缺乏多樣性。你可以用Java、C#C++編寫任何現(xiàn)代軟件,可以用PHP、Perl或Ruby編寫任何網(wǎng)站的后臺(tái)。簡(jiǎn)而言之,編程所用語(yǔ)言,遠(yuǎn)遠(yuǎn)沒(méi)有語(yǔ)言相應(yīng)的函數(shù)庫(kù)重要。優(yōu)秀的工程師能夠認(rèn)知到這一點(diǎn),并愿意去學(xué)習(xí)新語(yǔ)言、新函數(shù)庫(kù)和構(gòu)建系統(tǒng)的新方法。

10. 知曉基本的計(jì)算機(jī)科學(xué)知識(shí)

最后,但肯定不是優(yōu)秀工程師最不重要的特質(zhì)就是:扎實(shí)的基礎(chǔ)。優(yōu)秀的工程師或許并沒(méi)有計(jì)算機(jī)科學(xué)的學(xué)位,但他/她必須知道基礎(chǔ)——數(shù)據(jù)結(jié)構(gòu)和算法。如果不知道哈希表,或者不知道鏈表和數(shù)組之間的差別,你如何構(gòu)建一款大型的軟件?。這些都是每位從事軟件開(kāi)發(fā)的開(kāi)發(fā)人員應(yīng)當(dāng)知道的。算法也同樣重要,從二分查找到各種排序,到圖形遍歷,一位明星工程師必須知道并內(nèi)在消化這些基礎(chǔ)東西。因?yàn)檫@些基礎(chǔ)就是你在構(gòu)建任何現(xiàn)代軟件中做抉擇時(shí)的必備品。

結(jié)束語(yǔ)

以上就是區(qū)分偉大軟件工程師的諸多特質(zhì)。其中討論的“熱情”,是非常重要的。代碼重用、設(shè)計(jì)模式、基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)和算法都是必須知道的,而敏捷實(shí)踐中的重構(gòu)和單元測(cè)試則有助于工程師應(yīng)對(duì)復(fù)雜的軟件。尤為重要的是,明星工程師相信簡(jiǎn)潔和常識(shí)。也正是這些信念,幫助他們成功構(gòu)建當(dāng)今世界所需的看似不可能又錯(cuò)綜復(fù)雜的系統(tǒng)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    我國(guó)軟件開(kāi)發(fā)者數(shù)量突破940萬(wàn)

    。目前,開(kāi)源已覆蓋軟件開(kāi)發(fā)的所有場(chǎng)景,全球97%的軟件開(kāi)發(fā)者和99%的企業(yè)使用開(kāi)源軟件。 工業(yè)和信息化部總工程師 謝少鋒:我國(guó)已經(jīng)成為全球開(kāi)源參與者數(shù)量排名第二,增長(zhǎng)速度最快的國(guó)家,開(kāi)
    的頭像 發(fā)表于 12-24 13:52 ?189次閱讀

    嵌入式工程師常用的開(kāi)發(fā)工具有哪些?

    仿真器可以模擬復(fù)雜的微控制器和外設(shè),幫助工程師在早期階段進(jìn)行軟件開(kāi)發(fā)和調(diào)試。這大大縮短了開(kāi)發(fā)周期,降低了開(kāi)發(fā)成本。 總之,嵌入式工程師需要
    發(fā)表于 12-20 15:29

    ECU電控軟件開(kāi)發(fā)及測(cè)試介紹

    本文重點(diǎn)介紹符合AutoSar架構(gòu)的應(yīng)用軟件開(kāi)發(fā)、MBD開(kāi)發(fā)模式下的軟件質(zhì)量評(píng)估與優(yōu)化方案、復(fù)雜場(chǎng)景下的ECU性能壓力測(cè)試方案。
    的頭像 發(fā)表于 09-26 14:25 ?3547次閱讀
    ECU電控<b class='flag-5'>軟件開(kāi)發(fā)</b>及測(cè)試介紹

    求LORA技術(shù)開(kāi)發(fā)工程師合作

    求LORA技術(shù)開(kāi)發(fā)工程師合作
    發(fā)表于 09-02 10:21

    嵌入式軟件開(kāi)發(fā)招聘

    本帖最后由 jf_19082533 于 2024-7-26 13:56 編輯 尋求:嵌入式軟件工程師 要求:3年以上開(kāi)發(fā)經(jīng)驗(yàn),音視頻領(lǐng)域應(yīng)用層開(kāi)發(fā) 地址:北京市昌平區(qū) 郵箱:1017933921@qq.com 歡迎廣大感興
    發(fā)表于 07-26 13:44

    【《軟件開(kāi)發(fā)珠璣》閱讀體驗(yàn)】+ 心得

    ,《軟件開(kāi)發(fā)珠璣》是一本值得每個(gè)軟件開(kāi)發(fā)者閱讀的書(shū)籍。它教會(huì)了我們?nèi)绾瘟私庑枨?、設(shè)計(jì)、項(xiàng)目管理,如何與團(tuán)隊(duì)合作以及如何持續(xù)學(xué)習(xí)和進(jìn)步。在未來(lái)的軟件開(kāi)發(fā)生涯中,我將繼續(xù)秉承書(shū)中的理念,努力成為一名項(xiàng)目的
    發(fā)表于 06-23 17:56

    找STM32硬件開(kāi)發(fā)兼職工程師

    上海做傳感器的公司,找STM32硬件開(kāi)發(fā)兼職工程師,會(huì)硬件開(kāi)發(fā),嵌入式軟件開(kāi)發(fā),可項(xiàng)目外包。有意聯(lián)系:15900460170
    發(fā)表于 06-22 19:12

    嵌入式軟件工程師如何提升自己?

    的發(fā)展打下堅(jiān)實(shí)的基礎(chǔ)。 2.掌握專業(yè)技能 除了基礎(chǔ)知識(shí)外,嵌入式軟件工程師還需要掌握專業(yè)的技能。包括熟練掌握嵌入式系統(tǒng)的開(kāi)發(fā)工具、硬件平臺(tái)和軟件開(kāi)發(fā)流程。建議通過(guò)參加培訓(xùn)課程、實(shí)習(xí)經(jīng)
    發(fā)表于 06-12 11:20

    名單公布!【書(shū)籍評(píng)測(cè)活動(dòng)NO.33】做了50年軟件開(kāi)發(fā),總結(jié)出60條經(jīng)驗(yàn)教訓(xùn),每一條都太扎心!

    的巨頭公司)任職研究科學(xué)家的職業(yè)生涯早期,我使用計(jì)算機(jī)來(lái)設(shè)計(jì)和分析實(shí)驗(yàn)。 不過(guò)很快我就轉(zhuǎn)崗成為一名全職的軟件開(kāi)發(fā)工程師,為柯達(dá)研究實(shí)驗(yàn)室編寫應(yīng)用程序,并且在短短幾年內(nèi)就開(kāi)始管理一個(gè)小型的軟件開(kāi)
    發(fā)表于 05-17 14:36

    嵌入式軟件工程師和硬件工程師的區(qū)別?

    嵌入式軟件工程師和硬件工程師的區(qū)別? 嵌入式軟件工程師 嵌入式軟件工程師軟件開(kāi)發(fā)領(lǐng)域中的一種專業(yè)工程師
    發(fā)表于 05-16 11:00

    大廠電子工程師常見(jiàn)面試題#電子工程師 #硬件工程師 #電路知識(shí) #面試題

    電子工程師電路
    安泰小課堂
    發(fā)布于 :2024年04月30日 17:33:15

    如何搞崩一個(gè)硬件工程師心態(tài)?試試對(duì)ta說(shuō)這幾句

    硬件工程師
    揚(yáng)興科技
    發(fā)布于 :2024年02月20日 18:05:49