軟件工程師永不過(guò)時(shí)的五項(xiàng)技能
作為一名軟件工程師,你身邊肯定充滿各種新技術(shù)、設(shè)計(jì)模式、架構(gòu)原則,新的UI 和 API 框架、新庫(kù)、實(shí)現(xiàn)軟件的新方法、存儲(chǔ)數(shù)據(jù)等,但是無(wú)論你周?chē)募夹g(shù)發(fā)生何種變化,有些技能永遠(yuǎn)不會(huì)過(guò)時(shí),深入了解這些技能將使你的軟件工程師的職業(yè)生涯更加光明:
1. 算法和數(shù)據(jù)結(jié)構(gòu)
在基礎(chǔ)層面上,軟件程序從各種來(lái)源捕獲數(shù)據(jù),并以更可讀、更易于理解的格式呈現(xiàn)給人類或機(jī)器。如果沒(méi)有數(shù)據(jù),也沒(méi)有需要處理的東西,也許就不需要軟件程序。根據(jù)你所學(xué)的語(yǔ)言,你會(huì)遇到數(shù)組、堆棧、隊(duì)列、鏈表、雙鏈表、哈希表、字典、圖、二叉樹(shù)、堆、列表、集合、元組等。學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)是沒(méi)有捷徑的,算法是解決特定問(wèn)題的步驟。
如果你想從A點(diǎn)到B點(diǎn),你有多種選擇。你可以走路、跑步、騎車(chē)、乘汽車(chē)、飛、坐輪船……為什么不爬呢?算法的問(wèn)題就是解決這類問(wèn)題,同樣的問(wèn)題不止一個(gè)解決方案,軟件工程師最需要的就是找到一個(gè)最優(yōu)解,通過(guò)消耗最少的處理機(jī)制來(lái)執(zhí)行更快的任務(wù),因此,深入了解算法和數(shù)據(jù)結(jié)構(gòu)是必不可少的。
2. 隨時(shí)做好面試準(zhǔn)備
跳槽是加薪最快的方式之一,隨時(shí)做好面試準(zhǔn)備是非常必要的,做好面試準(zhǔn)備涉及到很多方面,你的面試回答是否是正確的,面對(duì)一個(gè)問(wèn)題,你是否可以想出多種選擇和解決方案,最后實(shí)現(xiàn)推銷(xiāo)自己,以及你的穿著是否得體,這一些其實(shí)都可以在你的日常工作中得以體現(xiàn):
- 開(kāi)會(huì)時(shí)要集中注意力(遠(yuǎn)程工作更是如此)并做筆記
- 當(dāng)你的老板提出問(wèn)題時(shí),你都能提供一個(gè)解決方案。
- 不要成為你老板的問(wèn)題。就像在面試中,如果他們發(fā)現(xiàn)應(yīng)聘者在面試過(guò)程中存在問(wèn)題,沒(méi)有公司會(huì)招聘他們。
- 每天都以得體的穿著形象出現(xiàn)在辦公室,撇開(kāi)技能不談,人們都會(huì)更喜歡和外在形象好的人相處
- 就像你在面試解決問(wèn)題的時(shí)候一樣的,你需要想辦法解決工作中潛在的問(wèn)題
- 成為一個(gè)不斷學(xué)習(xí)的人,就像你在準(zhǔn)備面試一樣,每天都花一些時(shí)間來(lái)學(xué)習(xí)新東西
3. 協(xié)作
當(dāng)遇到危險(xiǎn)的時(shí)候,動(dòng)物只有兩種選擇戰(zhàn)斗或逃跑,但是人類還有第三個(gè)選擇,那就是合作,劍橋大學(xué)對(duì)合作的定義是兩個(gè)或更多的人一起工作來(lái)創(chuàng)造或?qū)崿F(xiàn)相同的事情,合作的目標(biāo)很明確——“安全到達(dá)目的地”。合作的最大殺手是自負(fù)。自信和自私是有區(qū)別的。想象一下,在路上,你前面的司機(jī)突然停下來(lái),因?yàn)樗?她該休息了,或者突然在沒(méi)有指示燈的情況下轉(zhuǎn)彎。然后后面的車(chē)輛會(huì)停止或遇到事故,造成整個(gè)交通故障的情況。在企業(yè)界,你經(jīng)常會(huì)遇到這種行為。缺乏合作是耗費(fèi)精力和金錢(qián)的最大原因。
合作其實(shí)很簡(jiǎn)單。如果你曾經(jīng)踢過(guò)足球,如果你不關(guān)心誰(shuí)得分或誰(shuí)得分,你會(huì)毫不猶豫地傳球。最后,團(tuán)隊(duì)贏了。根據(jù)經(jīng)驗(yàn)法則,如果你不關(guān)心誰(shuí)得到了榮譽(yù),而是專注于達(dá)到最終目標(biāo),你就是一名優(yōu)秀的合作者,只要目標(biāo)明確,寫(xiě)作自然會(huì)出現(xiàn),下次當(dāng)你遇到難題時(shí),不妨全面分析一下,是不是你們的團(tuán)隊(duì)合作出現(xiàn)了問(wèn)題。
4. 表達(dá)能力
我覺(jué)得表達(dá)能力是最容易被忽視的,它是一種以觀眾能夠理解的方式展示數(shù)據(jù)、信息和概念的能力,這并不代表你會(huì)做一些PPT就可以。
馬克·吐溫曾經(jīng)說(shuō)過(guò):“如果你想讓我給你做兩個(gè)小時(shí)的演講,我今天就準(zhǔn)備好了。如果你只想要一個(gè)五分鐘的演講,那我需要兩周的時(shí)間來(lái)準(zhǔn)備。”以下是一些提高演講技巧的建議:
- 了解你的聽(tīng)眾:不像在公共場(chǎng)合演講,在公司里,大多數(shù)時(shí)候你會(huì)了解你的聽(tīng)眾,你的同事、同事、經(jīng)理、組長(zhǎng)地需求是非常不同的,對(duì)錯(cuò)誤的耐心程度和可接受性會(huì)隨著時(shí)間的推移而降低。快速切入主題,,使用數(shù)據(jù)支持你想要傳達(dá)的內(nèi)容,通過(guò)相關(guān)類比使其易于理解,這些技巧通常是非常有用的。
- 練習(xí):演講前練習(xí)一遍可以讓你的演講成功率提高80%,分析你想在哪里花更多的時(shí)間,你想強(qiáng)調(diào)什么詞,你想傳達(dá)什么信息,你想讓你的聽(tīng)眾在演講后有什么感受。記錄和聽(tīng)練習(xí)過(guò)程也是一個(gè)很好的練習(xí),但是過(guò)度的練習(xí)反而適得其反。
- 數(shù)據(jù)的困境:在沒(méi)有數(shù)據(jù)的情況下,很少會(huì)提出一些想法或概念。顯示數(shù)據(jù)的最簡(jiǎn)單方法是通過(guò)表格,但通常這不會(huì)傳達(dá)任何信息。
5. 批判性思維
批判性思維是一種清晰而理性地思考應(yīng)該相信什么以及你需要做出什么決定的能力。有時(shí)候,我們的直覺(jué)會(huì)幫助我們做出決定,這樣我們就不會(huì)重復(fù)造輪子。這沒(méi)有什么不對(duì),直覺(jué)使決策過(guò)程變得容易,因?yàn)槲覀兊拇竽X編碼了數(shù)百萬(wàn)年的人類生存經(jīng)驗(yàn)。對(duì)于一些瑣碎的決定,比如穿什么、在餐館吃什么或看什么電影,憑直覺(jué)是可以的。但是在一些重大決定里面,批判性思維是必要的,現(xiàn)在讓我們看看批判性思維如何幫助軟件工程師。這些都是值得我們每天思考的問(wèn)題:
- 我每天都在做什么,有價(jià)值么?還能把功能實(shí)現(xiàn)的更好么?
- 我在處理什么類型的數(shù)據(jù)?數(shù)據(jù)的來(lái)源是什么?如果沒(méi)有資料,我該怎么辦?
- 誰(shuí)是我的用戶?如果應(yīng)用程序不可用,他們會(huì)怎么做?
- 當(dāng)API關(guān)閉時(shí),我需要提供什么樣的用戶體驗(yàn)?
- 這是最好的數(shù)據(jù)結(jié)構(gòu)或算法嗎?有更好的方法嗎?
- 如果我是用戶,我會(huì)喜歡使用我創(chuàng)建的東西嗎?
- 在我構(gòu)建的模塊中會(huì)出現(xiàn)什么問(wèn)題?
- 問(wèn)題的根本原因是什么?為什么我的用戶對(duì)我的應(yīng)用程序不滿意。