馬漢
0.忽視了編程終究是以人為本的。是的,機(jī)器的確會(huì)執(zhí)行代碼,但編程是為人們解決問(wèn)題的,將他們的需求轉(zhuǎn)換為由其他人讀取、維護(hù)和修改的代碼。
1 .未能花充足的時(shí)間練習(xí)編程。根據(jù)工作或日程安排,可能會(huì)花費(fèi)大量時(shí)間在與編程相關(guān)的任務(wù)上,但實(shí)際上這些并非編程本身。
2.停留在正在學(xué)習(xí)的某個(gè)技術(shù)的表面。沾沾自喜于自己掌握了足夠完成任務(wù)的基礎(chǔ)知識(shí),對(duì)技術(shù)的了解卻只流于表面,未有觸及核心內(nèi)容。
3.在編程學(xué)習(xí)中挑挑揀揀,無(wú)法持之以恒。一開(kāi)始學(xué)習(xí)Rails,半道兒發(fā)現(xiàn)Phoenix也不錯(cuò),哦,學(xué)點(diǎn)JavaScript吧,這樣就能用Node.js了......從TJ轉(zhuǎn)到Go然后堅(jiān)持了一陣子......說(shuō)起來(lái)Rust好不好用來(lái)著?
一周內(nèi)的瀏覽歷史全是這些東西,“Web開(kāi)發(fā)者還是數(shù)據(jù)科學(xué)家”“Clojure死了嗎?”“Clojure對(duì)比Elixir”“Crystal足夠成熟嗎”“Golang有什么好的架構(gòu)”“Phoenix對(duì)比Buffalo”以及“Kotlin與網(wǎng)頁(yè)開(kāi)發(fā)”。
4.在線閱讀書(shū)籍和觀看課程,卻不練習(xí)相應(yīng)的技能,因此很快就會(huì)忘記它們。
5.不關(guān)心基礎(chǔ)知識(shí)。如果沒(méi)有對(duì)象關(guān)系映射(O/RMapping)的輔助,連最基本的SQL連接都搞不定。
6.缺乏足夠的耐心或自律來(lái)完成學(xué)習(xí)過(guò)程和掌握任何技術(shù)所需的步驟。
7.疲于應(yīng)付日常編程中的各種問(wèn)題,缺乏繼續(xù)學(xué)習(xí)的長(zhǎng)遠(yuǎn)規(guī)劃安排。
8.浪費(fèi)太多時(shí)間在各種框架和庫(kù)(如Angular,React和Vue)中進(jìn)行選擇,而不是僅僅認(rèn)準(zhǔn)一個(gè),使用它并且只有在真正需要時(shí)才切換其他。實(shí)際上講就是,一心只想找到能一勞永逸的萬(wàn)能鑰匙,而不愿意先充分利用手頭資源。
9.無(wú)法認(rèn)識(shí)到現(xiàn)代編程需要多語(yǔ)言協(xié)作的性質(zhì)。在大多數(shù)領(lǐng)域,期望一種編程語(yǔ)言成為解決所有問(wèn)題的靈丹妙藥是荒誕不經(jīng)的。同樣,過(guò)于執(zhí)著把自己分類成X或Y程序員,而不是“偏愛(ài)X或Y語(yǔ)言的程序員”,也是不行的。
10.害怕嘗試新技術(shù)。不要只是閱讀某些新興技術(shù)(例如區(qū)塊鏈或聊天機(jī)器人)相關(guān)的文章,而是自己動(dòng)手打開(kāi)虛擬機(jī)試用一下,即使它涉及到不熟悉的編程語(yǔ)言或應(yīng)用程序編程接口(API)。
11.因害怕被評(píng)判,而不敢與他人分享代碼或讓他人檢查自己的代碼。
12.學(xué)習(xí)時(shí)沒(méi)有進(jìn)行許多零碎練習(xí)和開(kāi)展項(xiàng)目。
13.自己沒(méi)有先行思考而后再進(jìn)行搜索,谷歌上的確能找到辦法,但是看到別人給出的辦法之后又很懊惱,覺(jué)得自己應(yīng)該能依靠自己的腦子想出來(lái)。
14.不向更有經(jīng)驗(yàn)的開(kāi)發(fā)人員尋求一對(duì)一輔導(dǎo)。
15.期望在不切實(shí)際的時(shí)間內(nèi)一次學(xué)習(xí)所有東西(例如,一個(gè)月內(nèi)掌握iOS開(kāi)發(fā))。
16.對(duì)于事業(yè)心強(qiáng)的人而言,不去嘗試那些貌似無(wú)利可圖的有趣項(xiàng)目。
17.因?yàn)楹ε陆o人以愚蠢或菜鳥(niǎo)的印象(事實(shí)并非如此)而不去發(fā)問(wèn)。
18.如果在創(chuàng)建程序時(shí)只是將一些類庫(kù)粘合在一起,而不是用更復(fù)雜的語(yǔ)言來(lái)寫(xiě)“高級(jí)”算法,就覺(jué)得自己不是真正的程序員。
19.讓習(xí)得最佳實(shí)踐的欲望阻礙掌握特定語(yǔ)言或技術(shù)的基礎(chǔ)知識(shí)的能力。例如,在開(kāi)始創(chuàng)建項(xiàng)目之前,感覺(jué)自己需要了解有關(guān)設(shè)計(jì)模式的整本書(shū)或掌握TDD/BDD。
20.完美主義。讓完美成為“足夠好”的敵人。從不交付任何東西,一直卡在最后階段。(但保持平衡很重要,所以不要為了交付而交付可怕的破碎軟件。)
21.與前一點(diǎn)相關(guān),忽略了編程是循序漸進(jìn)的:應(yīng)該先使其工作,然后再讓其變快,再讓代碼簡(jiǎn)潔明了。期待從一開(kāi)始就有一個(gè)絕佳的解決方案是不可能的。
22.覺(jué)得自己做的不夠好,如果你不是傳統(tǒng)觀念中“程序員”的形象,那可能就有些不妙,因?yàn)槿绻麤](méi)有與你形象類似(比如,女性和少數(shù)民族等)的成功例子供參考,你更傾向于覺(jué)得自己“不優(yōu)秀”。這就解釋了女性和少數(shù)民族在科技界的重要性———他們?yōu)樗颂峁?biāo)桿,增加他們向上的信心和動(dòng)力。
23.編寫(xiě)代碼并閱讀書(shū)籍學(xué)習(xí)編程,但從不閱讀他人的代碼。OpenSource為我們提供了一個(gè)驚人的資源,可以大大促進(jìn)對(duì)編程和最佳實(shí)踐的理解。
24.未能接觸到其他范例或領(lǐng)域。因?yàn)槭蔷W(wǎng)頁(yè)開(kāi)發(fā)人員,就不去了解其他類型的開(kāi)發(fā)。因?yàn)槟阒烂嫦驅(qū)ο蟮木幊?,就不去學(xué)習(xí)函數(shù)式編程。
25.不教別人學(xué)到的東西。沒(méi)有什么能比向別人解釋更能鞏固自己所學(xué)。即使只是為了教學(xué)而學(xué)習(xí)也能提高自己的學(xué)習(xí)能力。
這樣你就了解了以上25個(gè)誤區(qū)也可以叫做“陷阱”。哦,實(shí)際上是26個(gè),程序員都習(xí)慣從0開(kāi)始的。