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