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