寫APP真的是好工作嗎? Firebase host與我對Kotlin的感想
最近在找工作,經過1個多月後,還是沒找到,有點不順利,收到很多無聲卡,
難過了好幾天,然後我感覺....
1.寫APP真的是好工作嗎? 台灣好像不缺app軟體工程師....(現今在網路上或補習班,能找到大量手機 App 或網頁之類的前端開發課程。但一套應用系統,需要前端與後端整合才完整。很多資深工程師(well-trained)像我,不得不必須要跟新人競爭,但通常公司不太會分辨何謂新手與老手?)
2. 感覺上,IOS工程師似乎比ANDROID 工程師更稀少與缺乏,更好找工作.
3. Covid-19疫情風暴下,能不能去面試都是一個大問題. Delta 變種病毒來勢洶洶,如果去台北面試時中途被感染,可能又會害到面試官跟自己....
4.竟然還有公司開app工程師4萬多的薪水,好多雇主都不懂行情啊~一位app工程師多難培養阿,要賺四萬多薪水我還不如去作一些不需要如此花費腦力的工作.薪水雖低一點但不用像app工程師寫程式寫到累的半死....
-----
about Kotlin
Kotlin Playground: https://developer.android.com/training/kotlinplayground現在找工作android都要求Kotlin, 但其實Kotlin造成更多混亂...
混亂1: Java 8現在也支援lambda與很多其他新功能...不會比Kotlin差混亂2:android 工程師需要會java外,又要多學一套Kotlin,當然有時還要會swift/ios, dart/flutter, 基本的c/c++也都要記得. 腦容量不足.目前在google的android官方文件範例中,已經可以見到這種兩種語言並行時產生的混亂,每個重要功能的解說範例,變成需要有java的example, 也需要有Kotlin的範例,缺少任何一種,都會導致對方的擁護者抗議. 這在Stack Overflow上更是產生極多的類似抗議.
混亂3: 在開源社群中 GitHub source code 多了Kotlin分類, 導致原來java的open source 感覺低人一截,開發者對於要開發新版本時,不知道要用java還是Kotlin.....導致open source原始碼產生分支,不統一. 由Kotlin編寫的open source,對原有的java 開發者而言,可能會變得難以維護,導致開發速度變慢。
混亂4: 很多資深的app工程師對java很熟悉,習慣用java開發,但有時會被Kotlin的開發者霸凌,好像用java寫app就是錯一樣.
-------
再來看看Kotlin的優點,與java的比較,可以發覺理由不那麼充分:
1)Kotlin 支持類型推斷,沒有 Java 那樣的囉嗦。
爭議:--> 囉嗦??? 明確的變數定義本就是好事,可預防用錯,怎會是囉嗦???
2)另外用 var 表示變量,val 表示常量更加的簡潔
爭議:--> 在java中用final 就好了,不需要增加一個新名詞val.
3)方法也很簡單,連 function 都縮寫成了 fun,平添了幾分雙關之意。
爭議:--> 為了省幾個字,多搞了一整套新的程式語言???!!!
4)類的繼承和實現很簡單,使用:即可
爭議:--> 為了省幾個字,要程式設計師多學一套語言.
5)Kotlin 每個句子都不需要加分號 (;)
爭議:--> 為了省幾個字,要程式設計師多學一套語言.而且用分號來區分一行不是很好的作法嗎? 不加分號有時更為混亂.
6) Null-Safety的支持
NullPointerException是我們使用 Java 開發程序中最常見的崩潰了.
在 Kotlin 中NullPointerException得到了很好的解決。
爭議:--> NullPointerException本就是程式設計師功力上所需避免的事.程式寫不好怪Java??? 而且 不小心發生程式NullPointerException時,java會提醒你有exception,此時再處理例外不就好了嗎?
7) Properties: 在Kotlin中,getter和setter是可選擇性的(Kotlin可使用屬性來代替 getters/setters 方法),如果你沒有創建它們,它是會自動產生. (因此Kotlin移除了 Java 語言所需的一些必須的樣板程式碼)反正我本身是非常反對Kotlin, 但為了找工作不得不學習之.因為不學習Kotlin雇主不要你阿,造成程式設計師壓力很大,被迫學Kotlin.
我覺得Kotlin是 android的一大失敗. 如果說android跟ios一樣,統一一套開發語言swift這樣還好,偏偏android是java/Kotlin並行,這根本就是造成程式碼source code混亂好嗎.改進方法是android就規定用java or Kotlin 其中一種.這樣大家好去跟隨之.目前這樣根本就是最差的情況.
程式設計師應該要專注: 目前還有另外兩種dart, swift 這兩種app設計語言需要記憶與認識,真的沒多餘力量去增加對Kotlin熟悉度.
希望未來android可以回歸java, 且java 8已經彌補很多以前的java缺點.
-------------------
Firebase Web App. 與 未來趨勢.
2021開始寫flutter app再透過Firebase hosts功能,就能取代front-end web designer工作了. 不用學JavaScript, Angular ,php/asp/jsp, 這firebase技術讓app 工程師直接寫完app後,就等於設計好了web了.且執行上速度還超快,夢幻的作法,不得不贊嘆google的研發能力實在太強了...(發明了Flutter又發明了Firebase .....)
這網站就是用這作法作出來的.user不需再安裝app,就可執行相關功能.
不過要注意的是,設定Hosts時,不要選Quick Setup, 要選Advance,要設定DNS TXT,才會正確找到網站.不然會一直在等待驗證DNS ,會等很久很久...
然後去自己購買的的DNS廠商設定DNS TXT record.
設定完後等幾小時,它會變成驗證完成,此時再設定DNS A記錄.
然後就完成了,他的SSL憑證就不會出現問題.
我第一次看到這結果驚嘆不已,這都是用dart+flutter的app的設計方法,不需要網頁設計/JavaScript/Angular.就可設計一個網站出來.
app工程師未來的路越來越寬廣了.
也就是說,很有可能未來前端網頁設計師,這工作開始可以被app工程師所取代了.前端跟mobile端由flutter統一,後端交給Firebase.可能未來後端工程師會大失業,(甚至android and ios native app工程師都會大失業), 因為公司不用再多請front-end與back-end工程師,直接請個會Firebase的flutter app工程師就搞定一切了,甚至有點遠見的公司會請一堆flutter工程師一起合作,因為有google的Firebase在背後支持,可以省去很多以前的工作.這根本就是趨勢,就跟android system剛出來時一樣.一開始大家抗拒,但後來全都靠攏之.
(PS: 若是一個app完全不需要執行自己的後端server功能,flutter+Firebase的確可以取代之,但目前大部分app還是需要自己的後端server,還是需要自己撰寫jsp/PHP/asp等透過restful API來執行相關function,因此flutter跟Firebase 這邊還只能做到靜態網頁的效果,若要更多功能,需自己撰寫API才可作更多的動作,所以back-end engineer還不會消失.)
------
成為傳說中的 10 倍效率的 app 開發者
Firebase 可取代大部分現存舊有系統:
-Firebase Hosts: 直接可架網站,不需要AWS ec2+Apache+tomcat. (Linux server的設定與Apache的設定可是要花很多時間的,你可以自己架設看看就知道,不是那麼簡單.手續繁瑣)
-Firebase realtime database: 取代MySQL...等database.
-現在就差Restful API function...(聽說是 Cloud Functions – It can run the backend code in response to events triggered by HTTPS requests.) ..若這功能作得很好,就真的不需要寫jsp/PHP..等back-end function.
感覺google 幫App 程式設計師建好了整個後端系統Firebase與生態系,
我現在要開始努力的抱 Firebase 的大腿了...
科技的進步讓大家更方便了,真的現在就是比大家的速度而已.
留言
張貼留言