{"action":"created","issue":{"url":"https://api.github.com/repos/aszx87410/blog/issues/37","repository_url":"https://api.github.com/repos/aszx87410/blog","labels_url":"https://api.github.com/repos/aszx87410/blog/issues/37/labels{/name}","comments_url":"https://api.github.com/repos/aszx87410/blog/issues/37/comments","events_url":"https://api.github.com/repos/aszx87410/blog/issues/37/events","html_url":"https://github.com/aszx87410/blog/issues/37","id":395448907,"node_id":"MDU6SXNzdWUzOTU0NDg5MDc=","number":37,"title":"從 Redux 作者 Dan Abramov 的文章談前端學習路線圖","user":{"login":"aszx87410","id":2755720,"node_id":"MDQ6VXNlcjI3NTU3MjA=","avatar_url":"https://avatars1.githubusercontent.com/u/2755720?v=4","gravatar_id":"","url":"https://api.github.com/users/aszx87410","html_url":"https://github.com/aszx87410","followers_url":"https://api.github.com/users/aszx87410/followers","following_url":"https://api.github.com/users/aszx87410/following{/other_user}","gists_url":"https://api.github.com/users/aszx87410/gists{/gist_id}","starred_url":"https://api.github.com/users/aszx87410/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aszx87410/subscriptions","organizations_url":"https://api.github.com/users/aszx87410/orgs","repos_url":"https://api.github.com/users/aszx87410/repos","events_url":"https://api.github.com/users/aszx87410/events{/privacy}","received_events_url":"https://api.github.com/users/aszx87410/received_events","type":"User","site_admin":false},"labels":[{"id":1145506770,"node_id":"MDU6TGFiZWwxMTQ1NTA2Nzcw","url":"https://api.github.com/repos/aszx87410/blog/labels/Others","name":"Others","color":"833ad1","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":4,"created_at":"2019-01-03T03:41:19Z","updated_at":"2019-01-03T09:50:45Z","closed_at":null,"author_association":"OWNER","body":"# 前言\r\n\r\n前幾天看見 Redux 作者 Dan Abramov 寫的這篇：[Things I Don’t Know as of 2018](https://overreacted.io/things-i-dont-know-as-of-2018/)，看了之後其實滿有感觸的，前些日子也在思考這種跟自信相關的事情，也做了個簡單的總結，寫下了[兩年過後，我能夠被稱為資深工程師了嗎？](https://github.com/aszx87410/blog/issues/36)。\r\n\r\n無獨有偶地，這幾天也看到一些 2019 年更新版的學習路線圖，下面依舊有些留言在說「怎麼前端要學那麼多東西」、「怎麼學的完」、「前端好難啊」等等之類的，雖然這兩件事看似沒有關連，但我覺得其實是相關的。\r\n\r\n# 大神沒有你想像中厲害\r\n\r\n常常會看到許多有名的開發者被稱之為大神，既然會被稱作是大神一定有其原因，可能是每年都會在 conference 上面演講、在社群耕耘許久且貢獻良多、寫過一本很厲害的書等等，在這些方面他們的確很厲害，但大神只是個稱號，終究還是個人，他們在那些擅長的領域很厲害沒有錯，可是不用把他們想成什麼都會。\r\n\r\n以下節錄自開頭貼的那篇 Dan Abramov 寫的文章：\r\n\r\n> People often assume that I know far more than I actually do.\r\n> 大家常以為我會的東西很多，但其實沒那麼多\r\n\r\n> In this post I’ll offer an incomplete list of programming topics that people often wrongly assume that I know. I’m not saying you don’t need to learn them — or that I don’t know other useful things.\r\n> 這篇文章會列出一些大家以為我會但其實我不會的東西，但我不是說這些東西不需要學，也不是說我不知道其他有用的東西\r\n\r\n> First, there is often an unrealistic expectation that an experienced engineer knows every technology in their field. Have you seen a “learning roadmap” that consists of a hundred libraries and tools? It’s useful — but intimidating.\r\n> 首先，大家對大神們總有一些不切實際的幻想，認為他們在各自的領域中什麼都會。你有看過那些列出一大堆工具跟函式庫的學習路線圖嗎？那很有用沒錯，但也很嚇人\r\n\r\n（這邊的翻譯只求意思有到，可能會跟原文有些許偏差）\r\n\r\n引太多段就沒意思了，建議大家還是先去看完那篇文章，或是看完我這篇再去也可以，總之一定要去看原文。\r\n\r\n如果你不知道 Dan Abramov 是誰，這邊簡單介紹一下，他是 Redux 的作者，後來跑去 Facebook 工作，目前是 React 團隊的成員之一，在他的[部落格](https://overreacted.io/)上會發表一些跟 React 相關的小知識或是其他文章，又強又會寫又熱愛分享，是我個人的 role model。\r\n\r\n在上面引用的段落中，他想表達的就是大家都以為一個厲害的開發者什麼都會，他就常被大家以為他會的東西超級多，但其實根本沒有到這麼多，接下來他就列了一大堆自己不會的東西：\r\n\r\n1. 完全不會用 docker\r\n2. 對網路的理解知道有 IP 位置、DNS 以及有個通訊協定叫做 TCP/IP，就這樣了\r\n3. 不知道 Flexbox 跟 Grid\r\n4. 從來沒學過 SCSS/Sass\r\n5. 從沒設定過 HTTPS / SSL，只知道跟公鑰與私鑰有關\r\n\r\n他舉了二十幾個他不會的東西，有些其實跟後端比較有關，所以我挑幾個跟前端比較有關的（除了 docker）出來而已。\r\n\r\n舉了這些他不會或是不熟悉的技能，他希望大家看完文章後能理解的事情是：\r\n\r\n> Even your favorite developers may not know many things that you know.\r\n> 儘管是你很崇拜的開發者，知道的可能還沒有你多（這邊原文 favorite 應該比較像喜愛？但我直覺翻崇拜比較貼近）\r\n\r\n> Regardless of your knowledge level, your confidence can vary greatly.\r\n> （這句不知道怎麼翻比較好）\r\n\r\n> Experienced developers have valuable expertise despite knowledge gaps.\r\n> 有經驗的開發者儘管還是有很多不懂的，但至少他在某些領域上是專家\r\n\r\n文末提到儘管他講了這麼多，也不會貶低自己的價值或是經驗，因為有其他東西是他擅長的，所以他下一篇就寫自己擅長的東西：[The Elements of UI Engineering](https://overreacted.io/the-elements-of-ui-engineering/)\r\n\r\n# 這給我的啟示是什麼？\r\n\r\n老實說一開始看到那篇文章我有點嚇到，想說：「哇，原來我會的居然比 Dan 多，至少我用過 docker、我會用 SCSS，我也知道 TCP 的三次握手」，但仔細想想之後發現這句話只對了一半。\r\n\r\n對，在 Dan 提出的這些「不擅長」的領域中，我的確懂的比他多，可是這沒辦法推出：「我懂的比他多」，因為在那些他擅長的領域裡面，他有的知識一定屌打我。\r\n\r\n例如說對 React 的理解、對開源專案的理解、對 Redux 的理解以及對種種 UI 常見問題的理解，這些絕對都遠遠超過我。\r\n\r\n所以結論就是：有什麼好比的呢？\r\n\r\n除了一個人在幾乎所有的領域都比另外一個人厲害以外，似乎也很難說誰懂的比較多。儘管我們把範圍侷限在前端，前端還是包山包海包郵包了一大堆東西，為什麼一定要分出個高下？\r\n\r\n就像我在[兩年過後，我能夠被稱為資深工程師了嗎？](https://github.com/aszx87410/blog/issues/36)裡面寫到的，我知道我會很多，但我也知道我不會的很多，每個人都是這樣的。事實上公司也很難找到一個「什麼都會」的人，所以找某個領域的專家比較實在。\r\n\r\n你如果讓 Dan 去做那種需要一堆華麗動畫跟特效的網站，還要加上複雜的排版，他可能會做得很差；可是你今天把他放到他擅長的 UI Engineering 的職位，他就能夠做得很出色。\r\n\r\n不需要因為自己懂的不多而沒有自信，相反地，你要為了你懂的那些部份而變得有自信。\r\n\r\n# 這跟學習路線圖有什麼關係？\r\n\r\n現在請你打開 Google Map，定位到自己家附近，然後把方圓三公里之內的範圍都仔細看一遍。\r\n\r\n好，裡面每一個點、每一間店你都知道、都有印象嗎？\r\n\r\n沒有？沒關係這很正常，因為這是他媽的地圖啊！\r\n\r\n什麼是地圖？地圖就是把所有東西都標示的清清楚楚的，你越 zoom in 之後東西就越詳細，除了在特定時間才會開啟的時空之門以外，其他細節都在地圖上找得到。\r\n\r\n可是就算不知道所有的細節，有問題嗎？沒有問題，我還是知道附近哪間店好吃、該到哪裡去買菜、走這條巷子會比外面大馬路快，對周遭的環境我還是瞭若指掌，只是沒有到 100% 的了解而已。\r\n\r\n學習路線圖也是差不多的，上面列了一大堆的知識點、一大堆的專有名詞，我自己也是每次看到都頭昏眼花。但就像我上面所說的，它之所以是路線圖就是因為夠完整、夠詳細，幾乎把所有細節都列出來了，才有資格成為路線圖。\r\n\r\n事實上你也可以把其他學科列出這種 roadmap，像是數學，從加減乘除、平方小數、根號對數、二元一次方程式再到微積分，最後再到一些我也不知道是什麼的東西。\r\n\r\n路線圖最大的功用在哪？在於讓你有個明確的方向以及概念，讓你知道整個前端的領域大概是長這樣，有這些東西可以學；既然是要給這種大方向的東西，那路線圖當然大的不可思議，把能想到的全部都列出來了。\r\n\r\n可是你沒必要每一個都會。\r\n\r\n如果只是想踏入這個領域，你把 HTML、CSS 跟 JavaScript 搞好其實就行了，頂多再外加個三大框架之一，剩下的那些都可以暫時忽略，等以後再慢慢補起來。\r\n\r\n儘管你已經是開發者了想要繼續加強自己的技術，也沒必要把學習路線圖上面的所有東西學起來。前端學不完沒錯，但不只前端學不完，後端也學不完，寫 Android 跟寫 iOS 的也學不完，這本來就是一件很正常的事情，學得完才比較奇怪，就代表這項技術已經停滯不再發展了，不然怎麼可能學完？\r\n\r\n以後看到那些學習路線圖，你要想的不該是：「唉，前端學不完」，就算沒有路線圖你也學不完，你應該要做的是先看看路線圖，知道有哪些東西可以學，再去學你有興趣的那些技術。\r\n\r\n看路線圖不是看六法全書，要你研究每個法條甚至背起來，而是跟看地圖一樣，讓你對地理位置有概念，並且幫助你決定要往哪裡走。\r\n\r\n# 結論\r\n\r\n學習應該是一件開心的事，我相信 Dan 在解決那些 UI 問題時都很開心，就像我寫每篇技術文章的時候無論花了多少時間、查了多少資料也還是覺得開心。\r\n\r\n沒什麼，就因為我熱愛。\r\n\r\n最後幫大家做個簡單的條列式總結： \r\n\r\n1. 所有領域本來就都學不完，這很正常\r\n2. 挑自己有興趣的部分學，然後成為專家\r\n3. 不要因為自己不會的部份而失去自信，而是要為了自己會的部分產生自信"},"comment":{"url":"https://api.github.com/repos/aszx87410/blog/issues/comments/451096783","html_url":"https://github.com/aszx87410/blog/issues/37#issuecomment-451096783","issue_url":"https://api.github.com/repos/aszx87410/blog/issues/37","id":451096783,"node_id":"MDEyOklzc3VlQ29tbWVudDQ1MTA5Njc4Mw==","user":{"login":"aszx87410","id":2755720,"node_id":"MDQ6VXNlcjI3NTU3MjA=","avatar_url":"https://avatars1.githubusercontent.com/u/2755720?v=4","gravatar_id":"","url":"https://api.github.com/users/aszx87410","html_url":"https://github.com/aszx87410","followers_url":"https://api.github.com/users/aszx87410/followers","following_url":"https://api.github.com/users/aszx87410/following{/other_user}","gists_url":"https://api.github.com/users/aszx87410/gists{/gist_id}","starred_url":"https://api.github.com/users/aszx87410/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aszx87410/subscriptions","organizations_url":"https://api.github.com/users/aszx87410/orgs","repos_url":"https://api.github.com/users/aszx87410/repos","events_url":"https://api.github.com/users/aszx87410/events{/privacy}","received_events_url":"https://api.github.com/users/aszx87410/received_events","type":"User","site_admin":false},"created_at":"2019-01-03T09:50:45Z","updated_at":"2019-01-03T09:50:45Z","author_association":"OWNER","body":"@zizizheng 差不多是這樣，只是我就覺得怎麼翻都有點怪XD"}}
{"actor":{"display_login":"aszx87410"}}