Re: [討論] 2018 各語言就業工作前景

看板Soft_Job作者 (華麗的天下無雙)時間6年前 (2017/12/26 23:48), 6年前編輯推噓36(36049)
留言85則, 34人參與, 7年前最新討論串6/6 (看更多)
討論程式語言的前景怎麼會變成比較程式語言的功能起來? 很多朋友都有一個誤區,那就是你的前景決定於你會什麼程式語言。 這並不完全是對的。 第一個誤區 --- > 你的前景決定於你用程式語言解決問題的能力 > 不是「你會不會某種程式語言」。 程式語言是工具,工具,工具。 重要的話說三次。 就跟你想在法國長住你就得學會法文,想在日本常住,那就得學會日文, 就算你想新加坡,菲律賓長住,雖然是他們官方語言是英文,但是也是有 當地的用法,你還是得學會。 你可以用中文,英文去當地旅行,但是當你在當地需要解決生活的問題的 時候,用更適合的語言,可以讓你取得更快,更好的優勢。 我很久以前就談過,作為程式開發人員,程式可以分成「體」「技」「用」 三層。 體是程式語言的各種概念,比如多執行緒,記憶體管理,設計模式, ,單元測試,Mocking,TCP/IP,Protocol,類神經網路概念,決策樹理論, 動態規劃,隨機森林....這些橫跨程式語言的觀念。 技是程式語言,以及程式語言的生態系。 用是你能用程式語言解決的各種問題,比如,撰寫跨平台遊戲,寫App,預測 明天股市漲跌,比對病毒模式。 體,有的學校會教。技,網路上都能自學,花錢上課也都可以。「用」才是難 關。 用才是價值,寫程式不能為組織賺錢,你寫的程式解決了組織的問題,解決了 客戶的問題,才是你的價值。 第二個誤區 --- 缺乏對程式語言多面向的了解 很多人對於程式語言缺乏多個面向的了解,只從技術的觀點看程式語言本身 ,卻沒有想過,程式語言的存在包括多個面向,所以才會有這麼多程式語言存在。 舉例來說,前面有人說Java程式每次都馬要重新編譯1, 2分鐘才能執行,我是建議 他去Google一下Hotswapagent跟JRebel是什麼東西。 當你想要去貶低一個不是你熟悉,或是不是你主要的程式語言的時候,往往只會看到 一個程式語言某方面了劣勢,而忽略的在某方面的優勢。 你覺得中文用起來很簡單,很熟悉,但是從西方人的角度看,中文是這個地球上最難 學習的語言,他沒有曲折,沒有時態變化,還有可怕的量詞。但是你不會有這個感受。 程式語言也是一樣的。 延續第一個誤區,你要解決問題,不得不受到Triple Constraint的限制:Schedule, Cost, Quality。 「Java程式語言的效率不可能與C比較」這個命題基本上是胡扯。 對某些人而言,C儘管在好的架構下,可以達到比較好的記憶體管理,但同樣的 也更容易產生memory leak,你只考慮了你自己,卻沒有考慮到,在組織當中, 跟你一樣有水準的工程師不一定那麼多,Java執行效率較慢,但他更安全。 也許你的Performance不是第一考量,也許你需要有更好的企業架構。 Java不是單打獨鬥,Java有整個JVM的生態系在支援它,而且是非常成熟的生態系。 Spring Framework幾乎集成了所有企業級的功能,打到官方EJB自爆,其他語言許多 概念,都是衍伸自Java,例如xUnit,logging,DI。 Mybatis, Hibernate都是出道超過10幾年的框架,到現在還是可以運作得很好,有 成千上萬的成功企業使用Java。 也有人說Java不適合微服務吧,那他也可以去Google一下Spring Boot。 Java也有很好的向下相容性,10幾年前的Code,你用現在的JDK9去編譯,大多數狀況下 它都能很好的運作,所以對於開發出來以後會用上10來年的系統,Java會是一個比較 容易的選擇。 你能用.Net Framework去編譯VB6的程式嗎?或是ASP?Python 2 migrate 到Python 3 ,從2008年推出到現在快10年了,他還在Migration。 我並不是說Java很好,而是往往很多人想說,「天啊,你們公司還在用Java,真老」 ,或是Java缺乏某某功能,比如GC還不能自動控制之類的,那都是用自己偏狹的一方 觀點去看一個程式語言,而沒有考慮它使用的場合,限制,要解決的問題,也忽略了 整個生態系的完整程度。 我們公司還在用COBOL咧,前端還不是可以吐json接AngularJS跟Vue? 第三個誤區 --- 只能會一個程式語言 我不是獨尊Java,Java也能做深度學習,有ND4J,Deeplearning4J,甚至直接跟 Spark或Hadoop結合,但Python深度學習這方面起步早,有Tensorflow還有Scikit-learn 這些機器學習套件,他在這方面的生態系比較成熟一些,資料也比較多,我要 搞深度學習,首選還是Python,事實上我們公司主要用Java,COBOL,但Python也有拿 來做機器學習一些data使用。 但不代表你用了Tensorflow,你就一定要用Django做資料視覺化的展示,或是寫ERP程式 ,你一樣可以利用Java跟Spring打造你的企業應用,用Node.js的socket.io做即時資料 交換,用Meteor寫App,如果要拿去賣,賣像要更好就再用Swift跟Andorid打造App, 只有內部使用可以考慮Xamrin。公司跟微軟合作良好就去用.Net Framework,同時要 管理server side deploy跟docker image management就再用shellscript跟Ansible。 沒有人可以限制你,只有你要自己限制自己,你會得東西越多,你越能在Triple Constraint中找到完美的平衡,選擇最適合的解決方案跟生態系。 武術分為很多流派,拳擊,桑博,詠春,散打,空手道,但在不同規則下,不同的武術 有不同的優勢,沒有最強的武術,只有最適合的功夫,最後站在擂台上的,才是勝利者。 另外一個重點是「體」,夠有錢,甄子丹也打不過馬師傅。 當然你要專精一個程式語言是可以的,但是活用,可以為你取得更多的機會。 最後 --- 你要解決什麼問題,決定了你要使用什麼樣的工具,但只要你體質夠強壯,任何工具 都能為你所用。 我們從2015年起用Spring打造了一個同仁不知道那是Spring的Spring框架(因為 已經變成convention over configuration了,我們還借鏡了一些其他語言才有的觀念) ,還有一個專門的部署平台,提供多達80個人共同開發,目前支援超過1400個 Controller, 1000個service以及超過120個Restful Service的ERP以及各類周邊系統。 當然我們也有開始試著用一些R, Python, 跟Node,做一些非ERP有關的東西。 Logging/monitor system也從無到有建立了Graylog/Elastic Search叢集,用Sonarqube 做static scan,現在整個Gradle已經快變成天書,但是所有開發同仁可以完全 沒有Spring, 沒有Gradle的知識。 我們還在把三四十年來的COBOL程式改成Java,我們希望程式語言還可以再戰20年, 而且不要變化太快,但也不要跟C一樣缺乏開發效率,Java看來是比較合理的選擇。 人力盤點的結果,再加上對於各種成本考量,Java可能是最好的選擇,儘管我們 還是沒買JRebel導致SQLMap改了之後還是要rebuild,hotswapagent有點兩光。 但這不就是推動Unit test以及mocking的一項不錯的動機嗎? 不同產業,不同環境,要解決的問題不同,你的老闆是誰,決定了你該會什麼 ,要用什麼。 決定你的目標,再看你的體質,選擇最適合的工具。我想這才是大家選擇程式語言 前景的目的吧,不要再比較誰好誰壞了,請先把你的命題想好,要解決的問題說清楚 ,才有討論的價值。 不然跟麥格魯戈跟五月天打拳擊沒有兩樣。 -- 所有我的作品,請到..... ~四十八個德瑞克~http://blog.derekhsu.net 馬皇本紀:http://blog.derekhsu.net/2009/08/821 上官先生傳:http://blog.derekhsu.net/2009/08/825 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 112.105.222.185 ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1514303283.A.E26.html ※ 編輯: derekhsu (112.105.222.185), 12/26/2017 23:49:48 ※ 編輯: derekhsu (112.105.222.185), 12/26/2017 23:55:58

12/27 00:30, 6年前 , 1F
整理了很多職場經驗,用心推
12/27 00:30, 1F

12/27 00:55, 6年前 , 2F
12/27 00:55, 2F

12/27 01:00, 6年前 , 3F
用心推!
12/27 01:00, 3F

12/27 01:24, 6年前 , 4F
這才是現實的工作狀況...
12/27 01:24, 4F

12/27 01:25, 6年前 , 5F
很多時候需要用到combo技才能發揮最大的戰力
12/27 01:25, 5F

12/27 01:26, 6年前 , 6F
某些語言就是有足夠多的套件支援,真的用到的時候不選這
12/27 01:26, 6F

12/27 01:26, 6年前 , 7F
種,反而硬拿其他語言去硬刻才真的傻了
12/27 01:26, 7F

12/27 02:15, 6年前 , 8F
推這篇觀念
12/27 02:15, 8F

12/27 02:48, 6年前 , 9F
舉例錯誤,.net framework跟asp是不同的東西,當然不行
12/27 02:48, 9F

12/27 02:53, 6年前 , 10F
jsp換個jdk版本可能就compile不起來了好嗎
12/27 02:53, 10F

12/27 07:46, 6年前 , 11F
推經驗分享
12/27 07:46, 11F

12/27 08:25, 6年前 , 12F
推,我還是先去用 python 跟 node.js 好了
12/27 08:25, 12F

12/27 08:26, 6年前 , 13F
懶人還是用可以偷懶的工具,比較實在,多點時間打電動
12/27 08:26, 13F

12/27 11:35, 6年前 , 14F
推程式語言只是一種工具
12/27 11:35, 14F

12/27 12:04, 6年前 , 15F
不同的程式語言之於CODER就如同不同的繪圖軟體之於繪師
12/27 12:04, 15F

12/27 12:05, 6年前 , 16F
如果繪師之間戰什麼繪圖軟體才最好其實會感覺層次有點低。
12/27 12:05, 16F

12/27 12:20, 6年前 , 17F
所以我覺得大家避而遠之JAVA很奇怪,明明 spring boot 用
12/27 12:20, 17F

12/27 12:23, 6年前 , 18F
起來很方便阿~
12/27 12:23, 18F

12/27 12:27, 6年前 , 19F
繪圖師討論工具很正常吧,不知道為什麼要把討論講成是
12/27 12:27, 19F

12/27 12:27, 6年前 , 20F
戰,就好比photo impact跟photoshop,討論哪款適用或
12/27 12:27, 20F

12/27 12:27, 6年前 , 21F
開發某種用途的圖形的方便性。今天出來一款新的繪圖工
12/27 12:27, 21F

12/27 12:28, 6年前 , 22F
具,能夠在某應用場景下比photoshop還好用,但並沒有
12/27 12:28, 22F

12/27 12:28, 6年前 , 23F
說photoshop就廢掉。
12/27 12:28, 23F

12/27 12:29, 6年前 , 24F
討論當然不錯,不過我說戰當然指的是拿來戰的那群人 XD
12/27 12:29, 24F

12/27 12:29, 6年前 , 25F
例如說photoshop使用率下降了,用photoshop的塊陶喔~
12/27 12:29, 25F

12/27 12:29, 6年前 , 26F
剛剛看才注意到這篇文章 推 寫得不錯
12/27 12:29, 26F

12/27 12:35, 6年前 , 27F
現在工作需求的趨勢都是多技能吃香了 前端後端不分 直接來
12/27 12:35, 27F

12/27 12:35, 6年前 , 28F
個全端 只是資訊人員很累就是 一直有新東西新概念
12/27 12:35, 28F

12/27 12:36, 6年前 , 29F
Springboot的方便是對比過去的Servlet與SpringMVC,再
12/27 12:36, 29F

12/27 12:36, 6年前 , 30F
對比node或go會發現更方便
12/27 12:36, 30F

12/27 12:40, 6年前 , 31F
不用暗喻是我了,我單純很理性分析個人觀感,畢竟語
12/27 12:40, 31F

12/27 12:40, 6年前 , 32F
言要學習時間的投入,對資深人員是沒差往往都要碰多語
12/27 12:40, 32F

12/27 12:40, 6年前 , 33F
言,但是對新手在選擇語言時會是很好的參考價值。而
12/27 12:40, 33F

12/27 12:40, 6年前 , 34F
不提供有參考價值意見無意義的噓或捧個人覺得沒什麼
12/27 12:40, 34F

12/27 12:40, 6年前 , 35F
幫助的。
12/27 12:40, 35F

12/27 12:46, 6年前 , 36F
看前幾篇的推文就知道誰在戰 因為XXX語言正在下降
12/27 12:46, 36F

12/27 12:46, 6年前 , 37F
所以大家不要用這種邏輯
12/27 12:46, 37F

12/27 12:46, 6年前 , 38F
或者是我不會OOO 所以不使用這個語言
12/27 12:46, 38F

12/27 12:46, 6年前 , 39F
因為自己不會只好貶低來提升自己不會的高尚
12/27 12:46, 39F

12/27 12:49, 6年前 , 40F
而不是說某語言在特殊問題有優勢這種討論方式
12/27 12:49, 40F

12/27 13:23, 6年前 , 41F
我對號入座一下吧,我從來沒打過大家不要用這句話,
12/27 13:23, 41F

12/27 13:23, 6年前 , 42F
不知道哪邊看到的。再來Java是我主力語言,只是對於
12/27 13:23, 42F

12/27 13:23, 6年前 , 43F
學習成本以及開發速度的關係我老闆不愛用,所以只能
12/27 13:23, 43F

12/27 13:23, 6年前 , 44F
捨棄Java。而Java的在台灣很大會選用的原因事實上有
12/27 13:23, 44F

12/27 13:23, 6年前 , 45F
不少已經是因為人員取得方便以及各種解決方案也有許多
12/27 13:23, 45F

12/27 13:23, 6年前 , 46F
的成功案例這方面的面向。我個人是對Java抱持悲觀但
12/27 13:23, 46F

12/27 13:23, 6年前 , 47F
不代表我就捨棄了Java,事實上Java在現階段還是有不可
12/27 13:23, 47F

12/27 13:23, 6年前 , 48F
取代性,太多的舊案包含我們公司也有,仍然還是要繼
12/27 13:23, 48F

12/27 13:23, 6年前 , 49F
續使用Java。
12/27 13:23, 49F

12/27 13:48, 6年前 , 50F
我覺得台灣很多新創團隊犯的錯誤就是看到什麼潮就跟風用
12/27 13:48, 50F

12/27 13:48, 6年前 , 51F
什麼..卻沒看看開發環境,套件是否成熟...
12/27 13:48, 51F

12/27 13:54, 6年前 , 52F
哪個語言實用就學哪個 我也是覺得多多益善
12/27 13:54, 52F

12/27 13:55, 6年前 , 53F
像我就會分成工作用 寫小工具用 寫side project用
12/27 13:55, 53F

12/27 13:55, 6年前 , 54F
side project又要看性質決定用哪個語言
12/27 13:55, 54F

12/27 15:00, 6年前 , 55F
講超好的 小弟剛進公司寫一年多的 code 真心覺得T字
12/27 15:00, 55F

12/27 15:00, 6年前 , 56F
型發展超重要
12/27 15:00, 56F

12/27 15:14, 6年前 , 57F
micro也可以用Akka吧,不用侷限在spring上
12/27 15:14, 57F

12/27 15:36, 6年前 , 58F
12/27 15:36, 58F

12/27 15:54, 6年前 , 59F
我不是說r大 而是某個人說不會thread所以不使用
12/27 15:54, 59F

12/27 15:55, 6年前 , 60F
我說不會用memory所以C很爛 還有人認同
12/27 15:55, 60F

12/27 15:56, 6年前 , 61F
戰java的理由是自己不會用 這種文章還真有"建設性"
12/27 15:56, 61F

12/27 16:14, 6年前 , 62F
搞得我都不知道哪些人是反串
12/27 16:14, 62F

12/27 16:25, 6年前 , 63F
整個系列看下來 不少分身www
12/27 16:25, 63F

12/27 17:18, 6年前 , 64F
但我還是覺得讓JavaScript壯大是程式語言界最大的錯誤
12/27 17:18, 64F

12/27 17:19, 6年前 , 65F
另一個錯誤是Flash 還好它快死了 哇哈哈哈哈哈哈
12/27 17:19, 65F

12/27 17:20, 6年前 , 66F
沒有最好的只有最適合的 這句話大家都會講 但事實上真正的
12/27 17:20, 66F

12/27 17:20, 6年前 , 67F
問題是在於「你怎麼知道這時候用這個是最適合的」?
12/27 17:20, 67F

12/27 17:21, 6年前 , 68F
考量再多這也沒辦法量化 最後還是選用什麼技術還是取決你的
12/27 17:21, 68F

12/27 17:22, 6年前 , 69F
感覺 尤其是當解決方案有好幾種都看起來很適合時
12/27 17:22, 69F

12/27 17:23, 6年前 , 70F
就變成「我覺得XXX應該會比較好」
12/27 17:23, 70F

12/27 18:32, 6年前 , 71F
12/27 18:32, 71F

12/27 18:51, 6年前 , 72F
應該說 在你遇到問題時選擇你會的東西之中最適合的
12/27 18:51, 72F

12/27 22:09, 6年前 , 73F
推這篇,沒有高下之分,語言也是很難比較出來的東西
12/27 22:09, 73F

12/27 22:09, 6年前 , 74F
硬要比就只能比單一功能面的東西,聽到都有點無力感
12/27 22:09, 74F

12/27 23:04, 6年前 , 75F
好文推
12/27 23:04, 75F

12/27 23:32, 6年前 , 76F
microserivce 有很多範本是akka
12/27 23:32, 76F

12/29 11:22, 6年前 , 77F
優文給推~~
12/29 11:22, 77F

12/29 23:36, 6年前 , 78F
12/29 23:36, 78F

12/30 01:37, 6年前 , 79F
推薦!
12/30 01:37, 79F

12/30 16:47, 6年前 , 80F
12/30 16:47, 80F

12/30 19:25, 6年前 , 81F
推這篇
12/30 19:25, 81F

12/31 21:24, 6年前 , 82F
12/31 21:24, 82F

01/01 10:09, 7年前 , 83F
推!
01/01 10:09, 83F

01/02 14:36, 7年前 , 84F
推 優文
01/02 14:36, 84F

01/14 23:49, 7年前 , 85F
推 讚讚
01/14 23:49, 85F
文章代碼(AID): #1QGcypuc (Soft_Job)
討論串 (同標題文章)
文章代碼(AID): #1QGcypuc (Soft_Job)