日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

本文最初發(fā)布于 Level Up Coding 博客。

在這篇文章中,我將談?wù)劄槭裁次以谶@個行業(yè)工作了近十年之后,永遠(yuǎn)地離開了 Android 開發(fā)。在開始之前,讓我簡單介紹下自己在這個領(lǐng)域的職業(yè)生涯。

美好時光

 

我從 2013 年開始接觸 Android 開發(fā),在當(dāng)時 Android 4.4 還是熱門的新事物。AsyncTasks 還是標(biāo)準(zhǔn),還有 OttoEventBus 和其他令人討厭的東西。我見證了架構(gòu)演進(jìn)的過程,從 MVC 到 MVP/MVI,然后轉(zhuǎn)向 MVVM,最后是 MVVM 和 MVI 的混合。

 

我記得,當(dāng) RxJAVA 出現(xiàn)時,一切都突然變成了反應(yīng)性的,變成了流。我記得,l33t Android Devs(Hi Jake Wharton)在談?wù)撃莻€新出現(xiàn)的黑馬 Kotlin。我記得,Kotlin 興起并接管了 Android 行業(yè)。我記得,Coroutines 出現(xiàn)了,并且起初被認(rèn)為是“RxJava”的殺手(嘿,你現(xiàn)在可以用同步方式編寫所有異步代碼了!不需要流了!)。這個理念很吸引人,但很快就被證明,那僅僅是一個好主意而已,因此,像 Channels 這樣的底層異步原語成為 Kotlin 的 Rx-Way。不過事實(shí)證明,很多使用 Channels 的人都是自斷雙臂。不得已,精益冷流(Cold Streams)和熱流(Hot Streams)的概念被重新引入,請?jiān)试S我向你介紹:StateFlows 和 SharedFlows,最后,我們得到了一個輕量級的、支持 Coroutines 的 Kotlin 版 RxJava2。

 

我記得,我和同事 David 圍繞狀態(tài)和事件展開的所有有趣的對話,到底什么是狀態(tài),什么是事件?事件對狀態(tài)有什么作用,反之亦然?我記得,在 Dagger 2 被 Koin 和 Dagger Hilt 取代之前的幾年,我熬夜學(xué)習(xí) Dagger 2。我還記得,第一次閱讀 Uncle Bob 的《架構(gòu)整潔之道》,這是我在 Android 開發(fā)生涯中最開闊眼界的時刻之一。現(xiàn)在,我能夠設(shè)計(jì)和編寫幾乎所有應(yīng)用程序,而不需要考慮 MVVM/MVP/MVC 或任何其他特定于平臺的細(xì)節(jié)。我知道為什么測試很重要,我嘗試了 TDD,對它是又愛又恨,我還學(xué)習(xí)了 DDD 和 BDD。

我的火車到達(dá)終點(diǎn)站了嗎?

 

(我選擇這個副標(biāo)題是因?yàn)槲椰F(xiàn)在正在從瑞士到德國的火車上寫這篇文章。)

 

后來,我加入了保時捷和 IBM 等大企業(yè)的領(lǐng)導(dǎo)團(tuán)隊(duì),這是一段很好的旅程,經(jīng)過 6-7 年的經(jīng)驗(yàn)積累,我達(dá)到了目標(biāo)。我曾開發(fā)過復(fù)雜的應(yīng)用程序,涉及大量的 E2E 加密、傳感器通信、NFC 芯片、BLE Beacon、高流量聊天應(yīng)用,還有非常有名的待辦事項(xiàng)應(yīng)用,等等。

 

大約 6 年后,我開始以首席 Android 開發(fā)人員的身份參與項(xiàng)目。我學(xué)會了識別所參與的大多數(shù)項(xiàng)目的核心技術(shù)問題(架構(gòu)和團(tuán)隊(duì)成員對某些模式有不同的理解),我還學(xué)會了如何指導(dǎo)團(tuán)隊(duì)解決這些問題,以及如何成功地完成項(xiàng)目。對我而言,現(xiàn)在新東西僅僅是學(xué)習(xí)新的 API 變化 / 框架,目的是解決我們已經(jīng)解決了很多年的問題,只是新的框架 /API 做了更好的處理(不用再手動處理生命周期、Fragment Transaction、XML 布局等)。

我以前的后端經(jīng)驗(yàn)

 

很幸運(yùn),在過去的 4-5 年里,我在客戶項(xiàng)目中從事后端工作(根據(jù)要求)。我花了很多時間去了解后端開發(fā)的來龍去脈,編寫并發(fā)代碼,創(chuàng)建分布式系統(tǒng),縱向和橫向擴(kuò)展,處理分布式事務(wù),編寫可配置的代碼,在不同階段的環(huán)境表現(xiàn)出預(yù)期的效果。我研究了不同類型的數(shù)據(jù)庫(圖、關(guān)系、文檔),以及什么樣的數(shù)據(jù)應(yīng)該使用什么樣的數(shù)據(jù)庫,我學(xué)習(xí)了 Docker 和 K8s,我用 Go 重構(gòu) Java EE 系統(tǒng)。看著由 Go 編譯出來的二進(jìn)制文件,它的內(nèi)存使用率和幾乎為零的內(nèi)存占用,我明白了為什么 Go 如此令人驚嘆。作為后端開發(fā)人員,我所解決的問題與我在 Android 開發(fā)中遇到的挑戰(zhàn)無法相提并論(我很快就會講到),作為后端開發(fā)者,我所解決的問題比在 Android 上推敲像素影響更大、更深遠(yuǎn)。

Android 真的就那樣嗎?

 

最終,我厭倦了與 UI/UX 設(shè)計(jì)師的所有會議,厭倦了向他們解釋 Material Design 的基本原理,或者為什么我們不能觸發(fā)應(yīng)用程序 Y(不是我們開發(fā)的)中那樣的行為 X,我記得,好幾個小時的設(shè)計(jì)討論都讓我的大腦直接宕機(jī)了。不少項(xiàng)目都會出現(xiàn)這種情況,其中一些項(xiàng)目具有一定的復(fù)雜性,一旦團(tuán)隊(duì)理解了整潔架構(gòu)和領(lǐng)域驅(qū)動開發(fā),我們就能在很短的時間內(nèi)寫出領(lǐng)域 + 數(shù)據(jù)層。一旦你向團(tuán)隊(duì)解釋清楚了各種身份認(rèn)證流程,恰當(dāng)處理令牌刷新邏輯就變成小菜一碟了。主要的挑戰(zhàn)幾乎總是出現(xiàn)在 UI 層,由于框架 API 不斷發(fā)展變化,UI 層也在不斷變化。在很大程度上,UI 層受 UI/UX 設(shè)計(jì)師和 PO 影響。最近,幾乎所有的項(xiàng)目都變成了日常工作,對工程的關(guān)注少,對業(yè)務(wù)、實(shí)施的關(guān)注多,幾乎一直在擺弄 Android API。在最好的情況下,會有一個令人耳目一新的任務(wù),如編寫一個自定義視圖,并使用一些線性代數(shù)的知識。但通常情況下,幾乎總是一些無聊的事情,反思這一切,我問自己:這對我有什么好處?當(dāng)然我賺了很多錢,但我馬上就要 30 歲了,幾年后,我將在哪里?

 

作為一名經(jīng)驗(yàn)豐富的 Android 開發(fā)人員,我只適合 Android 職位。我所有的技能都是為了能開發(fā)出可維護(hù)的、整潔的、能在 Android 平臺上正常工作的代碼。有些代碼會被垃圾收集器如期殺死,而有些代碼能在垃圾收集器中存活下來,因?yàn)樗驹撊绱恕H绻?Android 很快消失了怎么辦?看著像 Flutter 這樣優(yōu)秀的技術(shù),人們已經(jīng)用它開發(fā)出了一些很棒的應(yīng)用,我不會再把任何新項(xiàng)目作為單獨(dú)的原生 IOS 和原生 Android 應(yīng)用來啟動。老實(shí)說,你的 Android 技能對于大多數(shù)公司的首席 / 資深軟件工程師職位來說價值并不高。

Android 開發(fā)日薄西山

 

我成功地完成了自己的最后一個項(xiàng)目。現(xiàn)在是時候做一些改變了。我不想再花幾天的時間討論 CardView 的邊框或反復(fù)出現(xiàn)的毫無意義的問題,比如是使用單選按鈕還是復(fù)選框。我不想再為了更好地處理 Android 生命周期或?qū)Ш蕉鴮W(xué)習(xí)新的 Android 庫,然后在未來 12 個多月內(nèi)看它們再次被替換,在過去的 10 年里,這種事我已經(jīng)做過好多次了。開發(fā)人員一代接一代,每一代中都會有人覺得自己有權(quán)力編寫一個新的庫來處理 UI 狀態(tài),或者編寫一個新的導(dǎo)航庫。測試?不,沒有。可悲的是,有很多開發(fā)者會使用這些庫。Android 開發(fā)正慢慢被吞噬 Web 開發(fā)的混亂所吞噬(你試過安裝 create-react-App 嗎?你會下載數(shù)以千計(jì)的庫,包括一些易受攻擊的庫)。

 

幸運(yùn)的是,在過去幾年里,我曾在幾個項(xiàng)目中從事后端工作,這使我有機(jī)會過渡到后端開發(fā),徹底離開安卓,專注于開發(fā)每秒處理數(shù)十萬用戶請求的系統(tǒng),這對我來說非常有吸引力。現(xiàn)在,路線圖上有一些我作為 Android 開發(fā)者不了解的新東西:獲得 K8s 認(rèn)證,掌握多個云,深入學(xué)習(xí)特定數(shù)據(jù)庫,深入理解 DevOps。我感覺,編程的神秘性再次激發(fā)了我,有復(fù)雜的工程問題需要處理,這讓人興奮。

 

讓人難過的是,對于一個純粹的 Android 開發(fā)者來說,架構(gòu)師或首席 / 資深工程師的道路是封閉的。純粹的 Android 開發(fā)人員根本不具備履行這些職位所需的技能。對我來說,這是一次很棒的旅程,但我再也不會以 Android 開發(fā)人員的身份參與項(xiàng)目了。

英文原文:

 

https://levelup.gitconnected.com/why-i-left-android-development-after-10-years-and-became-a-backend-developer-86ebf3595d43

分享到:
標(biāo)簽:開發(fā) Android
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定