研发or技术支持?美国IT人的观点与思辨

jopen 11年前

  研发和技术支持哪个更好?这似乎一直是一个争论不休的问题。这个问题你怎么看?不妨先来看看米国 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 以及以前使用的技术。第二,你有可能要维护别人的代码,如果没有文档或写的不好就会很痛苦。当你发现代码写的很糟糕但你又不能重构或没时间重构你就只能打 上补丁。第三研发维护压力更大应为你要为客户解决问题。如果是一个严重的缺陷你就会碰上我说的第二个问题从而承受很大压力。

  如果你仅仅考虑个人未来而不是具体的任务,我会建议你选择能带给你更好工作技能的职位。像他们说的,如果一个职位现在或将来能让你接触设计/架构,那将是一个很大的加分。人力管理或新的开发语言也是很大的加分。

  辣么各位,有认同的观点么?