Re: [請益] 離開Web開發的建議

作者: brianhsu (墳墓)   2018-04-05 10:09:17
※ 引述《m13m13m (奇怪 還沒收到??)》之銘言:
:
: 工作上遇到一層不變的薪水, 和難以跨越的門檻(做某一個框架
: 幾年, 想換到另一個想去的公司但是框架不同, 好的話,年資是從新算,
: 常常是遇到根本沒機會, 即戰力第一. 久而久之,路變得有點窄.
: → m13m13m: DevOps/SQL 是好建議,正在點docker/aws, SQL command 04/04 21:20
: → m13m13m: Argos:想出國看看, 我不想當嘴炮的人 04/04 21:20
: → m13m13m: oneheat: 騰訊嗎. 語言框架不對, 第一關就無法pass了 04/04 21:21
: → m13m13m: 假設我PHP很多年,要去弄node.js/ java也是從頭算年資. 04/04 21:22
: → m13m13m: 從頭開始學. 另外換一個語言不可能只要幾周, 比如c++ 04/04 21:23
: → m13m13m: 學很多你要保證你每一個都能一直跟上去最新的工具 04/04 21:23
這一串看下來,感覺你好像很糾結在語言或框架的熟悉度就是即戰力。
但出來久了,很多時候你會發現其實大家真的在用的東西都是很簡單的部
份的,也就是傳說中的只用到 20% 的功能,有 80% 是用不到的。
當然有把語言和框架用到出神入化的人,但多數的時候反而都是很基本的
部份,有的時候甚至會覺得這是好事,框架有他方便的地方,但通常藕合
度比較高。我現在反而比較喜歡不過度依賴框架的程式碼。
所以你會發現大家會覺得你想加薪,結果想出來的方式是跳框架很奇怪。
即戰力是可以從不同的面向來看的,舉例來說,當今天你發現你家用 PHP
做的做流量統計服務(類似 GA 的服務)的網站,效能撐不住了。開個網
頁要四五分鐘還開不出來,這個時候來了兩個人:
A:「嘿,我做過工廠自動化數據分析報表的網站喔。咱們的資料量是每個
機台最慢每秒有一則統計輸出,工廠有一百台機台,二十四小時開工,所
以每天有約八百萬筆資料產出。我們的網站報表數據基本上是即時的,不
會差距三分鐘,網頁讀取速度不會超過一秒。喔,我們的系統是用 Java
實作的。」
B:「我有五年 PHP 的經驗喔,我 Laravel 很熟喔。我做過很多 CRUD 的
網站喔。」
請問如果你是主管,你會覺得哪個對你們公司才是即戰力呢?我想這就類似
上一篇回文裡 qrttl 大大提到的套路。因為做過,所以知道這個問題大致
上怎麼解,而很多問題的本質,是與該專案所使用的程式語言或框架沒那
麼相關的。
像我基本上都是在 Java 相關的專案與工作打滾,但也去面試過資深 PHP
工程師的職缺,然後問與考的東西大部份都與 PHP 無關,而是在於各式各
樣的「套路」。例如 MVC 的基本概念,XSS 怎麼防,SQL Injection 怎麼
防,怎樣的問題你會怎麼解,API 你會怎麼設計。我 PHP 是研所論文在用
的,之後出來工作七八年,完全沒在用,甚至沒用過任何 PHP 的框架。
講實話,如果沒有速查表和參考資料,你叫我從頭寫 PHP 我大概會寫不出
來。但最終我有拿到 Offer,而且也還不錯,只是經過一些考慮後還是決
定繼續待在 Java 這個領域。
至於你說的第一關被刷掉,我想履歷和面試時的應對可能有比較大的關係,
特別是面試,不只是你問我答,也需要自我披露啊!面試官問的時候,你
可以在你的回答裡延伸出你練過什麼套路,解過什麼問題,而且展現出你
理解的是這個問題的基礎原理,而不是只是瞎猜。
舉例來說,你們的解法是加開 Instance,那為什麼要加開,是 CPU Bound
還是 Memory Bound 還是 IO Bound?你們是用什麼方式決定是否要加開
Instance,怎麼做 Profiling 怎麼做 Benchmark?這些也都是套路的一
部份,而且也不會跳語言或框架就會有太大本質上的改變。
那有沒有跳語言和跳框架即戰力就下降的狀況?也是有的,例如你現在叫
我去寫 NodeJS ,我肯定寫得不好也沒有即戰力,因為和我最熟悉的典範
是不同的。
PHP 和 Java 的世界裡,多數都是 Multi-Thread / Blocking 的操作,
迴圈什麼隨便用。
但 NodeJS 是個完全不一樣的世界,他的典範是 Single Thread / 非同
步呼叫模式,基礎的思考方向就不一樣,解題的方式也會不同,如果我用
Blocking 的思考方式去寫 NodeJS,結果肯定很慘烈。
這種的我覺得跳語言和跳框架就比較有意義,因為學到的是另一種解問題
的思維。
而有一些問題,在某個典範下可能很難解,但在另一個典範會比較容易,
例如這幾年很火紅的用 Functional Programming 的典範來解決 Concurrent
問題等等。
最後,這一陣子決定要花點時間做個 Side Project 當做這幾年工作成果
的總覆習,於是列出了一些這個專案想要達成的目標,大致上如下:
- TDD,測試覆蓋率 90% 以上。
- 乾淨的架構,核心邏輯與資料庫、框架等等嚴格分割。例如資料儲存
可以在不依賴框架的情況下,隨時抽換 NoSQL 或 RDBMS。
- 架構上有足夠的彈性,可不靠 Middle Ware 就能做到 DB Sharding。
- 架構上有足夠的彈性,可不靠 Middle Ware 就能做到資料庫讀寫分離。
- 證明 API Server 可以處理 C10K 的問題。
- 可以做到網站與 APP 的資料雙向同步。
- 能夠做到快速部署,快速建立開發環境,模擬新人進來時候的狀況。
結果列一列之後,發現多數都是和語言 / 框架無關的問題,而是在系統架
構上要怎麼設計,而這些設計原則,不太會因為換了語言或框架就改變的。
以上是在 Backend 打滾了幾年後的一些想法,給你參考看看。
作者: vi000246 (Vi)   2018-04-05 10:16:00
實用推
作者: pttworld (批踢踢世界)   2018-04-05 10:17:00
原文是跳出web, 這一串都不是跳出的而以換領域不是即戰力很正常,這一串都沒人切中要害
作者: brianhsu (墳墓)   2018-04-05 10:25:00
原 PO 的根本目的在加薪,跳不跳老實說沒什麼差……待在熟悉的領域談加薪還比較容易些。
作者: wildli0422 (wild)   2018-04-05 11:08:00
推推
作者: qrtt1 (有些事,有時候。。。)   2018-04-05 11:14:00
真正該跳出來的是那個限制自己發展的思維啊。往哪個方向跳都好,但舊的方向驗證了幾年沒有收到好的效果主題的原 PO 也該試試別人的方法了。相當同意 @brianhsu 說的,在同領域的難易度較高。只要不把單純把 web 只想成是單純投入個人的生產力,還包含了架構與如何維持服務。他是一整組不斷演進的,一直換框架,換領域,只是在玩不同遊戲的新手村而已。在同一個領域還有個明顯的好處是,你 credit 夠高的話,會有機會,且有人願意冒險讓你先站在目前的基礎上,做跨領域的實驗。例如,其他文討論到的 py -> go,或其它的替代解法
作者: OSDBNetwork (路人甲)   2018-04-05 11:41:00
有實力的人,寫出來的文章就是精彩.
作者: rabido   2018-04-05 11:52:00
大大可以分享一下決定繼續待在Java領域的原因嗎?
作者: stupid0319 (徵女友)   2018-04-05 11:52:00
推,有實作基礎比較重要,程式的語法跟框架反而好學
作者: holmes2136 (holmes)   2018-04-05 11:57:00
力推,有很多東西是不同語言可通用
作者: peanut97 (丁丁)   2018-04-05 12:19:00
你一定是文中裡的A
作者: qweasd777 (qweasd777)   2018-04-05 12:30:00
大推
作者: Vendy (Vendy)   2018-04-05 12:39:00
因為有jvm很多玩具,不僅僅java吧XD
作者: DirtyVegas (拉斯維加斯)   2018-04-05 12:41:00
laravel那段真是中肯 偏偏老闆思維只會在意你會不會使用
作者: brianhsu (墳墓)   2018-04-05 12:41:00
樓上答對了,JVM 太多玩具玩不完。XD
作者: DirtyVegas (拉斯維加斯)   2018-04-05 12:42:00
很少會在意你彈性處理問題的思維
作者: jonyig (是喔喔)   2018-04-05 12:47:00
作者: brianhsu (墳墓)   2018-04-05 12:53:00
當然比較喜歡現在公司薪資結構和辦公室環境也是很現實的一環啦。直接年薪 / 12,不發年終的公司比較少,但我喜歡。XD
作者: johnny94 (32767)   2018-04-05 13:52:00
這個版需要這種文章多一點
作者: abccbaandy (敏)   2018-04-05 14:02:00
好奇真的有人每份工作語言都不同的?像這篇最後也沒跳PHP阿...
作者: m13m13m (奇怪 還沒收到??)   2018-04-05 14:17:00
謝謝大大的指點,看來您工作外花很多心思在系統設計的學習因為我看到的許多case大多是會不會寫,系統層面的規劃大多欠缺考量, 所以會出現欠許多"技術債".我會想說換框架薪資待遇比較好是因為某些企業有偏好的語言框架, 那些企業的待遇十分好. 謝謝您的指點
作者: abccbaandy (敏)   2018-04-05 14:35:00
除了2跟4其他也差太多XD 這樣履歷拿出去不會被質疑嗎
作者: pttworld (批踢踢世界)   2018-04-05 15:52:00
問題會在第一份切入第二份,我當初組語轉Java薪3萬1
作者: CCben (new man)   2018-04-05 17:32:00
作者: MOONY135 (談無慾)   2018-04-05 19:40:00
第一份sas 第二份c++XDDD 覺得追語言沒啥用
作者: avans (阿緯)   2018-04-05 19:52:00
推心得!
作者: fayhong (恰似飛鴻踏雪泥)   2018-04-05 21:16:00
推!內功深厚的高手
作者: jingyang   2018-04-05 22:56:00
樓上有人提到,我換工作幾乎每次都不同語言,C++->python->Java->node->golang->php,語言只是工具,工作久了看的是你的 domain knowhow,語言特性的重要性相對來說低很多
作者: a8989332 (天創)   2018-04-05 23:49:00
初期是工具使用者 後期要練到架構設計者!
作者: NodeWay (不由分說)   2018-04-06 00:54:00
好文推 我是覺得能掌握多種語言也是實力的一部分舉例來說就像寫網站不能不懂js 不同需求有其適合語言
作者: lturtsamuel (港都都教授)   2018-04-06 03:02:00
不用換工作 新創公司不同專案可能框架就不同了因為都是跟人合作 別人用啥就用啥
作者: leveger0903 (脆笛酥)   2018-04-06 13:23:00
說到laravel 真的是面試的痛處 明明框架是由php打造出來的 為什麼面試官就這麼堅持一定要會laravel 吃這個虧兩次
作者: dream1124 (全新開始)   2018-04-08 12:10:00

Links booklink

Contact Us: admin [ a t ] ucptt.com