寫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 語言所需的一些必須的樣板程式碼) 

爭議:--> 拜託,這在ide: android studio中只要點一下產生getter和setter就能自動生成了,不需要自己打字好嗎! 為了這發明Kotlin真不明智.

Kotlin之Set和Get:

Kotlin之Set和Get跟C#很像,在JAVA中並沒有這種寫法.
java中如果要用Properties,須寫一個get function.但其實這些都有異曲同工之妙.
只能說Kotlin學習很多優點從C#, swift之中,但因為Java沒有這類語法且設計的控制權不在自己手上,於是可以想像Google android只能捨棄JAVA.從Kotlin著手.

反正我本身是非常反對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 .....)




連接這網站就可看: Tarot web app

這網站就是用這作法作出來的.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 的大腿了...  

科技的進步讓大家更方便了,真的現在就是比大家的速度而已.


留言

這個網誌中的熱門文章

最爛的銀行服務-玉山銀行

更改google drive預設存放目錄位置Change Google Drive Default Folder Location in Windows

ios app 上架時app icon要注意事項

SMR疊瓦式hdd致命缺陷被解決????!!!

Admob的 app-ads.txt終於成功動作了

Mark App Design Apps - Terms and Privacy Policy (服務條款,隱私權政策)

Gmail 永久刪除大型電子郵件

Android studio gradle error: Duplicate class com.google.protobuf...

來談談admob廣告政策違規的不好體驗

app bundle and bundletool. 關於aab安裝問題