很多同學(xué)曾經(jīng)問我,該學(xué)習(xí)什么技術(shù)柱衔,怎么樣去學(xué)習(xí)技術(shù)樊破?其實每當(dāng)我聽到這個問題愉棱,我是無比糾結(jié)唆铐。這是一個無法回答的大問題哲戚,這種話題可以吹上幾年,并且每個人都是獨特的艾岂,方法只能借鑒不可復(fù)制也顺少。下面說說個人學(xué)技術(shù)的一些感悟,也許全都是錯的王浴,但是我就是要寫出來脆炎。(不喜歡看長文章的同學(xué)請直接看結(jié)尾即可)
一、學(xué)習(xí)技術(shù)的目的
我們學(xué)習(xí)技術(shù)往往是帶有功利心的氓辣,哪怕你用技術(shù)來玩秒裕,也是一種目的嘛。所以钞啸,每當(dāng)你問別人几蜻,該學(xué)習(xí)什么技術(shù)的時候。先問一下自己想要做什么体斩。舉一個例子梭稚,一個上了大學(xué)java課程的同學(xué)跑過來問我,我應(yīng)該如何學(xué)習(xí)絮吵,要學(xué)什么東西弧烤?
我會反問他一個問題,你以后想去開發(fā)安卓亦或者是開發(fā)網(wǎng)站蹬敲,還是說想搞游戲暇昂。只要他回答出這個問題,我也知道如何回答了伴嗡,假設(shè)這個同學(xué)選擇了網(wǎng)站開發(fā)急波。
我會說,你想辦法用java實現(xiàn)我用瀏覽器看到hellow world闹究!這幾個單詞幔崖,在實現(xiàn)之前就別問我要學(xué)什么。因為我告訴這同學(xué)渣淤,你要學(xué)servlet赏寇,filter,listener价认,接著學(xué)ssh框架嗅定,學(xué)習(xí)數(shù)據(jù)庫,學(xué)nosql用踩,學(xué)模板引擎渠退,我相信他會拋更多的問題并且被嚇呆了忙迁。
如果這同學(xué)抱著解決問題的心態(tài)學(xué)習(xí),一切迎刃而解(不得不感謝當(dāng)年沒有一個人帶我碎乃,讓我自學(xué)變得現(xiàn)在這么擁有這么野路子的技術(shù))姊扔。
我們要明白一件事情,我們要學(xué)習(xí)的技術(shù)都是為了解決特定的問題梅誓。我們來看看一個java工程師為什么會學(xué)習(xí)那些技術(shù)恰梢,下面用上面出現(xiàn)的同學(xué)A舉例(不喜歡看故事的請?zhí)_下面的小故事,這個故事僅僅是說技術(shù)僅僅是為了解決問題)梗掰。
1嵌言、同學(xué)A聽了我說的話,寫出了hello world及穗!然后我叫他摧茴,訪問各種url,輸出不同的內(nèi)容埂陆。他學(xué)習(xí)如何用xml配置servlet苛白。然后他為了現(xiàn)實接收html的表單數(shù)據(jù),就去學(xué)習(xí)如何接收get和post參數(shù)猜惋。為了識別用戶登錄信息丸氛,又知道了要學(xué)習(xí)session。為了動態(tài)輸出html頁面著摔,又學(xué)會了jsp缓窜。
2、同學(xué)A學(xué)會最簡單的jsp之后(頁面混雜java代碼谍咆,循環(huán)輸出字符串等)禾锤,然后發(fā)現(xiàn)print字符串太惡心,然后發(fā)現(xiàn)jstl標(biāo)簽可以不用寫print字符串摹察,整個頁面優(yōu)雅了恩掷。
3、同學(xué)A又遇上一個問題供嚎,他很多頁面在未登錄的情況下黄娘,要跳轉(zhuǎn)到登錄頁面,然后他只好每個函數(shù)寫一個if處理克滴。寫多了逼争,人都受不了,這個時候劝赔,發(fā)現(xiàn)filter可以一個函數(shù)處理誓焦,趕緊去學(xué)一下,完美着帽。
4杂伟、同學(xué)A又拋問題了移层,他說要統(tǒng)計當(dāng)前在線用戶數(shù),咋辦呢赫粥?一查資料观话,原來listener可以監(jiān)聽session創(chuàng)建和刪除。那么全局一個計數(shù)器傅是,事件觸發(fā)修改計數(shù)完美匪燕。
5蕾羊、同學(xué)A遇到一些需要保存用戶數(shù)據(jù)的地方喧笔,然后屁顛屁顛的跑去學(xué)習(xí)如何使用如何操作數(shù)據(jù)庫。
6龟再、同學(xué)A這個時候书闸,又來騷擾我了。他問為什么很多企業(yè)招聘要ssh框架利凑,為什么要用這些框架呢浆劲,又要怎么學(xué)?首先哀澈,我們來看看struct2提供了什么功能(搜索引擎搜一下就知道了)牌借?過濾器,國際化割按,更強悍的標(biāo)簽膨报。再看看hibernate,讓我們不用寫sql了适荣,可以防止sql注入现柠。最后看看spring,什么IOC弛矛,AOP够吩。我們該怎么學(xué)呢?我們只需要出于安全性丈氓,方便性周循,可維護性的目的用這些技術(shù)實現(xiàn)我們要實現(xiàn)的需求即可,用不到的万俗,不用急著學(xué)習(xí)湾笛。
<small>故事到此為止。该编。迄本。</small>
二、我怎么知道有什么好技術(shù)翱慰ⅰ嘉赎?
看了上面這個又長又不好看的小故事置媳,也許你會忍不住罵我,我怎么知道有什么好技術(shù)來更好的實現(xiàn)需求呀公条!別急給三個路子你瞧瞧:
1拇囊、請跟一個商業(yè)項目從開始做到一個階段完成(請參與團隊開發(fā)那種,要商業(yè)性質(zhì)的或著面向用戶的)靶橱。
相信我寥袭,一次下來你就已經(jīng)可以應(yīng)付絕大部分工作了。為什么我不叫你自己搭一個博客关霸,自己折騰幾個課程設(shè)計來學(xué)習(xí)呢传黄?因為那些只是玩具,相信你也不會有多大動力寫队寇,也不跟實際掛鉤膘掰。
面對用戶的項目,你可以真實接觸到錯綜復(fù)雜的情形佳遣,才能經(jīng)歷真正的需求识埋。之所以選擇團隊開發(fā),因為可以給一個機會學(xué)習(xí)別人會的技能嘛(本人就是因為隊友使用docker零渐,rabbitmq等窒舟,從而才知道有這種東西)。
2诵盼、請看別人總結(jié)的技術(shù)圖譜惠豺,站在巨人的肩膀上嘛,網(wǎng)絡(luò)一大堆總結(jié)拦耐,如何尋找就看自己機緣巧合了(推薦看看公眾號研發(fā)課堂耕腾,雖然剛起步,但是推送的就是思維導(dǎo)圖分解技術(shù)杀糯,附帶收集學(xué)習(xí)該技術(shù)的各種好文章)扫俺。
3、問一些前輩固翰,了解一些有用技巧(我雖然不是前輩狼纬,但是我做過架構(gòu),帶過技術(shù)團隊骂际,并且樂于分享疗琉,前提你私信我或者是我微信好友)。
三歉铝、不要為了用技術(shù)而學(xué)使用技術(shù)
我的一個非技術(shù)師兄曾教導(dǎo)我:切勿為了炫技而使用技術(shù)盈简。請記住:
技術(shù)是為了解決問題的
例如,我們搞活動柠贤,需要提供一個簡單不變的宣傳頁面給運營香浩。本來我們簡單寫一個html靜態(tài)頁面即可。但是臼勉,我們?yōu)榱遂偶剂诳浴I蟰ue,上ssh框架做一個管理后臺給運營修改頁面宴霸。我的天囱晴,這樣子既拖工期,又浪費精力瓢谢。
我們再看看一些高級一點點的技術(shù)畸写,例如異步處理,使用消息中間件(rabbitmq恩闻,kafka等)艺糜。我們真的要用到這些技術(shù)嗎?同步真的就無法解決性能問題嗎幢尚?消息中間件就不能簡單的redis代替嗎?
很多人吐槽企業(yè)的系統(tǒng)技術(shù)渣翅楼,用的是十年前的技術(shù)尉剩。但是請看看,他們的系統(tǒng)是不是運行得十分平穩(wěn)毅臊。你用新的技術(shù)理茎,往往出了問題,社區(qū)都還沒有給出解決方案呢管嬉。
總之一句話皂林,用什么技術(shù),學(xué)什么技術(shù)請按實際需求出發(fā)蚯撩,我們需要的是最簡單最高效的實現(xiàn)方法础倍。
四、學(xué)技術(shù)前請看看他的發(fā)展史
很多人在看技術(shù)書的時候胎挎,看到歷史就跳開了沟启,也包括我。但是這種做法讓我們多走了彎路犹菇,別以為那些書寫寫歷史是為了湊字數(shù)德迹,我們讀歷史可以知道它為何會出現(xiàn),因為存在即合理(就像我寫文章揭芍,只要你有所收獲胳搞,這件事情就是合理的)。
例如,我們看看數(shù)據(jù)庫技術(shù)的發(fā)展歷史肌毅。我們就明白為什么要用數(shù)據(jù)庫币厕,為什么要使用某種數(shù)據(jù)庫引擎,主從技術(shù)何時使用等等芽腾。
當(dāng)我們知道技術(shù)是為了技術(shù)什么問題而生的時候旦装,我們就知道我們把它用于何處,所以我們經(jīng)常問的一句話是摊滔,該技術(shù)適用場景是什么阴绢?而缺點又是什么?
五艰躺、理解技術(shù)的原理比學(xué)會使用重要
就像當(dāng)你了解http協(xié)議之后呻袭,你就明白cookie是怎么工作,你也知道單點登錄是如何實現(xiàn)腺兴,也懂得瀏覽器緩存的各種實現(xiàn)方式左电。
當(dāng)你知道了原生js,你就明白jquery能做的東西页响,不會jquery也可以實現(xiàn)篓足。自己也可以造一套像vue那樣子的前端框架。
我的一個建議是:請嘗試造輪子闰蚕,只有造輪子才會真正理解技術(shù)的原理栈拖,別被那些不要重復(fù)造輪子的言論欺騙了,看看大公司們造了多少輪子没陡。如果你淪為只會用輪子的人涩哟,某一天用得特不爽的輪子,你也只能含著淚來用盼玄。
六贴彼、技術(shù)要廣了解,而精一門即可
我們來看看浮躁的前端領(lǐng)域埃儿,反正我是怕了器仗,前端為何要學(xué)這么多東西?es5蝌箍,es6是什么玩意青灼?vue,React 妓盲,Angular 又是什么杂拨?webpack,grunt 等悯衬。然后還有l(wèi)ess弹沽,scss檀夹。當(dāng)然前端還在學(xué)nodejs,厲害呀策橘,全棧工程師炸渡。
人精力是有限的,上面那堆東西肯定有人都玩得很熟丽已,但是這種技術(shù)人有多少呢蚌堵?作為一個普通人,可以了解每一種技術(shù)的入門用法沛婴,熟練掌握一種用于日常開發(fā)即可吼畏。
請記住,它們僅僅是你拿來解決問題嘁灯,掙錢養(yǎng)家的工具而已(我會php泻蚊,java,golang丑婿,會vue性雄,也會linux,redis羹奉,mongodb秒旋,mysql,rabbitmq尘奏,docker滩褥,特別會python和服務(wù)器部署,所以別人愿意把我作為技術(shù)顧問炫加,雖然我寫文章不太行,但是解決技術(shù)問題還是挺溜的)铺然。
七俗孝、不要以為閱讀收藏了一堆網(wǎng)上的熱門文章就能提高技術(shù)
看100篇文章還不如實踐一次,別以為看了什么高并發(fā)架構(gòu)文章魄健,看了什么前端最佳實踐赋铝,你就可以寫出多么優(yōu)美的系統(tǒng),反正一到實際就會發(fā)現(xiàn)文章僅供參考沽瘦。再說收藏文章這一事情革骨,收藏真的只是收藏,看看你收藏的文章多久沒回顧就知道了析恋。
正確的做法是良哲,閱讀文章后做總結(jié),最好是有機會實踐助隧≈欤看了本文也一樣,你就吸收你認為有用的觀點就好,別的請忽略巍实。
普通人跟大牛的差別是滓技,大牛凌晨兩點還在技術(shù)攻關(guān),普通人可能在愉快的玩著游戲棚潦。
八令漂、學(xué)技術(shù)我們其實在學(xué)什么這個問題的答案
- 請為了解決問題而尋找一種技術(shù),且為了解決問題而學(xué)習(xí)
- 技術(shù)永遠是一種工具丸边,請讓業(yè)務(wù)驅(qū)動你學(xué)習(xí)技術(shù)
- 請學(xué)會造輪子叠必,如果不造輪子請確保你有改輪子的能力
- 請學(xué)會技術(shù)的底層原理,這也是為什么大牛對于什么技術(shù)都手到拿來的原因
- 閱讀技術(shù)文章或者技術(shù)書籍之后請總結(jié)原环,然后嘗試實踐之挠唆。
- 所謂的高級技術(shù)就是低級技術(shù)組裝而成,所以請學(xué)會底層技術(shù)嘱吗。
總結(jié):
學(xué)技術(shù)就是學(xué)習(xí)解決問題的方法玄组,入門跟大神的區(qū)別僅僅在快速想到解決方案的效率(本文完)