技術實力的本質是什么?


背景

今天,我們來討論一個問題:技術實力的本質究竟是什么?

在工作中,你可能會遇到,為什么他的實力不如我,他卻可以晉升?

在面試中,你可能會遇到,我把系統性能優化了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等手段實現。

在技術方面,我們應該學習你所在領域的通識,並做好技術儲備以應對未來需求的變化。

在社交方面,我們應該持續學習溝通能力,表達能力,思維能力,總結能力,並落實到工作生活中。

好了,今天的分享就到這里。

最后,我想問,你支持本文的觀點嗎?

歡迎留言討論,共同進步。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM