高效JavaScript開(kāi)發(fā)者的習(xí)慣

Effective JavaScript

我最害怕成為被時(shí)間困住的程序員。你知道我在說(shuō)誰(shuí)庙洼。

這些程序員有時(shí)候會(huì)做出糟糕的無(wú)意識(shí)的決定顿痪。“我懂得夠多了油够,我現(xiàn)在經(jīng)驗(yàn)無(wú)比豐富蚁袭。”

從那一刻開(kāi)始石咬,他們停止了求知之路揩悄。他們不再用新的想法挑戰(zhàn)自己。他們現(xiàn)在只依賴(lài)于自己的狹隘的經(jīng)驗(yàn)鬼悠。

我們必須持續(xù)學(xué)習(xí)删性。

很長(zhǎng)一段時(shí)間里,我一直在想這個(gè)問(wèn)題:優(yōu)秀的 JavaScript 開(kāi)發(fā)者和普通開(kāi)發(fā)者之間的差別是什么焕窝?今天我想分享一些零碎想法蹬挺。

“優(yōu)秀不是一兩次的表現(xiàn),而是一種習(xí)慣它掂“桶铮”——亞里士多德

習(xí)慣造就了我們

在我第一次閱讀《習(xí)慣的力量》的時(shí)候,有個(gè)觀點(diǎn)立即獲得我的認(rèn)同。那就是關(guān)鍵習(xí)慣的概念榕茧。

你知道的垃沦,有些習(xí)慣比其他習(xí)慣更重要。有些習(xí)慣會(huì)在我們身上觸發(fā)“連鎖反應(yīng)”雪猪,引起更多的行為改變栏尚。例如,定期鍛煉會(huì)讓你的飲食更加健康只恨,而吸煙則有相反的效果译仗。

這些就是關(guān)鍵習(xí)慣。這些習(xí)慣對(duì)我們的影響超乎你的想象官觅。

這個(gè)發(fā)現(xiàn)讓我思考:“高效的JavaScript開(kāi)發(fā)者的關(guān)鍵習(xí)慣是什么呢纵菌?”

“動(dòng)機(jī)讓你開(kāi)始行動(dòng),習(xí)慣讓你繼續(xù)前行休涤≡墼玻”——Jim Ryun

持續(xù)學(xué)習(xí)

在快節(jié)奏的JavaScript世界里,很多人對(duì)持續(xù)學(xué)習(xí)的必要性已經(jīng)習(xí)以為常了功氨。事實(shí)上序苏,我們有個(gè)專(zhuān)門(mén)的短語(yǔ)用來(lái)描述“JavaScript學(xué)習(xí)疲勞”。但是盡管我們能接觸到大量的信息捷凄,我仍然碰到很多開(kāi)發(fā)者并不積極學(xué)習(xí)忱详。

借口各種各樣《宓樱“我沒(méi)時(shí)間”匈睁、“我的知識(shí)足夠應(yīng)付工作了”或者“每出來(lái)一個(gè)新的JavaScript框架都要學(xué),累不累啊”桶错。

我們都很善于找借口航唆,特別是給自己。我應(yīng)該知道院刁,我是一個(gè)找借口的黑帶選手糯钙。

但是這些借口并不能讓你免于經(jīng)歷JavaScript開(kāi)發(fā)者最大的恐懼——落后于趨勢(shì)。

“我親愛(ài)的開(kāi)發(fā)者同胞黎比,不要問(wèn)你的代碼能為你做什么超营,問(wèn)問(wèn)你能為你的代碼做什么≡某妫”——JFK在另一個(gè)世界如是說(shuō)演闭。

新聞和開(kāi)發(fā)界動(dòng)態(tài)

在快速發(fā)展的JavaScript世界,很難在所有事情上保持領(lǐng)先颓帝。為了了解最新的JavaScript技巧米碰,我的方法是訂閱JavaScript 周報(bào)窝革。我已經(jīng)習(xí)慣了每個(gè)周末瀏覽一遍,看看最近的 JavaScript 世界有什么新東西吕座。

瀏覽所有內(nèi)容大概花費(fèi)我半個(gè)到一個(gè)小時(shí)虐译。這取決于我的興趣和深入程度。有時(shí)候我確實(shí)會(huì)深入閱讀超過(guò)2個(gè)小時(shí)吴趴,如果碰到有意思的教程的話漆诽。

找到正確的平衡很重要,這樣你就會(huì)一直樂(lè)在其中锣枝,不會(huì)把自己搞得筋疲力盡厢拭。

業(yè)余項(xiàng)目是你的好朋友

這也是一個(gè)大招。開(kāi)發(fā)和維護(hù)一個(gè)業(yè)余JavaScript項(xiàng)目是另一個(gè)會(huì)帶來(lái)好處的習(xí)慣撇叁。

業(yè)余項(xiàng)目的特點(diǎn)是它們給了你完全的自由供鸠。沒(méi)有約束條件,沒(méi)有借口陨闹,沒(méi)有截止時(shí)間楞捂。它完全取決于你自己的想象力。

這些項(xiàng)目可以野心勃勃趋厉,也可以閑庭信步寨闹。你可以致力于一個(gè)你希望成為下一個(gè) Twitter 的項(xiàng)目,也可以做一個(gè)讓你的生活更容易的寵物項(xiàng)目君账。這都無(wú)所謂鼻忠。

關(guān)于如何從業(yè)余項(xiàng)目獲得最大收益,我有幾個(gè)想法要分享給你:

  1. 你可以用你覺(jué)得很酷杈绸,并且想要了解更多的語(yǔ)言、框架矮瘟、技術(shù)來(lái)寫(xiě)業(yè)余項(xiàng)目瞳脓。
  2. 你可以用熟悉的 Ember.js 而不是 React 來(lái)開(kāi)發(fā),也可以初次嘗試陌生的 Rust澈侠。前者會(huì)給你實(shí)用的見(jiàn)解劫侧,而后者會(huì)打開(kāi)你的思路,接受新的思維方式哨啃。
  3. 發(fā)布你的項(xiàng)目烧栋。重復(fù)一遍,發(fā)布你的項(xiàng)目拳球!一個(gè)業(yè)余項(xiàng)目是熟悉整個(gè)開(kāi)發(fā)和發(fā)布周期的絕佳機(jī)會(huì)审姓。建立起日志、錯(cuò)誤上報(bào)祝峻、持續(xù)集成等完整機(jī)制魔吐。把它放到 Heroku 的免費(fèi)服務(wù)上去扎筒,安裝所有插件。

從開(kāi)源項(xiàng)目中學(xué)習(xí)

達(dá)爾文估計(jì)會(huì)為我們的開(kāi)源生態(tài)系統(tǒng)感到驕傲酬姆。其中最大的特點(diǎn)是:只有最好的才能榮登榜首嗜桌。(除了Angular)

流行的開(kāi)源庫(kù)傾向于用特殊的方式解決復(fù)雜的問(wèn)題。盡管數(shù)量龐大辞色,它們有一個(gè)共同點(diǎn):對(duì)開(kāi)發(fā)者友好骨宠,容易上手。

好好想想相满。一個(gè)開(kāi)源庫(kù)越難用层亿,它就越難成功。

這就是為什么我一直嘗試從成功的庫(kù)中學(xué)習(xí)的原因雳灵。React 的組件系統(tǒng)棕所,Express 的中間件模式和 Lodash 的方法簽名都是學(xué)習(xí)的機(jī)會(huì)。

寫(xiě)代碼時(shí)考慮同事怎么理解

這是我對(duì)一個(gè)古老的開(kāi)發(fā)者引言的理解:


Developer's quote

我嘗試做的是悯辙,在開(kāi)發(fā)過(guò)程中問(wèn)問(wèn)自己“如果是同事寫(xiě)的這個(gè)模塊琳省,我能不用翻遍整個(gè)源碼就能理解和使用嗎?我會(huì)很樂(lè)意并容易地使用它嗎躲撰?

把編寫(xiě)容易使用和理解的代碼擺在首位针贬,是非常值得的。你會(huì)驚訝地發(fā)現(xiàn)拢蛋,我自認(rèn)為“除了我自己沒(méi)有人會(huì)去用這些代碼了”一次又一次地被證明是錯(cuò)誤的桦他。

但是最終是否有人使用了某個(gè)特定的模塊,這無(wú)關(guān)緊要谆棱。始終考慮如何讓你的代碼更好地給其他人使用快压,這會(huì)讓你成為更好的開(kāi)發(fā)者。并且你的同事也會(huì)因此喜歡你的垃瞧。

如果有同事跑來(lái)問(wèn)你做的某個(gè)模塊能否解決他的問(wèn)題蔫劣,這種感覺(jué)非常棒。然而更不可思議的感覺(jué)是个从,他們甚至都不用問(wèn)你脉幢,而你稍后發(fā)現(xiàn)他們已經(jīng)在用你的代碼了。

另一個(gè)額外的好處是嗦锐,你會(huì)發(fā)現(xiàn)你跟同事會(huì)經(jīng)常討論如何寫(xiě)出易于使用和理解的代碼嫌松。想象一下“你妹,我不敢相信我還要用這個(gè)模塊”的場(chǎng)景會(huì)減少奕污,而“不錯(cuò)萎羔,這個(gè)模塊解決了我的問(wèn)題”的場(chǎng)景會(huì)變多。

“傻子都能寫(xiě)出計(jì)算機(jī)能理解的代碼碳默。但好程序員才能寫(xiě)出人能理解的代碼”—— Martin Fowler

考慮理想的解決方案

每當(dāng)我有新任務(wù)外驱,我都會(huì)在開(kāi)始編碼前嘗試考慮理想的解決方案育灸。

尋找理想的解決方案有如下規(guī)則:

沒(méi)有時(shí)間限制。想象下你有無(wú)限多的時(shí)間來(lái)做任何事情昵宇。
沒(méi)有架構(gòu)限制华蜒。想象下你可以使用任何喜歡的庫(kù)苇本,不使用任何不喜歡的東西。

記住這兩個(gè)規(guī)則,我想出了開(kāi)發(fā)項(xiàng)目的理想方式若未。當(dāng)然了活烙,我?guī)缀醪惶赡苋?zhí)行理想計(jì)劃属愤。

但現(xiàn)在我知道理想解決方案是什么了揍诽,我就有了努力的目標(biāo)。當(dāng)我回到有著截止日期和架構(gòu)限制的煩人的現(xiàn)實(shí)中時(shí)犯助,我會(huì)盡可能地靠近理想情況癣漆。

這種方法的另一個(gè)好處是,它幫我避開(kāi)了這樣的集體思維陷阱:“我們一直是這樣做的剂买,所以我們還會(huì)繼續(xù)這樣做惠爽。”

有時(shí)候你會(huì)發(fā)現(xiàn)自己要求額外的時(shí)間瞬哼,以便能夠更接近理想結(jié)果婚肆。并且因?yàn)楝F(xiàn)在你對(duì)想要實(shí)現(xiàn)的結(jié)果有著清晰的藍(lán)圖,調(diào)整起來(lái)也會(huì)更輕松坐慰。

挑戰(zhàn) JavaScript 開(kāi)發(fā)

持續(xù)學(xué)習(xí)和挑戰(zhàn)自我的習(xí)慣并不容易培養(yǎng)较性。但是一旦你掌握了訣竅,你會(huì)發(fā)現(xiàn)它們價(jià)值連城结胀。

對(duì)我們的現(xiàn)狀憤世嫉俗并抱有“太陽(yáng)底下無(wú)新事”的心理赞咙,這再容易不過(guò)了。

但真相卻是糟港,我們使用的每一個(gè)開(kāi)源項(xiàng)目和接手的每一個(gè)任務(wù)人弓,對(duì)我們來(lái)說(shuō)都是利用學(xué)習(xí)技能成為整體上更好的開(kāi)發(fā)者的又一個(gè)機(jī)會(huì)。

英文原文:The Habits of Effective JavaScript Developers

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末着逐,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子意蛀,更是在濱河造成了極大的恐慌耸别,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,222評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件县钥,死亡現(xiàn)場(chǎng)離奇詭異秀姐,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)若贮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,455評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)省有,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)痒留,“玉大人,你說(shuō)我怎么就攤上這事蠢沿∩焱罚” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,720評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵舷蟀,是天一觀的道長(zhǎng)恤磷。 經(jīng)常有香客問(wèn)我,道長(zhǎng)野宜,這世上最難降的妖魔是什么扫步? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,568評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮匈子,結(jié)果婚禮上河胎,老公的妹妹穿的比我還像新娘。我一直安慰自己虎敦,他們只是感情好游岳,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,696評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著原茅,像睡著了一般吭历。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上擂橘,一...
    開(kāi)封第一講書(shū)人閱讀 49,879評(píng)論 1 290
  • 那天晌区,我揣著相機(jī)與錄音,去河邊找鬼通贞。 笑死朗若,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的昌罩。 我是一名探鬼主播哭懈,決...
    沈念sama閱讀 39,028評(píng)論 3 409
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼茎用!你這毒婦竟也來(lái)了遣总?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,773評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤轨功,失蹤者是張志新(化名)和其女友劉穎旭斥,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體古涧,經(jīng)...
    沈念sama閱讀 44,220評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡垂券,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,550評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了羡滑。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片菇爪。...
    茶點(diǎn)故事閱讀 38,697評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡算芯,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出凳宙,到底是詐尸還是另有隱情熙揍,我是刑警寧澤,帶...
    沈念sama閱讀 34,360評(píng)論 4 332
  • 正文 年R本政府宣布近速,位于F島的核電站诈嘿,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏削葱。R本人自食惡果不足惜奖亚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,002評(píng)論 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望析砸。 院中可真熱鬧昔字,春花似錦、人聲如沸首繁。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,782評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)弦疮。三九已至夹攒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間胁塞,已是汗流浹背咏尝。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,010評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留啸罢,地道東北人编检。 一個(gè)月前我還...
    沈念sama閱讀 46,433評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像扰才,于是被迫代替她去往敵國(guó)和親允懂。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,587評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,813評(píng)論 25 707
  • 本文內(nèi)容以NetworkWordCount代碼為例衩匣,代碼如下 從ssc.socketTextStream開(kāi)始蕾总,我們...
    海納百川_spark閱讀 1,164評(píng)論 0 4
  • 今天頭很炸 從昨天晚上凌晨渾渾噩噩 睡到中午十二點(diǎn) 醒來(lái)玩手機(jī) 訂外賣(mài) 吃喝玩樂(lè) 沒(méi)下過(guò)床 看起來(lái)是再舒服不過(guò)的生...
    阿躁閱讀 548評(píng)論 0 0
  • 親愛(ài)的Wendy: 媽媽送你去上學(xué)的路上,平常你總是會(huì)吧啦吧啦說(shuō)個(gè)不停琅捏,今天因?yàn)檐?chē)上坐著媽媽的兩位同事生百,你整個(gè)上學(xué)...
    C呀么CJ閱讀 190評(píng)論 0 1