研發or技術支援?美國IT人的觀點與思辨

emc.com發表於2014-04-05

  研發和技術支援哪個更好?這似乎一直是一個爭論不休的問題。這個問題你怎麼看?不妨先來看看米國 IT 人怎麼看。LZ 表示從中還是得到一定啟示的。

  以下為引述內容,不代表 LZ 個人或論壇觀點。  

  一名計算機專業的畢業生在論壇發起一個討論:

  我是一名計算機專業畢業生並已經申請了工作。我需要於兩週內在兩個職位中做出選擇:研發(純 coding)還是支援(Web 應用程式)?我好奇於這兩種職業的發展前景與從業壽命。鑑於當前的經濟形勢與成本縮減(外包等),我擔心做出錯誤的選擇將會影響若干年後的薪資水準。入門 級薪資沒有太大區別,我想知道未來哪一個會面臨更多的需求。

  LZ 摘選了米國 IT 人民一些耐人尋味的回覆:

  作為一名有十年經驗的軟體研發人員,任何時候只要能遠離維護別人開發的程式碼,我都會這樣做的。但是,似乎你說的這兩種職業都可能是程式設計的工作, 所以我看不出來區別。關於從業壽命,我想沒有太大區別。我認為更應該關注職位描述,如果我是你,我會問問這兩者究竟會將我導向何方。越快脫離碼農 (code monkey)對你來說越好:比如,分析(analysis),系統架構等等。職位更安全,薪資更高。碼農並不值錢,隨便拉個人都能做(LZ 表示並不認同)。只有對整個技術體系有深刻理解的人,他們的整合與設計所蘊含的知識才無可取代。即便有些東西被外包出去,你還是需要分析和設計。

  給樓上點贊。注意:設計與研發跟純寫程式碼有本質區別。

  我會遠離嚴格的編碼型別的角色。支援工作會讓你從業務角度獲取有益的經驗,確定產品如何提供價值或從業務角度汲取失敗的經驗。支援角色也更容易 轉換到其他團隊如銷售,服務,市場,產品管理等等。因為你在維護或修復問題時需要與這些團隊緊密合作。是一個在公司內部建立關係網的好機會。

  我要介紹一下程式設計這個工作。程式設計並不是每個人都能做的,需要有很好的邏輯思維。很多人認為程式猿需要與生俱來的能力,如果沒有天賦上一堆程式設計課 也沒用。我基本上認同上述觀點。公司在選擇實習生時很看重 GPA,平均要求 3.0 到 3.5。如果一個職位申請者達到 50 至 100 那麼 GPA 平均要求 4.0 也是很正常的。如果你的 GPA 是 2.4 或 2.8 這就會影響你選擇公司的型別和規模。我所效力的航空航天公司最起碼的要求是 3.0-3.5。我觀察到成功的軟體研發人員有某些共同特質:

  • 音樂天賦
  • 注重細節
  • 按照模組順序思考問題
  • 數學好,邏輯化
  • 擅長搭建東西(小時候喜歡玩樂高)
  • 桌子很亂但又能迅速從中找到所需
  • 有創造力
  • 不喜交際(有小團體)
  • 小組討論中沒有高度的互動
  • 強迫症
  • 以牛頭犬的韌勁完成既已開始的工作
  • 在完成任務時廢寢忘食
  • 對於愛好或遊戲專注而又熱情
  • 對工作很有激情

  (有人 match 嗎?)

  我有三十五年的軟體研發經驗。以下是我的觀點:

  1. 教育 —— 大多數公司希望他們的研發工程師至少擁有學士以上學位。有豐富的經驗能夠更好的進入角色。學位不高那他的職業生涯將會受限。
  2. 研發工程師每天至少需要坐在桌前 8 小時以上。最終這會損害你的健康。
  3. 研發工程師更多的承受專案進度的壓力。
  4. 支援工程師更可能需要到處走動甚至要出差。
  5. 支援工程師工作可能讓更多遠離家庭。
  6. 研發工程師賺更多錢。
  7. 支援工程師將主要致力於解決研發工程師的問題。
  8. 研發和支援都可以是非常有價值的工作。

  如果可能的話,與已經在那家公司工作的傢伙談談你會分到的具體工作職責和職業道路是什麼樣的。有一點需要注意:在很差的經濟狀況下大多數公司不 想僱傭有經驗的專業人士,取而代之他們想僱傭外包或應屆生以節約成本。但與此同時他們又希望員工工作能力等同於2-3 年工作經驗的人。

  你要做的事哪方面的研發(技術,架構,平臺)?

  有時候支援角色比研發人員更多接觸研發。比如作為研發你可能只工作於整個軟體應用的一個小模組,而做技術支援你有機會為整個應用修復小 bug。如果你的支援角色只要求你與客戶溝通並且把 bug 交給其他部門那你也不會學到太多。所以必須瞭解職位的更多細節。如果你有一年的研發經驗你可以很輕易地轉向支援,但從支援轉向研發就沒那麼容易。

  我會選擇研發。我做了支援而且隨時要準備 call out。你對應用不會有一個完整的藍圖,當他們轉向新的技術,你支援的那些東西就沒用了——而研發人員可以得到新平臺的很好的培訓。

  從研發你可以轉向設計和分析,業務分析,但支援將永遠被拋在後面做技術支援。同時應用維護以驚人的速度被外包給海外。

  首先要明確你的研發職責是什麼。純編碼還是不要了因為這些年已經外包給印度了。你追求的應該是技術/功能設計的角色,這樣的工作包含業務需求分析並在架構中將之轉變成為可行的解決方案。這樣你可以獲取更多的業務經驗從長遠看來更為有用。

  如果你接觸的是基礎架構或資訊系統管理,那麼做支援也可以。理想的話你可以像管理方向發展。但剛開始壓力會比較大因為你有可能隨時 on call,整理遺留程式碼以發現問題所在,由於時限緊迫而需要承受很大壓力。

  基本上你要學習軟技巧如分析,問題解決,以及溝通只能通過經驗積累。技術知識無論什麼時候都可以學到。

  選擇研發而不要選研發維護。研發你有機會開發新的有趣的 feature 可能接觸更新的技術。做研發維護你只會支援現有的 feature 以及以前使用的技術。第二,你有可能要維護別人的程式碼,如果沒有文件或寫的不好就會很痛苦。當你發現程式碼寫的很糟糕但你又不能重構或沒時間重構你就只能打 上補丁。第三研發維護壓力更大應為你要為客戶解決問題。如果是一個嚴重的缺陷你就會碰上我說的第二個問題從而承受很大壓力。

  如果你僅僅考慮個人未來而不是具體的任務,我會建議你選擇能帶給你更好工作技能的職位。像他們說的,如果一個職位現在或將來能讓你接觸設計/架構,那將是一個很大的加分。人力管理或新的開發語言也是很大的加分。

  辣麼各位,有認同的觀點麼?

相關文章