我曾經有一個夢想是要成為一名全棧開發工程師,因為我認為一個程序員無所不精無所不能是一件很牛逼的事情。
同時當一個程序員無所不精的時候,不僅僅自己可以開一家公司自己接活干,同時即便不辦一家公司,在一家公司好歹可以吃香的喝辣的。
抱着這個理想目標,於是在那段時間我時而學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小伙伴新的一年,身體健康,家庭和睦,工作順利。
