一隻大四狗對程式設計師的淺見

C_Prize發表於2019-04-24

前言

最近重學前端在前端娛樂圈是挺有熱度的,早前無意間通過別的木易楊大佬接觸到winter大神,這是當時看到的大佬整理的筆記,這位大佬也在掘金活躍,這是大佬的筆記節選:

1、對於框架的使用沒必要花太多時間,應該多研究一下三大框架背後的設計思想。

2、當一個程式設計師對演算法、語言標準、底層、原生、英文文件這些詞彙產生恐懼感的時候他的技術生命已經走到盡頭。

3、前端架構主要解決的是高複用性,架構能力提升方向主要是元件庫開發、前端框架實現等。

4、對於前端進階這個問題,其實看書的作用和意義已經不太明顯,需要尋找好的平臺和合適的專案,在專案中不斷克服難題並挑戰自己,遇到問題再去查資料總結。如果只是閉門看書那很難成為高手,書只是基礎而已,真正的應用還是在專案中。

5、寒冬中能做的只有提升自己,但是光靠技術是不行的。
複製程式碼

專業能力

底層

1.編譯原理,這個東西離我們前端是多麼遙遠,但是現在SASS,Babel這些,不都是依賴AST,需要編寫的Bable外掛,很多時候需要我們對AST有一定了解,編譯原理對這方面有很大幫助,這裡有一篇文章 2.計算機網路,話說這個東西我上課的時候,覺得特別無聊,等工作的時候,發現,哦豁,書上的東西和現在的東西咋不一樣,TCP、UDP這些,我都很吐槽的,因為平時就發個請求,也沒啥,到了接觸工作,發現瞭解http、https這些,對我們開發很有幫助

原生

1.我的一個想法就是,原生就是我們學習的加減乘除,而後續的高階數學(框架)都建立在這基礎上,一個加減乘除不熟悉的人,你覺得他會很多計算出高階數學的結果嗎

2.瞭解原生能夠站在語言設計者角度來認識這門語言,就像媽媽一樣,你瞭解你的孩子優點和缺點,那麼很容易在讓他做一件事之前,分析優缺點,讓他做合適的事情,如果是外人,那麼只想著讓孩子做事情而已

演算法

1.演算法的本質是為了解決問題,但是一般來說,我們很少遇到非演算法不能解決的問題,那麼演算法就主要突出在解決問題的思路和效率上,也就是可以更好的解決問題,這是演算法被忽略的重大原因,從以前我看到阮一峰大佬的快排演算法被批,我就意識到問題的嚴重性,演算法是嚴肅的,人家是空間換時間,你是為了實現方面犧牲了空間,實現倒是實現了,但是缺不能瞭解到快排的靈魂所在,只要沒有到達瓶頸,那麼優化永遠是句空話,現在的首屏渲染優化,也是突出了以後才被重視的。

2.演算法可以帶來思維方式的變化,當時有一個舍友在實現一個型別微信的好友查詢,有一個輸入名字然後顯示候選人,我被他的思維所驚訝道,他使用了最長公共子序列,然後那這個最長公共子序列演算法去計算這個序列與匹配字串的比率,按照這個來排序,這個方法先不談,我驚訝於他對處理事情的思維,與我已經不同,還有一個就是當時在CNODE社群看到的巢狀陣列查詢元素,有人提出了更快的查詢演算法,多麼有思想的人。

3.演算法思想也可以遷移到其他場景,我發現這個問題是在刷一題叫陣列前K個最大值、還有一題n個元素的陣列,最少需要比較多少次的題目,兩者都用到了快排的思想去解決。

語言標準

1.語言標準就像數學上的定義,是所有問題的最終解決手段, 最近來看,ECMASCRIPT規範,已經被很多人知道了,並且應用到了自己學習中去,對我而言,有一個貼切的例子,規範就像我們學習的導數,不知道原理,可以去用,還用得不錯,但是遇到一些問題,無法解決,這時候老師就會從導數原理講解解題思路,正如這個例子,語言標準是我們解決問題的最終手段,是這門語言的公理,有時候一些問題困惑,我們需要它來解惑。

框架

1.三大框架的共性是什麼,MVVM、元件化、狀態管理、路由,當然這裡由於我也沒仔細研究過Augular,React,這裡只能說大體是這樣。因為以前JQuery那種MVC的模式,所以出現了MVVM來實現關注點分離,讓我們精力關注在資料上,前端複雜了,所以需要元件化來解耦,解耦之後資料流成了網狀,我們設計了狀態管理來使得資料流變為樹狀,為了實現全域性、區域性切換,設計了路由來對應檢視的URL對映

個人能力

英語

1.命名,現在很多人亂命名,寫出來的程式碼只能給自己讀,好的命名可以自解釋,像拼音首字母縮寫命名法,可能第二天你自己都忘記了,但是標準命名,人家就算不懂英文,查一下就知道你寫的是啥。

2.看到XX報錯,反手就把提示甩給別人,其實現在框架做得很好,英文提示基本都告訴你是什麼錯誤了,不懂英文還要先去翻譯一次,懂英文能夠直接翻譯成中文,按照自己的理解來解決問題,這方面花費的時間差距是很大的。

3.技術部落格、技術書,程式設計這東西是在外國帶過來的,人家就像我們用中文寫程式碼那樣暢快,我們起步也晚,國外的技術部落格、技術書很多時候都是質量非常高的,有人會說,我們可以看翻譯,翻譯失真是一方面,更大的問題是,技術的搶先,一般來說,翻譯一本書是需要時間的,也不是所有的外國資料都有翻譯,你能搶先學習,那麼你就有先發優勢,第一次意識到這件事,是我在學習語言的型別系統看到的《Types and Programming Languages》,冒的中文翻譯,就只能自己去翻譯了。

表達、理解能力

1.為啥說表達能力那麼重要呢,因為你會技術很理所當然的事情,但是擔憂的是,可能你覺得你會,只是你的知識限制了你的想象,我們需要與他人更多的交流,程式設計師追求的就是言簡意賅,深入淺出,在讀官方文件會有摸不著頭腦的情況,但是看別人的部落格就會好很多,部落格就代表了這個人的知識組織能力和表達能力。 2.理解能力,甲方爸爸的需求,你總得好好理解吧,半路再改,兩邊難受,我覺得理解的終點,就是能夠根據現有的場景推測出對方的意圖,通常來說,對方並不知道他要什麼、問題在哪裡,我們基於現有的場景進行推測,理解,一個例子就是群裡說為啥Vue資料不更新,你就知道他是遇到響應式邊界或者非同步問題導致的,當然這個例子不太恰當,我覺得更加像是心有靈犀吧。

抽象與具體轉換能力

1.erlang之父提倡寫程式之前先思考,我個人也覺得是,不應該一股腦去堆程式碼,而是應該先站抽象整個事情,分析流程,選擇方案,這個過程就像把完美的演算法虛擬碼實現,更加符合我的理想中的程式設計師

總結

我也只是一條大四待業單身狗(哭),這是我昨晚突然想起來需要總結一些程式設計師方面的,畢竟最近因為種種原因,一些思想有了變化,在邁向下一個地點之前,做一個小小的總結,來警示自己,對了,如果大佬們賞臉,可以在我的GitHub倉庫star鼓勵下

相關文章