2016-10-13全棧開發(fā)中心
作為一個軟(ku)件(bi)工(de)程(ma)師(nong),你有沒有覺得做什么事都沒時間?沒時間學(xué)習(xí)新東西,沒時間去回顧、整理原來寫的爛代碼,沒時間寫單元測試,沒時間給接管你項目的家伙寫文檔,沒時間思考,沒時間喘氣,沒!時!間!
額……如果你肯花點時間看看這篇文章,我相信你會明白應(yīng)該把時間花在哪。
我曾以為成為一個技術(shù)大牛的唯一途徑是玩命地學(xué)習(xí)與工作。這個想法差點毀了我。身體越來越差,和家人與朋友越來越疏遠(yuǎn),很快我就撐不住了。后來我開始反思,發(fā)現(xiàn)自己的時間安排極為不合理,并
逐漸悟出了下面這5個道理,這才讓自己從那種高壓狀態(tài)中解脫出來。
不要因為怕自己落伍而去學(xué)習(xí)新東西
一個優(yōu)秀的開發(fā)者始終在學(xué)習(xí),這一點毋庸置疑。誠然,舊的技術(shù)終會被淘汰。但是新的技術(shù)終有一天會變成舊的。因此,沒有必要一味地去追求最新的技術(shù)。
平均每37秒就會誕生一個新的標(biāo)準(zhǔn)或框架,你不可能把它們都學(xué)會。很多新技術(shù)、框架或者新特性對你來說都不是必需的,你沒必要非得了解它們。真正有價值的技術(shù)需要經(jīng)過社區(qū)和市場一段時間的打磨才能出現(xiàn)。IT公司通常都會重點培養(yǎng)適合于自己的技術(shù),沒有哪個公司會一拍腦門讓自己的代碼去適配某個全新的框架。因此你也不用太擔(dān)心因為某些新技術(shù)而被裁員。你需要關(guān)注的是這三類知識,按照優(yōu)先級排列如下:
(1)基礎(chǔ)。基礎(chǔ)是重中之重。當(dāng)你掌握一門基礎(chǔ)知識后,你可以快速掌握其相關(guān)的技術(shù)。比如如果你非常熟悉JavaScript,那么基于JavaScript的任何框架都難不倒你。如果你掌握了面向?qū)ο缶幊蹋敲茨憧梢钥焖僬莆找婚T新的面向?qū)ο蟮恼Z言。深入學(xué)習(xí)基礎(chǔ)能夠大幅提高你的學(xué)習(xí)效率。
(2)你常用技術(shù)的最新版本。你平常用得最多的技術(shù)才是你的鐵飯碗。如果它們出了新的版本,那么你有必要花時間去學(xué)習(xí)一下。
(3)大公司推崇的技術(shù)。如果一個非常知名的公司(如谷歌、臉書和微軟)發(fā)布了一個新的技術(shù)并不斷地對它進(jìn)行維護(hù),那么這個技術(shù)就值得你去關(guān)注。曾經(jīng)社區(qū)里有成百上千個非常火的JavaScript框架,結(jié)果Angular和React的出現(xiàn)瞬間搶走了他們的風(fēng)頭。
好好規(guī)劃你的學(xué)習(xí)時間,每天安排一段時間來學(xué)習(xí)。這段時間不一定很長,哪怕只有25分鐘也能使你有所成長。
? 寫出高效的代碼比一般的代碼要花更多的時間
當(dāng)你運行完程序并發(fā)現(xiàn)功能實現(xiàn)的時候,你感覺工作已經(jīng)完成了,實則不然。實現(xiàn)一個新的功能除了編寫新的代碼以外,還包括對該功能相關(guān)的其他部分已有代碼的調(diào)整與優(yōu)化。當(dāng)你發(fā)現(xiàn)你的一部分時間花在完善代碼的設(shè)計上了,那么從長遠(yuǎn)角度來看你遇到的錯誤會更少一些。
要想減少你的代碼的錯誤并優(yōu)化設(shè)計,你需要注意以下兩點:
(1)先準(zhǔn)備好測試環(huán)境,然后再開發(fā)。先將測試功能配置好,然后再編寫符合測試標(biāo)準(zhǔn)的代碼。這樣既可以減少bug的產(chǎn)生還能優(yōu)化你的代碼思路,因為你在編寫代碼的時候就嚴(yán)格遵守更加合理和規(guī)范的標(biāo)準(zhǔn)。這會使你的代碼變得簡潔、高效。
(2)迭代完成你的工作而不是一步到位。在你的代碼實現(xiàn)需求之前不要花時間去完善它。你永遠(yuǎn)也不可能使你的代碼處于完美的狀態(tài)。你優(yōu)先要做的就是讓你的代碼完成指定的功能。通常情況開發(fā)者會犯這兩個錯誤:要么花了太多時間思考而沒有充足的時間去實現(xiàn),要么沒有在設(shè)計最初的方案上花足夠的時間。遵循Kent
Beck說得這句話:
“先讓它生效,再讓它正確地工作,最后再讓它更高效”。7*24小時的工作不會讓你成為佼佼者,合理的時間安排才是最重要的。
這個經(jīng)驗源于我自身的教訓(xùn)。我曾經(jīng)為了讓老板和客戶滿意而瘋狂地工作。我害怕說“不”,不想讓其他人失望。我盡我所能去完成工作,曾經(jīng)大量攝入咖啡因通宵地工作,困了就直接睡在我的辦公桌上。
起初我是全公司的楷模。我得到老板的賞識并感覺風(fēng)光無限,前途一片光明。這種并不長久的過度表現(xiàn)使其他人對我產(chǎn)生了過高的期待,很快我就撐不住了。結(jié)果我的身子垮了,經(jīng)常生病,耽誤了工作。公司的人變得不再信任我。
后來我漸漸明白真正的佼佼者是那些一直可靠的人。他們保證的事一定會做到。要想成為那樣的人就必須認(rèn)真規(guī)劃自己的時間。
你必須牢牢把握自己時間的控制權(quán),在約定好的期限即將到達(dá)的時候高質(zhì)量地完成你的工作。要想做到這一點起初會很難,因為你需要對超出你能力范圍的任務(wù)說不。
剛開始,你的老板和客戶可能不太會在意你。但是一旦你建立起靠譜、可信的名聲后,一切就都不一樣了。隨著時間的推移,其他開發(fā)者都會漸漸顯露疲態(tài),變得不再那么可靠,而你則會脫穎而出,成為團(tuán)隊里的佼佼者。我就是這樣成為了行業(yè)翹楚。我很好地協(xié)調(diào)了自己的時間并調(diào)整他人對自己的期望值,因此建立起了高質(zhì)量和高實效的好名聲。
? ? 不是所有的付出都會有回報
花時間也是一種投資。和其他的投資一樣,你非常期待投資會有回報,希望在回本的基礎(chǔ)上有所收益。
我之前曾提到“先讓它生效,再讓它正確地工作,最后再讓它更高效”這句話。但是不要誤解,這里的“正確”不代表完美,“高效”不代表追求極致。“正確”意味著你的代碼能夠準(zhǔn)確地實現(xiàn)功能并易于維護(hù)。“高效”意味著不影響用戶體驗。最關(guān)鍵的一點是你的應(yīng)用要讓用戶感覺很快。
因此,不要糾結(jié)于優(yōu)化一個基本上不用的函數(shù),也不要為了僅節(jié)省幾毫秒而去修改一個已經(jīng)比眨眼(大約300毫秒)還要快的功能。不要因為你學(xué)了一個新的技術(shù)或方法就把你之前寫的功能正確、結(jié)構(gòu)完整的代碼推翻重寫。
按照時間表去工作可以使你更加高效
起初我很難理解這一點。你不將你的精力全部投入到工作中也能做到高效?恩,這是真的。Allison
Gabriel是弗吉尼亞聯(lián)邦大學(xué)的管理學(xué)教授助理,主要研究工作需求和員工動機(jī)。她認(rèn)為:“很多研究表明人的認(rèn)知能力是有限的,當(dāng)你不斷地去耗費你的能力時,你并不能達(dá)到最佳的工作狀態(tài)。當(dāng)你被自己榨干時,你的效率會大幅下降。”
永遠(yuǎn)不要在壓力非常大的時候工作,尤其是你非常疲勞、情緒不好的時候。這些不安因素都會讓你分心,從身心兩方面對你造成不良影響,降低你的工作效率。
人腦的自控能力好比是一種資源,當(dāng)你進(jìn)行自我控制時,這個資源會被消耗一部分。如果你的自控能力被大量消耗的話你就不能集中注意力,自然就不能高效地工作了。
不論你是否樂意,你的身心都需要一個休息的時間。因此在每天的時間表里都要安排休息的時間。嚴(yán)格按照時間表的休息時間去休息,不多也不少,這樣可以讓你在充分休息的同時不感到內(nèi)疚。指定明確的休息時間可以讓你以更加自如的心態(tài)去工作,因為你知道你有休息的時間而不是無休止的工作下去。
結(jié)語
了解了這五個經(jīng)驗,相信你已經(jīng)明白了應(yīng)該如何安排自己的時間。合理地安排你的學(xué)習(xí)、工作與休息的時間,制定出詳細(xì)的時間表并嚴(yán)格按照它執(zhí)行。學(xué)習(xí)你應(yīng)該學(xué)的、花時間在一些必要工作上、該休息的時候好好休息。希望你也能在自己的領(lǐng)域嶄露頭角,成為一個不管學(xué)習(xí)還是工作,方法很重要,它決定了效率
世上無難事,只要肯放棄。