了(le/liǎo)解最新公司動态及行業資訊
有人(rén)曾對我說(shuō):“如果你 35 歲時(shí)還是(shì)個(gè)程序員,那就(jiù)應該開始爲(wéi / wèi)你的(de)下半生尋找其他(tā)出(chū)路了(le/liǎo)。年輕一(yī / yì /yí)代正在(zài)迎頭趕上(shàng),很快你就(jiù)會被淘汰。”
的(de)确,我到(dào)了(le/liǎo) 35 歲時(shí)開始反思自己的(de)職業生涯,但情況有些不(bù)一(yī / yì /yí)樣。
知道(dào)想學什麽後,就(jiù)動手去做!
在(zài)那個(gè)年齡段,我不(bù)是(shì)一(yī / yì /yí)個(gè)基層程序員,而(ér)是(shì)管理崗。在(zài)我職業生涯的(de)前幾年,我确實有一(yī / yì /yí)段作爲(wéi / wèi)一(yī / yì /yí)名 C++ 開發者的(de)短暫時(shí)期。然而(ér)在(zài)開始擔任管理職務後,我的(de)編程技能就(jiù)退化了(le/liǎo)。我每天的(de)工作就(jiù)是(shì)開會、做 PPT 和(hé / huò) Excel 表格,當然還有看大(dà)量的(de)電子(zǐ)郵件。我幾乎不(bù)看代碼,幾個(gè)星期甚至幾個(gè)月都不(bù)看一(yī / yì /yí)回,更不(bù)用說(shuō)寫代碼了(le/liǎo)。
39 歲時(shí),我移民到(dào)一(yī / yì /yí)個(gè)新的(de)國(guó)家。彼時(shí),我的(de)管理技能已經用不(bù)上(shàng)了(le/liǎo)。這(zhè)裏的(de)公司更喜歡用有本地(dì / de)經驗的(de)人(rén)來(lái)擔任管理職務。我可以(yǐ)選擇換個(gè)職業,從事其他(tā)不(bù)需要(yào / yāo)技術知識的(de)臨時(shí)工作。但我的(de)确很喜歡編程。我想回到(dào)自己起步的(de)崗位上(shàng),因此嘗試了(le/liǎo)幾次關于(yú) C++ 的(de)面試。
尴尬的(de)是(shì),我甚至沒有通過初步的(de)編程測試。爲(wéi / wèi)此,我感到(dào)心灰意冷。
我不(bù)知道(dào)再回去寫 C++ 能做些什麽。那些 C++ 的(de)編程工作針對的(de)是(shì)涉及硬件的(de)嵌入式軟件開發,而(ér)不(bù)是(shì)我感興趣的(de)主流軟件開發。既然已經不(bù)再對 C++ 感興趣了(le/liǎo),那麽我到(dào)底想要(yào / yāo)做什麽呢?
當時(shí),移動開發是(shì)大(dà)熱話題,尤其是(shì) iOS。但要(yào / yāo)做 iOS 開發,我首先需要(yào / yāo)買一(yī / yì /yí)台 MacBook 和(hé / huò) iPhone,兩種設備我都沒有。問題是(shì),如果我沒法提前知道(dào)自己能不(bù)能勝任這(zhè)一(yī / yì /yí)工作就(jiù)先花錢買設備的(de)話,前期投資就(jiù)太多了(le/liǎo)。
我當時(shí)有一(yī / yì /yí)台 Windows 筆記本電腦和(hé / huò)一(yī / yì /yí)部三星 S2 手機。我看到(dào) Android 正在(zài)呈現發展勢頭,雖然那時(shí) Android 還不(bù)是(shì)使用人(rén)數最多的(de)移動平台,但越來(lái)越多的(de)人(rén)開始使用 Android 手機。所以(yǐ)我選擇了(le/liǎo) Android 開發。
确定學習目标後,我隻需要(yào / yāo)獲得相關資源即可。首先,谷歌的(de)開發工具包 Android Studio 是(shì)免費的(de),我還買了(le/liǎo)一(yī / yì /yí)些能找到(dào)的(de)書籍。由于(yú) Android 系統相當新潮,所以(yǐ)當時(shí)的(de)書籍并不(bù)多,但互聯網上(shàng)有很多學習資源和(hé / huò)代碼參考等,這(zhè)非常重要(yào / yāo)。我還可以(yǐ)訂閱一(yī / yì /yí)些最新的(de)學習郵件。
學習開發知識比過去方便多了(le/liǎo),任何人(rén)都可以(yǐ)輕松上(shàng)手。
身處正确的(de)環境中,會學得更快。
首先,我自己做了(le/liǎo)幾個(gè)小的(de)應用,并在(zài)商店裏發布。我了(le/liǎo)解了(le/liǎo)從設計、開發、測試到(dào)向公衆發布所需要(yào / yāo)的(de)東西,完整地(dì / de)體驗了(le/liǎo) Android 的(de)開發過程。
雖然我可以(yǐ)自己學習和(hé / huò)工作,但我知道(dào)僅靠自己永遠不(bù)會達到(dào)理想的(de)學習速度,除非我與其他(tā) Android 開發者一(yī / yì /yí)起工作。這(zhè)種情況下,我想加入一(yī / yì /yí)家做 Android 開發的(de)公司。
我發布的(de)應用讓我獲得了(le/liǎo)一(yī / yì /yí)家成長中移動開發公司的(de)面試機會,這(zhè)對我來(lái)說(shuō)非常寶貴。
我知道(dào)自己沒有資格勝任高級開發人(rén)員,所以(yǐ)隻要(yào / yāo)能夠得到(dào)工作和(hé / huò)學習的(de)機會就(jiù)行,能夠得到(dào)任何職位都可以(yǐ)。對此我沒有什麽想法,因爲(wéi / wèi)這(zhè)爲(wéi / wèi)我提供了(le/liǎo)充分的(de)學習機會,我可以(yǐ)做一(yī / yì /yí)名後輩。
不(bù)幸的(de)是(shì),我在(zài)最後一(yī / yì /yí)輪面試中失敗了(le/liǎo),這(zhè)令我崩潰。
但我還是(shì)發了(le/liǎo)封電子(zǐ)郵件,感謝公司提供的(de)面試機會。我并沒有就(jiù)此罷休,我詢問他(tā)們是(shì)否願意考慮讓我作爲(wéi / wèi)實習生加入,我甚至願意不(bù)計報酬地(dì / de)工作和(hé / huò)學習,以(yǐ)獲得提高自己技能的(de)機會。
最後我得到(dào)了(le/liǎo)一(yī / yì /yí)個(gè)機會,但不(bù)是(shì)實習生,而(ér)是(shì)一(yī / yì /yí)個(gè)移動應用 QA 測試員的(de)職位。
我非常願意接受這(zhè)個(gè)崗位。我去做測試工作可能不(bù)會去寫代碼,但我可以(yǐ)和(hé / huò)專家們打成一(yī / yì /yí)片,向他(tā)們學習。更棒的(de)是(shì),我在(zài)做測試時(shí)還能拿到(dào)報酬。這(zhè)比做一(yī / yì /yí)個(gè)沒有報酬的(de)實習生要(yào / yāo)好得多。
要(yào / yāo)好好學習,讓它成爲(wéi / wèi)我們工作的(de)一(yī / yì /yí)部分。
當我開始在(zài)那家移動開發公司工作時(shí),我成爲(wéi / wèi) Android 開發人(rén)員的(de)目标已經實現了(le/liǎo) 50%,但這(zhè)并不(bù)能保證我可以(yǐ)完成剩下的(de) 50%。我必須提高自己的(de)開發技能,并在(zài)機會出(chū)現時(shí)已做好準備。
作爲(wéi / wèi)一(yī / yì /yí)名 QA 測試員,我每天必須工作 8 小時(shí)。我很羨慕那些做開發的(de)人(rén),他(tā)們可以(yǐ)邊工作邊學習。邊工作邊學習是(shì)最好的(de),但我沒有這(zhè)種機會。盡管如此,身處移動開發公司本身已經是(shì)一(yī / yì /yí)個(gè)很大(dà)的(de)優勢。我有機會接觸到(dào)公司裏的(de)一(yī / yì /yí)些學習資源,這(zhè)樣更容易發現自己應該重點學習哪些領域的(de)知識,對此我很感激。
最重要(yào / yāo)的(de)是(shì),我和(hé / huò)這(zhè)個(gè)領域的(de)專家們建立了(le/liǎo)聯系。他(tā)們中 95% 的(de)人(rén)年齡都比我小。年齡并不(bù)是(shì)什麽問題,重要(yào / yāo)的(de)是(shì)他(tā)們在(zài)這(zhè)個(gè)領域的(de)經驗。我非常尊重他(tā)們擁有的(de)技能和(hé / huò)知識,以(yǐ)及他(tā)們的(de)分享意願。從他(tā)們身上(shàng)我學到(dào)了(le/liǎo)很多。
工作時(shí)間之(zhī)餘學習和(hé / huò)寫代碼,這(zhè)樣的(de)生活并不(bù)容易,但很充實。一(yī / yì /yí)點一(yī / yì /yí)滴地(dì / de)學習、知道(dào)自己的(de)方向是(shì)正确的(de),這(zhè)是(shì)很好的(de)體驗。我的(de)任務是(shì),成爲(wéi / wèi)一(yī / yì /yí)名 Android 開發者。
在(zài)這(zhè)個(gè)階段,我需要(yào / yāo)的(de)是(shì)不(bù)斷展示自己的(de)學習成果,同時(shí)堅持不(bù)懈地(dì / de)履行自己作爲(wéi / wèi)一(yī / yì /yí)名 QA 的(de)使命。每隔一(yī / yì /yí)段時(shí)間,我就(jiù)向 Android 主管展示我所取得的(de)成績,并檢查自己是(shì)否已經準備好在(zài)有任何 Android 開發崗位空缺時(shí)拿下它。
6 個(gè)月後,我被調任到(dào)了(le/liǎo)開發崗位上(shàng),正式成爲(wéi / wèi)了(le/liǎo)一(yī / yì /yí)名 Android 開發人(rén)員!雖然隻是(shì)初級崗位,但也(yě)是(shì)一(yī / yì /yí)名開發人(rén)員。
開始分享時(shí),學到(dào)的(de)東西最多。
當我進入 Android 開發人(rén)員的(de)角色時(shí)已經 40 歲了(le/liǎo)。但這(zhè)不(bù)是(shì)我目标的(de)終結,而(ér)隻是(shì)一(yī / yì /yí)個(gè)開始。
我非常高興,因爲(wéi / wèi)我可以(yǐ)随心所欲地(dì / de)寫代碼。我的(de)工作時(shí)間就(jiù)是(shì)寫代碼的(de)時(shí)間,可以(yǐ)在(zài)工作中學習。我能與專家結對,向他(tā)們學習。我可以(yǐ)閱讀他(tā)們的(de)代碼,他(tā)們也(yě)可以(yǐ)審查我的(de)代碼。這(zhè)時(shí),我對 Android 開發的(de)理解速度加快了(le/liǎo)很多。
我可以(yǐ)滿足于(yú)這(zhè)一(yī / yì /yí)層次,但我知道(dào),随着年齡的(de)增長,自己并沒有像其他(tā)人(rén)那麽多的(de)時(shí)間。我需要(yào / yāo)做的(de)不(bù)僅僅是(shì)學習。
在(zài)領導的(de)鼓勵下,我開始寫博客。我花了(le/liǎo)一(yī / yì /yí)段時(shí)間才開始做這(zhè)件事,因爲(wéi / wèi)我想誰願意看我寫的(de)東西呢?我又不(bù)是(shì)專家。如果我寫的(de)東西不(bù)符合标準怎麽辦,甚至還可能是(shì)錯的(de)?
盡管如此,我也(yě)注意到(dào)自己很容易忘記學到(dào)的(de)東西。所以(yǐ)我的(de)目的(de)很簡單,那就(jiù)是(shì)爲(wéi / wèi)自己寫博客。這(zhè)更像是(shì)我的(de)學習筆記,就(jiù)算沒有人(rén)看它,至少我可以(yǐ)通過博客很容易地(dì / de)回憶起我所學的(de)東西。
之(zhī)後,我花時(shí)間寫下了(le/liǎo)我的(de)學習内容,并盡量讓文字簡單易懂,便于(yú)自己回憶。對于(yú)每項學習進度,我都會畫圖,再附上(shàng)代碼實踐的(de)案例。
讓我驚訝的(de)是(shì)竟然有人(rén)讀了(le/liǎo)它,還有人(rén)寫下了(le/liǎo)充滿感激的(de)評論。他(tā)們的(de)留言給了(le/liǎo)我極大(dà)的(de)鼓勵,讓我繼續寫下去。更重要(yào / yāo)的(de)是(shì),有人(rén)坦率地(dì / de)與我持不(bù)同意見。誠然,我有時(shí)會有抵觸心理,但正是(shì)這(zhè)些回複讓我意識到(dào)外面還有各種不(bù)同的(de)思維方式和(hé / huò)想法。
有時(shí)我是(shì)錯的(de),有時(shí)我雖然沒有錯,但可以(yǐ)了(le/liǎo)解對方的(de)觀點。這(zhè)些都是(shì)學習的(de)機會,讓我的(de)學習之(zhī)旅更加健康。這(zhè)是(shì)一(yī / yì /yí)段成爲(wéi / wèi)更好的(de) Android 開發人(rén)員的(de)旅程。
在(zài)能分辨好壞之(zhī)前,繼續學習吧。
經過 4 年多的(de) Android 開發經曆,我在(zài)這(zhè)個(gè)領域已經相對自如了(le/liǎo),我成爲(wéi / wèi)了(le/liǎo)一(yī / yì /yí)名高級 Android 開發人(rén)員。除了(le/liǎo)本身的(de)開發工作外,我還會指導其他(tā)初級開發人(rén)員。
我不(bù)敢說(shuō)自己對 Android 開發了(le/liǎo)如指掌,但我更知道(dào)如何獲取和(hé / huò)尋找信息,對事物的(de)對錯有更好的(de)直覺和(hé / huò)判斷。Android 開發行業也(yě)在(zài)不(bù)斷發展,所以(yǐ)有很多東西需要(yào / yāo)學習。我喜歡自己的(de)工作。
我可以(yǐ)留在(zài)這(zhè)個(gè)層次上(shàng)安頓下來(lái)。我喜歡這(zhè)份工作,因爲(wéi / wèi)我的(de)工作就(jiù)是(shì)寫代碼,然而(ér)我仍然隻是(shì)單一(yī / yì /yí)的(de)貢獻者,我的(de)影響範圍僅限于(yú)自己能做的(de)事情。我問自己,這(zhè)就(jiù)是(shì)我生命中未來(lái) 10 年想要(yào / yāo)一(yī / yì /yí)直做的(de)事情嗎?
我決定在(zài)機會出(chū)現時(shí)向前邁進。我申請了(le/liǎo)首席開發人(rén)員的(de)職位,同時(shí)負責 iOS 和(hé / huò) Android。最終,我得到(dào)了(le/liǎo)這(zhè)個(gè)職位,盡管我并不(bù)擅長 iOS。
不(bù)了(le/liǎo)解自己所負責的(de)領域,這(zhè)種感覺讓我感到(dào)很不(bù)舒服。但正是(shì)這(zhè)種不(bù)舒服的(de)感覺促使我去學習和(hé / huò)提升知識水平。所以(yǐ),我開始花時(shí)間去學習 iOS 開發。
我不(bù)認爲(wéi / wèi)自己能夠像了(le/liǎo)解 Android 那樣深度掌握 iOS 開發知識,但這(zhè)種學習确實可以(yǐ)幫我更宏觀地(dì / de)看待移動開發領域,它讓我知道(dào)了(le/liǎo) Android 開發擅長什麽事情,也(yě)知道(dào)了(le/liǎo)它在(zài)哪些方面比較落後。
從我第一(yī / yì /yí)次涉足 Android 開發已經過去了(le/liǎo) 7 年多,很多事情都發生了(le/liǎo)變化。
我現在(zài)是(shì)一(yī / yì /yí)名移動技術負責人(rén),負責整個(gè)移動團隊的(de)協作和(hé / huò)架構工作。除了(le/liǎo)技術角色外,我還需要(yào / yāo)參與各種管理任務。我又回到(dào)了(le/liǎo)沒有太多時(shí)間在(zài)工作中寫代碼和(hé / huò)學習的(de)階段,但我仍然很喜歡我的(de)工作,因爲(wéi / wèi)它仍然是(shì)相對技術性的(de),隻是(shì)技術水平更高了(le/liǎo)。
要(yào / yāo)做出(chū)合理的(de)高層次技術決策必須有紮實的(de)底層技術理解。我們不(bù)能依靠過去的(de)學習内容來(lái)保持所需的(de)水平。我需要(yào / yāo)繼續學習,希望自己不(bù)會在(zài)幾年後重蹈覆轍。
這(zhè)就(jiù)是(shì)我的(de)故事。40 歲才開始從事軟件開發事業,還不(bù)算太晚。
原文鏈接:
https://levelup.gitconnected.com/i-started-android-development-at-40-6591c1e8bc38