為何要寫這篇文章合是?
寫這篇文章了罪,主要的目的是總結(jié)和展望。現(xiàn)在我只能算入門水平聪全,不過只要我堅持下去泊藕,總有一天能夠窺見一些門道。我希望記錄自己的成長歷程难礼,日后再看娃圆,能夠有一些感悟。因此蛾茉,這篇文章寫給未來的我讼呢。
2016.12.27
我從上Web課程開始自學(xué)安卓,到2016年1月11日找到第一份實習(xí)谦炬,算起來將近1年開發(fā)經(jīng)驗了悦屏。
這一年下來节沦,確實學(xué)習(xí)了不少東西。現(xiàn)在的我础爬,能夠使用大部分第三方庫甫贯,對安卓SDK有一定了解,知道如何追蹤和解決bug看蚜,知道MVP架構(gòu)和一些簡單的設(shè)計模式叫搁。
當(dāng)然,這篇文章不是談?wù)撐視裁词且接懓沧块_發(fā)到底有哪些重要的東西常熙,以及如何進(jìn)階。
Java
Java是安卓采用的語言碱茁。我個人覺得安卓對Java的要求并不是很高裸卫,Android Studio的各種自動完成和提示也很好用。當(dāng)然纽竣,對Java的基礎(chǔ)語法還是必須要掌握的墓贿,Core Java這本書就可以選擇性地看一看基礎(chǔ)的內(nèi)容,我覺得寫的很不錯蜓氨。
輪子
在碼農(nóng)界聋袋,一直有這么一個爭論:到底要不要自己造輪子?
在我看來穴吹,不造輪子幽勒,但得知道輪子的原理。假如沒有現(xiàn)成的港令,自己要能夠造出來啥容。或者能拿別人的輪子來修改顷霹。
所謂輪子就是現(xiàn)成的庫或者別的工具咪惠。一般而言拿過來就用,很方便省事淋淀。但是假如到此為止遥昧,不去讀源碼搞清楚實現(xiàn)原理,等到自己有需求又沒有現(xiàn)成的東西朵纷,就無計可施了炭臭。
一般自己從無到有造一個庫比較困難,而對他人的庫進(jìn)行修改以滿足自己的需求相對而言更為可行袍辞。第三方庫的學(xué)習(xí)和分析是一個費(fèi)時費(fèi)力的過程鞋仍,但回報也同樣豐厚。
而自己做庫是一個非常耗時耗力的事情革屠,再牛逼的人也不可能說所有輪子都自己造。
所以,結(jié)論就是不強(qiáng)求自己做庫似芝,但是在能使用第三方庫的基礎(chǔ)上那婉,要有修改第三方庫滿足自己需求的能力。
源碼
在讀第三方庫的過程中党瓮,當(dāng)然會遇見很多問題详炬。一個非常明顯的問題就是缺乏對安卓源碼的了解。說到安卓的源碼寞奸,又是一個坑呛谜。因為安卓的源碼可不小,有各種類和函數(shù)枪萄,更別說更加底層的東西和安卓的快速發(fā)展變化隐岛。總而言之這個東西很重要瓷翻,但要學(xué)會取舍聚凹,不可能眉毛胡子一把抓,而是要重點(diǎn)學(xué)習(xí)那些常用的東西齐帚。
經(jīng)驗
安卓開發(fā)的經(jīng)驗是一個很玄的概念妒牙,可能有些人3年經(jīng)驗就和一些人的5年經(jīng)驗差不多水平,因此用經(jīng)驗判斷水平是不太可取的对妄。
話雖如此湘今,要是說1年經(jīng)驗?zāi)軓?qiáng)過5年經(jīng)驗,這個概率還真的蠻小的剪菱。找工作的過程中我發(fā)現(xiàn)大部分安卓全職工作都要求至少3年經(jīng)驗摩瞎,這明顯是一個分水嶺。
為什么我選擇安卓開發(fā)呢琅豆?因為看到自己的app會有一種成就感愉豺,尤其當(dāng)這個app被用戶認(rèn)可的時候。當(dāng)然要是有人指責(zé)這個app茫因,不免有點(diǎn)跳腳蚪拦。app就像自己的作品一樣。
回到經(jīng)驗這個話題冻押,年份是一個因數(shù)驰贷,而干了什么又是另外一個因素了。大學(xué)4年自己自學(xué)安卓洛巢,畢業(yè)了就可以聲稱有4年經(jīng)驗嗎括袒?工作和自己自學(xué)完全是兩碼事情。
總的來說稿茉,是要積累經(jīng)驗锹锰,但同時也不能不學(xué)習(xí)芥炭,重復(fù)干一些工作來堆年份。現(xiàn)在技術(shù)發(fā)展日新月異恃慧,如果沒有不斷學(xué)習(xí)的能力园蝠,二十年經(jīng)驗也白搭。
技術(shù)與進(jìn)階
假設(shè)有了可觀的經(jīng)驗痢士,保證不會在簡歷就被刷下去的時候彪薛,就可以來看看那些待遇優(yōu)越的安卓崗位都要些什么東西,可以向這些方向努力怠蹂,雖然說到時候肯定會變善延,但總有不變的東西。
算法和系統(tǒng)設(shè)計城侧,這兩個是進(jìn)大公司必須的東西易遣,和安卓開發(fā)說實話關(guān)系不算很大,算是額外要求赞庶。
登上玻璃門训挡,看看三番的一些高級安卓工程師崗位的要求和報酬:
Imgur - Rating 4.7 - Senior Android Engineer $130k-160k
What You Bring To The Table:
- B.S. or higher in Computer Science, or equivalent in work experience
- Minimum of 3+ years Android development experience
- 5+ years of general software development
- Enthusiasm for Android development
- A passion for beautiful, pragmatic code paired with a strong sense of product design
- Love for the Imgur product
這個公司的要求屬于比較寬松的那種,其實就一個工作年限歧强。5年的general SDE是什么鬼澜薄,真的有人轉(zhuǎn)行安卓嗎?
當(dāng)然摊册,符合要求不代表就能進(jìn)去肤京,人多位置少,bar自然就高了茅特,但是至少有過機(jī)會忘分。
RideCell LLC - Rating 4.4 - Senior Android Engineer $140k-160k
About You:
- B.S. or M.S. Computer Science or related experience
- 3+ years of object-oriented software development experience
- 2+ years mobile application development at the user interface and system levels
- Proficient knowledge of the android SDK
- Gradle build system expert & ability to maintain multi flavor project
- Java OOP expert
- Proficiency with Google API's (maps, places, gcm most important)
- knowledge of RESTful implementation in android and communicating with backend API's
- Proficiency with android lifecycle events in activities and fragments
- At least 1 application deployed in the play store
- Must be willing to work on-site in our San Francisco office
Great to Have:
- Knowledge with 3rd party injection libs (android annotations, butterknife, dagger etc...)
- Knowledge of android development patterns, preferebly MVP or MVVP
- Knowledge of websockets
- Other languages to know (python, js, cocoa, swift, c++)
這個工作總算提出一點(diǎn)實質(zhì)性的要求了。經(jīng)驗相對而言寬松一些白修,2-3年的完全夠了妒峦。要求會谷歌的一些API,這些說實話不是很難兵睛,都是拿來就用的東西肯骇;然后加分項有依賴注入庫,MVP祖很,websocket笛丙,還有一些其他語言。這些東西倒是值得注意假颇。
更多的也不再貼上來了胚鸯。當(dāng)然,要明白這里的要求很可能不是完全準(zhǔn)確的要求笨鸡,因為有些公司可能要求喜歡寫的寬松一些姜钳,但是實際上Bar很高坦冠;或者有的公司要求寫一堆,但很多都是可有可無的哥桥。
很多知識蓝牲,假如沒有遇到過,說實話并不好去學(xué)習(xí)泰讽,因為太寬泛了。比較靠譜的就是安卓相關(guān)的一些東西昔期,然后擴(kuò)展一些就是ios開發(fā)可以了解一下已卸。至于個別公司的一些特殊要求,沒有必要特意去追求硼一,因為適應(yīng)面太窄累澡。
總結(jié)與展望
CS的領(lǐng)域如此廣闊,現(xiàn)在大熱的一個是Machine learning般贼,還有Big data愧哟,安卓和ios開發(fā)也還可以。對于初出茅廬的我來說哼蛆,太多選擇卻相當(dāng)于沒有選擇蕊梧,先在一個領(lǐng)域里面積累足夠的經(jīng)驗,做到站穩(wěn)腳跟腮介,生存下來肥矢,才能再談其他。因此未來幾年之內(nèi)叠洗,我會選擇繼續(xù)干安卓開發(fā)甘改。好在我個人而言還算喜歡這個工作。至于以后的事情灭抑,現(xiàn)在說很多也沒有用十艾,只能說多多努力吧。