如何成為一名全棧工程師?
我是學計算機專業的, 在剛大學的時候,還不知道什麼是全棧,反正什麼都學。我大學關於程式設計學的課 程有c、彙編、linux、JavaSE、嵌入式等;
我一直對c++很憧憬,覺得學c++都大神,在大三的時候,要三選一:c++ 、c#,、Java。不過我報課的時 候網速不行,沒報上c++,報上了java。那時候c++很搶手, 不過上課一段時間後有人就後悔了,轉了 Java或者C#。我當時也是瞭解Java入門簡單, 以後工作也好找,就安安心心的學Java了。當時是2012年 !
大學生活總是過得很快,很充實。除了要學的程式設計課程, 我還看一些培訓的課程。對於新手的我,開始 是看一些基礎的視訊:如html,css3, js,jquery,Java,JavaWeb,mysql,tomcat。老師也會讓我們
第一個小專案:盆栽商場,就一個網頁頁面,沒啥邏輯,加入購物車這樣的功能都沒有,更沒有付款雲 雲了。
第二個小專案:聊天室,這個算是很好的了, 有服務端,有客戶端,用swing元件寫的桌面應用,後來 程式碼上傳到了百度文件,畢業後幾年了, 還有人找到我, 問聊天室程式碼的問題。服務端使用的socket 連結,一個服務端可以連結多個客戶端, 能實現多人同時聊天,像一個群一樣,做工很簡單。
第三個小專案:上傳下載,我當時的目標就是把上傳下載做成一個jar包,供其它專案呼叫,做出來是功 能非常簡陋, 啥設計模式,介面程式設計思想,都浮雲。只能上傳成功到伺服器,下載檔案到本地。
第四個小專案:手機通訊錄,手機app端的,可以填寫手機號碼,生日什麼的,以我當時程式碼程式設計的水平 , 我肯定不會寫, 我是根據網上的專案視訊教學,自己一行一行敲出來的。
大學的其他專案,可能都想不起來的,就這幾個印象最深。親歷親為,很好的鍛鍊了我的程式設計能力。在 此,想對還在學校的同學們說一句話: 程式碼真的是敲出來的!
大學畢業了,全棧這詞好像從那時剛剛流行,我自我感覺良好, 至少比我同學他們的程式設計能力高,反正 我是這麼認為的。不過最後我同學他們都找到工作了, 我還沒有(好打臉)。
我的前兩家公司都是小公司。第一家是在上海做了幾個專案被外派到了安徽黃山。黃山有最著名的一棵 樹:迎客鬆,我爬上去看了它兩次。
在黃山,做了幾個專案,當時用的專案框架:Struts,Spring,Hibernate;使用mysql 資料庫, struts1和struts2 視訊教學都看過, 自己搭過框架,都是很基礎級別的,配置都是網上找。後來替換 到新一點的Java框架: Spring,SpringMVC,Hibernate;前端也使用了easyUI,bootstrap,layui。自己也看過less和sass的視訊。(好像現在還有stylus,技術真是層出不窮,學無止境啊。) 關於nodejs 我也看過簡單的文件教程,自己能搞簡單的服務請求什麼的。
那些專案對於現在的我來說,只能說是鞏固了看視訊學習到的知識。沒啥技術含量,基礎倒是打的很牢 ,不過底層的原始碼,設計模式,思想程式設計等也都是浮雲。
後來又辭職來到上海,那時是在17年,公司是創業型公司。用nodejs開發的後端,IOS、Android前端, Spring、SpringMVC、Mybatis框架的後端管理平臺。我負責後端管理平臺。
創業型公司需要的是全才,不會的要立馬學。在此我以下技術得到了很好的提升:
linux基本命令和各種軟體的安裝(菜鳥級別的):和很多菜鳥一樣, 我開始弄伺服器系統的時候,都 是windows伺服器的tomcat.用的是阿里雲買的伺服器(現在想想是真的菜)。後來弄linux系統,先是使 用各種連線工具(目前我用的是winSCP+Putty),學習各種基本命令,找各種日誌,排查各種出錯。最 難的就是安裝,因為版本問題導致的出錯概率太大了。
nginx(域名的配置):以前也用過tomcat直接配置過域名,後來知道nginx也可以用就學這個,技能總 是不斷迭代更新。nginx的conf配置基本都是copy來的,各種引數基本都是預設。https證書除了買, 還 可以用Let's Encrypt免費申請(安裝Let's Encrypt可以讓你遇到各種坑:python版本,nginx ssl連線 ,檔案許可權等)
nodejs(js後端服務):npm install是最難的命令,各種版本問題、模組報錯(java的maven就很好, 能自動下載模組,定製各種版本,如springboot相關的jar能控制預設相關jar的版本)。
mysql(備份,主從配置):以前覺得能寫sql,訪問資料庫,CRUD,萬事大吉。不過真正要自己考慮專案 的高可用、高併發、高效能、分散式、負載均衡的時候, CRUD顯得不值一提。mysql的儲存檔案, InnoDB索引,B+Tree演算法,執行計劃優化。哎,太複雜了。
redis(資料快取):redis 安裝簡單,但是執行起來後,不懂配置的話, 會遇到各種坑。最簡單的一個 :要不要序列化。我們有個20G的應用伺服器因為序列化問題,導致磁碟爆滿,程式都GG了。叢集也是一 個挑戰。
jetty(java部署,和tomcat類似):四個字:簡單實用。
svn(版本控制,還有git等):svn的安裝,分配賬戶,這些還算比較簡單,git也是自學的,如何註冊申請 也都是按照部落格教程來的
vue(前端框架):說起vue,我最先知道的是angularJS,那時還不叫angular。現在還有react,真正的三 足鼎立啊。不過其他兩個我沒學。學vue還是一個UI的哥們啟蒙的。這個UI哥們是搞PS,設計師。他說想轉前端,一直在學習這方面的東西。公司正好要做一個單頁應用,他就弄了一個,發給我,我幫部署, 迭代什麼的,看了兩天就學會裡面的語法了, 真是比js,jquery 寫起來舒服多了,頁面渲染更輕鬆。後 來又弄elementUI、iview,感覺都超容易!
到此時,也就是18年10月份。我的技術體系相信大家已經有所瞭解。再有幾天就2020年了,這段時間我 又學會了什麼技術,提高了什麼能力,請大家繼續往下看!
下面我們來談一談全棧:
全棧英文的詞叫做:Full Stack Developer。
當我說我會前端框架vue、會前端elementUI、會後端java框架、會後端linux部署,大家都說你是 “全棧” 吧!(我心想, 我要是全棧, 我工資咋正低!)
對於這一年多來我的程式設計能力帶給的體會,我更喜歡這句話: 全棧不是說把自己的能力堆上去,而是你 要把自己強勢的東西給它賦能出去,讓別人具有全棧的能力。
一個政府專案:全國個個省,市,縣都用,還有一些特殊機構。這樣的專案全國很多,比如報稅系統, 全國人員系統。想想都頭大,全國各個地方的警察每天查人員要訪問多少次?怎麼保證系統不蹦?如果專案交你來做,你能接下嗎?
我為啥要舉這個示例呢, 就是想說,自己的能力可以在我們要做的專案裡面最高可以擔任什麼角色。
比如我這種前端後端框架都會,部署上線也可以。但是如果老闆把專案交給,我可能會拒絕,因為我還 沒學會團隊管理(雖然現在正在在方面努力)。如果你程式設計的時候需求改了10次8次的,不光開發程式設計頭疼,專案經理會更頭疼。誰不想自己的專案更穩定,交付安全可靠的產品。團隊管理在專案開發中佔了 很大的比重。
那麼此時全棧能起到什麼作用呢? 那就是前後端業務需求溝通0成本。不光是寫程式碼,解決bug也是。有時候出了個bug, 前端可能推給後端訪問500,後端說前端傳參有問題,最後花費很多時間才能解決。
這時有人可能說,全棧前後端都會, 但是他沒我學的精,沒我專研的深。我覺得會的廣,真和會的深沒有太大關係。舉個簡單的例子:高中分文科理科,難道文科理科一起學,學霸們還會偏科不成? 國家現在的高中教育也是在慢慢推行文科理科合併吧!
所以,全棧只是比普通的前端或者後端多了一些技能而已,僅此而已。(測試人員可能心裡不舒服了,為啥沒說測試?在我理解,沒bug要啥測試!)
雖然如此, 但我還是提倡大家都來搞全棧。全棧的好處:
顯得更像大佬:懂得多, 解決問題快,能搞各種技術,能獨立寫各種應用,教會各種新人。
學習東西快:理解能力強,各種程式語言都大同小異,觸類旁通。能快速學習各種外掛,障礙非常小。
專案全域性: 理解業務能力更強,實現業務程式碼更快,知道技術邊界,參與專案深度更深,技術規範統一
。
bug解決快: 能迅速找到bug原因,判斷bug類別(後臺服務,前端,伺服器等),並且bug出現概率低。
為此, 我這一年多一值在提高技術技能的深度:
java : 集合原始碼,多執行緒,JVM虛擬機器
spring:看控制反轉的實現原理,AOP;代理的實現,作用等等
springboot : 註解驅動,元件內建配置
springCloud :不僅僅是大框架,執行原理,服務概念都要學
docker:映象,K8s
微服務註冊:Zookeeper
SQL效能調優:執行計劃,
演算法 : 排序,查詢,各種樹等等吧,反轉很多要學的!
全棧目前來看就是技術會的多,因此以後的發展方向: 高階技術經理,專案需求經理;(等等經理都能做,有技術咱就是牛!)兩個方向發展基
本都沒障礙(鍵盤突然蹦出:葬愛,難道註定沒女朋友?)
創業也是首選:學習能力強。技術開發更輕鬆。可以自己接私活,自己兼職創業搞專案。
最後附上論語的開篇:
子曰:“
學而時習之,不亦說乎?
有朋自遠方來,不亦樂乎?
人不知而不慍,不亦君子乎?“
(相信大家是不是很多人都不認識 “慍” 是啥了:yun4 怨恨)
版權宣告: 本文有 ```...襉簞點 發表於部落格園
轉載宣告: 可自由轉載、引用,但需要屬名作者且註明文章出處。
個站連結: https://www.bloghome.com.cn/user/yysblog