在作業中,你可能會遇到,為什么他的實力不如我,他卻可以晉升?
在面試中,你可能會遇到,我把系統性能優化了10倍,為什么面試官還是看不上我?

為什么?到底是為什么?
如果你有同樣的困惑,或者徹夜難眠,我認為你需要停下來思考一下了,
可能是你的學習方法錯了,你并不是不努力,只是努力的方向錯了,
我舉個簡單的例子:
我的父母特別勤奮,當我還是個小屁孩的時候,他們每天早上四五點就要起床磨豆腐賣豆腐了,一年四季如此,他們的目標也很簡單,就是把我和哥哥送入大學,當然,最后他們的愿望也確實實作了,
你說他們努力嗎?是的,很努力,
但是,你說他們很成功嗎?不見得,
所以,你看,有時候并不是說,你努力了就一定會成功,

更不用說我們做程式員的,有那么多的知識要學習,就拿java來說,你真的就只需要學習java本身的東西嗎?資料庫要不要學?各種框架要不要學?快取要不要學?
有這么多東西要學習,學得過來嗎?通宵達旦地學也學不過來呀,
話題
所以,技術實力的本質到底是什么?
我認為技術實力的本質是解決問題的能力,或者換個說法,技術源于業務,技術是為業務服務的,
這么說,可能大家不樂意了,你莫不是產品弟弟派過來的間諜?!

我再舉個簡單的例子:
在很久很久以前,這個世界上沒有火,突然有一天,一道閃電劃過,劈在了樹上,著了火,引起了森林火災,后面火滅了,人去撿被火燒熟的動物尸體吃,嗯,味道竟然很好,
后面,人就形成了一種共識,火燒過的肉很好吃,
所以,他努力的想掌握生火的技能,經過一番嘗試,終于習的了鉆木取火的技能,從此,可以天天吃烤肉了,
在這個故事中,業務是什么?技術是什么?
業務其實是吃烤肉,技術是取火,鉆木取火是取火的一種方式,除了鉆木你還可以使用打火機,
忽然有一天,一個人說我要喝水,你卻給他打火機,你說你解決了他的問題(業務)了嗎?
并沒有,打火機雖然是更高級的技術,但是對于喝水這個需求并沒有什么卵用,
所以,技術實力的本質是解決業務問題,你解決的業務問題越大越復雜,代表你的技術實力越強,
增強
那么,如何才能增強自己的技術實力呢?
我認為分成以下幾個步驟:
首先,領悟業務,引導業務 ,這個你可以去學習一些DDD的思想,并落地到你的業務中,可以幫助你快速理清業務邊界,甚至引導業務未來的方向,
其次,學習通識技術 + 技術儲備 ,學習一些你所在領域的通識,并儲備一些在現在和未來能幫助你解決業務問題的技術,
在這么多技術中,我認為最重要的是學習你所在領域的通識,

通識是什么呢?
我們以java為例,java其實也有很多方向,比如web開發,物聯網,大資料,那我們看看這3個方向要學習哪些東西:
1、web開發:資料結構與演算法,設計模式與設計原則,jdk原始碼,spring全家桶,mybatis,MySQL,等等
2、物聯網:資料結構與演算法,設計模式與設計原則,jdk原始碼,netty,mqtt
3、大資料:資料結構與演算法,設計模式與設計原則,jdk原始碼,hadoop,hbase,elasticsearch,flink,等等
所以,你看java領域最重要的就是資料結構與演算法,設計模式與設計原則,jdk原始碼,那么,他們就是java領域的通識,
你可能會問我搞大資料的為什么要看jdk原始碼?
那你可以去看看大資料的那幾個框架都是什么語言寫的,不懂jdk原始碼,你能看得懂hadoop的原始碼,我是不信的,
通識差不多這樣,那怎么做好技術儲備呢?
我們以web開發為例,假設現在你們的業務量是10萬每天,預估未來可能會達到100萬,甚至1000萬每天,那你可以想象一下你們的架構將如何演變,
首先,存盤方面,肯定不能單庫了,所以,必須學習類似mycat、sharding sphere等分庫分表方案,
其次,查詢方面,分庫分表之后沒辦法做模糊查詢了,肯定要上搜索,所以,必須學習elasticsearch等搜索技術,
最后,并發方面,并發量有大幅度提升,介面性能要不要優化?jvm要不要優化?要不要加快取?要不要聚合日志?等等,
甚至,為了動態擴容,可能還要上k8s等容器化技術,統統都要學習,,
所以,這么簡單的分析一下,就知道要學習哪些儲備技術了,我這里只拋磚引玉,并不是說這就是全部,
你可以排一個優先級,一個一個去學習這些技術,但是,并不是說每一個都要去達到原始碼這種級別,你只要去掌握他們用到哪些底層技術,適用于哪些場景,有什么優缺點,有什么坑,簡單的使用案例,我認為掌握到這種程度就夠了,真正遇到需要用到這個技術的場景的時候,你能信手拈來即可,然后再去深入學習,
比如,訊息佇列kafka,它是怎么部署的,它的快用到了什么技術,它如何保證資料不丟失,如何進行主從資料復制,使用在什么場景,等等,
其實,研究多了,對于一種新的技術,它使用的底層技術也就那些,比如oscache,幾乎所有分布式框架都會使用,
所以,你是不是可以研究一下這些框架都使用到的技術,他們是不是又可以成為新的通識,
最后,持續學習溝通能力,表達能力,思維能力,總結能力 ,并落實到作業生活中,
最后一部分如果用一個詞來概括的話,可以稱之為社交能力 ,
你寫了一個特別牛逼的框架,但是你不會表達出來,別人也不知道你在說啥,有什么用?正所謂天才與傻子只是一步之遙,可能是我們無法理解傻子,或者說傻子不會表達自己,
你在作業中是不是只會悶頭干活,交給你的活都能搞定,但是,你就是比不過那個PPT寫的好的,那是你的思維能力和總結能力不如別人,你可能只列舉了你做過哪些東西,但是,他會歸類總結,最后以結構化的方式呈現出來,甚至還可能通過對以往資料的匯總,預測下一年的方向,這個在老板看來是更重要的東西,
所以,你必須學習思維能力和總結能力,而且是持續學習持續實踐,這方面的能力是貫穿一生的,即使以后你不做程式員去送外賣了,可能也能比別人賺得多,

總結
好了,最后總結一下今天的分享:
技術實力的本質是解決問題的能力,
在業務方面,我們應該學習如何快速理解業務,可以通過DDD等手段實作,
在技術方面,我們應該學習你所在領域的通識,并做好技術儲備以應對未來需求的變化,
在社交方面,我們應該持續學習溝通能力,表達能力,思維能力,總結能力,并落實到作業生活中,
好了,今天的分享就到這里,
如果你想更好的提升你的編程能力,好好學習C/C++編程知識,以后努力成為高薪軟體開發工程師的話!那么你很幸運~
C語言C++編程學習交流圈子,QQ群1090842465【點擊進入】微信公眾號:C語言編程學習基地
分享(原始碼、專案實戰視頻、專案筆記,基礎入門教程)
歡迎轉行和學習編程的伙伴,利用更多的資料學習成長比自己琢磨更快哦!
編程學習書籍:

編程學習視頻:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/256236.html
標籤:其他
下一篇:【分享】介面測驗的核心概念
