作者:
dharma (é”)
2021-03-04 20:42:44網路上看到一篇文章
講的很辛酸的感覺
請問這是文章作者本身不夠強
還是Android開發者真的就是這樣的慘狀
thanks
(全文頗長,節錄內文如下)
https://www.jianshu.com/p/ee0ed95b9a01
請允許我用 Android 開發者的背景,描述一下我這兩年所經歷的事情:
在過去的兩年裏,我啓動了三個項目,我一直爭取,至少參與其中一個項目的開發工作。
我回過頭來看這些已經存在的項目,並分析這些項目前期所做的技術決定對整個項目的影
響。我寫了這篇文章,也製作了很多 Android 開發的高級課程,也花了很多時間在互聯
網上討論 Android 相關的主題。
即使這樣,我今天依然感覺跟不上 Android 整個生態系統的變化。可想而知,對於那些
經驗不足,需要指導的 Android 開發者而言,是多麼地絕望。我現在已經無法想像,現
在從頭開始學習 Android 的感覺。當你好不容易學會了某個框架或者工具,覺得它很好
用的時候,它或許就要過時了。現在也許是加入 Android 開發大家庭最壞的時候。
Google 正爲他們的“包容性”沾沾自喜,但這一切,對初學者來說,都是極其痛苦的。
Google 在 Android 框架中所做的事情,會導致大量的時間浪費。我們需要花費數小時的
時間才能讀完所有更改的內容,更別說在項目中應用它們了。我寧願花時間來創造價值,
而不是捨本逐末。
作者:
NDark (溺於黑暗)
2021-03-04 21:14:00邊開火邊移動框架 引擎 平台 => 軍備競賽開發者 := 平台競爭之下被打出去的子彈跟砲灰.
要怪就怪甲骨文衝康導致谷哥轉向Kotlin,以後有新科技出來,要決定開發語言時,一定不會選Java
作者:
NTULioner (LionsHeart)
2021-03-04 22:46:00真的r
作者: lee457088 2021-03-04 23:38:00
幹我隔壁的同事也常常在幹醮每年八九月都要重新弄一次Android 的東西,不然一堆套件都不能用惹
作者: kaibaemon (海馬衛門) 2021-03-04 23:42:00
所以才不找寫Android的工作
作者:
netburst (133 134 592)
2021-03-05 02:17:00kotlin爽爽
作者:
baobomb (baobomb)
2021-03-05 05:47:00一個框架或工具的過時 必有他的原因 像Eventbus, Asynctask都是因為有著問題 才有人提出更好的方式kotlin的出現也並不是單純的複製Java而已 也帶來很多好處如果都不追求更好更完美的框架或工具 那就乾脆WebApp弄一弄 跟眾多銀行的App一樣 能跑就好
也沒到每年要重用這麼誇張吧 並不需要全都追新的例如dagger2都已經好幾年了 最近公司才想導入..
dragger也是很麻煩到一個極致,所以才改良出2和hilt,結果就是要你繼續學吧
作者:
siriusu (かがみは俺の嫁。)
2021-03-05 07:57:00推 baobomb
作者:
sharek (...)
2021-03-05 08:20:00持續學習,了解新框架和工具能帶來的好處才是基本的吧
作者:
jobintan (Robin Artemstein)
2021-03-05 10:11:00非走Native App不可嗎?轉Web app是否可行?
作者:
baobomb (baobomb)
2021-03-05 10:26:00WebApp能做到的事 Native都能做到 但Native能做的事 WebApp很多做不到 光是Local Database WebApp就一堆問題了再來Dagger2 其實真的是好東西 在大型專案中 可以很有效的做到Module split 可以加快Multiple modules的編譯速度還有解藕 (不過kapt是另一個造成編譯變慢的問題)只是學習曲線很高 而且很容易錯用(很多工程師把Dagger components當成Static object來用 大錯特錯)但一旦學會了幾乎就等同于沒學九陽神功跟有學九陽神功的差別碎片化的好處在於方便你做Composition 如同碎片化的好的話 你應該不會覺得痛苦反而會覺得碎片復用容易而且要Deprecating的時候很方便 會覺得很痛苦 那很大機率是碎片化的不好 可以仔細看看是不是用太多inheritance....我常常看到很多工程師很愛 inheritance 繼承的到處都是結果就是要scale或是拔功能的時候世界毀滅
Android更新是很快,但沒有表示什麼都要用最新的原文寫的很多都能認同,是很資深的工程師,但不代表入門就會很困難.哪個平台哪個框架不是一直改而且我真的很討厭RxJava, 這我最能認同原作XD
寫Android 7年了,我覺得最近幾年進步速度滿大的首先是宣布Kotlin成為一級語言後,Kotlin使用率極速上升,然後推出了Jetpack Architecture,推出了開發上常用的解決方案,MVVM用的ViewModel、有生命週期概念的LiveData、資料庫Room、RecyclerView用的Paging(雖然我沒用XD)...等,還有Kotlin正式推出的Coroutine,我在某個社群說過這東西以後可以取代掉RxJava還一堆人驚訝當然缺點也是有,我有點不喜歡那個WorkManager,然後一些基於安全性或隱私權考量的一些api調整,但整體我覺得利仍大於弊,反而我覺得現在新手比過往更好上手,雖然要學的Library很多,但是有比較完整的解決方案和教學總比新手自己胡搞瞎搞來得好,最後想說的是,databinding是拉機XD
data binding真的拉機,從沒學過.誰要在xml上寫code
作者:
meowyih (meowyih)
2021-03-05 14:04:00拿win平台來說,win32->MFC->WinForm->WPF->UWP好像也是學不完,但是大部分的東西反正最後都會沒人用的,還是win32 api最穩當XD 甚麼?不用UWP寫不能上MS Store? 反正UWP推不動MS自己就會轉彎了~ (笑)
xml寫code、databinding,這些web已經寫了十年了XD
作者:
baobomb (baobomb)
2021-03-05 15:36:00不知道大家對RxJava的看法是什麼??我很常看到工程師認為RxJava是用來處理multi thread, 所以會被coroutine取代但其實RxJava是用來處理Stream layer separating的. 試想在一個App啟動時 如果有一大堆的critical path服務需要在background thread init. 然後其他的usecase需要等待這些服務完成後馬上接續其他的動作沒有RxJava 以往就是create一大堆的callback listener.而且很難處理buffer. 但React programming很好的處理了這問題. Coroutine有Flow 可以做到一樣的效果, 但還不Stable 我自己用起來覺得還是RxJava更直接.而且CoroutineScope在多線程的情況下需要一直重複切換Context 用起來會導致function變很冗長. 但我自己也是樂觀看待 畢竟很多人誤用RxJava(不懂得復用Subscription,Stream,而是每次有需求就subscribe一次 最後也沒有好好Dispose導致memory leak) Coroutine看起來可以解決這問題 但希望可以寫起來更優美
我自己用Flow是沒遇到什麼問題,當然RxJava release那麽久了,你說Flow相較起來不stable是沒錯,但是我不知道你說用RxJava更直接是什麼意思,有什麼功能Rx做得到Flow做不到的嗎?然後CoroutineScope在多線程的情況下需要一直重複切換Context,難道Rx不需要嗎?會需要頻繁切換大多都是background thread處理資料後需要更新UIRx也一定需要吧?滿好奇你的case細節也可以去AndroidDev版討論,我可不想被哈哈人噓
作者:
baobomb (baobomb)
2021-03-05 16:14:00其實我也很喜歡Flow啦哈哈 只是很多工程師只是為了方便切換線程而用coroutine function內withContext寫的到處都是 看的真的很頭痛....RxJava寫起來更有chain的感覺 可以在streams之間直接stream.subscribeOn/observeOn. 對我來說更能有效的強制工程師去細分function從而達到unit test更好寫但Coroutine 的withContext這東西... 很容易讓很多工程師濫用... 不是說不好 而是太方便了-.-
Flow有個flowOn(),應該可以達到你要的效果,至於到處寫withContext()是能保證那個function的內容是用特定的Dispatcher去執行,這就看你們團隊的討論了
我覺得Coroutine比RxJava直覺多了耶!可能是我是先學前面再學後面
作者:
iiiii (I take 5)
2021-03-06 11:26:00Android Studio 每次按下更新鈕,都要禱告
作者:
angusyu (〒△〒)
2021-03-06 12:48:00禱告?沒有啊每次更新都沒什麼事
作者:
u07f08 (放孩子的風箏)
2021-03-07 00:57:00android studio 4之後的版本bug超多的好嗎
作者:
hicoy 2021-03-07 13:35:00我自己是習慣等個一陣子在更新android studio 讓同事幫忙除雷XD全吃一定是吃不完主要還是要做取捨 像上面講到coroutine and RxJava先選一種學 另一種有需要再看 不過Google現在選的是coroutine了吧? 範例都改coroutine+flow了
我倒覺得databinding超好用的耶,不用一堆 init,至於在xml編輯,大概因為習慣直接在xml coding 元件內容所以還蠻習慣的真的不用什麼都用最新 lib XD,只有在開發新產品才會使用當下最新最穩定的 lib 版本。這部分 ios 比較慘吧,常常新版本都有不兼容的 function,直接給你停用出現 bug(同情地望向 ios 同事),android 至少不會讓你舊的 function 不能用(或是功能有非常大落差),版本更新主要看新的調整有沒有影響到自己的 app 再做調整就好是可以感受到對開發者的限制增多,但我覺得是讓使用者的安全性和隱私提高,這是好事,而且統一的規範總比各廠牌手機魔改系統要好(對,我說的就是大部分陸廠手機以及少部分他國品牌,雖然個人認為這也是部分開發者種下的惡果),當你按照官方 sdk 開發卻發現在某幾個手機上表現不如預期才真令人抓狂...為了這幾個例外又要再想辦法額外 coding 讓這些例外可以正常運行(暈)