我的 Android 路要怎么走~
很多做 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),讓前路不再晦暗,讓腳下的路筆直一些,僅此而已~
做為一個(gè)人,我們?cè)诿悦r(shí)該怎么想,怎么看待自己,若是你不知道,那么看下面:
說(shuō)點(diǎn)敞亮話
繼續(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ù)自己的理解分類(lèi),分出優(yōu)先級(jí),難易度,這樣你時(shí)刻都能對(duì)自己有個(gè)清晰的認(rèn)識(shí),我們手頭不會(huì)的有多少,會(huì)了對(duì)少了,想看的時(shí)候可以馬上找出相關(guān)資料。
學(xué)會(huì)挑選自己能學(xué)會(huì)的
知識(shí)點(diǎn)是***的,不管我們水平有多高,可以學(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í)看起,這好比技能樹(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)書(shū),掘金各大平臺(tái)上搜索這個(gè)知識(shí)點(diǎn)的關(guān)鍵字,然后粗看下幾十篇或一定數(shù)量的文章,梳理下該知識(shí)點(diǎn)下面牽連有多少小的知識(shí)點(diǎn),然后自己記下來(lái),整理分類(lèi)寫(xiě)出概述性的文章,然后先從簡(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ò)成體系的寫(xiě)技術(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í)了,大家多思考下~
寒冬
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)的入門(mén)水平開(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ì)寫(xiě),能寫(xiě)出來(lái)。為什么不會(huì)說(shuō),因?yàn)椴皇乔宄到y(tǒng)的理解,所以不能回答的很好。
現(xiàn)實(shí)是我們夯實(shí)技術(shù),擴(kuò)展知識(shí)面之后,20K 是比較容易達(dá)到的,但是想過(guò) 30K 就很難了。那些能在 github 寫(xiě)自己開(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ù)是我們的基本盤(pán),但不是全部,最近阿里不是放話了嗎,以后其他崗位的盡量挑有技術(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ā)又通盤(pán)了解的人才能走的更遠(yuǎn),了解自己是首要的,我處于什么水平,下一步重點(diǎn)的學(xué)習(xí)方向,目標(biāo)是什么,這樣才能有的放矢,不浪費(fèi)時(shí)間。
通常我們知道 android水平可以劃分為:入門(mén),初級(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)師、部門(mén)研發(fā)總監(jiān)
我覺(jué)得這樣劃分,不叫有實(shí)際意義,大家可以去閱讀一下看看每個(gè)階段的技術(shù)標(biāo)志是什么,有不錯(cuò)的指導(dǎo)意義,處于作者對(duì)于達(dá)到每一個(gè)層級(jí)的時(shí)間我不敢茍同外,其他我是比較贊同的。
關(guān)于技術(shù)水準(zhǔn)劃分的有很多,我先說(shuō)這么多啊,期待我以后的更新吧~
理理 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,二叉樹(shù),紅黑樹(shù),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 編寫(xiě)自己的視頻,音頻播放模塊、
- 高級(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í)工程師必備能力
系統(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ì)能力的重要性。
怎么寫(xiě)好我們的代碼
我想這都是大家貫徹始終的***追求了吧,我記得最深的一句話:不管如何,你的代碼得先能讓人看。這是我在剛剛?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è)月后前我自己寫(xiě)的代碼也看不懂了? 把我平時(shí)想說(shuō)的都說(shuō)出來(lái)了。
這是平時(shí)的我們:
代碼沒(méi)有注釋
對(duì)于復(fù)雜的業(yè)務(wù)來(lái),沒(méi)注釋這是要逼死下面的小伙伴啊,過(guò)個(gè)2-3月,一樣得逼死自己啊,這一坨寫(xiě)的是什么玩意,要死的心啊…….
面向過(guò)程去寫(xiě)代碼
好復(fù)雜呀,看不懂呀,方法好長(zhǎng)啊呀,媽媽我看不懂怎么辦呀。雖然寫(xiě)的時(shí)候很爽 ,但是之后再去改,再去加功能時(shí),那時(shí)我們的心一定是崩潰的,不好改,不好加,費(fèi)事費(fèi)力是肯定的,然后越改越加越亂越難懂,***沒(méi)法維護(hù)了,誰(shuí)有寫(xiě)過(guò)這樣的代碼,都別躲…… 所以啊,設(shè)計(jì)模式,框架設(shè)計(jì),面向接口編程,功能分離,架構(gòu)層次分離,應(yīng)運(yùn)而生。
代碼變量名稱隨意
通篇的 x,a,b,c,temp1,temp2,temp3 這都是什么玩意,結(jié)合上下文都搞不懂,真不知道當(dāng)初怎么寫(xiě)的,編碼一直要求我們見(jiàn)名知意,我現(xiàn)在是深刻理解到了見(jiàn)名知意的好處,真的是非??旖?,非常 Nice 的體驗(yàn),這里我要說(shuō)一點(diǎn),google 的英文起名也不是非常好,有的單詞,真他媽想抽他…
每個(gè)方法分工不明確
一個(gè)方法里你寫(xiě)上 100 行,你讓別人怎么看,代碼你又怎么復(fù)用,同樣的代碼你不抽象出來(lái),處處復(fù)制是要私人的。
那么我們?cè)趺崔k,做到以下:
- 實(shí)現(xiàn)功能前先設(shè)計(jì)好代碼
- 好的框架層次,讓我們可以快速的了解整個(gè)框架實(shí)現(xiàn),快速的找到想要的代碼,優(yōu)秀準(zhǔn)確的名字我們可以知道類(lèi)是干什么的
- 注釋寫(xiě)的盡量詳細(xì)
- 不要寫(xiě)太長(zhǎng)的方法
- 不要寫(xiě)太“牛”的代碼了
- 有的程序員喜歡寫(xiě)非常有個(gè)性的代碼,喜歡寫(xiě)一些別人很難看懂的代碼,他認(rèn)為這樣才能顯示出自己的“高水平”,這樣就不是高水平了,只能說(shuō)代碼的可讀性太差了,我們要寫(xiě)出傻瓜式代碼,也就是說(shuō)讓很傻的程序員都能看懂,"傻瓜式代碼" != "低性能代碼”哈,這一點(diǎn)要分開(kāi)
- 中國(guó)人就別寫(xiě)英文注釋了
功夫在詩(shī)外
我們做到 5-10 年的時(shí)候,技術(shù)就不是唯一的敲門(mén)磚了,甚至不是最重要的了,而是技術(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è)能和不同部門(mén)之間有效溝通,建立聯(lián)系,解決問(wèn)題,梳理矛盾的技術(shù)人員比一個(gè)單純的技術(shù)人員要重要的多,同時(shí)這樣的人也更容易晉升,職業(yè)道路越是網(wǎng)上會(huì)走,越是要接觸更多的部門(mén),擁有和這些部門(mén)協(xié)作的能力將是至關(guān)重要的。