程序員必須掌握的6種軟技能
如果你想要開(kāi)啟作為 web 開(kāi)發(fā)人員的職業(yè)生涯,那么你需要涉及的不僅僅是知道如何寫(xiě)代碼。
有一些通用的軟技能幾乎可用于每個(gè)領(lǐng)域——包括技術(shù)行業(yè)。
成為軟件開(kāi)發(fā)人員涉及的不僅僅是編寫(xiě)代碼。自從我開(kāi)始我的***份作為軟件開(kāi)發(fā)人員的工作之后,我很快就知道了這一點(diǎn)。如果你想要在這個(gè)領(lǐng)域茁壯成長(zhǎng)的話(huà),那么你需要學(xué)習(xí)“特定的技能系列”。
你看,每一家公司都有一個(gè)大局。除了寫(xiě)代碼,你需要利用其他技能,使自己更有影響力,從而賺取更多的 money。
在我作為一名開(kāi)發(fā)人員的任職期間,我學(xué)會(huì)了除了編程之外還需要掌握的技能。下面我將分享 6 種技能,作為一個(gè)有抱負(fù)的開(kāi)發(fā)人員你一定不能不會(huì)。
技能#1:書(shū)面溝通
在開(kāi)始每天的工作之前,你可能需要先回復(fù)郵件。電子郵件迅速成為了生產(chǎn)力的死亡陷阱。與此同時(shí),電子郵件也是展示你對(duì)別人有多大價(jià)值的門(mén)戶(hù)。書(shū)面技能依然是事實(shí)業(yè)務(wù)溝通的領(lǐng)頭羊。
既然書(shū)面溝通技巧是如此之重要,于是我花了很多時(shí)間來(lái)掌握發(fā)送電子郵件并快速得到回復(fù)的技術(shù)。
我所有的電子郵件不但設(shè)計(jì)友好,而且會(huì)盡快切入正題。這是我在郵件中要求技術(shù)需求的 4 個(gè)步驟:
1.感謝對(duì)方發(fā)送電子郵件。這適用于每封電子郵件。例如:感謝你與我聯(lián)系。
2.強(qiáng)調(diào)他們的要點(diǎn)并說(shuō)明你已了解。例如,“如果我理解正確的話(huà),你是想……”。
3.提出問(wèn)題,以確保你理解他們想要什么。
4.在他們回答你的問(wèn)題之后,按照步驟 2 的方式回復(fù)以確認(rèn)你理解的內(nèi)容。
這些步驟將提前節(jié)省你大量的時(shí)間,讓你突出于那些沒(méi)有做到位的人。書(shū)面交流是開(kāi)發(fā)者武器庫(kù)中一項(xiàng)最被低估的技能。當(dāng)然要想正確表達(dá)自己的想法需要多年的實(shí)踐,但用好這個(gè)武器往往會(huì)有“殺人于無(wú)形”的奇效。
技能#2:教學(xué)相長(zhǎng)
如果你是一個(gè)初學(xué)者,那么你可能認(rèn)為你沒(méi)什么可以教人的。但現(xiàn)實(shí)情況是,你也許可以。
當(dāng)我開(kāi)始我的***份 web 開(kāi)發(fā)工作時(shí),我認(rèn)為我需要花更多的時(shí)間向別人學(xué)習(xí)。但不是所有的情況都是如此。事實(shí)上,我做到了學(xué)習(xí)與教學(xué)的結(jié)合。我們公司已決定從 SVN 轉(zhuǎn)移到 Git。而我得到這份工作也是因?yàn)槲业闹饕u(mài)點(diǎn)就是大量的 Github 代碼倉(cāng)庫(kù)。
當(dāng)我加入的時(shí)候,我發(fā)現(xiàn)這是一支正在蓬勃成長(zhǎng)的團(tuán)隊(duì),并且轉(zhuǎn)移到 Git 對(duì)于我們而言是有壓力的,因?yàn)樗且粋€(gè)更好的協(xié)作工具。
這真是一個(gè)超現(xiàn)實(shí)的體驗(yàn),因?yàn)?,這是我人生中***次不得不用標(biāo)記來(lái)武裝自己以及在白板上畫(huà)圖。雖然只是一些簡(jiǎn)單的圖表,用來(lái)演示 git 是如何工作的以及它如何與 Github 互動(dòng)。還有解釋如何***利用分支。
請(qǐng)記住:這只是在公司待滿(mǎn)一個(gè)月之后。從那以后,我一直是頭腦風(fēng)暴會(huì)議的一部分,解釋 Rails 中一切的工作原理,從會(huì)話(huà)到嵌套表單。
在你***份開(kāi)發(fā)工作中,通過(guò)教學(xué),你可能最終會(huì)給人一種你比他們更知識(shí)淵博的印象。即使你不認(rèn)為自己是“專(zhuān)家”或“高級(jí)開(kāi)發(fā)者”。
在每一家公司里,總有共享的知識(shí)池。當(dāng)我教人的時(shí)候,我會(huì)對(duì)此作出貢獻(xiàn),同時(shí)帶走別人的經(jīng)驗(yàn)和見(jiàn)解。
基本上說(shuō)來(lái),每個(gè)人都會(huì)貢獻(xiàn)自己的經(jīng)驗(yàn)和觀點(diǎn)到這個(gè)知識(shí)池中。而這便是大規(guī)模的教學(xué)相長(zhǎng)。
技能#3:專(zhuān)注
任何職業(yè),無(wú)論是畫(huà)家還是作家,專(zhuān)注于小細(xì)節(jié)才有可能一步步累積至偉大。如果你想產(chǎn)出令人驚艷的工作,那么你得小心注意并調(diào)整方法。
如果你對(duì)細(xì)節(jié)的關(guān)注還不到位,那么關(guān)鍵是要具備處理專(zhuān)注的能力。
完全專(zhuān)注于一項(xiàng)任務(wù)的能力在我們當(dāng)前這個(gè)世界里是呈現(xiàn)遞減狀態(tài)的。Twitter,F(xiàn)acebook 和 Reddit 正在不斷誘惑我們的注意力。Cal Newport 在他的《Deep Work》一書(shū)中指出,為了有一個(gè)有影響力的就業(yè),人們必須放棄淺層的工作并擁抱深層的工作。
淺層工作被定義為只有短期利益的工作。例如,你可以花一天用來(lái)撰寫(xiě)和回復(fù)郵件,但會(huì)因此而錯(cuò)過(guò)深層工作。深層工作是需要全神貫注并最終導(dǎo)致實(shí)際成果的工作。
作為一個(gè)開(kāi)發(fā)者,這個(gè)技能不能被低估。我們的工作是建立有用的東西。而創(chuàng)造有價(jià)值的東西是需要大量時(shí)間的。少一點(diǎn)消費(fèi)者的心態(tài),多一點(diǎn)生產(chǎn)者的心態(tài)。
可能會(huì)有用的一種技術(shù)手段是番茄工作法。
下面是它的工作原理:
1.設(shè)置 25 分鐘的定時(shí)器
2.專(zhuān)注于一個(gè)任務(wù) 25 分鐘
3.25 分鐘結(jié)束后,休息 5 分鐘
4.任何浮現(xiàn)出來(lái)和任務(wù)無(wú)關(guān)的想法,你可以先寫(xiě)下來(lái)以便于以后來(lái)關(guān)注。
5.你重復(fù)循環(huán)四次(或更多)
這種技術(shù)之所以偉大是因?yàn)樗鼓阋淮螌?zhuān)注于一件事情。它可以幫助你產(chǎn)出更有意義的工作,而不是每隔幾分鐘查看 Twitter 或 Facebook。
技能#4:了解大局
那些主要產(chǎn)品圍繞代碼的開(kāi)發(fā)人員需要執(zhí)行一種小心以及平衡的行為。一方面,從發(fā)布到產(chǎn)品來(lái)幫助企業(yè)成長(zhǎng)。另一方面,你要保證不會(huì)給你將來(lái)的同事留下難以維護(hù)的代碼。而且以及當(dāng)然,用戶(hù)也得享受于軟件。
但是,首先,此刻你能做的就是編寫(xiě)代碼。當(dāng)你開(kāi)始作為一個(gè)開(kāi)發(fā)人員提高自己的時(shí)候,你將——回過(guò)頭去重構(gòu)原先的代碼。讓你的軟件更適應(yīng)將來(lái)在上面工作的開(kāi)發(fā)人員。
有一個(gè)偉大的概念是 DRY(don’t repeat yourself)原則。其基本思想是寫(xiě)一個(gè)只需要改變一次的代碼片段,如果你決定將來(lái)更改它的話(huà)。這種方法既是程序員的福音,也有利于企業(yè)。
然而,所謂的大局并不僅僅涉及到代碼。大多數(shù)的大公司遵循 Peter Drucker 的原則。如果你學(xué)過(guò) MBA,那么你一定聽(tīng)說(shuō)過(guò) Peter 和他的管理原則。如果沒(méi)有,那么建議閱讀他寫(xiě)的書(shū)。
Peter 對(duì)西方公司產(chǎn)生了深遠(yuǎn)的影響。他提出的最重要的概念之一是成本中心和利潤(rùn)中心。在銷(xiāo)售和市場(chǎng)營(yíng)銷(xiāo)工作的人被認(rèn)為是企業(yè)的利潤(rùn)中心。他們?cè)黾邮杖?。必須控制企業(yè)成本以***限度地提高收入。作為開(kāi)發(fā)人員,你既可以是利潤(rùn)中心也可以是成本中心。
管理你的職業(yè)生涯的***方式是了解你適合企業(yè)內(nèi)部的哪個(gè)位置。這會(huì)附加你的價(jià)值,并讓你的職業(yè)生涯走得更遠(yuǎn)。
技能#5:社交技巧
許多人認(rèn)為,像 Google 這樣的公司創(chuàng)造了一種從自上而下的文化。不過(guò),你和你的同伴也在建立文化。而培育這種團(tuán)隊(duì)范圍的文化的***方式是通過(guò)你自己的社交技巧。
回想一下你的現(xiàn)實(shí)生活,而不是工作生活。你的朋友圈中有沒(méi)有這樣一個(gè)人是每個(gè)人都期待看到的?他們的存在可以帶來(lái)歡笑和深刻的討論。他們不傳播流言和謠言。在有人需要幫助時(shí)他們會(huì)及時(shí)伸手??偠灾?,他們被描述為是一個(gè)夠意思的哥們或菇?jīng)觥?/p>
這樣的人也存在于工作場(chǎng)所。而你的目標(biāo)應(yīng)該是嘗試成為那樣的人。
成為一個(gè)每個(gè)人都期待看到的人。建立用一種建設(shè)性的心態(tài)說(shuō)出意見(jiàn)的勇氣。這與你認(rèn)為自己是一個(gè)內(nèi)向或外向的人無(wú)關(guān)。
慢慢的,你的事業(yè)、你的技術(shù)技能將和這個(gè)領(lǐng)域中的其他人相同。但是如果你想在職場(chǎng)中獲得成功,那么你需要成為團(tuán)隊(duì)成員。你必須能夠和他人交流,能激勵(lì)他人,并值得信賴(lài)。因?yàn)樵谝惶旖Y(jié)束時(shí),如果你不能與別人進(jìn)行聯(lián)系,那么你將永遠(yuǎn)無(wú)法讓別人接受你的想法,無(wú)論多大或多小。最終你只能接受其他人的想法,而不是給出你的想法。
技能#6:發(fā)現(xiàn)并處理問(wèn)題
程序員的作用是解決問(wèn)題。但要解決問(wèn)題,首先必須去發(fā)現(xiàn)問(wèn)題究竟是什么。
世界上最容易的事情是記住一堆命令或復(fù)制和粘貼在 Stackoverflow 上的代碼。真正的能力是知道發(fā)生了什么事的大局觀。如果你正在解決工作中的一個(gè)大問(wèn)題,那么***是把它分解成微小的可編輯的片段。
先查看問(wèn)題本身。想想代碼試圖解決的問(wèn)題。
1.它使人更容易購(gòu)買(mǎi)嗎?
2.它做報(bào)告嗎?
3.創(chuàng)建這個(gè)軟件的目的是什么?
然后,看一下當(dāng)前的解決方案(如果存在的話(huà))。***,考慮當(dāng)前的解決方案是如何解決這個(gè)問(wèn)題。(如果它能解決的話(huà))。
一旦你高度概括了這個(gè)應(yīng)用程序,那么你就可以進(jìn)入應(yīng)用程序的功能部分。利用問(wèn)題、解決方案和細(xì)節(jié)技術(shù)來(lái)進(jìn)一步分解問(wèn)題。這些框架步驟幫助我理解了不同的開(kāi)源項(xiàng)目,例如 Disourse。