我曾經有一個夢想是要成為一名全棧開發工程師,因為我認為一個程式員無所不精無所不能是一件很牛逼的事情。
同時當一個程式員無所不精的時候,不僅僅自己可以開一家公司自己接活幹,同時即便不辦一家公司,在一家公司好歹可以吃香的喝辣的。
抱着這個理想目标,于是在那段時間我時而學Docker,時而學Nginx,時而學SpringBoot,時而學分布式,時而學Node.js,時而學Vue.js等等,總而言之運維、測試、前後端等能學的都學了。但是學完後來,留下的僅僅隻是HelloWorld。其他有深度的少之又少。
之前那段時間我看書的速度非常快,幾乎是兩周三周一本書,技術方面的居多,但是呢?看了太多了,留下的太少。感覺出來知道哪項技術的名字和簡單的Example之外,其他都沒有了。
假設我将快速遍讀群書的時間用來專攻一本或者兩本書,那麼我相信這一本或者兩本書我已經足夠吃透了。就算不足夠吃透的話,半透應該沒問題吧。
在知乎上我也搜尋過不少關于如何成為一名全棧開發工程師,但是最終我隻能一個這樣的結論,那就是一專多能。是以我決定了接下來我所要做的就是一專。
曾經時常逛逛拉勾,不為跳槽,隻為看看現在有哪些技術比較主流,然後就去學,記得當初學的時候,我那個時候學習是這樣的,百度搜尋找到對應的Demo,然後将人家的例子練習一遍,發現可以運作,十分高興,然後就不管了,我就認為這項技術我已經懂了。當然了,如果遇到一些問題,我會先找找怎麼解決這個問題,但是一般情況下是百度搜尋出來的幾乎品質不是太高。
以至于很多Demo跑起來了,一旦測試這裡報錯那裡報錯我就不想試了,一天天這樣,最後發現技術廣度雖然增加了點,但是這個增加的點似乎毫無意義,就像我前面說的那樣僅僅隻是知道名字或者是寫簡單Demo,對于其他的,比如技術的優缺點,應用場景等等一無所知。
我之前以為在小公司裡面做前後端加運維和測試,就算是全棧了,但是後來我發現,這并不是我想要的全棧。因為這樣一來我除了會用之外,似乎什麼都不懂了,特别是有些時候出現問題時,我都忽略了日志的作用,不先檢視日志直接找到對應的資訊直接百度。變的慢慢缺乏思考了。變的像真正的碼農了。這不是我想要的樣子。
之前我在一篇文章中說過,我不喜歡别人叫我碼農,因為碼農在我看來是将腦力勞動變為體力勞動。有的時候我再想我寫的代碼到底有什麼用呢?僅僅隻是複制粘貼嗎?
不,代碼應該表現的是我的思想,我的嚴謹思想,我的一絲不苟。于是我反思自己,想到之前的代碼,看到那堆糟糕的英文,我站在鏡子面前看着我,真有種想那拖闆鞋砸自己。
站在鏡子面前我想,如果我當初寫的嚴謹的話會不會有這麼多問題,同時無效率的加班這麼長時間。
知乎上有不少人這樣認為,他們認為隻有這樣做才能成為全棧?比如:
當然了,也不乏客觀求實的回答,例如:
我比較偏向這位客觀求實的回答。
具體過多的我就不多說了,知乎或者其他部落格平台有一大把這樣的。
以倚天屠龍記裡面的張無忌來說,張無忌自從學會的乾坤大挪移之後,在光明頂與少林、武當、峨眉、昆侖、崆峒、華山等六大門派對戰,并在與少林對戰的時候交戰過程中輕易就将少林的龍爪手學會以此克敵。張無忌之是以能快速學會乾坤大挪移得益于身上的九陽神功。
在此我想說的是作為一名程式員,要想無所不能觸類旁通,必先将内功心法練好,不然的話再怎麼折騰感覺也沒多大用。
或許有朋友說這個内功心法是什麼?
我的回答是這個内功心法就是你吃飯的家夥,比如Java程式員通常吃飯的家夥是Spring全家桶之類的,作為Java程式員可以從Spring源碼開始研究,等研究透了,就能觸類旁通,其實我相信那些已經懂得了好幾門程式設計語言的朋友們他們很能體會到觸類旁通的道理。至于如何研究,筆者也不知道,因為筆者正打算研究,不過好在目前市面上有很多資料,許多有上進心的工程師研讀源碼時,踩了不少坑并将這些寫成系列文章,以此讓廣大友友們受益。
我愈發的喜歡程式員這個職業,因為什麼呢?因為樂于分享,将自己所知道的和吃的虧寫成相關文章或者文檔分享給其他朋友們,讓其他朋友為此少吃虧少浪費些不必要的時間。
換成像其他職業的話,難免會遇到師傅帶徒弟時留後手之類的。
當然了,也并不是說程式員這個群體就沒有這樣的人,但是相對于那些傳統産業而言,程式員這行這種現象不是太多。因為每個程式員朋友都知道,幫助他人就是在幫助自己。
同時在幫助他人的時候,自己所收獲的不僅僅是自我成長,同時還有來自内心的欣喜,你可以了解為成就感。
回到之前這個問題,如何成為一名全棧開發工程師?
就我自己的想法我是這麼認為的:
第一、做好目前的事情(比如在公司的時候認真編寫每一道程式,因為公司一旦傳遞出去後,不僅僅代表的是公司的形象,同是也代表我自己的形象);
第二、不要三心二意看到這個厲害就去學這個,看到那個厲害就去學那個,應當根據目前的業務而言,比如目前SSM架構開發這個項目及其單體拆分已經足夠了而你還是想要以自己的角度出發動辄微服務分布式,這樣到頭來苦的還是自己;
第三、還是前面那個老兄說的對,全棧并不是指所有方面都略知皮毛的工程師,而是指在某一方面具有深入研究,同時可以在其它方面快速上手,解決問題,或協調他人解決問題的那一類人,是以首先要專注于目前的,比如我是Java開發工程師,應當專注于Java相關的,比如我目前用的最多還是Spring,最好還是應當好好研究下Spring,可以研讀它的源碼,畢竟目前相關的博文也不少,同時書籍更多,而不是去追求其他以外的技術;
第四、興趣,将編碼當做一件快樂的事情總比對着它發愁要好吧,同時興趣也是不斷前行的力量之一;
第五、堅持,著名的一萬小時定律就是這樣,當然了,這個一萬小時我在前面一篇文章中說過,一萬小時并不是像我之前那樣這裡學點那裡學點,而是要專注,我發現我之前這裡學點那裡學點感覺程式設計語言似乎沒有什麼不一樣的地方,都是基本文法,然後進階特性,然後web方面,然後就是架構了。
最後,我給我自己2019年定下的大目标和小目标,當然了,大目标是希望能夠成為一名進階開發工程師,能夠獨當一面,帶動團隊。我知道這并不是一下子能夠實作的,是以我将其定為我的長期目标。
小目标分為如下幾類:
生活類:
(1)培養良好的作息習慣,晚上11點00關燈睡覺,早上8點起來(不管是平時還是節假日都遵循,因為我覺得時常熬夜的話,先不說傷身吧,美好的一天就因為睡覺過去了一半實在是太可惜了);
(2)适當鍛煉自己的廚藝(總是出去吃或者點外賣确實有些膩了);
(3)鍛煉身體(跑跑步、羽毛球、散步等),身體是革命的本錢,我可不想有一天倒在電腦面前;
學習類:
(1)認真踏實的讀書(書中的例子,認真練習,模仿同時做筆記,不能隻追求數量而不重品質了,先以資料結構與算法分析這本書為例);
(2)堅持寫部落格,并不斷提高文章的品質,以部落格園這位仁兄為楷模,五年裡一直在不斷堅持寫,同時也一直再給自己定目标并實作目标,我覺得這種拼搏精神和學習精神值得我和許多小夥伴們學習;
(3)對所使用的Spring全家桶中的Spring好好研讀一番;
(4)我的Github好久都沒有更新了,我覺得有必要将我在工作常用到覺得很不錯,應對編寫個類庫分享給大家;
(5)擴充知識面,感覺知識面還是太窄了,有一句名言叫做,人醜就是要多讀書,但是我自認為我不醜,不過我覺得我的精神很匮乏,需要精神食糧;
工作類:
(1)來年我要實作代碼Review,并在團隊中推行,當然了,這個我需要溝通,之是以代碼Review,原因在于我不想團隊編碼陷入各自為戰的境地;
(2)代碼限制還是要的,從我自己寫的代碼出發,問題不少,看到其他同僚的代碼,同樣有問題,我希望能夠定下一個規範,可以參考阿裡巴巴的Java開發手冊,當然了同時也要結合實際情況;
(3)今年覺得上司派給的不少任務,我沒有做好,雖然不一定是我的職責,但是沒做好就是沒做好,不想找太多的借口,我希望從現在開始能夠将事情做好,不管最終是否完成,起碼态度上要好,我不希望我的心态變成面向工資程式設計,畢竟就我而言,成長比工資更重要,當然了吃飽飯睡好還是要的;
(4)更好的協助同僚完成任務,同時也保障自己完成的前提下(之前我犯了一個錯誤就是我幫助同僚把他的任務做完了,卻沒有把自己的做完,我之是以認為是一個錯誤是因為那位同僚并沒有開始做這個任務時,沒有思考怎麼做,我就已經幫她做完了,這才是最讓我痛心的,應該檢討的,我總希望自己變的更強,自認為幫助同僚把他們的任務全部搞定是一件很牛逼的事情,但是自己的卻沒有做好,弄的我在上司面前都有些擡不起頭了);
愛情類:
一句話,我要嫁給愛情,雖然我是一個Boy。即便每天生活如此繁忙,節奏如此快,我相信我一定能夠遇到與我共此一簾幽夢的女孩。
财務類:
這個我要小小的保密了哈,總之我相信我能夠實作。
旅行類:
這個看情況吧,我是希望來年北京回暖的時候,能夠去登登山,登山可是我的愛好之一。當然了,節假日的時候,如果可以的話出去走走,世界那麼大,出去看看也挺好的。
最後希望每個IT小夥伴們在即将到來的新的一年給自己定下一個目标然後為之努力去實作它。
再祝各位IT小夥伴新的一年,身體健康,家庭和睦,工作順利。