我們列出了一張包含 34 條建議的清單,來(lái)幫助你成為一流的軟件開(kāi)發(fā)者,在技術(shù)行業(yè)中打造出成功的職業(yè)生涯。
這些建議中,有一些是特別針對(duì)增強(qiáng)編程技能的,其他的一些建議則是軟件開(kāi)發(fā)職業(yè)生涯中的軟技能,還有些甚至能夠幫助你成為一個(gè)更好的人。
1. 規(guī)劃方法 & 在編碼前先寫(xiě)偽代碼
當(dāng)你試圖構(gòu)建一個(gè)項(xiàng)目或者完成一個(gè)任務(wù)時(shí),如果沒(méi)有規(guī)劃就直接開(kāi)始編寫(xiě)代碼,可能會(huì)浪費(fèi)大量時(shí)間,還會(huì)經(jīng)歷很多不同程度的挫折。
在開(kāi)始編碼前,花一點(diǎn)時(shí)間寫(xiě)下要實(shí)現(xiàn)的功能或者待解決問(wèn)題的大致結(jié)構(gòu)。這會(huì)讓實(shí)際的編碼過(guò)程更加順暢,防止?jié)撛诘娜毕莅l(fā)生。向隊(duì)友或者同事主動(dòng)尋求反饋或者其他想法,這會(huì)讓你更好地向他們解釋你所處理的事情。
作為一名軟件開(kāi)發(fā)者,很容易陷入編碼的細(xì)節(jié)中,導(dǎo)致只見(jiàn)樹(shù)木不見(jiàn)森林(正如這條著名諺語(yǔ)所說(shuō)的那樣)。做好規(guī)劃并預(yù)先編寫(xiě)偽代碼能讓你同時(shí)看到兩者,也許,你還能聽(tīng)到森林里鳥(niǎo)兒的鳴叫聲呢!
2. 總是尋找新東西來(lái)學(xué)習(xí)
這可能是老調(diào)重彈,但事實(shí)就是這樣。軟件行業(yè)變化非常迅速。如果你想一直待在程序員這個(gè)圈子里,你就不得不持續(xù)學(xué)習(xí)新的東西。
你持續(xù)學(xué)習(xí)得越多,你就越會(huì)覺(jué)得這是很自然的一件事,你會(huì)覺(jué)得學(xué)習(xí)是一種享受,而且當(dāng)你不去學(xué)習(xí)時(shí),反倒會(huì)覺(jué)得自己停滯不前。閱讀一些科技博客或者新聞網(wǎng)站,花一點(diǎn)時(shí)間來(lái)研究你感興趣的事情,或者那些會(huì)影響到軟件行業(yè)未來(lái)的事情。
3. 不要嘗試去學(xué)習(xí)所有的東西
盡管不斷地學(xué)習(xí)新東西很重要,但是你每天的時(shí)間有限,所以在安排時(shí)間時(shí),需要有選擇性地學(xué)習(xí)。
4. 了解怎樣學(xué)習(xí)
每個(gè)人都通過(guò)不同的學(xué)習(xí)方法來(lái)達(dá)到最好的學(xué)習(xí)效果。有些人喜歡閱讀書(shū)籍,有些人則喜歡看視頻教程。如果你能找到適用于你自己的學(xué)習(xí)方法,并使用它,那就可以讓你很輕松地學(xué)習(xí)到新東西。
5. 緩緩前行,不要破壞東西
“快速前行,打破常規(guī)”,在科技行業(yè),這句諺語(yǔ)已經(jīng)作為一條真理存在很久了。這句諺語(yǔ)是用來(lái)鼓勵(lì)開(kāi)發(fā)者快速地部署代碼和技術(shù)想法的,同時(shí)還能安心地覺(jué)得這只是一些代碼,當(dāng)任何錯(cuò)誤或者 bug 自己暴露出來(lái)的時(shí)候,都可以被輕松解決。
但是軟件和數(shù)字產(chǎn)品不再是被公司美化的營(yíng)銷(xiāo)部門(mén),也不再是偏安一隅的經(jīng)濟(jì)單位。它現(xiàn)在已經(jīng)成為了所有東西之上的一層。軟件和數(shù) 10 億人的生活息息相關(guān),代碼不再是完全無(wú)害的。Bug 和設(shè)計(jì)問(wèn)題都會(huì)對(duì)人們產(chǎn)生負(fù)面的影響。
所以我們應(yīng)該緩緩前行,并且保證不會(huì)破壞任何東西。你所寫(xiě)的代碼會(huì)對(duì)其他人的生活產(chǎn)生真實(shí)的影響,所以應(yīng)當(dāng)確保寫(xiě)出質(zhì)量好的代碼。
6. 善于閱讀其他人的代碼
閱讀其他人的代碼是一項(xiàng)不太容易掌握的技能。當(dāng)你開(kāi)始成為一名優(yōu)秀的程序員時(shí),你就會(huì)習(xí)慣于你自己的代碼風(fēng)格。而當(dāng)你嘗試閱讀別人的代碼時(shí),你就會(huì)逐漸迷失了。
7. 感到自豪,讓工作變得有價(jià)值
不管你的工作是大還是小,都要為此感到自豪。你寫(xiě)的每一行代碼都應(yīng)當(dāng)足夠好,好到你自己也感覺(jué)良好的程度。這些代碼不僅要能正常運(yùn)行,而且要能讓你感到自豪。你不可能創(chuàng)建出完美的代碼,也沒(méi)有人能夠做到這樣,因?yàn)閯?chuàng)建完美的軟件是不可能的。但是創(chuàng)建出讓你感覺(jué)良好的代碼,一定會(huì)讓你不斷地做出好的工作成績(jī)。
8. 對(duì)你造成的錯(cuò)誤保持開(kāi)放負(fù)責(zé)的態(tài)度
有時(shí)候你可能把事情弄砸了,可能在你的職業(yè)生涯中,還會(huì)出現(xiàn)好幾次這樣的情況。不管是做錯(cuò)了什么,我們每個(gè)人都發(fā)生過(guò)這樣的狀況。當(dāng)錯(cuò)誤發(fā)生時(shí),保持開(kāi)放的心態(tài),擔(dān)負(fù)起責(zé)任,不要責(zé)怪其他人。
用這樣的態(tài)度處理這些錯(cuò)誤,你就會(huì)在你的隊(duì)友和同事中間建立起信任和尊重。
9. 工作時(shí)盡量減少分心
由于你是人類(lèi)(對(duì)所有讀到這篇文章的機(jī)器人發(fā)出警告),在你累到筋疲力盡之前,你這一天當(dāng)中產(chǎn)出效率最高的工作時(shí)間是有限的。所以你需要優(yōu)化那些產(chǎn)出效率高的時(shí)間來(lái)完成工作。
每個(gè)人的情況是不同的,但是請(qǐng)嘗試不同的方法,看看哪種方法對(duì)你最有效。關(guān)閉任何手機(jī)提醒(電子郵件,短信等等),可能會(huì)有幫助;或者每天只檢查電子郵件 1~2 次;并且只有在你工作完回到家時(shí),再去登陸社交網(wǎng)絡(luò)。
10. 善于使用 Google
作為一名程序員,你可能會(huì)不斷地碰到大大小小的問(wèn)題。這些問(wèn)題絕大部分也被其他的開(kāi)發(fā)者遇到過(guò),所以你可以在各種網(wǎng)站上看到他們的解決方案。
11. 不要害怕尋求幫助
但是當(dāng)你自己不能解決某些問(wèn)題的時(shí)候,你不應(yīng)該害怕尋求幫助。有時(shí)候你可能會(huì)卡在一個(gè)問(wèn)題上,并且花了大量的時(shí)間來(lái)搜索解決方案。
尋求支持并不丟臉。你的部分或所有同事都會(huì)得到更高的工資,這是有原因的,因?yàn)樗麄兏薪?jīng)驗(yàn)。大部分時(shí)候他們都是樂(lè)于幫助你的,并且還會(huì)抓住機(jī)會(huì)給你講解一些編程知識(shí)。
12. 不要拿自己和其他人去做比較
在你的職業(yè)生涯和生活中,你會(huì)不停地拿自己和其他人做比較。你可能會(huì)自然地這樣做,因?yàn)檫@會(huì)幫助你弄清楚你位于世界的哪個(gè)位置,幫你找到人生方向。
但有時(shí)候進(jìn)步的最好方式是拿你和你的昨天或者你的過(guò)去進(jìn)行比較。用這種方法思考肯定能讓你不斷地進(jìn)步,減少受挫感,明確你的預(yù)期目標(biāo)。
13. 測(cè)試你的代碼
如果你測(cè)試了你的代碼,軟件的最終交付版本將會(huì)更加穩(wěn)定和可預(yù)測(cè)。學(xué)習(xí)不同的測(cè)試類(lèi)型(單元測(cè)試、集成測(cè)試等等),并且要很勤快地使用它們,因?yàn)檫@真的很重要。你預(yù)先做的測(cè)試越多,你今后的工作就會(huì)越輕松,你晚上睡覺(jué)也會(huì)更踏實(shí)。
14. 學(xué)習(xí)如何調(diào)試
你編寫(xiě)的代碼并不總是會(huì)按照你所預(yù)期的那樣精確運(yùn)行,不過(guò)沒(méi)關(guān)系,這很正常。但是,你需要掌握相關(guān)技能,找到問(wèn)題的原因,并且做出必要的修復(fù)。
在定位 bug 時(shí),需要弄清楚哪些調(diào)試技術(shù)是最適合你的。找一些有用的工具,這會(huì)讓調(diào)試過(guò)程更加輕松。
15. 要知道自己的身價(jià)
去做一些調(diào)研,弄清楚你所在行業(yè)其他人的薪水如何,他們給公司帶來(lái)了怎樣的價(jià)值。了解這些東西會(huì)給你目前的工作帶來(lái)一些認(rèn)識(shí),并且?guī)椭憷斫饽愕膬r(jià)值所在。
這個(gè)調(diào)研不僅可以用于薪水方面,還可以用于了解你給公司或者團(tuán)隊(duì)提供了哪些價(jià)值。
16. 不要為了擴(kuò)展而編寫(xiě)代碼,除非這是必要的
在構(gòu)建和編寫(xiě)代碼時(shí),需要記住,將來(lái)有一天你可能需要擴(kuò)展代碼。但是不要在編碼的第一天就去考慮擴(kuò)展性,沒(méi)必要這樣,而且這肯定會(huì)讓你淹沒(méi)其中,并且拖慢開(kāi)發(fā)速度。
準(zhǔn)備好適應(yīng)未來(lái)的增長(zhǎng),并且準(zhǔn)備好創(chuàng)建相應(yīng)的策略。但不要讓你的代碼庫(kù)和團(tuán)隊(duì)陷入不斷擴(kuò)展代碼的困境,除非這是必要的。如果你給火箭添加太多的重物,它可能都不能飛離地面。
17. 在你知道代碼是如何運(yùn)行之后,可以復(fù)制粘貼
誠(chéng)懇地講,每個(gè)人以前都有過(guò)復(fù)制粘貼代碼的經(jīng)歷。不管這段代碼是來(lái)自 StackOverflow,還是其他隨便哪里的編程博客,這都沒(méi)問(wèn)題,只要你在復(fù)制粘貼前理解這段代碼是做什么的。
對(duì)你要粘貼的代碼,你需要知道自己在做什么,并且小心謹(jǐn)慎。記住,緩緩前行,不要破壞東西。
18. 讓周?chē)烁械接淇?,?duì)他人友善
當(dāng)你身邊圍繞著很多人都愿意幫助你或者支持你的時(shí)候,生活會(huì)變得很輕松。但如果人們都不喜歡你,那生活就不可能很輕松了。
所以對(duì)人要友善(盡你所能),大部分時(shí)間里都要讓周?chē)娜烁杏X(jué)愉快。如果你能做到這一點(diǎn),人們就會(huì)很喜歡你,如果人們很喜歡你,他們就愿意幫助你,你也會(huì)交到更多朋友。
19. 為了提高產(chǎn)出,休息一會(huì)兒
在整個(gè)工作日中保持 100% 的產(chǎn)出效率,這幾乎是不可能的,如果你嘗試這樣做,那將會(huì)使你精疲力盡。設(shè)置一個(gè)計(jì)時(shí)器,讓它提醒你站起來(lái)走一走,或者給你的咖啡續(xù)個(gè)杯。
此外大量的研究表明,適當(dāng)休息是任何工作和學(xué)習(xí)過(guò)程的一個(gè)關(guān)鍵組成部分。休息能夠很大程度上幫助學(xué)生更有效地學(xué)習(xí)東西,讓他們的注意力保持更長(zhǎng)的時(shí)間。
20. 少說(shuō)多聽(tīng)
不管你是想贏得一場(chǎng)辯論,變得更討人喜歡,還是說(shuō)服某人,傾聽(tīng)都是一個(gè)獲得重要信息的很關(guān)鍵的方式,他會(huì)讓你顯得更值得信任和尊重。
你很可能是與一些真正聰明的人一起工作,他們中的一些人甚至比你更聰明。于是他們可能有一些編程或者生活上的知識(shí)能夠傳授給你,如果你說(shuō)太多話,可能就會(huì)錯(cuò)過(guò)這樣的機(jī)會(huì)。
21. 去做那些讓你害怕的項(xiàng)目
無(wú)論是在你的職業(yè)生涯中,還是在編程技能方面,不斷擴(kuò)展你的舒適區(qū)都是相當(dāng)重要的。去做一些讓你有點(diǎn)害怕的項(xiàng)目,擴(kuò)展你的舒適區(qū),這會(huì)讓你變成一個(gè)更好的開(kāi)發(fā)者,你的職業(yè)生涯也會(huì)進(jìn)步得更快。
你需要經(jīng)歷一些痛苦和恐懼,這樣才能成長(zhǎng)。要做到這樣,你需要去尋找一些能擴(kuò)展你舒適區(qū)的事情去做。
22. 給函數(shù)和變量提供描述性的命名
你會(huì)希望你的代碼盡可能容易理解。讓別人更容易閱讀你的代碼的方式之一,就是給你的函數(shù)和變量起一個(gè)能描述他們做什么和代表什么的好名字。
例如有一個(gè)函數(shù)名叫 aDopeFunctionIMade,這就不是一個(gè)好名字,而另一個(gè)函數(shù)名 calculateCartTotal,它就是一個(gè)很好的名字。
23. 編寫(xiě)描述性好的代碼注釋
另外一種能讓你的代碼更容易閱讀的方式就是給代碼添加注釋?zhuān)⑨屇軌蚪忉屇愕拇a為什么要這樣做,以及你的代碼都做了什么。編寫(xiě)注釋并不難,只需要花點(diǎn)精力把注釋包含到代碼里去就可以啦。
這個(gè)方法和上面那個(gè)寫(xiě)出具有描述性的函數(shù)和變量名字的方法通常是同時(shí)使用的。
24. 習(xí)慣于有建設(shè)性的批評(píng)
在工作中,你可能從不會(huì)享受于接受批評(píng)。但為了變得更好,你需要習(xí)慣于接受批評(píng),不要對(duì)這些批評(píng)產(chǎn)生情緒。
如果你的代碼寫(xiě)得很糟糕,你難道不希望有其他人給你指出來(lái)嗎?相反的一種方式就是別人看到了問(wèn)題代碼也不會(huì)告訴你,這將更糟糕。如果你欣然接受批評(píng),你會(huì)因此而受到別人的尊敬,你自己也能夠改進(jìn)你的技能。
25. 找到你的立足點(diǎn)
在科技行業(yè),你可能會(huì)在很多不同的領(lǐng)域都做得很成功。找到你最感興趣或者最擅長(zhǎng)的領(lǐng)域,在這個(gè)領(lǐng)域成為一個(gè)專(zhuān)家。在你的立足點(diǎn)上成為一個(gè)專(zhuān)家,會(huì)給你帶來(lái)影響力,把你從一件商品變?yōu)槟愕墓净蛘吣闼谛袠I(yè)的必需品。但是這個(gè)說(shuō)起來(lái)容易,做起來(lái)難,你可能需要花些時(shí)間才能弄清楚你的立足點(diǎn)在哪里。
26. 學(xué)一點(diǎn)商業(yè)方面的知識(shí)
花點(diǎn)時(shí)間去了解你所在公司或者團(tuán)隊(duì)的一些業(yè)務(wù)方面的知識(shí)。銷(xiāo)售人員整天都在做些什么,他們?yōu)楹斡袃r(jià)值?會(huì)計(jì)或者市場(chǎng)營(yíng)銷(xiāo)人員的情況又如何?
你不必成為這些領(lǐng)域的專(zhuān)家。但是理解一些業(yè)務(wù)情況,將會(huì)讓你對(duì)工作有更好的理解,并且能幫助你為公司和團(tuán)隊(duì)的整體目標(biāo)創(chuàng)造更多價(jià)值。
27. 在傳授別人知識(shí)和與他人分享的過(guò)程中學(xué)習(xí)
protégé效應(yīng)是一種心理現(xiàn)象,說(shuō)的是向別人傳授或假裝傳授信息時(shí)能夠讓你更好地(相比不使用這種方法時(shí))學(xué)習(xí)這些信息。這一點(diǎn)適用于很多領(lǐng)域,但編程領(lǐng)域尤其如此。
28. 花點(diǎn)時(shí)間好好寫(xiě)寫(xiě)文檔
這是很多程序員忽略的一點(diǎn)。但是好的文檔能幫助你和其他人抓住你的代碼或者項(xiàng)目的精髓。
如果你寫(xiě)出的文檔組織很有條理,綜合性強(qiáng),可讀性強(qiáng),那么你的代碼或者項(xiàng)目就更容易使用,人們也就會(huì)更愿意來(lái)使用它。
29. 盡可能避免不必要的會(huì)議
盡管公司會(huì)議在傳達(dá)思想,建立項(xiàng)目目標(biāo)方面極其有幫助,但如果你不好好管理會(huì)議進(jìn)度,這也可能會(huì)成為不可思議的時(shí)間吞噬器。在你工作的地方總有一些人喜歡發(fā)起會(huì)議,而不去想他們是否真的需要這些會(huì)議。
30. 掌控你自己的工具箱
任何精通這一行的人都有一個(gè)工具箱,里面裝滿了工具,他們對(duì)這些工具的里里外外都了如指掌,他們通過(guò)使用這些工具來(lái)完成工作。他們非常了解其中每一件工具,并把他們當(dāng)做自己能力的延伸。
作為一名程序員,你應(yīng)當(dāng)構(gòu)建自己的工具袋。精通你所選的文本編輯器,以最大化你的產(chǎn)出,或者找一個(gè)你喜歡使用的測(cè)試框架。你需要了解哪些工具是服務(wù)于什么樣的目的的。并且要知道每一件工具為何會(huì)比另外一件工具更適用于某個(gè)場(chǎng)景。
31. 每隔一段時(shí)間就去嘗試一種新的語(yǔ)言
不要做過(guò)頭,但也要每隔一段時(shí)間就去嘗試一種新的語(yǔ)言。使用一種新的語(yǔ)言,將會(huì)讓你或多或少?gòu)牟煌慕嵌热ニ伎紗?wèn)題,思考問(wèn)題的方式會(huì)和你正在使用的語(yǔ)言不太一樣。
這些新的思考途徑,將幫助你在使用當(dāng)前的和 / 或今后的語(yǔ)言時(shí),全面提高解決問(wèn)題的能力。
32. 努力保持身體健康
編程是一項(xiàng)需要長(zhǎng)時(shí)間坐在位子上的職業(yè)。你會(huì)很多天都坐在桌子前(順便說(shuō)一下,可以考慮入手一張站式桌子),看著電腦屏幕。久而久之,如果你不努力保持健康的話,這樣的工作方式就會(huì)給你的身體帶來(lái)負(fù)面影響。
每周計(jì)劃鍛煉 2~3 天,每天保證 8 個(gè)小時(shí)的睡眠,并且計(jì)劃一些外出活動(dòng),這些活動(dòng)不要涉及到編程。這會(huì)幫助你過(guò)上更健康的生活,這將滲透到你的編程生涯中。
33. 建立能讓你沉迷的東西
不是每天的工作都會(huì)給你走在陽(yáng)光里的感覺(jué)。但如果你把工作時(shí)間花在你覺(jué)得有影響力或者很酷的事情上,你將會(huì)經(jīng)歷很多美好的日子,而不是糟糕的日子。
你在業(yè)余時(shí)間或者工作時(shí)間中創(chuàng)造的酷酷的東西越多,你在自己的領(lǐng)域得到的認(rèn)可也就越多,機(jī)會(huì)也就越多。
34. 絕不放棄
生活很艱難,編程也很艱難??赡軙?huì)有很多次,你都會(huì)產(chǎn)生強(qiáng)烈的、要退出的想法。當(dāng)那些時(shí)刻發(fā)生時(shí),你要意識(shí)到每個(gè)人都會(huì)經(jīng)歷這些。如果你想作為一名程序員在你的職業(yè)生涯中保持成長(zhǎng),你就需要從這些困境里獲取力量。
但是請(qǐng)記住,轉(zhuǎn)變方向和放棄是不同的。如果你做的東西運(yùn)行不起來(lái)或者你感覺(jué)哪里不對(duì)勁時(shí),而你又需要去嘗試一些新的想法或者策略時(shí),那就換到其他的新方向吧,但絕不要放棄。
結(jié)論
好,就是這些了,34 條建議,用來(lái)幫助你成為一個(gè)優(yōu)秀的軟件開(kāi)發(fā)者。希望其中的一條或多條能與你產(chǎn)生共鳴,或者在你的編碼和 / 或職業(yè)生涯中幫助到你。