ps: 很久了廉邑,就想寫一些這樣的文章哥蔚,申明,鞭策自己在 android 路上好好走下去蛛蒙。長(zhǎng)期連載糙箍,嫌少勿噴!
很多做 android 開(kāi)發(fā)的同學(xué)都想多快好省牵祟,現(xiàn)實(shí)是真的是這樣嗎深夯,借著前人的經(jīng)驗(yàn),我們的目標(biāo)可以更加清晰诺苹,可以計(jì)劃劃分階段去學(xué)習(xí)咕晋,但是學(xué)習(xí)的路是不會(huì)變的,別人會(huì)遇到什么我們也會(huì)遇到什么收奔,別人躺過(guò)的坑我們一樣得趟
接著這里掌呜,我想表達(dá)我們對(duì) android 學(xué)習(xí)之路的理解,也分享我收集到的前人經(jīng)驗(yàn)坪哄,讓前路不再晦暗质蕉,讓腳下的路筆直一些,僅此而已~
很高興小魚同學(xué)在總結(jié)自己的路時(shí)引用了部分我的思想翩肌,這里不是說(shuō)抄襲的事模暗,我高興的是被認(rèn)可~,另外小魚同學(xué)也在經(jīng)營(yíng)自己的微信號(hào)念祭,學(xué)習(xí)資源也是很多的兑宇,我放個(gè)鏈接大家自己去看:
做為一個(gè)人粱坤,我們?cè)诿悦r(shí)該怎么想隶糕,怎么看待自己祝钢,若是你不知道,那么看下面:
繼續(xù)吐槽若厚,分享下自己關(guān)于如何學(xué)習(xí)的想法
我想看我文章的至少都是有1年開(kāi)發(fā)經(jīng)驗(yàn)以上的了拦英,至少都是熟練的初級(jí) coder 了吧,在這個(gè)階段甚至之后的幾個(gè)階段测秸,android 的 coder 們內(nèi)心其實(shí)都是惶恐焦慮的疤估,一是大環(huán)境沒(méi)有以前熱了,找工作的難度提升了霎冯,對(duì) coder 們的要求也是節(jié)節(jié)攀升铃拇;二是 coder 們?cè)趯W(xué)習(xí)過(guò)程中發(fā)現(xiàn)了大量的知識(shí)點(diǎn)和面,這些東西實(shí)在太多了沈撞,看了 A 會(huì)勾連出 BCDEF慷荔,這里面又涉及到大量的 java 等其他知識(shí)點(diǎn),都是比較難搞缠俺,耗時(shí)的
種種以上讓大家變得不再自信了显晶,加之環(huán)境趨緊,所以焦慮由此產(chǎn)生壹士。大家也不必太過(guò)因此而焦慮磷雇,焦慮了也沒(méi)有啊,這些東西遲早都是我們的菜躏救,都得學(xué)唯笙,都得趟過(guò)去,當(dāng)然越早趟過(guò)去越好
這里面就涉及到如何學(xué)習(xí)的問(wèn)題了盒使,會(huì)學(xué)習(xí)的 coder 效率會(huì)很高崩掘,學(xué)的會(huì)比較透,記得會(huì)比較牢少办,并且還會(huì)記錄相關(guān)的技術(shù)博客苞慢,所以學(xué)過(guò)了基本就不用再重復(fù)了
我們?cè)趯W(xué)習(xí)哪些沒(méi)有吸收的知識(shí)點(diǎn)時(shí),基本都是遵循以下原則:
- 學(xué)習(xí)「自己知道自己不會(huì)」的知識(shí)
- 全方位的學(xué)習(xí)凡泣,構(gòu)建自己的「知識(shí)體系」
- 學(xué)習(xí)「自己不知道自己不會(huì)」的知識(shí)
我推薦的學(xué)習(xí)思路:
學(xué)會(huì)記錄未知
平時(shí)注意記錄那些沒(méi)聽(tīng)過(guò)枉疼,不了解的點(diǎn),有鏈接的要記下鏈接鞋拟,然后根據(jù)自己的理解分類骂维,分出優(yōu)先級(jí),難易度贺纲,這樣你時(shí)刻都能對(duì)自己有個(gè)清晰的認(rèn)識(shí)航闺,我們手頭不會(huì)的有多少,會(huì)了對(duì)少了,想看的時(shí)候可以馬上找出相關(guān)資料學(xué)會(huì)挑選自己能學(xué)會(huì)的
知識(shí)點(diǎn)是無(wú)限的潦刃,不管我們水平有多高侮措,可以學(xué)的總是有的是,那么我們學(xué)什么呢乖杠?那當(dāng)然是學(xué)那些我們覺(jué)得能自己看懂分扎,可以學(xué)會(huì),在工作中用的近胧洒,用的上的東西啦畏吓,切記去學(xué)習(xí)自己完全看不懂的知識(shí)點(diǎn),學(xué)了也是白學(xué)卫漫。如果這個(gè)知識(shí)點(diǎn)你是一點(diǎn)都看不懂菲饼,那說(shuō)明相關(guān)的基礎(chǔ)知識(shí)你完全空白,要從頭從基礎(chǔ)知識(shí)看起列赎,這好比技能樹宏悦,你還沒(méi)點(diǎn)出來(lái)呢!對(duì)于那些有一半看不懂的知識(shí)點(diǎn)包吝,同樣也說(shuō)明你缺乏相關(guān)的基礎(chǔ)知識(shí)饼煞,想要學(xué)也得從基礎(chǔ)知識(shí)走起,但是相對(duì)難度就低很多了學(xué)會(huì)成體系的去學(xué)習(xí)知識(shí)點(diǎn)
一般大家都知道漏策,大一點(diǎn)的知識(shí)點(diǎn)都有很多小的派哲,相互聯(lián)系的知識(shí)點(diǎn)構(gòu)成臼氨,我們知道的掺喻,不知道的,總之肯定有一些或很多储矩,那么我們碰到一個(gè)陌生的知識(shí)點(diǎn)該怎么去學(xué)習(xí)呢感耙?我建議先去 google,百度持隧,簡(jiǎn)書即硼,掘金各大平臺(tái)上搜索這個(gè)知識(shí)點(diǎn)的關(guān)鍵字,然后粗看下幾十篇或一定數(shù)量的文章屡拨,梳理下該知識(shí)點(diǎn)下面牽連有多少小的知識(shí)點(diǎn)只酥,然后自己記下來(lái),整理分類寫出概述性的文章呀狼,然后先從簡(jiǎn)單的開(kāi)始裂允,按牽連順序一個(gè)個(gè)的學(xué),這樣才能有效的做到成體系的學(xué)習(xí)哥艇。要不東看一榔頭绝编,西看一斧子,到頭來(lái)時(shí)間也是花的不少,大家多半還是有很多漏下的十饥,心里也是感覺(jué)沒(méi)徹底學(xué)通透的樣子窟勃,現(xiàn)在的開(kāi)發(fā)知識(shí)都是成體系的,我們?nèi)W(xué)習(xí)時(shí)也必須成體系才能有效率學(xué)會(huì)如何有效的保存學(xué)習(xí)心得
這是承接上面那條的逗堵,某個(gè)小的知識(shí)點(diǎn)我們終于搞明白了秉氧,學(xué)透了之后呢,其實(shí)大家會(huì)很快遺忘的蜒秤,我自己也是如此谬运!非常通透的理解過(guò)不了幾天就會(huì)開(kāi)始變得模糊不清。目前有效的方法只能是在通過(guò)敲 demo 在代碼級(jí)別搞通透之后垦藏,通過(guò)成體系的寫技術(shù)博文來(lái)實(shí)現(xiàn)梆暖。這樣的好處:一是落于紙面之后,忘了我們可以通過(guò)博文馬上回憶起來(lái) 掂骏;二是我們是成體系的去選擇學(xué)習(xí)的轰驳,中途我們可以隨時(shí)停下來(lái),去做當(dāng)前手頭更要命的事弟灼,完事后再回過(guò)頭來(lái)繼續(xù)這個(gè)知識(shí)點(diǎn)的學(xué)習(xí)级解,因?yàn)橥ㄟ^(guò)之前的摸底已經(jīng)制定出了學(xué)習(xí)順序,繼續(xù)這個(gè)順序去學(xué)習(xí)未完的部分即可田绑。大家在工作時(shí)勤哗,絕大部分空余時(shí)間都是碎片化的简卧,搞得我們?nèi)W(xué)習(xí)新知識(shí)都是一段段的勉躺,上面成體系系統(tǒng)的學(xué)習(xí)方案尤其適合我們
我之前可是吃了不會(huì)學(xué)習(xí)阶祭,不記技術(shù)博文粤攒,不成體系瞎學(xué)習(xí)的大虧啦吊奢,早先學(xué)的啥我現(xiàn)在是一點(diǎn)都想不起來(lái)了题山,可見(jiàn)如何學(xué)習(xí)吩案,會(huì)學(xué)習(xí)是個(gè)大學(xué)問(wèn)啊秀又,也是一個(gè) coder 變得成熟的標(biāo)志涮帘,漫漫 coder 路上對(duì)我們產(chǎn)生影響最大的就是如何去學(xué)習(xí)了拼苍,大家多思考下~
有關(guān)學(xué)習(xí)思路的討論,大家還可以看看下面的文章:
寒冬
18年的冬真冷,大家都在說(shuō)裁員弦叶,其實(shí)裁員一直都在俊犯,只是18年的確多點(diǎn)。android 10年了湾蔓,已經(jīng)積累了太多的技術(shù)瘫析,知識(shí)點(diǎn),技巧,思路贬循,這些前人都會(huì)了咸包,并且正在創(chuàng)造新的思路出來(lái),對(duì)于廣大的底層 coder 來(lái)說(shuō)杖虾,僅僅是追趕就很難了烂瘫,更別提去自己創(chuàng)造了,但是現(xiàn)實(shí)時(shí)我們嘗嘗學(xué)習(xí)了很多開(kāi)源框架奇适,落到實(shí)處就是僅僅會(huì)用而已坟比,不說(shuō)源碼看沒(méi)看過(guò),甚至原理都不知道嚷往,不知道作者用什么技術(shù)實(shí)現(xiàn)的葛账,這點(diǎn)就是廣大 coder 的現(xiàn)狀,沒(méi)有成長(zhǎng)皮仁。
在來(lái)說(shuō)大環(huán)境籍琳,在寒冷的冬天,還是有很多公司再招聘贷祈。在移動(dòng)設(shè)備深入人心的今天趋急,大家誰(shuí)能離得開(kāi)移動(dòng)物聯(lián)網(wǎng)設(shè)備,巨大的設(shè)備保有量決定了移動(dòng)端市場(chǎng)需求還是旺盛的势誊。企業(yè)需要什么的移動(dòng) coder呜达,中高端啊。從我們把頁(yè)面 code 出來(lái)的入門水平開(kāi)始粟耻,成長(zhǎng)到中級(jí)水平查近,說(shuō)實(shí)話還是非常不容易的,事實(shí)是從平均來(lái)看勋颖,2-3年成長(zhǎng)到中級(jí)的人也不是非常多的嗦嗡。企業(yè)再面試時(shí)也只能通過(guò)大量面試才能找到一個(gè)合心的高級(jí)開(kāi)發(fā),此過(guò)程耗時(shí)費(fèi)力饭玲,說(shuō)明大家水平相對(duì)需求來(lái)說(shuō)還是太低,有待繼續(xù)加強(qiáng)叁执!
冬天冷的不是市場(chǎng)茄厘,是處于行業(yè)低端的我們,移動(dòng)開(kāi)發(fā)行業(yè)谈宛,不進(jìn)步就會(huì)死次哈,永遠(yuǎn)也不會(huì)改變,大家悶頭努力一年吆录,我們都能有個(gè)好收獲的窑滞,再去面試機(jī)會(huì)機(jī)會(huì)大很多。
薪酬
安卓中高級(jí)開(kāi)發(fā)面試之——未來(lái)的路,送給正在迷茫的你 的作者告訴我們哀卫,沒(méi)超越 20K 巨坊,說(shuō)明你的安卓做的還不夠好。
一方面此改,技術(shù)能力趾撵,知識(shí)面太窄了。建議多個(gè)模塊功能都嘗試一下共啃。不能僅僅在自己公司的項(xiàng)目上占调,其他方面都不太精通。這樣的結(jié)果移剪,對(duì)自己發(fā)展不太好究珊。(比如,對(duì)自己公司的功能做的賊好纵苛。賊了解苦银。問(wèn)一個(gè)其他方面功能模塊,就不知道了赶站。建議多方面都發(fā)展幔虏,并且多做數(shù)據(jù)分析。比如百度指數(shù)贝椿,阿里指數(shù)想括,APP功能指數(shù),今日頭條指數(shù)烙博。然后自己往這些方向發(fā)展一下瑟蜈。比如2018年-2020年,項(xiàng)目中小視頻渣窜,社區(qū)中小視頻铺根,直播,都會(huì)在項(xiàng)目中添加乔宿。這方面經(jīng)驗(yàn)豐富的人需求很高)位迂。
第二:有的同學(xué)是真的有能力,會(huì)做详瑞;但是能繼續(xù)深入的理解原理掂林,或者知道原理了,自己怎么去解決問(wèn)題(而不是百度解決)的能力就差一點(diǎn)了坝橡。比如很多人在面試中都面臨的泻帮,不會(huì)說(shuō),但是你會(huì)寫计寇,能寫出來(lái)锣杂。為什么不會(huì)說(shuō)脂倦,因?yàn)椴皇乔宄到y(tǒng)的理解,所以不能回答的很好元莫。
現(xiàn)實(shí)是我們夯實(shí)技術(shù)赖阻,擴(kuò)展知識(shí)面之后,20K 是比較容易達(dá)到的柒竞,但是想過(guò) 30K 就很難了政供。那些能在 github 寫自己開(kāi)源項(xiàng)目,比如 okhttp朽基,retrofit 布隔,rxjava 這樣重量級(jí)開(kāi)源框架的 coder 才能過(guò) 50K 。著期中的差距稼虎,大家自己體會(huì)吧衅檀,努力可以過(guò) 20k,長(zhǎng)久不停的努力積累之后才有過(guò) 30K 的希望霎俩,道路任重道遠(yuǎn)哀军,大家努力珍重。再著期中要平衡工作打却,生活杉适,家庭,健康是個(gè)大問(wèn)題柳击,唯有高效率才是根本出路~
寒冬中如何度日
很高興有一些朋友在滿大街的負(fù)面文章中能保持一顆平靜的心猿推,分享一些有正能量的文章,讓我總算是在冬日里能暖和下了
上帝總是偏愛(ài)那些愛(ài)思考的人捌肴,愛(ài)思考的人運(yùn)氣一般也不會(huì)太差蹬叭,在 哪有什么互聯(lián)網(wǎng)寒冬?只是你穿的少而已状知! 一文中秽五,作者大概聊了聊關(guān)于思考的話題,我覺(jué)得大家應(yīng)該去看看饥悴,然后思考下自己
技術(shù)是我們的基本盤坦喘,但不是全部,最近阿里不是放話了嗎铺坞,以后其他崗位的盡量挑有技術(shù)背景的起宽,我看到這種思想漸漸再國(guó)內(nèi)獲得認(rèn)同,越來(lái)越多的公司都在更考慮有技術(shù)背景的人济榨,這是我們的機(jī)會(huì),年齡大了绿映,年紀(jì)到了擒滑,總是只有很少的一部分人才能順利的晉升管理崗位腐晾,其他的同學(xué)必須面臨轉(zhuǎn)崗,轉(zhuǎn)崗不是換行業(yè)丐一,產(chǎn)品藻糖,項(xiàng)目經(jīng)理,運(yùn)營(yíng)等等其他我們 coder 都可以干库车,這些崗位需要的技術(shù)巨柒,知識(shí)點(diǎn)相比 coder 來(lái)說(shuō)簡(jiǎn)直是小巫見(jiàn)大巫,在我們平時(shí)對(duì)這些崗位有深入了解柠衍,有深入的交流經(jīng)驗(yàn)洋满,有深刻的認(rèn)識(shí)后,我們 coder 轉(zhuǎn)這些崗位其實(shí)不難珍坊,很快就能上手牺勾,但是這需要我們提前考慮好自己轉(zhuǎn)崗的位置,平時(shí)要多去專注阵漏,交流驻民, 學(xué)習(xí),能再本公司內(nèi)轉(zhuǎn)崗是最好的了履怯,這樣公司會(huì)對(duì)大家比較寬容
coder 們要是打算換工作了回还,那就不要研究其他的了,就專心 android 技術(shù)吧叹洲,python柠硕,H5 等穩(wěn)定下來(lái)再說(shuō)吧,我們畢竟是做 android 開(kāi)發(fā)的疹味,找的也是 android 開(kāi)發(fā)的工作仅叫,其他方向雖然更好但不是公司考慮的重點(diǎn)。
先活著才能考慮更多糙捺,分享些正能量的文章給大家打打氣:
怎么劃分 android 水平
我想只有對(duì) android 開(kāi)發(fā)又通盤了解的人才能走的更遠(yuǎn)坎缭,了解自己是首要的,我處于什么水平签钩,下一步重點(diǎn)的學(xué)習(xí)方向掏呼,目標(biāo)是什么,這樣才能有的放矢铅檩,不浪費(fèi)時(shí)間
通常我們知道 android水平可以劃分為:入門憎夷,初級(jí),中級(jí)昧旨,高級(jí)拾给,資深祥得。
但是這樣的劃分對(duì)我們沒(méi)有什么指導(dǎo)意義,不同層級(jí)的Android開(kāi)發(fā)者的不同行為蒋得,我們?cè)撊绾芜M(jìn)階和規(guī)劃级及? 的作者把 android 劃分為4個(gè)層級(jí):
- 第一層:普通程序員
- 第二層:熟練開(kāi)發(fā)者、高級(jí)開(kāi)發(fā)工程師额衙、技術(shù)組長(zhǎng)
- 第三層:技術(shù)專家饮焦、架構(gòu)師、一線經(jīng)理
- 第四層:科學(xué)家窍侧、研究員县踢、首席(資深)架構(gòu)師、部門研發(fā)總監(jiān)
我覺(jué)得這樣劃分疏之,不叫有實(shí)際意義殿雪,大家可以去閱讀一下看看每個(gè)階段的技術(shù)標(biāo)志是什么,有不錯(cuò)的指導(dǎo)意義锋爪,處于作者對(duì)于達(dá)到每一個(gè)層級(jí)的時(shí)間我不敢茍同外丙曙,其他我是比較贊同的
關(guān)于技術(shù)水準(zhǔn)劃分的有很多,我先說(shuō)這么多啊其骄,期待我以后的更新吧~
另一個(gè)很 Nice 的 android 水平劃分亏镰,為了不被鎖定我就不復(fù)制了,大家去看源地址:
理理 android 技術(shù)點(diǎn)
不知道大家聽(tīng)到?jīng)]聽(tīng)到拯爽,在 “ 寒冬 ” 今天索抓,還有部分公司員工們通過(guò)各種方法爭(zhēng)搶被裁的名額,就是為了拿到那幾個(gè)月的補(bǔ)償呀毯炮!面對(duì)這種不愁找工作的大佬逼肯,男單我們不應(yīng)該臉紅做點(diǎn)什么嗎~
android 開(kāi)發(fā)想進(jìn)階,下面的點(diǎn)基本漫步過(guò)去桃煎,都得會(huì)篮幢,不光是提升我們的 coder 水平,面試時(shí)也是要問(wèn)的呀
- 各大開(kāi)源框架的研究为迈,包括但不限于下面幾個(gè) OKhttp/Retrofit/eventbus/Glide/eventbus/Rxjava/blockcanary/mvvp/dagger2三椿、
- 組件化是基本要會(huì)的,插件化大公司要求會(huì)實(shí)操的
- flutter/Dart 大家要開(kāi)始學(xué)了葫辐,就和當(dāng)年我們學(xué) kotlin 一樣搜锰,flutter 基本一錘定音了,google 下一代就是 flutter 的天下了
- java 部分耿战,包括 常見(jiàn)的數(shù)據(jù)結(jié)構(gòu)和算法蛋叼,hashmap,二叉樹剂陡,紅黑樹鸦列,apt 注解租冠,aop 插樁鹏倘,整套多線程知識(shí)點(diǎn)薯嗤,包括ThreadLocal實(shí)現(xiàn)原理
- android 的系統(tǒng)原理,Lru算法纤泵,Binder機(jī)制骆姐,EventBus實(shí)現(xiàn)原理和為什么不能跨進(jìn)程,跨進(jìn)程幾種方式捏题,AIDL玻褪,handler機(jī)制
- 音視頻開(kāi)發(fā),直播公荧、點(diǎn)播带射、音視頻通話、音視頻會(huì)議循狰,短視頻窟社,這些不一定要多深入,但是基本的各大平臺(tái)的 SDK 要會(huì)集成绪钥,能根據(jù)開(kāi)源的 嗶哩嗶哩 IJKMediaPlayer 編寫自己的視頻灿里,音頻播放模塊、
- 高級(jí)UI程腹,各種性能優(yōu)化那是不比說(shuō)了
上面這些單獨(dú)拿出那一項(xiàng)匣吊,都是考試良久的了,大家自己算算寸潦,給你多少時(shí)間能搞定上面這些色鸳,但是一旦大家搞定了上面這些,那么大家至少不怎么愁面試了吧见转,運(yùn)氣好的還能借此進(jìn)入一家不錯(cuò)的有成長(zhǎng)命雀,回報(bào)優(yōu)秀的公司,現(xiàn)在最舒服的地方不是打公司池户,而是那些業(yè)務(wù)優(yōu)秀的中型公司了咏雌,人不多,事少校焦,組織還沒(méi)開(kāi)始僵化赊抖,人少待遇也能保證的不錯(cuò),業(yè)務(wù)優(yōu)秀有成長(zhǎng)沒(méi)有裁員的擔(dān)憂寨典,公司氛圍也有輕松愉快氛雪,這就是我想去的天堂啊 ~
然后在圖像這塊大家想深入的話,下面的是跑不了:
- 圖形圖像開(kāi)發(fā)耸成,不限于OpenGL ES报亩,EGL浴鸿,GLSurfaceView,濾鏡弦追,美顏岳链,canvas,paint
- 應(yīng)用層開(kāi)發(fā)劲件。主要還是原生開(kāi)發(fā)掸哑,提高性能優(yōu)化技能(啟動(dòng)耗時(shí)、內(nèi)存零远、耗電苗分、網(wǎng)絡(luò)、數(shù)據(jù)庫(kù)牵辣、穩(wěn)定性等)摔癣,達(dá)到高級(jí)開(kāi)發(fā)者的水準(zhǔn)
- 深入Android專業(yè)技能提升。主要是閱讀源碼纬向,理解透Android開(kāi)發(fā)常見(jiàn)的流程和原理(activity啟動(dòng)流程择浊、事件分發(fā)機(jī)制、廣播機(jī)制罢猪、Binder機(jī)制近她、內(nèi)存管理機(jī)制等)
- 向Android架構(gòu)師發(fā)展。從平時(shí)的一點(diǎn)一滴開(kāi)發(fā)中膳帕,有意訓(xùn)練Android架構(gòu)設(shè)計(jì)能力粘捎,這需要站在一個(gè)更高的角度來(lái)統(tǒng)籌App開(kāi)發(fā)。
- 跨平臺(tái)開(kāi)發(fā)能力危彩。如RN攒磨、Weex、Flutter等汤徽。大部分公司目前都需要有跨平臺(tái)開(kāi)發(fā)能力娩缰,所以我們很有必要提高這方面的能力
- SDK和框架開(kāi)發(fā)≮烁可以通過(guò)研究開(kāi)源項(xiàng)目或者實(shí)際項(xiàng)目開(kāi)發(fā)拼坎,抽象提取有用SDK和框架供其他人使用
- 研究Android安全開(kāi)發(fā)。App加固原理和實(shí)現(xiàn)完疫,熟悉常見(jiàn)加密方式(如:RSA泰鸡、DES等)、Https壳鹤、支付安全等盛龄。
- Android自動(dòng)化測(cè)試工具開(kāi)發(fā)。這需要對(duì)ADB、Android截圖余舶、Android布局解析啊鸭、Android測(cè)試框架等相當(dāng)熟悉
- 音視頻開(kāi)發(fā)。前兩年比較火的直播匿值,還有這一兩年比較火的短視頻赠制,都是與音視頻相關(guān)。所以千扔,我們可以了解音視頻的編解碼以及傳輸協(xié)議等憎妙。
- 手游開(kāi)發(fā)。游戲給鵝廠帶來(lái)了穩(wěn)定的收入曲楚,所以這也是不錯(cuò)的方向。這就需要熟悉常見(jiàn)的游戲開(kāi)發(fā)框架cocos2d-x褥符、Unity3D
- 圖像開(kāi)發(fā)龙誊。比如美圖秀秀、天天P圖喷楣,都用到圖形的合成趟大、濾鏡等技術(shù),對(duì)圖像處理有很高要求铣焊。
- Android Framework 開(kāi)發(fā)
高級(jí)工程師必備能力
我的這篇文章比較雜逊朽,什么都記錄一點(diǎn),都是關(guān)于 android 進(jìn)階的曲伊,我們的目標(biāo)是成為一個(gè) NB 的 coder叽讳,這里我盡量向大家描述清楚一個(gè)高玩該是什么樣子的,有樣學(xué)樣坟募,我們也知道怎么去進(jìn)步不是
我借 : offer收割機(jī)必備 里的幾句話
1. 系統(tǒng)設(shè)計(jì)能力
因?yàn)槿绻銉H僅是對(duì)各種各樣的技術(shù)都熟悉岛蚤,有技術(shù)廣度,也有一定的技術(shù)深度懈糯,實(shí)際上是不夠的涤妒。如果你的系統(tǒng)設(shè)計(jì)能力不到位,可能導(dǎo)致你在開(kāi)發(fā)系統(tǒng)的時(shí)候會(huì)亂用技術(shù)
比如說(shuō)赚哗,有的系統(tǒng)他有一些自己特殊的業(yè)務(wù)場(chǎng)景和技術(shù)挑戰(zhàn)她紫,實(shí)際上在這個(gè)場(chǎng)景之下比較合適的是采用 “緩存 + 數(shù)據(jù)庫(kù)” 的技術(shù)方案來(lái)應(yīng)對(duì)
但是呢,有的工程師會(huì)很多技術(shù)屿储,但是缺少這種準(zhǔn)確的分析系統(tǒng)問(wèn)題贿讹,提出合理的技術(shù)方案的能力,也就是缺少系統(tǒng)設(shè)計(jì)能力扩所,導(dǎo)致他可能會(huì)引入Elasticsearch這種技術(shù)來(lái)嘗試解決這個(gè)問(wèn)題
那么結(jié)果必然是失敗的围详。所以之前很多人找我問(wèn)問(wèn)題,說(shuō)我在XX場(chǎng)景下,用了XX技術(shù)助赞,但是沒(méi)有起到我想要的那個(gè)結(jié)果啊
我?guī)退豢绰蛐撸@不是必然的么,你的XX技術(shù)應(yīng)該用在YY場(chǎng)景下雹食,結(jié)果你用到XX場(chǎng)景下畜普,肯定是不行的。
這就是系統(tǒng)設(shè)計(jì)能力的重要性
怎么寫好我們的代碼
我想這都是大家貫徹始終的終極追求了吧群叶,我記得最深的一句話:不管如何吃挑,你的代碼得先能讓人看。這是我在剛剛?cè)胄袝r(shí)街立,一個(gè)老司機(jī)指導(dǎo)我的舶衬,隨著我在學(xué)習(xí)的深入,了解的更多赎离,我們?cè)诨竟ι系淖非蟛痪褪菫榱舜a更加好看嗎逛犹,好看的代碼才更好懂,才能好改梁剔,設(shè)計(jì)模式虽画,代碼架構(gòu),框架設(shè)計(jì)荣病,MVP(多端分離) 不都是追求的這個(gè)最終結(jié)果嘛
好看的代碼除了我們要學(xué)習(xí)不限于上述的各種知識(shí)码撰,更是體現(xiàn)在我們平時(shí)的對(duì)于代碼的態(tài)度上,這體現(xiàn)在我們的平時(shí)的代碼規(guī)范上个盆,今天我看到一篇文章:程序員:為什么幾個(gè)月后前我自己寫的代碼也看不懂了脖岛? 把我平時(shí)想說(shuō)的都說(shuō)出來(lái)了
這是平時(shí)的我們:
- 代碼沒(méi)有注釋
對(duì)于復(fù)雜的業(yè)務(wù)來(lái),沒(méi)注釋這是要逼死下面的小伙伴啊砾省,過(guò)個(gè)2-3月鸡岗,一樣得逼死自己啊,這一坨寫的是什么玩意编兄,要死的心啊....... - 面向過(guò)程去寫代碼
好復(fù)雜呀轩性,看不懂呀,方法好長(zhǎng)啊呀狠鸳,媽媽我看不懂怎么辦呀揣苏。雖然寫的時(shí)候很爽 ,但是之后再去改件舵,再去加功能時(shí)卸察,那時(shí)我們的心一定是崩潰的,不好改铅祸,不好加坑质,費(fèi)事費(fèi)力是肯定的合武,然后越改越加越亂越難懂,最后沒(méi)法維護(hù)了涡扼,誰(shuí)有寫過(guò)這樣的代碼稼跳,都別躲...... 所以啊,設(shè)計(jì)模式吃沪,框架設(shè)計(jì)汤善,面向接口編程,功能分離票彪,架構(gòu)層次分離红淡,應(yīng)運(yùn)而生 - 代碼變量名稱隨意
通篇的 x,a降铸,b在旱,c,temp1垮耳,temp2颈渊,temp3 這都是什么玩意,結(jié)合上下文都搞不懂终佛,真不知道當(dāng)初怎么寫的,編碼一直要求我們見(jiàn)名知意雾家,我現(xiàn)在是深刻理解到了見(jiàn)名知意的好處铃彰,真的是非常快捷芯咧,非常 Nice 的體驗(yàn)牙捉,這里我要說(shuō)一點(diǎn),google 的英文起名也不是非常好敬飒,有的單詞邪铲,真他媽想抽他... - 每個(gè)方法分工不明確
一個(gè)方法里你寫上 100 行,你讓別人怎么看无拗,代碼你又怎么復(fù)用带到,同樣的代碼你不抽象出來(lái),處處復(fù)制是要私人的
那么我們?cè)趺崔k英染,做到以下:
- 實(shí)現(xiàn)功能前先設(shè)計(jì)好代碼
好的框架層次揽惹,讓我們可以快速的了解整個(gè)框架實(shí)現(xiàn),快速的找到想要的代碼四康,優(yōu)秀準(zhǔn)確的名字我們可以知道類是干什么的搪搏, - 注釋寫的盡量詳細(xì)
- 不要寫太長(zhǎng)的方法
- 不要寫太“牛”的代碼了
有的程序員喜歡寫非常有個(gè)性的代碼闪金,喜歡寫一些別人很難看懂的代碼疯溺,他認(rèn)為這樣才能顯示出自己的“高水平”,這樣就不是高水平了,只能說(shuō)代碼的可讀性太差了囱嫩,我們要寫出傻瓜式代碼恃疯,也就是說(shuō)讓很傻的程序員都能看懂,"傻瓜式代碼" != "低性能代碼”哈挠说,這一點(diǎn)要分開(kāi) - 中國(guó)人就別寫英文注釋了
功夫在詩(shī)外
我們做到 5-10 年的時(shí)候澡谭,技術(shù)就不是唯一的敲門磚了,甚至不是最重要的了损俭,而是技術(shù)以外的東西:人脈蛙奖,名望、履歷杆兵,以及漸漸成型的言談舉止雁仲,等等。但這些東西琐脏,如何通過(guò)“刻意的練習(xí)”(新學(xué)的詞)來(lái)獲得攒砖,但是只要在于自己平時(shí)有意識(shí)的嘗試,積累日裙,提高
比如我平時(shí)在公司的技術(shù)分享我都是要求每個(gè)人像正式演講一下吹艇,聽(tīng)得人做好,拍好昂拂,認(rèn)認(rèn)真真拿筆做記錄受神,講的人配合黑板,大屏幕格侯,在有高度的臺(tái)階上努力做到最好的自己鼻听,不結(jié)巴,思想連貫联四,能現(xiàn)場(chǎng)發(fā)揮撑碴,我還常常和講臺(tái)上的人互動(dòng),帶著他多說(shuō)說(shuō)自己的想法朝墩,等你熟悉了這個(gè)環(huán)境醉拓,這種氛圍,這種事鱼辙,無(wú)形中你就會(huì)說(shuō)話廉嚼,會(huì)演講,氣場(chǎng)也就培養(yǎng)出來(lái)倒戏,當(dāng)然這不是全部怠噪,更多的還有,比如你怎么去和產(chǎn)品杜跷,UI傍念,運(yùn)營(yíng)溝通矫夷,看看別人的工作內(nèi)容是什么,有什么困難憋槐,哪些方面涉及到開(kāi)發(fā)双藕,甚至是別人的全部 u 工作內(nèi)容,工作技能阳仔,這樣你就擁有了區(qū)別與別人的橫向擴(kuò)展能力忧陪,在公司一個(gè)能和不同部門之間有效溝通,建立聯(lián)系近范,解決問(wèn)題嘶摊,梳理矛盾的技術(shù)人員比一個(gè)單純的技術(shù)人員要重要的多,同時(shí)這樣的人也更容易晉升评矩,職業(yè)道路越是網(wǎng)上會(huì)走叶堆,越是要接觸更多的部門,擁有和這些部門協(xié)作的能力將是至關(guān)重要的斥杜,推薦看下這篇文章虱颗,發(fā)自肺腑的講述你該怎么在技術(shù)之外成長(zhǎng):程序員,別帶著耳機(jī)工作了