2019 iOS 如何自我提高

如果從 13 年移動(dòng)客戶端大火開始算起,至今已經(jīng)有五個(gè)年頭了。現(xiàn)在移動(dòng)端的形勢(shì)也不需要太多的廢話來(lái)描述肴掷,一句話總結(jié)就是:“浪潮退去敬锐,誰(shuí)在裸泳一看就清楚〈粽埃”我希望借助這篇文章來(lái)聊聊在我心目中台夺,移動(dòng)互聯(lián)網(wǎng)下一個(gè)五年的趨勢(shì)和機(jī)會(huì),以及我們 iOS 工程師能做哪些準(zhǔn)備痴脾,實(shí)現(xiàn)自我提高颤介。本文主觀性的看法比較多,文筆也比較激進(jìn)赞赖,僅供參考滚朵。

我們都知道價(jià)格會(huì)受到供需的影響,如果某項(xiàng)技能在市場(chǎng)上緊缺前域,那么掌握這門技能的工作者工資就會(huì)相對(duì)高一些辕近,比如 14 年前前后能寫好 UITableView 就能找到一個(gè)相對(duì)不錯(cuò)的工作了。在我看來(lái)匿垄,未來(lái)幾年的移動(dòng)互聯(lián)網(wǎng)移宅,會(huì)出現(xiàn)“一個(gè)過(guò)剩,兩個(gè)不足”椿疗,我會(huì)逐個(gè)分析并試著給出一些建議漏峰。

UI 工程師過(guò)剩

這一點(diǎn)是我老生常談的了,首先要注意的是避免成為 API 調(diào)用工程師变丧,因?yàn)檫@些 UI 方面的知識(shí)對(duì)個(gè)人價(jià)值的增長(zhǎng)不是線性的芽狗,如果你還記得高中數(shù)學(xué),請(qǐng)回憶一下 y = ln(x) 這個(gè)函數(shù)的曲線痒蓬。從零到寫好 UITableView 給一個(gè)工程師帶來(lái)的收益童擎,遠(yuǎn)遠(yuǎn)不是從寫好 UITableView 到寫好 UIStackView 能比得上的。

就以 UIStackView 為例吧攻晒,先不說(shuō)它從 iOS 9 才開始支持顾复,而要想應(yīng)用不支持 iOS 9,怕是要等到猴年馬月了鲁捏。就說(shuō)它提供的功能芯砸,雖然簡(jiǎn)化了已有場(chǎng)景,但這個(gè)功能完全可以通過(guò)封裝已有的組件來(lái)實(shí)現(xiàn)给梅,相信很多大型項(xiàng)目都有假丧,為什么還要費(fèi)力氣去兼容版本,以及再學(xué)習(xí)一個(gè)新的 API 呢动羽?人的精力是有限的包帚,如果你總是追著蘋果的腳步,每年補(bǔ) WWDC 上那些新坑和老債运吓,那么視野就永遠(yuǎn)只能停留在 iOS 中了渴邦。

我拒絕追隨 WWDC 的另一個(gè)原因是把自己的職業(yè)生涯押注在一個(gè)平臺(tái)或者公司上疯趟,是極度不明智,也是極度危險(xiǎn)的谋梭,即使這是蘋果信峻。上半年的時(shí)候我們小組招聘,我負(fù)責(zé)篩選了一批簡(jiǎn)歷瓮床,其中有一位已經(jīng)三十多歲盹舞,十年經(jīng)驗(yàn)的程序員,他的簡(jiǎn)歷讓我感觸良多纤垂。他本科畢業(yè)后就在諾基亞負(fù)責(zé)塞班系統(tǒng)的研發(fā)矾策,大概相當(dāng)于今天的蘋果公司負(fù)責(zé)寫 iOS 系統(tǒng),看起來(lái)光環(huán)非常明顯了峭沦,后來(lái)先后去過(guò)兩家生產(chǎn)安卓手機(jī)的大廠贾虽,現(xiàn)在又申請(qǐng) iOS 的程序員職位。在他的簡(jiǎn)歷里吼鱼,我看不到一個(gè)十年程序員該有的技術(shù)和思維深度蓬豁,只有一個(gè)又一個(gè)古老名詞的堆砌菇肃。因此地粪,我衷心的建議各位讀者,在你學(xué)習(xí)一個(gè)新技術(shù)以前琐谤,不妨先花十秒鐘猜測(cè)一下蟆技,這個(gè)技術(shù)三年后,五年后斗忌,十年后會(huì)是什么樣质礼?猜不準(zhǔn)沒(méi)問(wèn)題,如果有了明確的答案织阳,還往坑里踩眶蕉,就只能怪自己了。

當(dāng)然唧躲,我并不是全盤否定 UI 的技術(shù)造挽,畢竟程序員拿工資是因?yàn)槟隳転楣緞?chuàng)造效益,所以該做的需求還是要 100% 高質(zhì)量的完成弄痹,也就是說(shuō)該學(xué)的還是要學(xué)饭入。但如果是業(yè)余時(shí)間的自我提高就另說(shuō)了,我的建議是找一個(gè) UI 組件認(rèn)真學(xué)習(xí)下肛真,把官方文檔讀一遍圣拄,自己寫個(gè) Demo 理清楚知識(shí)脈絡(luò)。我并不指望這個(gè)組件能真的幫上什么忙毁欣,但一個(gè)合格的程序員庇谆,也從來(lái)不應(yīng)該只做自己會(huì)做的事。合格的程序員應(yīng)該要有舉一反三凭疮,快速學(xué)習(xí)的能力饭耳,所以只要找一個(gè)組件熟悉一下整個(gè)學(xué)習(xí)流程就可以了。了解一個(gè) UIStackView 的前因后果以及如何兼容低版本是一個(gè)程序員好學(xué)的體現(xiàn)执解,但如果一個(gè)程序員只是每年學(xué)習(xí)新的控件寞肖,又不能在項(xiàng)目中取得較大的收益,就只能說(shuō)是學(xué)習(xí)方法有問(wèn)題了衰腌。

從技術(shù)角度來(lái)說(shuō)新蟆,蘋果的 UI 布局是我見(jiàn)過(guò)最落后的方式,無(wú)論是前端的 HTML 還是安卓的 XML 都要比 iOS 先進(jìn)右蕊。這主要是因?yàn)榘巡季中畔Ⅰ詈线M(jìn)二進(jìn)制代碼非常不合理琼稻,而且一定程度上損失了動(dòng)態(tài)化和解耦的能力。如果 iOS 的布局方案將來(lái)有較大幅度的優(yōu)化饶囚,我可以斷言絕對(duì)不是 Autolayout 這樣的雞肋工具帕翻,或者 Storyboard 這種傻瓜工具。相比之下我更看好一種統(tǒng)一的萝风,能夠跨端布局技術(shù)嘀掸,比如 flexbox 規(guī)范。

專業(yè)技能人才不足

這里的專業(yè)技能指的是移動(dòng)端這個(gè)大話題中里比較垂直的知識(shí)領(lǐng)域规惰,大概包含以下幾個(gè)方面:

圖像/視頻處理

隨著網(wǎng)絡(luò)基礎(chǔ)設(shè)施的普及睬塌,以及流量費(fèi)用的大幅度降低,4G 基本上已經(jīng)全面商用了歇万,如果說(shuō)移動(dòng)端前五年是文字為主揩晴,圖片視頻為輔的話,在接下來(lái)的幾年中堕花,用戶對(duì)高質(zhì)量圖片和視頻的要求會(huì)日益增長(zhǎng)文狱。

由于我對(duì)這個(gè)領(lǐng)域并不了解,所以能夠推薦的并不多缘挽,在我印象中瞄崇,OpenGL 這種跨平臺(tái)的引擎,計(jì)算機(jī)圖形學(xué)的知識(shí)壕曼,視頻編碼與協(xié)議都是可以花時(shí)間研究的苏研,現(xiàn)在有很多優(yōu)秀的創(chuàng)業(yè)公司也急需這類人才。嚴(yán)格來(lái)說(shuō)這些知識(shí)都不算移動(dòng)互聯(lián)網(wǎng)方面的知識(shí)了腮郊,所以門檻較高摹蘑,但門檻這東西是個(gè)雙刃劍。它會(huì)增加你的學(xué)習(xí)難度轧飞,但一旦你掌握了這門知識(shí)衅鹿,門檻又會(huì)變成你個(gè)人價(jià)值的護(hù)城河撒踪。

我格外想要聲明的是,CoreAnimation 這類的東西如果不是工作中強(qiáng)制要用大渤,一般就別碰了制妄,就像沒(méi)人會(huì)傻到用 SpriteKit/SceneKit 去寫游戲一樣,這種 API 密集型泵三,又不能跨端的庫(kù)是沒(méi)有前途的耕捞,真正有價(jià)值的動(dòng)畫一定是用一套統(tǒng)一的 DSL(領(lǐng)域特定語(yǔ)言)去實(shí)現(xiàn),然后導(dǎo)出到各個(gè)平臺(tái)上烫幕,所以開發(fā)者一定要多在動(dòng)畫的原理上下功夫俺抽,比如了解矩陣變換,線性代數(shù)這些较曼,而不是把時(shí)間浪費(fèi)在閱讀官方文檔上磷斧。

把事情搞定

在任何時(shí)候,一個(gè)靠譜的诗芜,能把事情搞定的工程師一定是受到歡迎的瞳抓。靠譜是一個(gè)很虛的概念伏恐,我以最近的觀察簡(jiǎn)單的舉兩個(gè)例子孩哑。

當(dāng)項(xiàng)目比較大了以后,隨著參與開發(fā)的人數(shù)越來(lái)越多翠桦,與技術(shù)無(wú)關(guān)的事情也會(huì)占據(jù)越來(lái)越大的比重横蜒。比如協(xié)調(diào)和溝通,測(cè)試销凑,后端的人力什么時(shí)候到位丛晌,某個(gè) Bug 如何追查復(fù)現(xiàn)并定位,新版本的需求哪些可以做斗幼,哪些緩一緩澎蛛,能做的需求什么時(shí)候提測(cè),什么時(shí)候灰度蜕窿,什么時(shí)候正式發(fā)版谋逻?這些事情很瑣碎,需要很強(qiáng)的責(zé)任心桐经,而且在求職的時(shí)候比較難體現(xiàn)出來(lái)(除非有知名的 app 背書)毁兆,但相應(yīng)的好處是績(jī)效一般會(huì)比較不錯(cuò),而且在領(lǐng)導(dǎo)心目中的印象會(huì)比較好阴挣。技術(shù)不敏感的同學(xué)也可以考慮這條路線气堕。

雖然我一向?qū)?UI 開發(fā)很不屑,但事實(shí)是如果一個(gè) iOS 工程師能把各個(gè)系統(tǒng)控件玩得很溜,而且有自己對(duì)控件的積累和封裝茎芭,再了解一些性能優(yōu)化方面的知識(shí)揖膜,找到一個(gè)相當(dāng)滿意的 iOS 職位也不會(huì)太難。如果你走的是這種傳統(tǒng)的 iOS 開發(fā)路線骗爆,不妨問(wèn)問(wèn)自己次氨,每年的 WWDC 都看完了沒(méi),移動(dòng)開發(fā)的各種工具是否都能熟練使用(比如 Reveal摘投,Charles 等),能不能熟練到任何復(fù)雜的頁(yè)面虹蓄,都能通過(guò)自己積累的組件在短時(shí)間內(nèi)實(shí)現(xiàn)犀呼?然而根據(jù)我的觀察,絕大多數(shù)應(yīng)聘者的簡(jiǎn)歷里博客都很少薇组,更別提 Github 上面有持續(xù)迭代的代碼了外臂。這條路線的缺點(diǎn)是職業(yè)生涯天花板相對(duì)比較低,基本上到高級(jí) iOS 工程師就為止了律胀。

逆向工程

研究逆向工程的作用不僅僅是破解 app宋光,在我看來(lái)更多是學(xué)習(xí)底層的操作系統(tǒng)。在開發(fā) app 的過(guò)程中炭菌,我們使用系統(tǒng)提供的庫(kù)罪佳,調(diào)用 API 就可以實(shí)現(xiàn)需求,其中的過(guò)程完全是黑盒黑低。而逆向工程的目的就是要開盒子赘艳,利用一些工具從二進(jìn)制層面入手,反過(guò)來(lái)推測(cè)應(yīng)用開發(fā)者的代碼和邏輯克握。這其中會(huì)涉及到很多 C 語(yǔ)言蕾管,操作系統(tǒng),編譯原理方面的東西菩暗,相對(duì)來(lái)說(shuō)門檻很高掰曾。逆向工程對(duì)企業(yè)對(duì)價(jià)值也很大, 因?yàn)榇蠹叶疾幌M约罕桓?jìng)爭(zhēng)對(duì)手一眼看穿停团,又對(duì)競(jìng)爭(zhēng)對(duì)手對(duì)秘密頗感興趣旷坦。

小結(jié)

以上是幾個(gè)我目前能想到的,可以花時(shí)間研究的專業(yè)知識(shí)客蹋。這些知識(shí)大多是自成體系的塞蹭,沒(méi)有較長(zhǎng)時(shí)間的積累,很難入門讶坯。這一點(diǎn)非常重要番电,因?yàn)楹芏嘀R(shí)看起來(lái)非常專業(yè),門檻也很高,比如我下一節(jié)就會(huì)提到這樣的例子漱办,但這些知識(shí)我并不鼓勵(lì)學(xué)習(xí)这刷。區(qū)分的標(biāo)準(zhǔn)是,你學(xué)習(xí)的知識(shí)是一個(gè)知識(shí)點(diǎn)還是一個(gè)體系娩井,如果你學(xué)習(xí)的只是知識(shí)點(diǎn)暇屋, 那么它只能是整個(gè)知識(shí)樹上的枝枝丫丫,邊邊角角洞辣;如果你學(xué)習(xí)的是知識(shí)體系咐刨,就具備了衍生知識(shí)點(diǎn)的能力,也就是我反復(fù)強(qiáng)調(diào)的舉一反三的能力扬霜。

上面舉的三個(gè)例子都是我認(rèn)為不容易遭到時(shí)間的淘汰定鸟,比較值得研究的話題。在這些領(lǐng)域上的投入可以理解為線性的著瓶,也就是一分耕耘联予,一分收獲。

全棧人才緊缺

這里的全棧沒(méi)有明確的定義材原,并非前后端通吃才算是全棧沸久。在我的理解中,只要是跨知識(shí)點(diǎn)的融合余蟹,都算是全棧卷胯,因?yàn)榭缰R(shí)點(diǎn)的融合往往會(huì)產(chǎn)生 1 + 1 > 2 的效果。往小了說(shuō)客叉,全椝薪撸可以減少大量浪費(fèi)在溝通上的時(shí)間。往大了說(shuō)兼搏,一個(gè)人了解的領(lǐng)域越多卵慰,他就越能把這些領(lǐng)域融合在一起,既能站在更高的角度思考問(wèn)題佛呻,也能作為團(tuán)隊(duì)的領(lǐng)導(dǎo)者和融合劑裳朋。這也就意味著,掌握全棧知識(shí)對(duì)個(gè)人價(jià)值的影響是指數(shù)形勢(shì)的吓著,你了解的越多鲤嫡,價(jià)值就會(huì)越快的提高,職業(yè)天花板也會(huì)越高绑莺。

別研究得太深

我經(jīng)常關(guān)注微信的技術(shù)博客暖眼,比如客戶端通過(guò)修改 SQlite 代碼達(dá)到了更好的性能,以及修復(fù)了一個(gè)非常詭異的內(nèi)核崩潰問(wèn)題纺裁,這體現(xiàn)了微信強(qiáng)大的技術(shù)能力诫肠,能夠參與其中的工程師也一定收獲頗大司澎。BAT 這種級(jí)別的大廠其實(shí)有很多非常底層的黑科技,也會(huì)在各種大會(huì)和文章中對(duì)

.....額.....沒(méi)油了 收費(fèi)了

摘自 -- 張星宇

百度iOS工程師栋豫,正向全棧的方向努力挤安。熱愛(ài)分享,喜歡研究問(wèn)題的本質(zhì)丧鸯,討厭一切不說(shuō)人話的描述蛤铜。

更新 2018-02-06

全棧人才緊缺

這里的全棧沒(méi)有明確的定義,并非前后端通吃才算是全棧丛肢。在我的理解中围肥,只要是跨知識(shí)點(diǎn)的融合,都算是全棧蜂怎,因?yàn)榭缰R(shí)點(diǎn)的融合往往會(huì)產(chǎn)生 1 + 1 > 2 的效果虐先。往小了說(shuō),全椗煞螅可以減少大量浪費(fèi)在溝通上的時(shí)間。往大了說(shuō)撰洗,一個(gè)人了解的領(lǐng)域越多篮愉,他就越能把這些領(lǐng)域融合在一起,既能站在更高的角度思考問(wèn)題差导,也能作為團(tuán)隊(duì)的領(lǐng)導(dǎo)者和融合劑试躏。這也就意味著,掌握全棧知識(shí)對(duì)個(gè)人價(jià)值的影響是指數(shù)形勢(shì)的设褐,你了解的越多颠蕴,價(jià)值就會(huì)越快的提高,職業(yè)天花板也會(huì)越高助析。

別研究得太深

我經(jīng)常關(guān)注微信的技術(shù)博客犀被,比如客戶端通過(guò)修改 SQlite 代碼達(dá)到了更好的性能,以及修復(fù)了一個(gè)非常詭異的內(nèi)核崩潰問(wèn)題外冀,這體現(xiàn)了微信強(qiáng)大的技術(shù)能力寡键,能夠參與其中的工程師也一定收獲頗大。BAT 這種級(jí)別的大廠其實(shí)有很多非常底層的黑科技雪隧,也會(huì)在各種大會(huì)和文章中對(duì)外介紹西轩,然而我給大多數(shù)讀者的建議是脑沿,當(dāng)個(gè)新聞看看就可以了。人家研究得這么深是因?yàn)?KPI 指標(biāo)有壓力庄拇,你作為一個(gè)外人,如果也研究這么深只能說(shuō)明你傻。

知識(shí)是有價(jià)值的祠汇,不僅價(jià)值各不相同仍秤,還受到規(guī)模的影響可很,作為微信來(lái)說(shuō),修復(fù)一個(gè)發(fā)生率極低的 crash我抠,在過(guò)億用戶的基數(shù)下苇本,很可能會(huì)減少幾百萬(wàn)次崩潰,帶來(lái)巨大的收益菜拓。然而這個(gè)收益,放在你的公司里俺夕,很可能就是 0贱鄙。因此在選擇自我提高方向時(shí),一定要關(guān)注技術(shù)本身的價(jià)值映九,有些技術(shù)自身并不值錢瞎颗,但經(jīng)過(guò)公司規(guī)模的加成,就產(chǎn)生了相當(dāng)大的價(jià)值哼拔,但這并不意味著你需要花時(shí)間學(xué)習(xí)它。尤其是某些無(wú)法形成體系轿曙,僅僅是獨(dú)立知識(shí)點(diǎn)的技術(shù)僻孝,公司業(yè)務(wù)有需要,那為了工資得硬著頭皮上您单,但如果自由時(shí)間里面還要花時(shí)間去學(xué)荞雏,就太浪費(fèi)了平酿。

我拒絕花時(shí)間了解這類技術(shù)的另一個(gè)原因在于悦陋,很多技術(shù)是與業(yè)務(wù)綁定的,有了核心知識(shí)幸逆,在業(yè)務(wù)需求的推動(dòng)下暮现,很容易就會(huì)誕生一個(gè)框架。比如應(yīng)用組件化拍顷,很多公司都有自己的組件化庫(kù)塘幅,其實(shí)實(shí)現(xiàn)原理也就是兩大類,但發(fā)表到博客里面以后爱沟,就會(huì)有非常多的業(yè)務(wù)背景干擾讀者的認(rèn)知匆背,如果讀者追著這類文章看身冀,是非常難從框架中剝離業(yè)務(wù)的干擾,直接挖掘基本原理的珍促。因此大公司搞出來(lái)的某些框架剩愧,真的沒(méi)有那么神秘,早期都是一個(gè)簡(jiǎn)陋的基礎(chǔ)框架穴翩,當(dāng)面對(duì)業(yè)務(wù)業(yè)務(wù)需求時(shí)锦积,運(yùn)用一些合理的編程思想,逐步迭代背蟆,最后發(fā)布了一個(gè)完善的版本,大可不必看得暈頭轉(zhuǎn)向以后妄自菲薄带膀。

在之前面試的過(guò)程中垛叨,我也注意到很多應(yīng)聘者其實(shí)對(duì)技術(shù)很感興趣,經(jīng)常刷微博上的文章点额,了解的也很多还棱。但大多數(shù)情況下只知其然,不知其所以然珍手。這是因?yàn)檫@些技術(shù)偏離了你的應(yīng)用場(chǎng)景琳要。以前我總為微博上的好技術(shù)無(wú)法在項(xiàng)目中落地感到糾結(jié),后來(lái)我突然就明白了稚补,這個(gè)思路就是錯(cuò)的课幕,我應(yīng)該挖掘公司項(xiàng)目的痛點(diǎn),去微博乍惊,Google 等平臺(tái)上的文章中尋找解決方案润绎。所以我反對(duì)面向微博學(xué)習(xí),應(yīng)該要學(xué)一些更通用的技術(shù)莉撇,把技術(shù)與自己的項(xiàng)目結(jié)合起來(lái)棍郎,爭(zhēng)取能在項(xiàng)目中落地,這比看十篇似懂非懂的技術(shù)文章還管用坝撑。

大公司所謂的基礎(chǔ)知識(shí)

上一節(jié)解釋了為什么不要研究單獨(dú)的幾個(gè)底層知識(shí)點(diǎn),除了這種知識(shí)抚笔,以及逆向工程這種自成體系的殊橙,求職者只要具備扎實(shí)的基礎(chǔ),牢牢掌握一些基礎(chǔ)知識(shí)就可以了膨蛮。很多人都會(huì)覺(jué)得大公司對(duì)底層的基礎(chǔ)知識(shí)考察很嚴(yán)格敞葛,基礎(chǔ)知識(shí)不表示底層,也不一定就很簡(jiǎn)單惹谐,它們通常是那些被框架做了一層封裝氨肌,以至于如果不用心思考,很可能就會(huì)忽略的知識(shí)卿叽,但不了解這些知識(shí)會(huì)對(duì)你的思考產(chǎn)生較大的影響恳守,也很容易栽進(jìn)某個(gè)坑里。

除非是變態(tài)公司以偏題怪題刁難人為樂(lè),或者無(wú)能面試官只會(huì)問(wèn)自己懂的東西以外整胃,正常的大公司面試都會(huì)考察一些比較基礎(chǔ)的問(wèn)題,如果你還是覺(jué)得題目太底層在岂,只能說(shuō)明自己看問(wèn)題的角度還不夠深刻蛮寂。

大公司著重考察基礎(chǔ)知識(shí)酬蹋,在我看來(lái)有兩大原因:首先抽莱,在比較大型的項(xiàng)目中骄恶,業(yè)務(wù)邏輯非常復(fù)雜,所以很少有人有精力去大量的檢查并提高你的代碼質(zhì)量虐呻,這就要求工程師具備相當(dāng)扎實(shí)的代碼功底寞秃,無(wú)論是代碼風(fēng)格還是語(yǔ)言的掌握都不能有太多問(wèn)題。這樣 Code Review 的時(shí)候才能把精力放在業(yè)務(wù)檢查上朗涩,代碼風(fēng)格一筆帶過(guò)堂淡,偶爾提醒一下就可以了绢淀。

另一方面,基礎(chǔ)知識(shí)決定一個(gè)人思考問(wèn)題的深度和交流問(wèn)題的角度皆的。一個(gè)不懂計(jì)算機(jī)背景知識(shí)的程序員费薄,看問(wèn)題的方式經(jīng)常是錯(cuò)誤的,錯(cuò)誤的思考方式也就決定了他很難走到正確的道路上伟众,比如我的一個(gè)外行朋友曾經(jīng)接手了一個(gè)用 C++ 實(shí)現(xiàn)的 GUI召廷,他的第一個(gè)問(wèn)題是“如何在 C++ 中把字符串加粗”,讀者大可不必感到荒謬先紫,因?yàn)楹芏嗳怂伎紗?wèn)題的方式也不見(jiàn)得高明筹煮,在高水平,有經(jīng)驗(yàn)的程序員看來(lái)本冲,也許同樣是不可理喻的。大公司復(fù)雜的業(yè)務(wù)邏輯同樣也意味著很少有人會(huì)耐心的給你講解每一個(gè)名詞意狠,比如哈希表疮胖,并發(fā),并行院塞,編譯性昭,鏈接等等名詞,如果你聽不懂或者理解不正確汹族,往往意味著交流上會(huì)存在一些障礙其兴。

因此我的建議是:數(shù)據(jù)結(jié)構(gòu)元旬,操作系統(tǒng),計(jì)算機(jī)網(wǎng)絡(luò)中的基礎(chǔ)知識(shí)一定要扎實(shí)匀归,怎么扎實(shí)都不為過(guò)穆端,因?yàn)樗鼪Q定了你看問(wèn)題時(shí)候的高度,深度和思路攒巍。

讓腳本取代 GUI

腳本語(yǔ)言非常重要狡赐,絕對(duì)是提升工作效率的神器钦幔,我強(qiáng)烈建議每個(gè)客戶端工程師都應(yīng)該了解一些 Shell 腳本并且掌握 Python,Ruby 和 JS 中至少一門語(yǔ)言搀擂。

理論上來(lái)說(shuō)沒(méi)有什么是腳本語(yǔ)言做得到,Java 做不到的喷市,但腳本語(yǔ)言最大的特點(diǎn)就是快威恼,快到極點(diǎn)的那種快箫措。對(duì)于一些極度簡(jiǎn)單的小需求,比如統(tǒng)計(jì)一個(gè)文件中某一列數(shù)字的平均數(shù)斤蔓,我敢保證在我得出結(jié)果之前你肯定還來(lái)不及打開 Java 編輯器弦牡。

腳本語(yǔ)言的另一個(gè)特點(diǎn)是高度的自動(dòng)化,只要 Unix 和 Linux 系統(tǒng)一天不死卸留,shell 腳本就會(huì)永遠(yuǎn)存活稻据,你學(xué)習(xí)的知識(shí)就永遠(yuǎn)不會(huì)過(guò)期,比如 awk 和 sed 這樣的神器匆赃,年齡比我大得多今缚,至今還非常實(shí)用姓言,未來(lái)的 20 年也絲毫看不出淘汰的跡象。試問(wèn)一下囱淋,有什么知識(shí)能比一個(gè)幾十年不會(huì)過(guò)期餐塘,而且每天都能用上的知識(shí)更值得學(xué)習(xí)呢?由于 Shell 是距離操作系統(tǒng)最近的腳本税手,了解了它以后,很多復(fù)雜的操作都可以被自動(dòng)化艺挪。比如想找到項(xiàng)目中無(wú)用的圖片兵扬,也就是一行命令的事。

考慮到腳本語(yǔ)言極高的開發(fā)效率掂器,很多對(duì)性能不敏感的框架都會(huì)選擇用腳本語(yǔ)言來(lái)實(shí)現(xiàn)俱箱,比如 Node墨榄,F(xiàn)lask,Rails跟衅,mitmproxy 等等。作為一個(gè)大前端工程師掰读,不能總是依賴后端工程師叭莫,否則沒(méi)了后端就只能搞單機(jī)模式了。因此了解腳本語(yǔ)言還有助于我們快速上手后端框架拢肆,這絕對(duì)是應(yīng)聘時(shí)的加分項(xiàng)靖诗。

當(dāng)然刊橘,很多人也會(huì)抱怨,我們是 iOS 工程師攒庵,平時(shí)的工作也接觸不到腳本語(yǔ)言,該如何學(xué)習(xí)并投入使用呢。我的建議有三個(gè):

整理自己的痛點(diǎn)位衩, 并嘗試著用過(guò)腳本去解決糖驴,這對(duì)學(xué)習(xí) Shell 有奇效

整理公司項(xiàng)目開發(fā)中的痛點(diǎn),嘗試著用腳本去解決辙谜,適合練習(xí) Python感昼,Ruby 和 JS

拋棄 GUI

GUI 誕生的目的是為了更好的顯示信息定嗓,而不是成為技術(shù)殘疾者的拐杖。舉一個(gè)簡(jiǎn)單的例子宵溅,我發(fā)現(xiàn)很多人都裝了很多編程效率方面的工具恃逻,比如 gitx,sourcetree凸郑,tower 之類的 git 工具润绵,還有什么快速打開模擬器目錄,Derived Data 目錄的小工具憨愉,我覺(jué)得這實(shí)在是太愚蠢了配紫。放著大好的學(xué)習(xí) Git 和 shell 的機(jī)會(huì)不要午阵,把時(shí)間浪費(fèi)在了解一個(gè)軟件的 GUI 上享扔,我覺(jué)得是完全不能接受的惧眠。尤其是對(duì)于 git 來(lái)說(shuō)于个,我建議多問(wèn)問(wèn)自己,學(xué)會(huì)的是 git 還是 sourcetree 的按鈕秀存,將來(lái)?yè)Q一個(gè) GUI 工具羽氮,畢生功力還剩幾成档押?至于某些小工具,這種絕佳的練手機(jī)會(huì)洞就,怎么能拱手相讓給別的軟件呢掀淘,尤其是腳本可以自動(dòng)化,軟件就幾乎不可能了倾贰。

學(xué)點(diǎn)前后端

我并不認(rèn)為這一波移動(dòng)互聯(lián)網(wǎng)的寒潮是對(duì)移動(dòng)端的否定匆浙,短期來(lái)看還沒(méi)有設(shè)備能夠取代手機(jī)厕妖。在我看來(lái),它其實(shí)是 O2O 這種商業(yè)模式被證偽后软能,市場(chǎng)的自然反應(yīng)举畸。企業(yè)都認(rèn)識(shí)到抄沮,移動(dòng)端轉(zhuǎn)型不是商業(yè)模式的救命稻草岖瑰,所以為了節(jié)約成本蹋订,很多時(shí)候都是 Web 先行刻伊。這并不意味著移動(dòng)端的需求沒(méi)有了,只是現(xiàn)階段存在著開發(fā)成本和收益之間的矛盾。目前移動(dòng)端對(duì)傳統(tǒng)行業(yè)的滲透還不夠多讼呢,大一些的傳統(tǒng)企業(yè)找外包谦炬,小一些的干脆就沒(méi)有能力做了。

一方面础爬,我認(rèn)為隨著框架看蚜,工具的日益完善赔桌,大前端開發(fā)的成本會(huì)持續(xù)下降,逼近業(yè)務(wù)復(fù)雜度本身音诫。如果對(duì)前后端都有一定的了解竭钝,即使是做外包雹洗,也能以較低的人力和時(shí)間成本完成需求,比如熟悉 React Native 的開發(fā)者一個(gè)人就抵得上 iOS 和 安卓程序員各一人/畢竟大多數(shù)人工作還是為了錢穴吹,如果有穩(wěn)定且較高的外包收入港令,工作也不是不能放棄。

另一方面咪惠,在與公司高 T 的聊天中淋淀,我了解到即使是大公司朵纷,對(duì)全棧也是有需求的。不是公司里的每個(gè)項(xiàng)目都是淘寶鞋仍,微信和百度搜索搅吁,畢竟多一個(gè)人就多一份溝通成本谎懦,能夠獨(dú)立把前后端打通,負(fù)責(zé)整個(gè)項(xiàng)目的人吸申,無(wú)論在哪里都會(huì)被搶著要享甸。

然而這一切的前提都是有扎實(shí)的基礎(chǔ)知識(shí)枪萄,比如對(duì)于大前端的開發(fā)來(lái)說(shuō),最重要的就是 HTTP 協(xié)議了聚凹,全棧不是全干齐帚,絕非讀一篇 xxx 實(shí)戰(zhàn)指南然后寫幾行 Demo 就算是入門的对妄。因此一定要對(duì)框架背后的原理有深刻的了解,并且積累一定的實(shí)戰(zhàn)經(jīng)驗(yàn)才行摩瞎。程序員應(yīng)該是框架的主人,因?yàn)橐?jié)省時(shí)間蚓哩,避免模板代碼才選擇框架岸梨,萬(wàn)萬(wàn)不能成為框架的奴隸稠氮,踩著框架的高跟鞋才能在需求的海洋中蹣跚兩步隔披,離開了 API 就不會(huì)寫代碼了。如果公司有業(yè)務(wù)需要,提供轉(zhuǎn)崗的機(jī)會(huì)恃慧,而你又恰好有一定的基礎(chǔ)和興趣渺蒿,不妨勇敢的嘗試一下茂装。否則就只能自己創(chuàng)造需求,比如找一個(gè)痛點(diǎn)并加以解決了城侧。

總結(jié)

啰啰嗦嗦說(shuō)了很多彼妻,其實(shí)總結(jié)下來(lái)沒(méi)幾點(diǎn):

學(xué)習(xí)一個(gè)技術(shù)之前不妨先思考一下它在整個(gè)互聯(lián)網(wǎng)體系中目前的位置侨歉,有什么樣的未來(lái),會(huì)對(duì)個(gè)人價(jià)值有多大的提高

數(shù)據(jù)結(jié)構(gòu)炮温,操作系統(tǒng)柒啤,編譯原理妒峦,計(jì)算機(jī)網(wǎng)絡(luò)這些基礎(chǔ)知識(shí)不能丟,它決定了你看問(wèn)題時(shí)候的高度兵睛,深度和思路

未來(lái)需要特定技術(shù)領(lǐng)域里的專才肯骇,更需要全棧,歸根結(jié)底是需要最大化自己的價(jià)值祖很。我個(gè)人的建議是掌握好腳本語(yǔ)言提高效率笛丙,打通前后端,這樣無(wú)論在外包假颇,獨(dú)角獸創(chuàng)業(yè)公司還是大公司胚鸯,都能獨(dú)當(dāng)一面

學(xué)習(xí)新技術(shù)時(shí)要避免好高騖遠(yuǎn)或者盲目迷信大廠,轉(zhuǎn)發(fā)或艾特印象筆記提高不了自己笨鸡,要結(jié)合實(shí)際場(chǎng)景,最重要的是要能落地形耗!

著作權(quán)歸作者所有

作者:Silence_廣

鏈接:http://www.reibang.com/p/c6af2e54549f

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末哥桥,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子激涤,更是在濱河造成了極大的恐慌拟糕,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,997評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件倦踢,死亡現(xiàn)場(chǎng)離奇詭異送滞,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)辱挥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門犁嗅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人晤碘,你說(shuō)我怎么就攤上這事愧哟。” “怎么了哼蛆?”我有些...
    開封第一講書人閱讀 163,359評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵蕊梧,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我腮介,道長(zhǎng)肥矢,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,309評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮甘改,結(jié)果婚禮上旅东,老公的妹妹穿的比我還像新娘。我一直安慰自己十艾,他們只是感情好抵代,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評(píng)論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著忘嫉,像睡著了一般荤牍。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上庆冕,一...
    開封第一講書人閱讀 51,258評(píng)論 1 300
  • 那天康吵,我揣著相機(jī)與錄音,去河邊找鬼访递。 笑死晦嵌,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的拷姿。 我是一名探鬼主播惭载,決...
    沈念sama閱讀 40,122評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼响巢!你這毒婦竟也來(lái)了描滔?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,970評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤抵乓,失蹤者是張志新(化名)和其女友劉穎伴挚,沒(méi)想到半個(gè)月后靶衍,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體灾炭,經(jīng)...
    沈念sama閱讀 45,403評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評(píng)論 3 334
  • 正文 我和宋清朗相戀三年颅眶,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蜈出。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,769評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡涛酗,死狀恐怖铡原,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情商叹,我是刑警寧澤燕刻,帶...
    沈念sama閱讀 35,464評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站剖笙,受9級(jí)特大地震影響卵洗,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜弥咪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評(píng)論 3 327
  • 文/蒙蒙 一过蹂、第九天 我趴在偏房一處隱蔽的房頂上張望十绑。 院中可真熱鬧,春花似錦酷勺、人聲如沸本橙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)甚亭。三九已至,卻和暖如春库说,著一層夾襖步出監(jiān)牢的瞬間狂鞋,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工潜的, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留骚揍,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,831評(píng)論 2 370
  • 正文 我出身青樓啰挪,卻偏偏與公主長(zhǎng)得像信不,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子亡呵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評(píng)論 2 354

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

  • 今天多云抽活,不過(guò)并不影響窗外嘰嘰喳喳的鳥兒早起覓蟲!都說(shuō)早起的鳥兒有蟲吃锰什,那早起的蟲子呢下硕,是不是能躲過(guò)被吃的命運(yùn)?好...
    Fiona海燕閱讀 236評(píng)論 0 1
  • 希望你能感受到我對(duì)你長(zhǎng)久的思念汁胆,像風(fēng)梭姓、像雷、像荊棘嫩码。
    冷暖自知_93de閱讀 82評(píng)論 0 0