最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

專訪郭霖:成長無止境

2020-10-28 14:00 作者:圖靈社區(qū)  | 我要投稿


嘉賓 | 郭霖

文?| 張霞

郭霖,Android開發(fā)工程師,Android GDE(Google認證開發(fā)者專家)。從事Android開發(fā)工作9年,有著豐富的項目實戰(zhàn)經(jīng)驗,負責(zé)及參與開發(fā)過多款移動應(yīng)用與游戲,開發(fā)了 LitePal、giffun、coolweather、PermissionX 等多個開源項目,對 Android 系統(tǒng)架構(gòu)及應(yīng)用層開發(fā)有著深入的理解。

在 CSDN發(fā)表 Android 技術(shù)文章百余篇,博客訪問量超過1000萬次,榮獲 CSDN 認證專家,并連續(xù)多年被評選為 CSDN 年度博客之星。個人技術(shù)類公眾號“郭霖”,訂閱數(shù)超9萬人,每個工作日都與讀者朋友們分享最新的Android知識。

2014年,創(chuàng)作了《第一行代碼——Android》,2016年和2020年出版了第2版和第3版。此書至今累計銷售29萬冊,獲得了讀者的廣泛認可和好評,被譽為「Android 開發(fā)第一書」。

本期圖靈訪談旨在與讀者朋友們分享郭霖的技術(shù)成長之路,包括如何提升專業(yè)技能,如何提高學(xué)習(xí)能力、如何不斷實現(xiàn)自我成長,如何跟上技術(shù)發(fā)展的趨勢。

1. 請問你最早接觸編程是在什么時候,是如何對編程產(chǎn)生興趣的?你通過編程做過哪些有意思的事?

準確來講,我最早接觸編程就是在上大學(xué)的時候。雖然在高中時,我憑借興趣愛好有自學(xué)過一些網(wǎng)頁制作方面的知識,但是現(xiàn)在回頭來看,那個時候?qū)W到的一點皮毛還不算是接觸編程。

我印象中大一剛開學(xué)的時候有一堂課,老師問了我們一個問題:有沒有同學(xué)在之前接觸過C語言?臺下兩個班一共90多名學(xué)生,沒有一位舉手的。說明提前接觸編程知識的人畢竟還是少數(shù),至少在我們那個年代是這樣的。

而現(xiàn)在,我的好多大學(xué)同學(xué)都從事了IT行業(yè)的工作,由此可見,大學(xué)確實是大多數(shù)人未來職業(yè)的搖籃。

至于我是如何對編程產(chǎn)生興趣的,不如問我是如果對計算機產(chǎn)生興趣的。我上中學(xué)的時候,計算機還不算非常普及,學(xué)校每周會開一節(jié)信息技術(shù)課程,學(xué)生能上機操作。

每到那一節(jié)課,大家都非常開心,因為可以放下書本玩電腦了?,F(xiàn)在看起來好像再正常不過的上網(wǎng)、打游戲,那個時候還是件奢侈的事情,我可能也就是在這樣的環(huán)境下對計算機產(chǎn)生了濃厚的興趣,然后不知不覺中走上了這條道路吧。

而通過編程做過哪些有意思的事情,這個就真的太多了。自從在大學(xué)里接觸了編程,學(xué)生時代的自己就覺得無所不能了一樣。

我寫過內(nèi)網(wǎng)的聊天軟件在學(xué)校內(nèi)使用,還在宿舍搭建過服務(wù)器,上機考試時用來傳遞答案(還好我已經(jīng)畢業(yè)了),其他學(xué)院的老師還邀請過我?guī)兔θプ鏊麄儗W(xué)院的網(wǎng)站,等等。其中很多事情現(xiàn)在看上去好像挺幼稚的,但當(dāng)時覺得挺有意思的。

2. 請問你大學(xué)學(xué)的是什么專業(yè)?最初的職業(yè)規(guī)劃是怎樣的?后來是如何走上Android開發(fā)之路的?

我在大學(xué)學(xué)習(xí)的是網(wǎng)絡(luò)工程專業(yè),是計算機學(xué)院的一個專業(yè)。不過我最后并沒有從事網(wǎng)絡(luò)工程方面的工作,而是步入了軟件開發(fā)行業(yè),可能我還是對編程更感興趣吧。

我最初的職業(yè)規(guī)劃是做Java服務(wù)器開發(fā),那個時候真的學(xué)習(xí)了很多Java服務(wù)器方面的知識,對Java語言和SSH框架可以說是用得滾瓜爛熟了。但是最終畢業(yè)面試的時候卻沒能面上服務(wù)器開發(fā)的工作,所以最后也就和這個方向失之交臂了?,F(xiàn)在想想倒未必是件壞事,不然Android行業(yè)里可能也就不會有我了。

至于我走上Android開發(fā)之路算是一種機緣巧合吧。2010年夏天,我在閑逛電驢時發(fā)現(xiàn)一位老師上傳了一份Android開發(fā)視頻教程,那是我第一次聽說Android操作系統(tǒng),并且了解到Android也是使用Java開發(fā)的,所以就產(chǎn)生了濃厚的興趣。在之后的幾年里,移動互聯(lián)網(wǎng)以極快的速度蓬勃發(fā)展,我算是借著這股浪潮走上了Android開發(fā)之路吧。

3. 在讀大學(xué)期間,你覺得在校所學(xué)的哪些課程、掌握的哪些技能是對你后來的技術(shù)發(fā)展幫助最大的?哪些知識是一定需要盡早學(xué)習(xí),打好基礎(chǔ)的?相信對這個問題的回答對于在校學(xué)生會有很好的參考價值。

我現(xiàn)在作為一個過來人的身份,可以更好地回答這個問題了,可惜當(dāng)初上學(xué)時的我還不懂。

在讀大學(xué)期間,你可能會覺得有很多課程枯燥乏味,甚至覺得學(xué)了完全沒有用處。當(dāng)然,有很多課程確實如此。但是,算法和數(shù)據(jù)結(jié)構(gòu)這門課程,會對你未來的發(fā)展產(chǎn)生巨大的影響,所以至少這門課程你必須好好學(xué)。

我當(dāng)初不明白這個道理,那個時候更看重的是實踐能力,覺得做出一個App比解出一道算法題要厲害多了。殊不知算法考驗的是編程的思維和底蘊,而App考驗的只是業(yè)務(wù)邏輯能力。這么多年過去了,當(dāng)初我寫App用到的技術(shù)現(xiàn)在早已過時,而算法永遠都不會過時。

畢業(yè)多年之后,我才慢慢懂得了這個道理,后來我花了大量的時間在算法和數(shù)據(jù)結(jié)構(gòu)方面進行補課,也算是為自己當(dāng)年的無知買單吧。希望現(xiàn)在的學(xué)生能好好重視這門課程,不要像我當(dāng)初一樣。

另外,這幾年人工智能技術(shù)非?;馃?,而這個行業(yè)的前面樹立著高高的數(shù)學(xué)城墻。所以,大學(xué)時的高等數(shù)學(xué)和線性代數(shù)這兩門課程就非常重要了。

很可惜,這又是我當(dāng)初沒能學(xué)好的兩門課程??傊?,感覺自己還是有很多遺憾的,希望現(xiàn)在的學(xué)生能更加意識到一些大學(xué)課程的重要性。

4. 你在學(xué)習(xí)和研究Android技術(shù)的過程中,有哪些重大的轉(zhuǎn)折點或者讓你印象深刻的經(jīng)歷?

我在學(xué)習(xí)Android技術(shù)過程中的重大轉(zhuǎn)折點,我認為是在2013年的時候,我做出了開始寫技術(shù)博客這個決定。沒有這個決定,就不會有后來的《第一行代碼》。所以我一直都認為這是我人生的一個重要轉(zhuǎn)折點。

我在上大學(xué)的時候是學(xué)校里公認的編程高手,但是我卻不知道自己有寫技術(shù)文章的能力。這個事情很奇怪,我那時沒有寫過博客,沒有這方面的經(jīng)驗,只是抱著記錄自己的學(xué)習(xí)過程這樣的心態(tài)去寫的,但是看過我文章的朋友都說我寫的文章最容易理解。

陳冰老師更是在我僅僅寫了四篇文章的情況下,就邀請我去編寫《第一行代碼》這本書,當(dāng)時我還擔(dān)心自己是不是遇到騙子了。要知道,那個時候我才剛剛畢業(yè)不到一年時間,直到現(xiàn)在想想仍然還是覺得挺不可思議的。

5. 從2013年到現(xiàn)在,你堅持寫作技術(shù)博客快8年了,這需要驚人的毅力和難以想象的付出。我們很多讀者朋友都是通過閱讀你的博客成長起來的,優(yōu)質(zhì)的內(nèi)容讓他們受益良多。那么堅持寫作這件事對你自身而言,有哪些幫助或者好的影響?

我只能說,寫技術(shù)博客對我自身的幫助和影響實在是太大了。前面已經(jīng)說了,決定開始寫博客對我來說是一個重要的轉(zhuǎn)折點,沒有這個決定也就不會有后來的《第一行代碼》。

至于為什么可以堅持寫了這么多年,其實并不是因為什么責(zé)任扛肩上。原因很簡單,寫博客對于我來說是一個自我學(xué)習(xí)的過程。技術(shù)變化日新月異,移動開發(fā)并不是一個學(xué)會了就可以一勞永逸吃一輩子的行業(yè),你必須保持不斷學(xué)習(xí)。

我在學(xué)習(xí)各種新技術(shù)的時候,為了更好地記錄和整理,會將它們寫成博客。我相信很多人在學(xué)習(xí)的時候都有做筆記的習(xí)慣,我只是把這個筆記寫得更加詳細和清晰,讓這些筆記不光我自己能看得懂,別人也可以看得懂。

6. 你寫作一篇技術(shù)博客平均要花多長時間?平時工作很忙,你是如何保持如此高產(chǎn)的?

正所謂慢工出細活,我寫文章的速度其實很慢的,平均大概要一周才能寫出一篇技術(shù)博客,直到現(xiàn)在這個速度也并沒有提升多少。
我寫文章會經(jīng)歷幾個固定階段,包括構(gòu)思內(nèi)容,勾畫大體知識框架,編寫Demo,寫成文章,檢查語病和錯別字,最后才會發(fā)布出來。很多讀者覺得我的文章疏漏很少,因為我在發(fā)布之前會做比較嚴格的檢查。
至于問我如何保持如此高產(chǎn),這明顯不是一個事實。因為我寫文章的速度是比較固定的,所以空閑時間多的時候我就能高產(chǎn)一些,而工作繁忙的時候,我就很難抽出時間寫文章。

從CSDN的年度文章統(tǒng)計其實就可以看出,2013年我一共編寫了45篇技術(shù)博客,而2018年一共只寫了7篇。不過好在今年我的產(chǎn)能還算不錯,目前已經(jīng)寫了17篇,平均每個月兩篇左右,希望可以繼承保持下去吧。

7. 你的博客寫得通俗易懂,你的文字就像具有魔法一樣,無論多么復(fù)雜的內(nèi)容,你都能講得清晰透徹,請問你有哪些寫作經(jīng)驗和寫作技巧?

這個問題還真有不少朋友問過我,但實際上,我也不知道該如何回答。

剛才說了,我其實自己都不知道自己竟然有寫技術(shù)文章的能力,我之前沒有做過這方面的練習(xí),也沒有學(xué)過任何寫文章方面的資料,就只是憑著感覺去寫,沒想到竟然能夠得到那么多人的認可。

上次和一位朋友聊天時,他就問了我同樣的問題,我知道他是希望我能給出一個總結(jié)好的固定的套路和流程,然后按著這套流程就能寫出一篇好文章。但是我自己的腦海里從來沒有固定的寫作框架。

我在寫文章時,最多只是會列舉一下這篇文章大體要寫哪些知識點,把它們列成目錄,然后就是想到哪兒寫到哪兒了,我也總結(jié)不出更多的東西。所以最后反倒是他幫我總結(jié)出了一個結(jié)論,說我在這方面是有天賦的。

不過在寫文章的時候,我有時會對一句話反復(fù)讀來讀去,感覺不夠通順或者表達不是很準確的時候,我就會嘗試換一種表達方式,以保證整篇文章讀下來的感覺都是通暢的,或許這也是我文章寫得慢的其中一個原因吧。

8. 現(xiàn)在新技術(shù)的發(fā)展日新月異,開發(fā)者要提升自己的學(xué)習(xí)能力,不斷掌握新知識,擴展知識領(lǐng)域,才能及時跟上時代的步伐。你的學(xué)習(xí)能力非常強,學(xué)習(xí)效率也很高,請你分享一下你的學(xué)習(xí)經(jīng)驗和建議。

這個就有點不太好意思了,我并不認為我的學(xué)習(xí)能力很強,只是學(xué)習(xí)方法比較正確而已。

想要持續(xù)跟上各種新技術(shù)日新月異的發(fā)展,首先要明確學(xué)習(xí)的方向才行。那么要怎樣明確學(xué)習(xí)的方向呢?我個人的方式是始終跟著Google的節(jié)奏走。

我每年都會看Google的IO大會,在這些大會上,Google每年都會推出各種新技術(shù),而這些新技術(shù)通常就預(yù)示著下一代的開發(fā)潮流,那么就可以成為你的學(xué)習(xí)方向。

有了學(xué)習(xí)方向之后,接下來就是要怎樣去學(xué)習(xí)的問題了,我通常會利用Google搜索引擎來查找好的學(xué)習(xí)資料。這個很簡單,輸入你想要學(xué)習(xí)的某個技術(shù)的關(guān)鍵字,一般搜索結(jié)果比較靠前的就是最佳的學(xué)習(xí)資料了。
我擁有的一個優(yōu)勢是,我閱讀英文技術(shù)資料的能力還不錯,通常學(xué)到的技術(shù)內(nèi)容可能就超前一點。所以,把英語學(xué)好,對于你做軟件開發(fā)這個行業(yè),會有比較大的幫助。?

另外,我一直熱衷于參加Google的各種線下技術(shù)活動,之前都是作為觀眾參與,今年首次在GDG上進行了技術(shù)演講。受疫情的影響,今年線下活動的人數(shù)受到了嚴格的限制,但即使是這樣,我也感受到了非常濃厚的技術(shù)氛圍。

有許多開發(fā)者與我進行了技術(shù)討論,他們咨詢了我很多問題,同時也發(fā)表了他們自己的觀點,我也從中學(xué)到了很多。如果以后有機會,我還會去參加更多的線下技術(shù)交流活動,這是一個非常棒的體驗。

9. 今年你申請了Android GDE(Google認證開發(fā)者專家),并且順利通過,恭喜你!這一認證對于一位Android開發(fā)者而言,是非常有意義的。能否請你為大家分享一下申請的寶貴經(jīng)驗?zāi)?,比如需要具備哪些條件,申請流程是什么,面試流程是怎樣的。

謝謝,能夠成為Android GDE我也感到非常榮幸。其實,一開始收到Google邀請的時候,我還是有點猶豫的,因為GDE申請的流程非常復(fù)雜,而且還要用英文進行面試,我對此并不是非常有信心。

但是感覺如果拒絕Google的邀請又有點不太禮貌,所以我就抱著試一試的態(tài)度去申請了。結(jié)果我的運氣非常好,成功地成為了一名GDE,對此我也感到非常開心。

這一認證對我而言是非常有意義的?,F(xiàn)在我和Google建立了直接的聯(lián)系,有技術(shù)問題也可以直接向Google進行咨詢,所以對于我自身的學(xué)習(xí)幫助是非常大的。

至于申請GDE的流程,Google對申請人的技術(shù)能力以及技術(shù)影響力有比較高的要求,會對你的申請資料進行嚴格的審查,以評估是否滿足GDE的資格,接下來還要通過兩輪面試,才能正式成為一名GDE。

我在博客中寫了一篇非常詳細的文章來介紹整個申請過程,感興趣的朋友可以到我的博客《分享我成為GDE(Google開發(fā)者專家)的經(jīng)歷》中去了解。

10. 除了研究Android技術(shù)和工作之外,你還抽時間開發(fā)了LitePal、giffun、PermissionX等多個開源項目。這些項目都是興趣所致,但都受到了Android開發(fā)者的關(guān)注和喜愛,那么你開發(fā)這些項目的契機分別是什么?

其實對于任何一個開發(fā)者而言,如果你寫的開源項目能夠被很多其他開發(fā)者使用,這都是一件很酷的事情。所以我相信每個開發(fā)者都是愿意去寫開源項目的,只是可能還沒有找到一個好的契機或切入點而已。
而我寫的這些開源項目,切入點都是那些我認為開發(fā)中存在的痛點。以前工作時需要頻繁和數(shù)據(jù)庫打交道,SQL語句寫到想吐,所以我就寫了LitePal這個開源庫,來簡化Android上的數(shù)據(jù)庫操作。

另外,Android提供的權(quán)限申請API非常不友好,每次編寫申請權(quán)限的代碼,對我來說都是一個痛苦的過程,所以我一直希望能編寫一個開源庫來讓權(quán)限申請變得簡單,于是就有了PermissionX。

值得一提的是,PermissionX的第一個版本其實來自于《第一行代碼——Android(第3版)》,本來主要是為了教讀者朋友們?nèi)绾伍_發(fā)一個開源庫的,后來我發(fā)現(xiàn)這個項目的意義不僅限于教學(xué)目的,而是真的可以投入實際的項目中使用,所以后期又對它做了很多的功能增強,才變成了現(xiàn)在的PermissionX。

11. Google非常重視Kotlin,將Kotlin作為了Android開發(fā)第一語言。你也一直比較看好Kotlin,將《第一行代碼——Android》(第3版)使用了Kotlin語言進行重寫。但是與國外相比,Kotlin在國內(nèi)的熱度目前似乎不是特別高,你覺得真實情況是怎樣的,背后的原因是什么?

使用Kotlin語言的原因很簡單,因為這就是未來。我覺得作為Android開發(fā)者,需要做的是去適應(yīng)技術(shù)趨勢,而不是去對抗它。

每年Android的開發(fā)技術(shù)都會發(fā)生很多變化,而近幾年最大的變化莫過于編程語言的改變。

Google在2019年的IO大會上明確宣布了Kotlin First,所以Kotlin目前是Android開發(fā)的第一語言。作為Android開發(fā)者,我們必須去適應(yīng)Google的技術(shù)趨勢。

目前Kotlin在國內(nèi)的熱度還不算高,我認為主要是因為Google的新技術(shù)在國內(nèi)有一定的滯后性,普及還需要一定的時間,但是毫無疑問,Kotlin是Android開發(fā)的未來。Google現(xiàn)在主推的許多新技術(shù)都是基于Kotlin的,比如說協(xié)程。已推出的各種庫也在用Kotlin重寫,比如Room、Paging3等。未來即將推出的新技術(shù)也會基于Kotlin,比如Jetpack Compose。

也就是說,如果不學(xué)習(xí)Kotlin,可能將會完全跟不上以后的Android技術(shù)開發(fā)趨勢。所以,我相信Kotlin在國內(nèi)終將會普及,只是時間的問題。這也是《第一行代碼——Android》(第3版)使用Kotlin進行重寫的原因。

12. 《第一行代碼》(第3版)的閱讀門檻是什么?讀者需要掌握哪些基礎(chǔ)知識才會更容易讀懂和上手?認真讀完這本書并跟著書動手實踐之后,讀者基本可以達到哪種水平?對于希望得到進一步提升的讀者,你有哪些學(xué)習(xí)建議?

雖然這本書全書用Kotlin進行了重寫,但是加入了大量Kotlin語言的知識講解,所以讀者并不需要有任何Kotlin的基礎(chǔ)就可以閱讀這本書,并且讀完之后,讀者將可以很好地掌握Kotlin這門語言。

但是如果讀者之前完全沒有接觸過編程,我認為讀起來還是稍微有點困難的。因為這本書是以讀者有一定編程基礎(chǔ)(最好是只有Java基礎(chǔ))為前提的,書中有一些地方會對Kotlin和Java進行對比,所以如果讀者有Java基礎(chǔ)的話,將會更好地理解這本書。當(dāng)然,即使沒有Java基礎(chǔ),但有其他編程語言的基礎(chǔ),也是可以的,因為編程語言在很多思路上都是相通的。

第3版除了加入了Kotlin語言的講解之外,還基于Android 10系統(tǒng)進行了最新的升級,加入了Jetpack中重要組件的講解,并綜合運用這些知識在全書的最后開發(fā)了一個MVVM架構(gòu)的項目。

所以,全書學(xué)習(xí)完之后,讀者能夠具備比較系統(tǒng)的Android開發(fā)知識,并且將會擁有獨立開發(fā)Android App的能力。

如果閱讀完這本書之后,讀者希望進一步提升自身的能力,那么關(guān)注我的公眾號和博客就是一個不錯的方式。畢竟書中的內(nèi)容是不會變化的,而我會在公眾號和博客中持續(xù)更新技術(shù)文章,幫助讀者學(xué)習(xí)更多的知識。

暢銷書《第一行代碼》的最新版


本書被Android開發(fā)者廣為推薦。全書系統(tǒng)全面、循序漸進地介紹了Android軟件開發(fā)的必備知識、經(jīng)驗和技巧。

第3版基于Android 10.0對第2版進行了全面更新,不僅將所有知識點都在Android 10.0系統(tǒng)上進行了重新適配,同時加入Kotlin語言的全面講解,使用Kotlin對全書代碼進行重寫,而且還介紹了最新系統(tǒng)特性以及Jetpack架構(gòu)組件的使用,使本書更加實用。

本書內(nèi)容通俗易懂,由淺入深,既是Android初學(xué)者的入門必備,也是Android開發(fā)者的進階首選。

京東領(lǐng)劵價格更低

說說你在學(xué)習(xí)?Android 的過程中

遇到的困難或疑惑



專訪郭霖:成長無止境的評論 (共 條)

分享到微博請遵守國家法律
五莲县| 伊金霍洛旗| 麦盖提县| 罗平县| 滕州市| 抚宁县| 乐陵市| 黔南| 鄱阳县| 乌拉特后旗| 上思县| 商洛市| 平湖市| 平远县| 比如县| 卢龙县| 木兰县| 东宁县| 阿城市| 泰顺县| 七台河市| 无锡市| 鞍山市| 交口县| 南皮县| 大埔区| 绿春县| 南丹县| 中牟县| 萍乡市| 阿拉善右旗| 仙居县| 新乐市| 子洲县| 芒康县| 祥云县| 巨野县| 安徽省| 福海县| 马龙县| 团风县|