學(xué)技術(shù)我們其實在學(xué)什么?

很多同學(xué)曾經(jīng)問我,該學(xué)習(xí)什么技術(shù),怎么樣去學(xué)習(xí)技術(shù)?其實每當(dāng)我聽到這個問題,我是無比糾結(jié)。這是一個無法回答的大問題,這種話題可以吹上幾年,并且每個人都是獨特的,方法只能借鑒不可復(fù)制也。下面說說個人學(xué)技術(shù)的一些感悟,也許全都是錯的,但是我就是要寫出來。(不喜歡看長文章的同學(xué)請直接看結(jié)尾總結(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標簽可以不用寫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提供了什么功能(搜索引擎搜一下就知道了)?過濾器,國際化,更強悍的標簽。再看看hibernate,讓我們不用寫sql了,可以防止sql注入。最后看看spring,什么IOC,AOP。我們該怎么學(xué)呢?我們只需要出于安全性,方便性,可維護性的目的用這些技術(shù)實現(xiàn)我們要實現(xiàn)的需求即可,用不到的,不用急著學(xué)習(xí)。

故事到此為止。。。

二、我怎么知道有什么好技術(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é),如何尋找就看自己機緣巧合了。

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ā)即可。

七、不要以為閱讀收藏了一堆網(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ū)別僅僅在快速想到解決方案的效率

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 很多同學(xué)曾經(jīng)問我,該學(xué)習(xí)什么技術(shù),怎么樣去學(xué)習(xí)技術(shù)?其實每當(dāng)我聽到這個問題,我是無比糾結(jié)。這是一個無法回答的大問題...
    yubang閱讀 3,126評論 18 36
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,076評論 25 708
  • 下圖證明我還是幸福的O(∩_∩)O 我擅長+喜歡的卡片挺多
    SWIMGIRL閱讀 198評論 0 0
  • 為了讓自己變得更好,在平時,我們都會觀察自己和別人,尤其是自己的一些表現(xiàn)不好但別人表現(xiàn)很好的地方。我也如此。慢慢地...
    jianshucom閱讀 1,024評論 0 1
  • 今天真熱。 一出門一股熱浪撲面而來。這幾天辦事各種不順。心情格外煩躁,心里火燒火燎的,連天都跟著湊熱鬧,烤人。 頂...
    青島小白閱讀 122評論 0 0