PTT推薦

[討論] 專家也跟不上Android生態系的變化?

看板Soft_Job標題[討論] 專家也跟不上Android生態系的變化?作者
dharma
(達)
時間推噓26 推:27 噓:1 →:110

網路上看到一篇文章

講的很辛酸的感覺


請問這是文章作者本身不夠強

還是Android開發者真的就是這樣的慘狀

thanks





(全文頗長,節錄內文如下)

https://www.jianshu.com/p/ee0ed95b9a01
請允許我用 Android 開發者的背景,描述一下我這兩年所經歷的事情:

在過去的兩年裏,我啓動了三個項目,我一直爭取,至少參與其中一個項目的開發工作。我回過頭來看這些已經存在的項目,並分析這些項目前期所做的技術決定對整個項目的影響。我寫了這篇文章,也製作了很多 Android 開發的高級課程,也花了很多時間在互聯網上討論 Android 相關的主題。

即使這樣,我今天依然感覺跟不上 Android 整個生態系統的變化。可想而知,對於那些經驗不足,需要指導的 Android 開發者而言,是多麼地絕望。我現在已經無法想像,現在從頭開始學習 Android 的感覺。當你好不容易學會了某個框架或者工具,覺得它很好用的時候,它或許就要過時了。現在也許是加入 Android 開發大家庭最壞的時候。
Google 正爲他們的“包容性”沾沾自喜,但這一切,對初學者來說,都是極其痛苦的。

Google 在 Android 框架中所做的事情,會導致大量的時間浪費。我們需要花費數小時的時間才能讀完所有更改的內容,更別說在項目中應用它們了。我寧願花時間來創造價值,而不是捨本逐末。

--

※ PTT留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 107.161.88.23 (美國)
PTT 網址

NDark03/04 21:14邊開火邊移動

NDark03/04 21:30框架 引擎 平台 => 軍備競賽

NDark03/04 21:31開發者 := 平台競爭之下被打出去的子彈跟砲灰.

tom7758803/04 21:40要怪就怪甲骨文衝康導致谷哥轉向Kotlin,以後有新科技

tom7758803/04 21:40出來,要決定開發語言時,一定不會選Java

wulouise03/04 21:432019 kotlin編譯時間最好的情況增加50%?2020有改善嗎?

wulouise03/04 21:52ndroid-development-december-2020/ 看看2020的比對xd

wulouise03/04 21:53https://bit.ly/3rlJhbW

officeyuli03/04 22:00是 現在光跑背景就有這麼多選項 http://i.imgur.com/M

officeyuli03/04 22:00HEEDHJ.jpg

officeyuli03/04 22:00http://i.imgur.com/HOLssjl.jpg

圖 專家也跟不上Android生態系的變化?

officeyuli03/04 22:01然後workmanager裡面還包了他們以前宣稱的幾種“完美

officeyuli03/04 22:01的解決方法”

officeyuli03/04 22:02http://i.imgur.com/S2wrFgB.jpg

圖 專家也跟不上Android生態系的變化?

NTULioner03/04 22:46真的r

lee45708803/04 23:38幹我隔壁的同事也常常在幹醮每年八九月都要重新弄一次

lee45708803/04 23:38Android 的東西,不然一堆套件都不能用惹

kaibaemon03/04 23:42所以才不找寫Android的工作

scorpion03/05 00:11Android 真的沒事不要隨便進來

netburst03/05 02:17kotlin爽爽

baobomb03/05 05:47一個框架或工具的過時 必有他的原因 像Eventbus, Asyncta

baobomb03/05 05:47sk都是因為有著問題 才有人提出更好的方式

baobomb03/05 05:48kotlin的出現也並不是單純的複製Java而已 也帶來很多好處

baobomb03/05 05:49如果都不追求更好更完美的框架或工具 那就乾脆WebApp弄一

baobomb03/05 05:49弄 跟眾多銀行的App一樣 能跑就好

qweqweqweqwe03/05 06:26也沒到每年要重用這麼誇張吧 並不需要全都追新的

qweqweqweqwe03/05 06:27例如dagger2都已經好幾年了 最近公司才想導入..

rewqasdf03/05 07:30難怪被os壟斷 從pc時代開始

jknm0510a03/05 07:55dragger也是很麻煩到一個極致,所以才改良出2和hilt,

jknm0510a03/05 07:55結果就是要你繼續學吧

siriusu03/05 07:57推 baobomb

LordCHTsai03/05 08:12Flutter2也來囉,歡迎學Dart

sharek03/05 08:20持續學習,了解新框架和工具能帶來的好處才是基本的吧

doranako03/05 08:21碎片化很真的很痛苦,安卓真的比蘋果難寫很多

jobintan03/05 10:11非走Native App不可嗎?轉Web app是否可行?

baobomb03/05 10:26WebApp能做到的事 Native都能做到 但Native能做的事 WebA

baobomb03/05 10:26pp很多做不到 光是Local Database WebApp就一堆問題了

baobomb03/05 10:32再來Dagger2 其實真的是好東西 在大型專案中 可以很有效

baobomb03/05 10:32的做到Module split 可以加快Multiple modules的編譯速

baobomb03/05 10:32度還有解耦 (不過kapt是另一個造成編譯變慢的問題)

baobomb03/05 10:32只是學習曲線很高 而且很容易錯用(很多工程師把Dagger c

baobomb03/05 10:32omponents當成Static object來用 大錯特錯)但一旦學會了

baobomb03/05 10:32 幾乎就等同于沒學九陽神功跟有學九陽神功的差別

baobomb03/05 10:36碎片化的好處在於方便你做Composition 如同碎片化的好的

baobomb03/05 10:36話 你應該不會覺得痛苦反而會覺得碎片復用容易而且要Depr

baobomb03/05 10:36ecating的時候很方便 會覺得很痛苦 那很大機率是碎片化

baobomb03/05 10:36的不好 可以仔細看看是不是用太多inheritance....

baobomb03/05 10:37我常常看到很多工程師很愛 inheritance 繼承的到處都是

baobomb03/05 10:37 結果就是要scale或是拔功能的時候世界毀滅

robber123403/05 12:34Android更新是很快,但沒有表示什麼都要用最新的

robber123403/05 12:46原文寫的很多都能認同,是很資深的工程師,但不代表入門

robber123403/05 12:47就會很困難.哪個平台哪個框架不是一直改

robber123403/05 12:50而且我真的很討厭RxJava, 這我最能認同原作XD

aids6151703/05 13:00寫Android 7年了,我覺得最近幾年進步速度滿大的

aids6151703/05 13:01首先是宣布Kotlin成為一級語言後,Kotlin使用率極速上

aids6151703/05 13:02升,然後推出了Jetpack Architecture,推出了開發上常

aids6151703/05 13:03用的解決方案,MVVM用的ViewModel、有生命週期概念的

aids6151703/05 13:03LiveData、資料庫Room、RecyclerView用的Paging(雖然我

aids6151703/05 13:04沒用XD)...等,還有Kotlin正式推出的Coroutine,我在某

aids6151703/05 13:04個社群說過這東西以後可以取代掉RxJava還一堆人驚訝

aids6151703/05 13:05當然缺點也是有,我有點不喜歡那個WorkManager,然後一

aids6151703/05 13:06些基於安全性或隱私權考量的一些api調整,但整體我覺得

aids6151703/05 13:07利仍大於弊,反而我覺得現在新手比過往更好上手,雖然

aids6151703/05 13:08要學的Library很多,但是有比較完整的解決方案和教學總

aids6151703/05 13:08比新手自己胡搞瞎搞來得好,最後想說的是,databinding

aids6151703/05 13:08是拉機XD

robber123403/05 13:14data binding真的拉機,從沒學過.誰要在xml上寫code

meowyih03/05 14:04拿win平台來說,win32->MFC->WinForm->WPF->UWP好像也是

meowyih03/05 14:04學不完,但是大部分的東西反正最後都會沒人用的,還是

meowyih03/05 14:05win32 api最穩當XD 甚麼?不用UWP寫不能上MS Store? 反正

meowyih03/05 14:05UWP推不動MS自己就會轉彎了~ (笑)

LordCHTsai03/05 14:20xml寫code、databinding,這些web已經寫了十年了XD

baobomb03/05 15:36不知道大家對RxJava的看法是什麼??

baobomb03/05 15:36我很常看到工程師認為RxJava是用來處理multi thread, 所

baobomb03/05 15:36以會被coroutine取代

baobomb03/05 15:36但其實RxJava是用來處理Stream layer separating的. 試想

baobomb03/05 15:36在一個App啟動時 如果有一大堆的critical path服務需要在

baobomb03/05 15:36background thread init. 然後其他的usecase需要等待這

baobomb03/05 15:36些服務完成後馬上接續其他的動作

baobomb03/05 15:39沒有RxJava 以往就是create一大堆的callback listener.

baobomb03/05 15:39 而且很難處理buffer. 但React programming很好的處理了

baobomb03/05 15:39這問題. Coroutine有Flow 可以做到一樣的效果, 但還不Sta

baobomb03/05 15:39ble 我自己用起來覺得還是RxJava更直接.

baobomb03/05 15:43而且CoroutineScope在多線程的情況下需要一直重複切換Con

baobomb03/05 15:43text 用起來會導致function變很冗長. 但我自己也是樂觀

baobomb03/05 15:43看待 畢竟很多人誤用RxJava(不懂得復用Subscription,Stre

baobomb03/05 15:43am,而是每次有需求就subscribe一次 最後也沒有好好Dispos

baobomb03/05 15:43e導致memory leak) Coroutine看起來可以解決這問題 但希

baobomb03/05 15:43望可以寫起來更優美

aids6151703/05 15:59我自己用Flow是沒遇到什麼問題,當然RxJava release那

aids6151703/05 16:00麽久了,你說Flow相較起來不stable是沒錯,但是我不知

aids6151703/05 16:00道你說用RxJava更直接是什麼意思,有什麼功能Rx做得到

aids6151703/05 16:01Flow做不到的嗎?然後CoroutineScope在多線程的情況下

aids6151703/05 16:02需要一直重複切換Context,難道Rx不需要嗎?會需要頻繁

aids6151703/05 16:03切換大多都是background thread處理資料後需要更新UI

aids6151703/05 16:04Rx也一定需要吧?滿好奇你的case

aids6151703/05 16:14細節也可以去AndroidDev版討論,我可不想被哈哈人噓

baobomb03/05 16:14其實我也很喜歡Flow啦哈哈 只是很多工程師只是為了方便

baobomb03/05 16:14切換線程而用coroutine function內withContext寫的到處

baobomb03/05 16:14都是 看的真的很頭痛....

baobomb03/05 16:14RxJava寫起來更有chain的感覺 可以在streams之間直接stre

baobomb03/05 16:14am.subscribeOn/observeOn. 對我來說更能有效的強制工程

baobomb03/05 16:14師去細分function從而達到unit test更好寫

baobomb03/05 16:14但Coroutine 的withContext這東西... 很容易讓很多工程師

baobomb03/05 16:14濫用... 不是說不好 而是太方便了-.-

aids6151703/05 16:17Flow有個flowOn(),應該可以達到你要的效果,至於到處

aids6151703/05 16:17寫withContext()是能保證那個function的內容是用特定的

aids6151703/05 16:18Dispatcher去執行,這就看你們團隊的討論了

jknm0510a03/05 18:13我覺得Coroutine比RxJava直覺多了耶!可能是我是先學前

jknm0510a03/05 18:13面再學後面

iiiii03/06 11:26Android Studio 每次按下更新鈕,都要禱告

angusyu03/06 12:48禱告?沒有啊每次更新都沒什麼事

u07f0803/07 00:57android studio 4之後的版本bug超多的好嗎

hicoy03/07 13:35我自己是習慣等個一陣子在更新android studio 讓同事幫忙

hicoy03/07 13:35除雷XD

hicoy03/07 13:41全吃一定是吃不完

hicoy03/07 13:42主要還是要做取捨 像上面講到coroutine and RxJava

hicoy03/07 13:45先選一種學 另一種有需要再看 不過Google現在選的是corouti

hicoy03/07 13:46ne了吧? 範例都改coroutine+flow了

ginnyhuang03/10 23:50我倒覺得databinding超好用的耶,不用一堆 init,至

ginnyhuang03/10 23:50於在xml編輯,大概因為習慣直接在xml coding 元件內容

ginnyhuang03/10 23:50所以還蠻習慣的

ginnyhuang03/10 23:59真的不用什麼都用最新 lib XD,只有在開發新產品才會

ginnyhuang03/10 23:59使用當下最新最穩定的 lib 版本。這部分 ios 比較慘吧

ginnyhuang03/10 23:59,常常新版本都有不兼容的 function,直接給你停用出

ginnyhuang03/10 23:59現 bug(同情地望向 ios 同事),android 至少不會讓你

ginnyhuang03/10 23:59舊的 function 不能用(或是功能有非常大落差),版

ginnyhuang03/10 23:59本更新主要看新的調整有沒有影響到自己的 app 再做調

ginnyhuang03/10 23:59整就好

ginnyhuang03/11 00:12是可以感受到對開發者的限制增多,但我覺得是讓使用

ginnyhuang03/11 00:12者的安全性和隱私提高,這是好事,而且統一的規範總

ginnyhuang03/11 00:12比各廠牌手機魔改系統要好(對,我說的就是大部分陸廠

ginnyhuang03/11 00:12手機以及少部分他國品牌,雖然個人認為這也是部分開發

ginnyhuang03/11 00:12者種下的惡果),當你按照官方 sdk 開發卻發現在某幾

ginnyhuang03/11 00:13個手機上表現不如預期才真令人抓狂...為了這幾個例外

ginnyhuang03/11 00:13又要再想辦法額外 coding 讓這些例外可以正常運行(暈

ginnyhuang03/11 00:13

※ 編輯: dharma (107.161.88.23 美國), 08/11/2021 15:25:02