這篇文章繼續(xù)不談技術(shù)币绩,我們來談?wù)勱P(guān)于程序員的焦慮感蜡秽,寫這篇文章源自有位同學(xué)問了我一個問題:
我接觸Android 應(yīng)用層也快3,4年了,說實(shí)話缆镣,公司一直讓做app 層開發(fā)芽突,工作之余,學(xué)完ReactNative 和Weex董瞻,簡單的做了Demo寞蚌,實(shí)際開發(fā)中不讓上田巴,學(xué)完一年忘完了,之前大學(xué)專業(yè)還專門學(xué)了一年Linux 內(nèi)核挟秤,開發(fā)中很少去用壹哺,慢慢就廢了。有公司前輩建議我學(xué)java后端 艘刚,有前輩建議我去學(xué)混合開發(fā)管宵,說實(shí)話,好迷茫攀甚,尤其是偶爾學(xué)的新東西箩朴,如果成為不了一種知識體系,很碎片化的在學(xué)習(xí)云稚,跟我這樣隧饼,學(xué)了一個月的node.js,學(xué)完沒處上静陈,慢慢就發(fā)現(xiàn)燕雁,不知道學(xué)啥了。
我一看鲸拥,這不是我曾經(jīng)迷茫過的類似的問題么。我相信這也是工作幾年的程序員會產(chǎn)生的迷茫刑赶,因?yàn)楣ぷ鞯膸啄暌呀?jīng)不是那時剛步入社會的新人(菜鳥)捏浊,已經(jīng)可以做一些曾經(jīng)做不了的事情了,也算是個熟練工了撞叨,能夠自己解決日常工作的一些問題金踪,能夠比較輕松實(shí)現(xiàn)一些功能需求了。但是現(xiàn)在問題來了牵敷,技術(shù)到了瓶頸胡岔,怎么辦?我曾經(jīng)在知乎回答過一個問題:
感覺安卓應(yīng)用開發(fā)就是一些接口的調(diào)用和ui界面的邏輯處理枷餐,還有其他可以深入學(xué)習(xí)的嗎靶瘸? - 來自知乎
當(dāng)時我的回答是這樣的:
獨(dú)立開發(fā)過幾個產(chǎn)品,說一下自己的見解毛肋,基本上有完整經(jīng)歷過一個產(chǎn)品的開發(fā)過程都應(yīng)該清楚UI層是應(yīng)用開發(fā)中最常變的一部分怨咪,app開發(fā)者絕大部分的時間都花在UI微調(diào)上,而業(yè)務(wù)邏輯基本上需求定下來不會變動太多润匙,除非是產(chǎn)品迭代一些功能性的追加诗眨,不然就是不停的堆UI、堆UI孕讳,干過兩年以上的開發(fā)者基本的開發(fā)能力已經(jīng)有了辽话,業(yè)務(wù)能力也差不多肄鸽,這時候會遇到瓶頸,基本上就是找不到更加深入的方向油啤,這個時候就可以考慮一下自己參與過的產(chǎn)品所使用到的技術(shù)是自己深究過的典徘,打個比方,開發(fā)app的時候益咬,一般會用到Http框架逮诲,這樣的框架你是否有真正去實(shí)踐過,或者有研究過它的實(shí)現(xiàn)思路和設(shè)計(jì)思想幽告,我們一般都會拿過來用梅鹦,但為什么要這樣設(shè)計(jì)就是我們需要去了解的,這可以提高你的架構(gòu)的設(shè)計(jì)能力和編碼的水平冗锁,除了框架齐唆,更多的是深入framework層相關(guān)的,一些特殊的需求冻河,比如動態(tài)熱更新箍邮、插件化的實(shí)現(xiàn),對應(yīng)用開發(fā)者來說都是新的挑戰(zhàn)叨叙,還有對app的性能調(diào)優(yōu)锭弊,產(chǎn)品上的優(yōu)化,這些東西都是可以根據(jù)其中某一個點(diǎn)進(jìn)行發(fā)散的擂错。只做UI層的嘗試是沒有什么前途的味滞,不管干多少年,眼界也是極其有限钮呀,做技術(shù)的只能不停的深挖剑鞍,構(gòu)建完整的知識體系,才能打通自己的任督二脈爽醋。我個人的一些觀點(diǎn)攒暇,僅供參考。
這個只是針對App開發(fā)的一些見解罷了子房。想一想,現(xiàn)在技術(shù)日新月異就轧,層出不窮证杭, 就拿Android領(lǐng)域來說:
RxJava、Kotlin妒御、React native解愤、MVP、MVVM乎莉、插件化送讲、熱更新奸笤、Data Binding…
這些技術(shù)的出現(xiàn)都是為了去解決以往解決不了的問題,那么我們的問題來了哼鬓,我們是不是每出一個新技術(shù)都要去學(xué)一下监右,當(dāng)然我們作為程序員也應(yīng)該與時俱進(jìn),去接受一些先進(jìn)的思想异希。但這里有個問題就是健盒,我們太過于強(qiáng)調(diào)新,而忘記了這些新技術(shù)的本質(zhì)称簿,任何一門新的技術(shù)都改不了一個事實(shí):底層技術(shù)是不會變的扣癣。至于學(xué)不學(xué),可以問自己一個問題:
學(xué)這門技術(shù)能夠解決什么問題憨降?我如何在實(shí)際工作中運(yùn)用上父虑?
我們學(xué)習(xí)一門新的技術(shù)不是為了學(xué)習(xí)而學(xué),最終還是要回歸實(shí)際應(yīng)用上去授药,不然過一段時間你發(fā)現(xiàn)自己又給忘記了士嚎,不然怎么叫學(xué)以致用呢。
前面的問題還有一個就是烁焙,要往哪個方向?qū)W更有前景航邢?這個真不好說,很多人經(jīng)常犯的一個毛病就是想得太多骄蝇,做得太少膳殷,每天都在糾結(jié)學(xué)什么,就是不動手九火。我們可以看到是前幾年移動開發(fā)很火赚窃,大家一股腦的就往這個領(lǐng)域鉆,再看看現(xiàn)在岔激,移動開發(fā)似乎沒有這么火了勒极,想找工作的同學(xué)和想換工作的同學(xué)是不是發(fā)現(xiàn)難很多了,你能想到會是這樣的局面嗎虑鼎,真不好說辱匿,現(xiàn)在也許是市場冷靜了,任何一門領(lǐng)域的火熱都跟市場的需求相掛鉤炫彩,一旦市場需求量少了匾七,或者不再需要,我們都有可能面臨失業(yè)江兢。
我們來看看現(xiàn)在什么最火熱昨忆,列舉一些:
VR、AR杉允、機(jī)器學(xué)習(xí)邑贴、深度學(xué)習(xí)席里、人工智能
想必大家每天都會看到這些相關(guān)的新聞和資訊,也許這些是未來比較有前景的領(lǐng)域了拢驾,但我們不能因?yàn)檫@些概念的火熱就一股腦得投入到里面奖磁,我的看法就是找一個自己感興趣的方向,持續(xù)發(fā)力独旷,讓自己成為這領(lǐng)域的專家署穗,但前提是你得打好基礎(chǔ)。
好了嵌洼,說到這里你的焦慮感是否少了些許呢案疲?如果還沒有,我提個問題就是你想成為哪個領(lǐng)域的工程師:
終端
Android/iOS
Cocos2d
Unity 3D
Web前端
后臺
運(yùn)維
測試
其實(shí)每個領(lǐng)域都有相應(yīng)的技術(shù)棧麻养,你可以從中選一個自己感興趣的方向去學(xué)習(xí)褐啡,但并不局限于說你只關(guān)注于某一個方向,我的建議是:
專注于一個領(lǐng)域鳖昌,橫向擴(kuò)展其他領(lǐng)域的技術(shù)备畦。
總之一句話,不要自我設(shè)限许昨,沒有人說你一定要成為什么樣的人懂盐,而是你想成為什么樣的人。誰知道哪天你不想做程序員了糕档,想回家賣咸鴨蛋了莉恼,那你就不需要糾結(jié)學(xué)什么的問題了,及時行樂速那,開心就好俐银。